#! /bin/sh
# Generated from testsuite.at by GNU Autoconf 2.71.
#
# Copyright (C) 2009-2017, 2020-2021 Free Software Foundation, Inc.
#
# This test suite is free software; the Free Software Foundation gives
# unlimited permission to copy, distribute and modify it.
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##

# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
as_nop=:
if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else $as_nop
  case `(set -o) 2>/dev/null` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi



# Reset variables that may have inherited troublesome values from
# the environment.

# IFS needs to be set, to space, tab, and newline, in precisely that order.
# (If _AS_PATH_WALK were called with IFS unset, it would have the
# side effect of setting IFS to empty, thus disabling word splitting.)
# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
IFS=" ""	$as_nl"

PS1='$ '
PS2='> '
PS4='+ '

# Ensure predictable behavior from utilities with locale-dependent output.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE

# We cannot yet rely on "unset" to work, but we need these variables
# to be unset--not just set to an empty or harmless value--now, to
# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
# also avoids known problems related to "unset" and subshell syntax
# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
do eval test \${$as_var+y} \
  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done

# Ensure that fds 0, 1, and 2 are open.
if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi

# The user is always right.
if ${PATH_SEPARATOR+false} :; then
  PATH_SEPARATOR=:
  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
      PATH_SEPARATOR=';'
  }
fi


# Find who we are.  Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
  *[\\/]* ) as_myself=$0 ;;
  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
  done
IFS=$as_save_IFS

     ;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
  as_myself=$0
fi
if test ! -f "$as_myself"; then
  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
  exit 1
fi


if test "x$CONFIG_SHELL" = x; then
  as_bourne_compatible="as_nop=:
if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '\${1+\"\$@\"}'='\"\$@\"'
  setopt NO_GLOB_SUBST
else \$as_nop
  case \`(set -o) 2>/dev/null\` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi
"
  as_required="as_fn_return () { (exit \$1); }
as_fn_success () { as_fn_return 0; }
as_fn_failure () { as_fn_return 1; }
as_fn_ret_success () { return 0; }
as_fn_ret_failure () { return 1; }

exitcode=0
as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" )
then :

else \$as_nop
  exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
blah=\$(echo \$(echo blah))
test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
  if (eval "$as_required") 2>/dev/null
then :
  as_have_required=yes
else $as_nop
  as_have_required=no
fi
  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
then :

else $as_nop
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
  as_found=:
  case $as_dir in #(
	 /*)
	   for as_base in sh bash ksh sh5; do
	     # Try only shells that exist, to save several forks.
	     as_shell=$as_dir$as_base
	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
		    as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
  CONFIG_SHELL=$as_shell as_have_required=yes
		   if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
then :
  break 2
fi
fi
	   done;;
       esac
  as_found=false
done
IFS=$as_save_IFS
if $as_found
then :

else $as_nop
  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
  CONFIG_SHELL=$SHELL as_have_required=yes
fi
fi


      if test "x$CONFIG_SHELL" != x
then :
  export CONFIG_SHELL
             # We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
  *v*x* | *x*v* ) as_opts=-vx ;;
  *v* ) as_opts=-v ;;
  *x* ) as_opts=-x ;;
  * ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi

    if test x$as_have_required = xno
then :
  printf "%s\n" "$0: This script requires a shell more modern than all"
  printf "%s\n" "$0: the shells that I found on your system."
  if test ${ZSH_VERSION+y} ; then
    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
  else
    printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
$0: the script under such a shell if you do have one."
  fi
  exit 1
fi
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
# Unset more variables known to interfere with behavior of common tools.
CLICOLOR_FORCE= GREP_OPTIONS=
unset CLICOLOR_FORCE GREP_OPTIONS

## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
  { eval $1=; unset $1;}
}
as_unset=as_fn_unset


# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
  return $1
} # as_fn_set_status

# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
  set +e
  as_fn_set_status $1
  exit $1
} # as_fn_exit
# as_fn_nop
# ---------
# Do nothing but, unlike ":", preserve the value of $?.
as_fn_nop ()
{
  return $?
}
as_nop=as_fn_nop

# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{

  case $as_dir in #(
  -*) as_dir=./$as_dir;;
  esac
  test -d "$as_dir" || eval $as_mkdir_p || {
    as_dirs=
    while :; do
      case $as_dir in #(
      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
      *) as_qdir=$as_dir;;
      esac
      as_dirs="'$as_qdir' $as_dirs"
      as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_dir" : 'X\(//\)[^/]' \| \
	 X"$as_dir" : 'X\(//\)$' \| \
	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X"$as_dir" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
      test -d "$as_dir" && break
    done
    test -z "$as_dirs" || eval "mkdir $as_dirs"
  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"


} # as_fn_mkdir_p

# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
  test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
then :
  eval 'as_fn_append ()
  {
    eval $1+=\$2
  }'
else $as_nop
  as_fn_append ()
  {
    eval $1=\$$1\$2
  }
fi # as_fn_append

# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
then :
  eval 'as_fn_arith ()
  {
    as_val=$(( $* ))
  }'
else $as_nop
  as_fn_arith ()
  {
    as_val=`expr "$@" || test $? -eq 1`
  }
fi # as_fn_arith


# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
  as_status=$1; test $as_status -eq 0 && as_status=1
  if test "$4"; then
    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
  fi
  printf "%s\n" "$as_me: error: $2" >&2
  as_fn_exit $as_status
} # as_fn_error

if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
  as_basename=basename
else
  as_basename=false
fi

as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
	 X"$0" : 'X\(//\)$' \| \
	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X/"$0" |
    sed '/^.*\/\([^/][^/]*\)\/*$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`

if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
  as_dirname=dirname
else
  as_dirname=false
fi

# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits


  as_lineno_1=$LINENO as_lineno_1a=$LINENO
  as_lineno_2=$LINENO as_lineno_2a=$LINENO
  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
  sed -n '
    p
    /[$]LINENO/=
  ' <$as_myself |
    sed '
      s/[$]LINENO.*/&-/
      t lineno
      b
      :lineno
      N
      :loop
      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
      t loop
      s/-\n.*//
    ' >$as_me.lineno &&
  chmod +x "$as_me.lineno" ||
    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }

  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
  # already done that, so ensure we don't try to do so again and fall
  # in an infinite loop.  This has already happened in practice.
  _as_can_reexec=no; export _as_can_reexec
  # Don't try to exec as it changes $[0], causing all sort of problems
  # (the dirname of $[0] is not the place where we might find the
  # original and so on.  Autoconf is especially sensitive to this).
  . "./$as_me.lineno"
  # Exit status is that of the last command.
  exit
}


# Determine whether it's possible to make 'echo' print without a newline.
# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
  case `echo 'xy\c'` in
  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
  xy)  ECHO_C='\c';;
  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
       ECHO_T='	';;
  esac;;
*)
  ECHO_N='-n';;
esac

# For backward compatibility with old third-party macros, we provide
# the shell variables $as_echo and $as_echo_n.  New code should use
# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
as_echo='printf %s\n'
as_echo_n='printf %s'


rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
  rm -f conf$$.dir/conf$$.file
else
  rm -f conf$$.dir
  mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
  if ln -s conf$$.file conf$$ 2>/dev/null; then
    as_ln_s='ln -s'
    # ... but there are two gotchas:
    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
    # In both cases, we have to default to `cp -pR'.
    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
      as_ln_s='cp -pR'
  elif ln conf$$.file conf$$ 2>/dev/null; then
    as_ln_s=ln
  else
    as_ln_s='cp -pR'
  fi
else
  as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null

if mkdir -p . 2>/dev/null; then
  as_mkdir_p='mkdir -p "$as_dir"'
else
  test -d ./-p && rmdir ./-p
  as_mkdir_p=false
fi

as_test_x='test -x'
as_executable_p=as_fn_executable_p

# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"

# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"





SHELL=${CONFIG_SHELL-/bin/sh}

# How were we run?
at_cli_args="$@"


# Not all shells have the 'times' builtin; the subshell is needed to make
# sure we discard the 'times: not found' message from the shell.
at_times_p=false
(times) >/dev/null 2>&1 && at_times_p=:

# CLI Arguments to pass to the debugging scripts.
at_debug_args=
# -e sets to true
at_errexit_p=false
# Shall we be verbose?  ':' means no, empty means yes.
at_verbose=:
at_quiet=
# Running several jobs in parallel, 0 means as many as test groups.
at_jobs=1
at_traceon=:
at_trace_echo=:
at_check_filter_trace=:

# Shall we keep the debug scripts?  Must be `:' when the suite is
# run by a debug script, so that the script doesn't remove itself.
at_debug_p=false
# Display help message?
at_help_p=false
# Display the version message?
at_version_p=false
# List test groups?
at_list_p=false
# --clean
at_clean=false
# Test groups to run
at_groups=
# Whether to rerun failed tests.
at_recheck=
# Whether a write failure occurred
at_write_fail=0

# The directory we run the suite in.  Default to . if no -C option.
at_dir=`pwd`
# An absolute reference to this testsuite script.
case $as_myself in
  [\\/]* | ?:[\\/]* ) at_myself=$as_myself ;;
  * ) at_myself=$at_dir/$as_myself ;;
esac
# Whether -C is in effect.
at_change_dir=false

# Whether to enable colored test results.
at_color=auto
# As many question marks as there are digits in the last test group number.
# Used to normalize the test group numbers so that `ls' lists them in
# numerical order.
at_format='????'
# Description of all the test groups.
at_help_all="1;calendar.at:19;epoch;;
2;data-in.at:19;numeric input formats;data-in slow;
3;data-in.at:135;reading big numbers;data-in;
4;data-in.at:215;DATE input format;data-in;
5;data-in.at:223;ADATE input format;data-in;
6;data-in.at:231;EDATE input format;data-in;
7;data-in.at:239;JDATE input format;data-in;
8;data-in.at:247;SDATE input format;data-in;
9;data-in.at:255;QYR input format;data-in;
10;data-in.at:263;MOYR input format;data-in;
11;data-in.at:271;WKYR input format;data-in;
12;data-in.at:279;DATETIME input format;data-in slow;
13;data-in.at:288;YMDHMS input format;data-in slow;
14;data-in.at:297;MTIME input format;data-in;
15;data-in.at:305;TIME input format;data-in;
16;data-in.at:313;DTIME input format;data-in;
17;data-in.at:332;binary and hexadecimal input (IB, PIB, and PIBHEX formats);slow;
18;data-in.at:358;BCD input (P and PK formats);slow;
19;data-in.at:383;legacy input (N and Z formats);slow;
20;data-in.at:408;WKDAY input format;;
21;data-in.at:468;MONTH input format;;
22;data-out.at:19;numeric format output;data-out slow;
23;data-out.at:250;leading zeros in numeric output;data-out leadzero;
24;data-out.at:293;non-ASCII custom currency formats;data-out;
25;data-out.at:331;binary and hexadecimal output;data-out;
26;data-out.at:450;output valid dates;data-out;
27;data-out.at:1172;output invalid dates;data-out;
28;data-out.at:1266;time output;data-out;
29;data-out.at:19951;MONTH output;data-out;
30;data-out.at:20908;WKDAY output;data-out;
31;data-out.at:21656;AHEX output bug;data-out;
32;datasheet-test.at:28;3x3, 0 backing rows, backing widths ;datasheet slow;
33;datasheet-test.at:29;3x3, 3 backing rows, backing widths 0,0,0;datasheet slow;
34;datasheet-test.at:30;3x3, 3 backing rows, backing widths 0;datasheet slow;
35;datasheet-test.at:31;3x3, 3 backing rows, backing widths 5;datasheet slow;
36;datasheet-test.at:32;3x3, 1 backing rows, backing widths 0,9,0;datasheet slow;
37;spreadsheet-test.at:26;simple --sheet=0;spreadsheet ods gnumeric;
38;spreadsheet-test.at:34;simple --sheet=0 --reverse;spreadsheet ods gnumeric;
39;spreadsheet-test.at:43;multisheet --sheet=1;spreadsheet ods gnumeric;
40;spreadsheet-test.at:52;repeating ;spreadsheet ods gnumeric;
41;spreadsheet-test.at:59;sparse ;spreadsheet ods gnumeric;
42;spreadsheet-test.at:65;holey ;spreadsheet ods gnumeric;
43;spreadsheet-test.at:73;one-thousand-by-fifty-three --refcheck --reverse;spreadsheet ods gnumeric slow;
44;spreadsheet-test.at:78;multisheet --metadata;spreadsheet ods gnumeric;
45;spreadsheet-test.at:82;simple --metadata;spreadsheet ods gnumeric;
46;spreadsheet-test.at:88;spreadsheet ODS with repeating data;;
47;dictionary.at:19;dictionary case-insensitivity;;
48;file.at:19;Write error - directory exists;;
49;file.at:40;Write error - no permission;;
50;file.at:72;Write error - temp file disappeared;;
51;file.at:90;Write fifo;;
52;file.at:113;Reading from pipe;;
53;file.at:132;Reusing inline file;;
54;format-guesser.at:19;format guesser;;
55;mdd-file.at:19;write MDD file;save get system file;
56;pc+-file-reader.at:19;variable labels and missing values;sack synthetic pc+ file positive;
57;pc+-file-reader.at:130;value labels;sack synthetic pc+ file positive;
58;pc+-file-reader.at:274;compressed data;sack synthetic pc+ file positive;
59;pc+-file-reader.at:353;weighted;sack synthetic pc+ file negative;
60;pc+-file-reader.at:425;unspecified character encoding;sack synthetic pc+ file negative;
61;pc+-file-reader.at:517;unexpected fixed values;sack synthetic pc+ file negative;
62;pc+-file-reader.at:575;short main header;sack synthetic pc+ file negative;
63;pc+-file-reader.at:626;long main header;sack synthetic pc+ file negative;
64;pc+-file-reader.at:678;invalid compression type;sack synthetic pc+ file negative;
65;pc+-file-reader.at:730;unrealistic number of cases;sack synthetic pc+ file negative;
66;pc+-file-reader.at:782;labels bad offsets;sack synthetic pc+ file negative;
67;pc+-file-reader.at:847;record 1 bad length;sack synthetic pc+ file negative;
68;pc+-file-reader.at:900;bad variable format;sack synthetic pc+ file negative;
69;pc+-file-reader.at:952;bad variable name;sack synthetic pc+ file negative;
70;pc+-file-reader.at:1004;duplicate variable name;sack synthetic pc+ file negative;
71;pc+-file-reader.at:1060;partial case;sack synthetic pc+ file negative;
72;pc+-file-reader.at:1124;case extends past end of data record;sack synthetic pc+ file negative;
73;pc+-file-reader.at:1189;corrupt compressed data;sack synthetic pc+ file positive;
74;pc+-file-reader.at:1269;invalid weight index;sack synthetic pc+ file negative;
75;pc+-file-reader.at:1321;string weight;sack synthetic pc+ file negative;
76;por-file.at:19;overwriting portable file;;
77;por-file.at:34;overwriting portable file atomically;;
78;por-file.at:52;write to same portable file being read;;
79;por-file.at:86;write portable file with value labels;;
80;sys-file-reader.at:19;variable labels and missing values;sack synthetic system file positive;
81;sys-file-reader.at:184;unspecified number of variable positions;sack synthetic system file positive;
82;sys-file-reader.at:235;wrong number of variable positions but version 13;sack synthetic system file positive;
83;sys-file-reader.at:289;value labels;sack synthetic system file positive;
84;sys-file-reader.at:472;documents;sack synthetic system file positive;
85;sys-file-reader.at:533;empty document record;sack synthetic system file positive;
86;sys-file-reader.at:580;variable sets;sack synthetic system file positive set;
87;sys-file-reader.at:689;multiple response sets;sack synthetic system file positive;
88;sys-file-reader.at:782;extra product info;sack synthetic system file positive;
89;sys-file-reader.at:830;variable display parameters, without width;sack synthetic system file positive;
90;sys-file-reader.at:913;variable display parameters, with width;sack synthetic system file positive;
91;sys-file-reader.at:996;long variable names;sack synthetic system file positive;
92;sys-file-reader.at:1063;very long strings;sack synthetic system file positive;
93;sys-file-reader.at:1132;data file and variable attributes;sack synthetic system file positive;
94;sys-file-reader.at:1224;variable roles;sack synthetic system file positive;
95;sys-file-reader.at:1292;compressed data;sack synthetic system file positive;
96;sys-file-reader.at:1355;compressed data, zero bias;sack synthetic system file positive;
97;sys-file-reader.at:1418;compressed data, other bias;sack synthetic system file positive;
98;sys-file-reader.at:1554;zcompressed data;sack synthetic system file positive zlib;
99;sys-file-reader.at:1585;no variables;sack synthetic system file negative;
100;sys-file-reader.at:1622;unspecified character encoding;sack synthetic system file positive;
101;sys-file-reader.at:1658;misplaced type 4 record;sack synthetic system file negative;
102;sys-file-reader.at:1681;bad record type;sack synthetic system file negative;
103;sys-file-reader.at:1704;wrong number of variable positions;sack synthetic system file negative;
104;sys-file-reader.at:1730;variable name may not begin with \`#';sack synthetic system file negative;
105;sys-file-reader.at:1756;variable name may not be reserved word;sack synthetic system file negative;
106;sys-file-reader.at:1782;variable width must be between 0 and 255;sack synthetic system file negative;
107;sys-file-reader.at:1810;duplicate variable name;sack synthetic system file negative;
108;sys-file-reader.at:1843;variable label indicator not 0 or 1;sack synthetic system file negative;
109;sys-file-reader.at:1869;invalid numeric missing value indicator;sack synthetic system file negative;
110;sys-file-reader.at:1895;invalid string missing value indicator;sack synthetic system file negative;
111;sys-file-reader.at:1921;missing string continuation record;sack synthetic system file negative;
112;sys-file-reader.at:1948;invalid variable format;sack synthetic system file negative;
113;sys-file-reader.at:1997;invalid long string missing values;sack synthetic system file negative;
114;sys-file-reader.at:2092;weighting variable must be numeric;sack synthetic system file negative;
115;sys-file-reader.at:2127;bad weighting variable index;sack synthetic system file negative;
116;sys-file-reader.at:2156;variable index is long string continuation;sack synthetic system file negative;
117;sys-file-reader.at:2186;multiple documents records;sack synthetic system file negative;
118;sys-file-reader.at:2221;extension record too large;sack synthetic system file negative;
119;sys-file-reader.at:2245;unknown extension record;sack synthetic system file negative;
120;sys-file-reader.at:2275;bad machine integer info size;sack synthetic system file negative;
121;sys-file-reader.at:2305;bad machine integer info float format;sack synthetic system file negative;
122;sys-file-reader.at:2335;bad machine integer info endianness;sack synthetic system file negative;
123;sys-file-reader.at:2372;bad machine floating-point info size;sack synthetic system file negative;
124;sys-file-reader.at:2402;wrong special floating point values;sack synthetic system file negative;
125;sys-file-reader.at:2435;unknown variables in variable sets;sack synthetic system file negative set;
126;sys-file-reader.at:2526;bad mrsets name;sack synthetic system file negative multiple response;
127;sys-file-reader.at:2611;missing space after C in mrsets;sack synthetic system file negative multiple response;
128;sys-file-reader.at:2639;missing space after E in mrsets;sack synthetic system file negative multiple response;
129;sys-file-reader.at:2667;missing label source in mrsets;sack synthetic system file negative multiple response;
130;sys-file-reader.at:2697;unexpected label source in mrsets;sack synthetic system file negative multiple response;
131;sys-file-reader.at:2727;bad type character in mrsets;sack synthetic system file negative multiple response;
132;sys-file-reader.at:2755;bad counted string length in mrsets;sack synthetic system file negative multiple response;
133;sys-file-reader.at:2783;missing space in counted string in mrsets;sack synthetic system file negative multiple response;
134;sys-file-reader.at:2811;counted string too long in mrsets;sack synthetic system file negative multiple response;
135;sys-file-reader.at:2839;missing space after counted string in mrsets;sack synthetic system file negative multiple response;
136;sys-file-reader.at:2867;missing newline after variable name in mrsets;sack synthetic system file negative multiple response;
137;sys-file-reader.at:2897;duplicate variable name in mrsets;sack synthetic system file negative multiple response;
138;sys-file-reader.at:2927;mixed variable types in mrsets;sack synthetic system file negative multiple response;
139;sys-file-reader.at:2958;missing newline after variable name in mrsets;sack synthetic system file negative multiple response;
140;sys-file-reader.at:2986;zero or one variable in mrset;sack synthetic system file negative multiple response;
141;sys-file-reader.at:3016;wrong display parameter size;sack synthetic system file negative;
142;sys-file-reader.at:3045;wrong display parameter count;sack synthetic system file negative;
143;sys-file-reader.at:3074;wrong display measurement level;sack synthetic system file negative;
144;sys-file-reader.at:3103;wrong display alignment;sack synthetic system file negative;
145;sys-file-reader.at:3132;bad variable name in variable/value pair;sack synthetic system file negative;
146;sys-file-reader.at:3162;duplicate long variable name;sack synthetic system file negative;
147;sys-file-reader.at:3207;bad very long string length;sack synthetic system file negative;
148;sys-file-reader.at:3245;bad very long string segment width;sack synthetic system file negative;
149;sys-file-reader.at:3280;too many value labels;sack synthetic system file negative;
150;sys-file-reader.at:3302;missing type 4 record;sack synthetic system file negative;
151;sys-file-reader.at:3332;value label with no associated variables;sack synthetic system file negative;
152;sys-file-reader.at:3356;type 4 record names long string variable;sack synthetic system file negative;
153;sys-file-reader.at:3387;value label variable indexes must be in correct range;sack synthetic system file negative;
154;sys-file-reader.at:3430;value label variable indexes must not be long string continuation;sack synthetic system file negative;
155;sys-file-reader.at:3461;variables for value label must all be same type;sack synthetic system file negative;
156;sys-file-reader.at:3492;duplicate value labels type;sack synthetic system file negative;
157;sys-file-reader.at:3526;missing attribute value;sack synthetic system file negative;
158;sys-file-reader.at:3566;unquoted attribute value;sack synthetic system file negative;
159;sys-file-reader.at:3607;duplicate attribute name;sack synthetic system file negative;
160;sys-file-reader.at:3649;bad variable name in long string value label;sack synthetic system file negative;
161;sys-file-reader.at:3708;fewer data records than indicated by file header;sack synthetic system file negative;
162;sys-file-reader.at:3748;partial data record between variables;sack synthetic system file negative;
163;sys-file-reader.at:3782;partial data record within long string;sack synthetic system file negative;
164;sys-file-reader.at:3816;partial compressed data record;sack synthetic system file positive;
165;sys-file-reader.at:3864;zcompressed data - bad zheader_ofs;sack synthetic system file negative zlib;
166;sys-file-reader.at:3876;zcompressed data - bad ztrailer_ofs;sack synthetic system file negative zlib;
167;sys-file-reader.at:3890;zcompressed data - invalid ztrailer_len;sack synthetic system file negative zlib;
168;sys-file-reader.at:3903;zcompressed data - wrong ztrailer_len;sack synthetic system file negative zlib;
169;sys-file-reader.at:3916;zcompressed data - wrong ztrailer_bias;sack synthetic system file negative zlib;
170;sys-file-reader.at:3928;zcompressed data - wrong ztrailer_zero;sack synthetic system file negative zlib;
171;sys-file-reader.at:3940;zcompressed data - wrong block_size;sack synthetic system file negative zlib;
172;sys-file-reader.at:3952;zcompressed data - wrong n_blocks;sack synthetic system file negative zlib;
173;sys-file-reader.at:3964;zcompressed data - wrong uncompressed_ofs;sack synthetic system file negative zlib;
174;sys-file-reader.at:3976;zcompressed data - wrong compressed_ofs;sack synthetic system file negative zlib;
175;sys-file-reader.at:3988;zcompressed data - compressed sizes don't add up;sack synthetic system file negative zlib;
176;sys-file-reader.at:4054;zcompressed data - uncompressed_size > block_size;sack synthetic system file negative zlib;
177;sys-file-reader.at:4066;zcompressed data - compression expands data too much;sack synthetic system file negative zlib;
178;sys-file-reader.at:4079;zcompressed data - compressed sizes don't add up;sack synthetic system file negative zlib;
179;sys-file-reader.at:4096;integer overflows in long string missing values;system file negative;
180;sys-file-reader.at:4109;null dereference skipping bad extension record 18;system file negative;
181;sys-file.at:20;write and read numeric data;save get system file;
182;sys-file.at:62;write and read long string value labels and missing values;save get system file;
183;sys-file.at:112;write and read compressed files;save get system file;
184;sys-file.at:139;overwriting system file;;
185;sys-file.at:154;overwriting system file atomically;;
186;sys-file.at:173;write to same system file being read;;
187;sys-file.at:204;nonempty case_map doesn't crash;save system file;
188;sys-file.at:230;system files with -1 case_size;save get;
189;sys-file.at:289;write v2 system file;save;
190;sys-file.at:330;read very long strings written by SPSS 13;;
191;sys-file.at:353;read very long strings written by SPSS 14;;
192;sys-file.at:420;save very long string -- uncompressed;;
193;sys-file.at:421;save very long string -- compressed;;
194;sys-file.at:426;system file character encoding;;
195;encrypted-file.at:19;decrypt an encrypted system file;system file decrypt pspp-convert;
196;encrypted-file.at:45;decrypt an encrypted syntax file;syntax file decrypt pspp-convert;
197;encrypted-file.at:68;decrypt an encrypted viewer file;syntax file decrypt pspp-convert spv;
198;command.at:19;command parser negative tests;;
199;command.at:46;command parser crash bug;;
200;command.at:66;FINISH executes immediately;;
201;command.at:72;ERASE -- safer mode;;
202;command.at:89;ERASE -- not safer mode;;
203;command.at:102;N OF CASES;;
204;command.at:141;COMMENT at end of file;;
205;command-name.at:19;single words;command name matching;
206;command-name.at:61;two words without prefix match;command name matching;
207;command-name.at:102;two words with prefix match;command name matching;
208;command-name.at:128;ambiguous single-word names;command name matching;
209;command-name.at:154;ambiguous two-word names;command name matching;
210;command-name.at:190;numbers and punctuation;command name matching;
211;command-name.at:226;off by more than one word;command name matching;
212;lexer.at:19;lexer ignores initial #! line;;
213;lexer.at:38;lexer properly reports scan errors;;
214;lexer.at:104;lexer crash due to null byte;;
215;lexer.at:126;lexer crash due to overflow;;
216;lexer.at:137;lexer crash due to reentrancy in error processing;;
217;scan.at:25;identifiers;scan;
218;scan.at:68;reserved words;scan;
219;scan.at:124;punctuation;scan;
220;scan.at:186;positive numbers;scan;
221;scan.at:237;negative numbers;scan;
222;scan.at:299;strings;scan;
223;scan.at:366;#! construct;scan;
224;scan.at:386;* and COMMENT commands;scan;
225;scan.at:433;DOCUMENT command;scan;
226;scan.at:472;FILE LABEL commands;scan;
227;scan.at:500;BEGIN DATA command;scan;
228;scan.at:538;DO REPEAT command;scan;
229;scan.at:578;DO REPEAT command in batch mode;scan;
230;scan.at:632;DEFINE command - simple;scan;
231;scan.at:652;DEFINE command - no newline after parentheses;scan;
232;scan.at:671;DEFINE command - no newline before !ENDDEFINE;scan enddefine;
233;scan.at:690;DEFINE command - all on one line;scan;
234;scan.at:708;DEFINE command - empty;scan;
235;scan.at:726;DEFINE command - blank lines;scan;
236;scan.at:748;DEFINE command - arguments;scan;
237;scan.at:777;DEFINE command - multiline arguments;scan;
238;scan.at:810;DEFINE command - arguments start on second line;scan;
239;scan.at:839;DEFINE command - early end of command 1;scan;
240;scan.at:860;DEFINE command - early end of command 2;scan;
241;scan.at:883;DEFINE command - early end of command 3;scan;
242;scan.at:908;DEFINE command - early end of command 4;segment;
243;scan.at:931;DEFINE command - missing !ENDDEFINE;scan;
244;scan.at:950;batch mode;scan;
245;segment.at:31;identifiers;segment;
246;segment.at:120;identifiers that end in '.';segment;
247;segment.at:226;reserved words;segment;
248;segment.at:290;punctuation;segment;
249;segment.at:360;positive numbers;segment;
250;segment.at:429;negative numbers;segment;
251;segment.at:506;strings;segment;
252;segment.at:578;#! construct;segment;
253;segment.at:610;* and COMMENT commands;segment;
254;segment.at:721;DOCUMENT command;segment;
255;segment.at:794;FILE LABEL command;segment;
256;segment.at:847;BEGIN DATA command;segment;
257;segment.at:999;DO REPEAT command;segment;
258;segment.at:1097;DO REPEAT command in batch mode;segment;
259;segment.at:1198;DEFINE command - simple;segment;
260;segment.at:1226;DEFINE command - no newline after parentheses;segment;
261;segment.at:1250;DEFINE command - no newline before !ENDDEFINE;segment enddefine;
262;segment.at:1275;DEFINE command - all on one line;segment;
263;segment.at:1296;DEFINE command - empty;segment;
264;segment.at:1320;DEFINE command - blank lines;segment;
265;segment.at:1352;DEFINE command - arguments;segment;
266;segment.at:1387;DEFINE command - multiline arguments;segment;
267;segment.at:1437;DEFINE command - arguments start on second line;segment;
268;segment.at:1480;DEFINE command - early end of command 1;segment;
269;segment.at:1510;DEFINE command - early end of command 2;segment;
270;segment.at:1545;DEFINE command - early end of command 3;segment;
271;segment.at:1583;DEFINE command - early end of command 4;segment;
272;segment.at:1615;DEFINE command - missing !ENDDEFINE;segment;
273;segment.at:1641;batch mode;segment;
274;segment.at:1695;auto mode;segment;
275;segment.at:1785;empty input;segment;
276;segment.at:1795;blank lines input;segment;
277;segment.at:1825;input ends in carriage return;segment;
278;variable-parser.at:22;Long variable names;;
279;variable-parser.at:69;variable parser crash;;
280;evaluate.at:18;expressions - numeric syntax;expression expressions evaluate;
281;evaluate.at:44;expressions - coercion to and from Boolean;expression expressions evaluate;
282;evaluate.at:96;expressions - addition and subtraction;expression expressions evaluate;
283;evaluate.at:231;expressions - multiplication and division;expression expressions evaluate;
284;evaluate.at:308;expressions - exponentiation;expression expressions evaluate;
285;evaluate.at:352;expressions - unary minus;expression expressions evaluate;
286;evaluate.at:392;expressions - AND truth table;expression expressions evaluate;
287;evaluate.at:460;expressions - OR truth table;expression expressions evaluate;
288;evaluate.at:528;expressions - NOT truth table;expression expressions evaluate;
289;evaluate.at:598;expressions - = <= <;expression expressions evaluate eq le lt;
290;evaluate.at:896;expressions - >= > <>;expression expressions evaluate ge gt ne;
291;evaluate.at:1143;expressions - EXP LG10 LN SQRT ABS MOD MOD10 RND TRUNC;expression expressions evaluate;
292;evaluate.at:1370;expressions - ACOS ARSIN ARTAN COS SIN TAN;expression expressions evaluate;
293;evaluate.at:1611;expressions - vector indexing;expression expressions evaluate;
294;evaluate.at:1718;expressions - MISSING NMISS NVALID SYSMIS;expression expressions evaluate;
295;evaluate.at:1871;expressions - ANY;expression expressions evaluate;
296;evaluate.at:2054;expressions - RANGE;expression expressions evaluate;
297;evaluate.at:2374;expressions - MAX MIN;expression expressions evaluate;
298;evaluate.at:2487;expressions - CFVAR MEAN MEDIAN;expression expressions evaluate;
299;evaluate.at:2653;expressions - SD SUM VARIANCE;expression expressions evaluate;
300;evaluate.at:2827;expressions - CONCAT;expression expressions evaluate;
301;evaluate.at:2870;expressions - INDEX;expression expressions evaluate;
302;evaluate.at:2994;expressions - RINDEX;expression expressions evaluate;
303;evaluate.at:3194;expressions - LENGTH;expression expressions evaluate;
304;evaluate.at:3250;expressions - LOWER;expression expressions evaluate;
305;evaluate.at:3285;expressions - REPLACE;expression expressions evaluate;
306;evaluate.at:3343;expressions - LPAD;expression expressions evaluate;
307;evaluate.at:3525;expressions - NUMBER;expression expressions evaluate;
308;evaluate.at:3578;expressions - LTRIM;expression expressions evaluate;
309;evaluate.at:3675;expressions - RPAD;expression expressions evaluate;
310;evaluate.at:3857;expressions - RTRIM;expression expressions evaluate;
311;evaluate.at:3954;expressions - STRING;expression expressions evaluate;
312;evaluate.at:4009;expressions - STRUNC;expression expressions evaluate;
313;evaluate.at:4108;expressions - SUBSTR;expression expressions evaluate;
314;evaluate.at:4328;expressions - UPCASE;expression expressions evaluate;
315;evaluate.at:4361;expressions - TIME.DAYS;expression expressions evaluate;
316;evaluate.at:4400;expressions - TIME.HMS;expression expressions evaluate;
317;evaluate.at:4533;expressions - CTIME.*;expression expressions evaluate ctime;
318;evaluate.at:4709;expressions - DATE.DMY;expression expressions evaluate;
319;evaluate.at:4762;expressions - YRMODA;expression expressions evaluate;
320;evaluate.at:4889;expressions - DATE.MDY;expression expressions evaluate;
321;evaluate.at:5109;expressions - DATE.MOYR;expression expressions evaluate;
322;evaluate.at:5207;expressions - DATE.QYR;expression expressions evaluate;
323;evaluate.at:5296;expressions - DATE.WKYR;expression expressions evaluate;
324;evaluate.at:5380;expressions - DATE.YRDAY;expression expressions evaluate;
325;evaluate.at:5474;expressions - XDATE.DATE;expression expressions evaluate;
326;evaluate.at:5564;expressions - XDATE.HOUR;expression expressions evaluate;
327;evaluate.at:5660;expressions - XDATE.JDAY;expression expressions evaluate;
328;evaluate.at:5743;expressions - XDATE.MDAY;expression expressions evaluate;
329;evaluate.at:5817;expressions - XDATE.MINUTE;expression expressions evaluate;
330;evaluate.at:5891;expressions - XDATE.MONTH;expression expressions evaluate;
331;evaluate.at:5965;expressions - XDATE.QUARTER;expression expressions evaluate;
332;evaluate.at:6039;expressions - XDATE.SECOND;expression expressions evaluate;
333;evaluate.at:6113;expressions - XDATE.TDAY;expression expressions evaluate;
334;evaluate.at:6187;expressions - XDATE.TIME;expression expressions evaluate;
335;evaluate.at:6261;expressions - XDATE.WEEK;expression expressions evaluate;
336;evaluate.at:6335;expressions - XDATE.WKDAY;expression expressions evaluate;
337;evaluate.at:6409;expressions - XDATE.YEAR;expression expressions evaluate;
338;evaluate.at:6483;expressions - DATEDIFF years;expression expressions evaluate;
339;evaluate.at:6631;expressions - DATEDIFF quarters;expression expressions evaluate;
340;evaluate.at:6778;expressions - DATEDIFF months;expression expressions evaluate;
341;evaluate.at:6925;expressions - DATEDIFF weeks;expression expressions evaluate;
342;evaluate.at:7005;expressions - DATEDIFF days;expression expressions evaluate;
343;evaluate.at:7086;expressions - DATEDIFF time of day;expression expressions evaluate;
344;evaluate.at:7163;expressions - DATESUM with non-leap year;expression expressions evaluate;
345;evaluate.at:7281;expressions - DATESUM with leap year;expression expressions evaluate;
346;evaluate.at:7399;expressions - DATESUM;expression expressions evaluate;
347;evaluate.at:7469;expressions - DATESUM preserves time of day for units of days and longer;expression expressions evaluate;
348;evaluate.at:7500;expressions - NCDF.BETA;expression expressions evaluate;
349;evaluate.at:7545;expressions - generic tree optimizations;expression expressions evaluate;
350;evaluate.at:7595;expressions - LAG;;
351;evaluate.at:7627;expression - LAG crash;;
352;evaluate.at:7652;expressions - UNIFORM;;
353;evaluate.at:7694;expressions - VALUELABEL;;
354;evaluate.at:7738;expressions - variables;;
355;evaluate.at:7787;expressions - vectors;;
356;parse.at:19;parse expression with unknown variable crash;expression expressions parse;
357;parse.at:44;parsing boolean expression with type mismatch;expression expressions parse;
358;parse.at:58;parsing numeric expression with type mismatch;expression expressions parse;
359;parse.at:72;parsing string expression with type mismatch;expression expressions parse negative;
360;parse.at:86;assigning string expression to new variable;expression expressions parse negative;
361;parse.at:102;parse expression with unknown system variable;expression expressions parse negative;
362;parse.at:115;parse expression with unknown identifier;expression expressions parse negative;
363;parse.at:128;parse expression with extension function in compatibility mode;expression expressions parse negative;
364;parse.at:142;LAG expression following TEMPORARY;expression expressions parse negative;
365;parse.at:157;parse expression with invalid logical expression;expression expressions parse negative;
366;parse.at:178;chaining operators that shouldn't be;expression expressions parse negative;
367;parse.at:222;binary operator type mismatch;expression expressions parse negative;
368;parse.at:326;unary operator type mismatch;expression expressions parse negative;
369;parse.at:396;parsing with negative numbers;expression expressions parse;
370;parse.at:418;system variables;expression expressions parse;
371;parse.at:435;system variables - \$DATE \$DATE11 \$JDATE \$TIME;expression expressions parse;
372;parse.at:470;expressions - negative checks;expression expressions parse;
373;add-files.at:120;ADD FILES -- interleave sav with sav;;
374;add-files.at:121;ADD FILES -- interleave sav with inline;;
375;add-files.at:122;ADD FILES -- interleave inline with sav;;
376;add-files.at:123;ADD FILES -- concatenate sav with sav;;
377;add-files.at:124;ADD FILES -- concatenate sav with inline;;
378;add-files.at:125;ADD FILES -- concatenate inline with sav;;
379;aggregate.at:193;AGGREGATE presorted data to dataset file, itemwise missing;;
380;aggregate.at:194;AGGREGATE presorted data to dataset file, columnwise missing;;
381;aggregate.at:195;AGGREGATE unsorted data to dataset file, itemwise missing;;
382;aggregate.at:196;AGGREGATE unsorted data to dataset file, columnwise missing;;
383;aggregate.at:197;AGGREGATE presorted data to active file, itemwise missing;;
384;aggregate.at:198;AGGREGATE presorted data to active file, columnwise missing;;
385;aggregate.at:199;AGGREGATE unsorted data to active file, itemwise missing;;
386;aggregate.at:200;AGGREGATE unsorted data to active file, columnwise missing;;
387;aggregate.at:201;AGGREGATE presorted data to external file, itemwise missing;;
388;aggregate.at:202;AGGREGATE presorted data to external file, columnwise missing;;
389;aggregate.at:203;AGGREGATE unsorted data to external file, itemwise missing;;
390;aggregate.at:204;AGGREGATE unsorted data to external file, columnwise missing;;
391;aggregate.at:206;AGGREGATE crash with MAX function;;
392;aggregate.at:232;AGGREGATE crash with invalid syntax;;
393;aggregate.at:248;AGGREGATE mode=addvariables;;
394;aggregate.at:286;AGGREGATE duplicate variable errors;;
395;aggregate.at:311;AGGREGATE presorted warnings;;
396;aggregate.at:358;AGGREGATE - subcommand syntax errors;;
397;aggregate.at:388;AGGREGATE - aggregation function syntax errors;;
398;aggregate.at:515;AGGREGATE - temporary transformations;;
399;apply.at:19;APPLY DICTIONARY;;
400;attributes.at:19;VARIABLE ATTRIBUTES and DATAFILE ATTRIBUTES;;
401;autorecode.at:19;AUTORECODE multiple missing values;;
402;autorecode.at:117;AUTORECODE numbers and short strings;;
403;autorecode.at:188;AUTORECODE long strings and check the value labels;;
404;autorecode.at:244;AUTORECODE group subcommand;;
405;autorecode.at:298;AUTORECODE group - string variables;;
406;autorecode.at:346;AUTORECODE group vs. strings;;
407;autorecode.at:387;AUTORECODE /blank;;
408;autorecode.at:434;AUTORECODE with TEMPORARY;;
409;autorecode.at:488;AUTORECODE with scratch variables;;
410;autorecode.at:549;AUTORECODE with /INTO;;
411;autorecode.at:588;AUTORECODE with /BLANK without specifier;;
412;cache.at:19;CACHE;;
413;cd.at:19;CD;;
414;compute.at:19;COMPUTE crash with SAVE;;
415;compute.at:38;COMPUTE bug in long string UPCASE;;
416;compute.at:66;COMPUTE bug with long variable names;;
417;compute.at:92;COMPUTE self-reference to new variable;;
418;correlations.at:19;CORRELATIONS -- unweighted;;
419;correlations.at:91;CORRELATIONS -- weighted;;
420;correlations.at:139;CORRELATIONS -- non-square;;
421;correlations.at:168;CORRELATIONS -- crash with WITH keyword;;
422;correlations.at:224;CORRELATIONS -- incorrect subtable selection;;
423;correlations.at:376;CORRELATIONS -- empty dataset;;
424;correlations.at:388;CORRELATIONS -- empty dataset 2;;
425;correlations.at:412;CORRELATIONS -- syntax errors;;
426;count.at:19;COUNT -- numeric data;;
427;count.at:58;COUNT -- string data;;
428;crosstabs.at:20;CROSSTABS residuals;;
429;crosstabs.at:80;CROSSTABS integer mode crash;;
430;crosstabs.at:119;CROSSTABS integer mode crash 2;;
431;crosstabs.at:153;CROSSTABS long string crash;;
432;crosstabs.at:194;CROSSTABS crash;;
433;crosstabs.at:254;CROSSTABS chi-square crash;;
434;crosstabs.at:298;CROSSTABS crash with SPLIT FILE;;
435;crosstabs.at:396;3-way CROSSTABS;;
436;crosstabs.at:523;CROSSTABS rounding weights with COUNT;;
437;crosstabs.at:631;CROSSTABS descending sort order;;
438;crosstabs.at:667;CROSSTABS crash when all cases missing;;
439;crosstabs.at:694;CROSSTABS Fisher Exact Test;;
440;crosstabs.at:959;CROSSTABS Pearson's R - 1;;
441;crosstabs.at:999;CROSSTABS Pearson's R - 2;;
442;crosstabs.at:1050;CROSSTABS Pearson's R - 3;;
443;crosstabs.at:1097;CROSSTABS Pearson's R - 4;;
444;crosstabs.at:1149;CROSSTABS Pearson's R - 5;;
445;crosstabs.at:1200;CROSSTABS Goodman and Kruskal's lambda - 1;;
446;crosstabs.at:1236;CROSSTABS Goodman and Kruskal's lambda - 2;;
447;crosstabs.at:1275;CROSSTABS Goodman and Kruskal's lambda - 3;;
448;crosstabs.at:1318;CROSSTABS Goodman and Kruskal's lambda - treatment of ties;;
449;crosstabs.at:1354;CROSSTABS Somers' D, Tau-B, Tau-C, Gamma - 1;;
450;crosstabs.at:1395;CROSSTABS Somers' D, Tau-B, Tau-C, Gamma - 2;;
451;crosstabs.at:1438;CROSSTABS Somers' D, Tau-B, Tau-C, Gamma - 3;;
452;crosstabs.at:1707;CROSSTABS Cohens Kappa;;
453;crosstabs.at:1753;CROSSTABS many statistics;;
454;crosstabs.at:1812;CROSSTABS uncertainy coefficient;;
455;crosstabs.at:1850;CROSSTABS estimated risk;;
456;crosstabs.at:1906;CROSSTABS barchart;;
457;crosstabs.at:1943;CROSSTABS syntax errors;;
458;ctables.at:51;CTABLES parsing;;
459;ctables.at:120;CTABLES parsing - negative;;
460;ctables.at:705;CTABLES parsing - more negative;;
461;ctables.at:894;CTABLES one categorical variable;;
462;ctables.at:937;CTABLES one string variable;;
463;ctables.at:1027;CTABLES one scale variable;;
464;ctables.at:1074;CTABLES simple stacking;stack stacked;
465;ctables.at:1134;CTABLES show or hide empty categories;;
466;ctables.at:1229;CTABLES categories and EMPTY;;
467;ctables.at:1293;CTABLES interaction between EMPTY and PCOMPUTE;;
468;ctables.at:1380;CTABLES sorting categories;;
469;ctables.at:1462;CTABLES simple nesting;nest nested;
470;ctables.at:1667;CTABLES nesting and scale variables;nest nested;
471;ctables.at:1787;CTABLES SLABELS;;
472;ctables.at:1850;CTABLES SLABELS with stacking different summaries;;
473;ctables.at:1895;CTABLES simple totals;;
474;ctables.at:1960;CTABLES subtotals;;
475;ctables.at:2041;CTABLES PCOMPUTE;postcompute;
476;ctables.at:2113;CTABLES PCOMPUTE - OTHERNM and MISSING;postcompute;
477;ctables.at:2150;CTABLES PCOMPUTE - THRU;postcompute;
478;ctables.at:2192;CTABLES intersecting PCOMPUTEs;pcompute postcompute;
479;ctables.at:2238;CTABLES string and date and time;;
480;ctables.at:2306;CTABLES CLABELS;;
481;ctables.at:2498;CTABLES CLABELS with VLABELS DISPLAY=NONE;;
482;ctables.at:2668;CTABLES missing values;;
483;ctables.at:2934;CTABLES SMISSING=LISTWISE;smissing listwise;
484;ctables.at:2984;CTABLES VLABELS - variables on different axes;;
485;ctables.at:3089;CTABLES VLABELS - stacked variables;stack stacking;
486;ctables.at:3197;CTABLES VLABELS - nested variables;nest nesting;
487;ctables.at:3356;CTABLES FORMAT EMPTY;;
488;ctables.at:3433;CTABLES FORMAT MISSING;;
489;ctables.at:3464;CTABLES HIDESMALLCOUNTS;;
490;ctables.at:3556;CTABLES FORMAT MINCOLWIDTH MAXCOLWIDTH;;
491;ctables.at:3581;CTABLES special formats;negparen nequal paren pctparen;
492;ctables.at:3599;CTABLES TITLES;;
493;ctables.at:3638;CTABLES area definitions;;
494;ctables.at:3806;CTABLES area definitions with CLABELS ROWLABELS=OPPOSITE;rowlabels opposite;
495;ctables.at:4014;CTABLES area definitions with CLABELS COLLABELS=OPPOSITE;collabels opposite;
496;ctables.at:4438;CTABLES area definitions with CLABELS ROWLABELS=LAYER;rowlabels layer;
497;ctables.at:4822;CTABLES area definitions with CLABELS COLLABELS=LAYER;collabels layer;
498;ctables.at:5342;CTABLES categorical summary functions;;
499;ctables.at:5407;CTABLES scale summary functions;;
500;ctables.at:5485;CTABLES scale summary functions - weighting;;
501;ctables.at:5689;CTABLES hidden scale VLABELS;;
502;ctables.at:5777;CTABLES with SPLIT FILE;;
503;ctables.at:5893;CTABLES variable level inference;;
504;data-list.at:19;DATA LIST LIST with empty fields;;
505;data-list.at:50;DATA LIST LIST with explicit delimiters;;
506;data-list.at:79;DATA LIST FREE with SKIP;;
507;data-list.at:113;DATA LIST LIST with SKIP and tab delimiter;;
508;data-list.at:162;DATA LIST FREE with explicit delimiter at end of line;;
509;data-list.at:223;DATA LIST FIXED with multiple records per case;;
510;data-list.at:255;DATA LIST FIXED with empty trailing record;;
511;data-list.at:285;DATA LIST with various line-ends;;
512;data-list.at:309;DATA LIST properly expands tabs in input;;
513;data-list.at:339;DATA LIST FREE and LIST report missing delimiters;;
514;data-list.at:357;DATA LIST FREE and LIST assume a width if omitted;;
515;data-list.at:370;DATA LIST Decimal comma;;
516;data-list.at:404;DATA LIST syntax errors;;
517;data-list.at:593;DATA LIST FIXED manual example 1;;
518;data-list.at:627;DATA LIST FIXED manual example 2;;
519;data-list.at:700;DATA LIST inside LOOP;;
520;data-reader.at:21;BEGIN DATA as part of a procedure;;
521;data-reader.at:52;BEGIN DATA as an independent command;;
522;data-reader.at:263;read and write files with MODE=BINARY;;
523;data-reader.at:264;read and write files with MODE=360 /RECFORM=FIXED /LRECL=32;;
524;data-reader.at:266;read and write files with MODE=360 /RECFORM=VARIABLE;;
525;data-reader.at:268;read and write files with MODE=360 /RECFORM=SPANNED;;
526;dataset.at:19;DATASET COPY;;
527;dataset.at:110;DATASET DECLARE;;
528;dataset.at:141;DATASET NAME deletes duplicate name;;
529;dataset.at:163;DATASET ACTIVATE deletes unnamed dataset;;
530;dataset.at:181;DATASET ACTIVATE executes pending transformations;;
531;dataset.at:232;DATASET CLOSE;;
532;dataset.at:306;DATASET heap overflow;;
533;dataset.at:335;DATASET syntax errors;;
534;date.at:19;USE ALL;;
535;define.at:19;simple macro expansion;;
536;define.at:44;redefining a macro;;
537;define.at:56;macro expansion - one !TOKENS(1) positional argument;tokens;
538;define.at:77;macro expansion with positional arguments;;
539;define.at:196;macro call missing positional !TOKENS arguments;tokens;
540;define.at:221;macro call incomplete positional !TOKENS arguments;tokens;
541;define.at:270;macro call empty positional !CHAREND arguments;charend;
542;define.at:307;macro call missing positional !CHAREND arguments;;
543;define.at:345;macro call incomplete positional !CHAREND arguments;charend;
544;define.at:394;macro call missing positional !ENCLOSE arguments;enclose;
545;define.at:419;macro call incomplete positional !ENCLOSE arguments;enclose;
546;define.at:492;keyword macro argument name with ! prefix;;
547;define.at:503;reserved macro keyword argument name;;
548;define.at:514;macro expansion - one !TOKENS(1) keyword argument;tokens;
549;define.at:535;macro expansion - one !TOKENS(1) keyword argument - negative;tokens;
550;define.at:561;macro expansion - !CHAREND keyword arguments;charend;
551;define.at:586;macro expansion - !CHAREND keyword arguments - negative;charend;
552;define.at:631;macro expansion - !ENCLOSE keyword arguments;enclose;
553;define.at:656;macro expansion - !ENCLOSE keyword arguments - negative;enclose;
554;define.at:742;macro expansion - !BLANKS;blanks;
555;define.at:772;macro expansion - !CONCAT;concat;
556;define.at:802;macro expansion - !EVAL;eval;
557;define.at:839;macro expansion - !HEAD;head;
558;define.at:861;macro expansion - !TAIL;tail;
559;define.at:883;macro expansion - !INDEX;index;
560;define.at:909;macro expansion - !LENGTH;length;
561;define.at:952;macro expansion - !NULL;null;
562;define.at:970;macro expansion - !QUOTE and !UNQUOTE;quote unquote;
563;define.at:1018;macro expansion - !SUBSTR;substr;
564;define.at:1054;macro expansion - !UPCASE;upcase;
565;define.at:1077;macro expansion - !*;;
566;define.at:1101;macro maximum nesting level (MNEST);mnest;
567;define.at:1171;macro !IF condition;if;
568;define.at:1210;macro !IF condition -- case sensitivity;if;
569;define.at:1254;macro !IF condition -- logical operators;if;
570;define.at:1319;macro !LET;let;
571;define.at:1355;macro indexed !DO;index do;
572;define.at:1417;macro !DO invalid variable names;index do;
573;define.at:1451;macro indexed !DO reaches MITERATE;index do;
574;define.at:1535;!BREAK with macro indexed !DO;index do break;
575;define.at:1562;macro list !DO;index do;
576;define.at:1583;macro list !DO reaches MITERATE;index do;
577;define.at:1619;!BREAK with macro list !DO;index break do;
578;define.at:1650;macro !LET;;
579;define.at:1670;macro !LET invalid variable names;;
580;define.at:1706;BEGIN DATA inside a macro;;
581;define.at:1729;TITLE and SUBTITLE with macros;macro;
582;define.at:1747;error message within macro expansion;;
583;define.at:1763;macro calls in each others' lookahead;;
584;define.at:1787;bad token in macro body;;
585;define.at:1801;macro name overlaps with macro function name;;
586;define.at:1817;generic macro function syntax errors;;
587;define.at:1963;specific macro function syntax errors;;
588;define.at:2000;macro expression errors;;
589;define.at:2038;macro !IF errors;if;
590;define.at:2075;macro !LET errors;let;
591;define.at:2121;macro !DO errors;do;
592;define.at:2225;macros in comments;macro;
593;define.at:2239;DEFINE syntax errors;macro;
594;define.at:2379;macro expansion with token merging;;
595;define.at:2442;one macro calls another;;
596;define.at:2458;DISPLAY MACROS;;
597;delete-variables.at:20;DELETE VARIABLES with FILTER;;
598;delete-variables.at:49;DELETE VARIABLES with string variables;;
599;delete-variables.at:68;DELETE VARIABLES crash;;
600;delete-variables.at:92;DELETE VARIABLES crash 2;;
601;delete-variables.at:109;DELETE VARIABLES syntax errors;;
602;descriptives.at:19;DESCRIPTIVES basics;;
603;descriptives.at:98;DESCRIPTIVES -- excluding missing data;;
604;descriptives.at:114;DESCRIPTIVES -- including missing data;;
605;descriptives.at:130;DESCRIPTIVES -- excluding missing data listwise;;
606;descriptives.at:146;DESCRIPTIVES -- including missing data listwise;;
607;descriptives.at:162;DESCRIPTIVES bug calculating mean only;;
608;descriptives.at:190;DESCRIPTIVES bug with TEMPORARY;;
609;descriptives.at:217;DESCRIPTIVES -- Z scores;;
610;descriptives.at:250;DESCRIPTIVES -- Z scores with SPLIT FILE;;
611;descriptives.at:323;DESCRIPTIVES -- Z scores bug with TEMPORARY;;
612;descriptives.at:374;DESCRIPTIVES -- Z scores with FILTER;;
613;descriptives.at:432;DESCRIPTIVES tutorial example;;
614;descriptives.at:450;DESCRIPTIVES syntax errors;;
615;do-if.at:19;DO IF;;
616;do-if.at:68;DO IF - negative;;
617;do-repeat.at:19;DO REPEAT -- simple;;
618;do-repeat.at:58;DO REPEAT -- containing BEGIN DATA;;
619;do-repeat.at:93;DO REPEAT -- dummy vars not expanded in include files;;
620;do-repeat.at:127;DO REPEAT -- nested;;
621;do-repeat.at:160;DO REPEAT -- empty;;
622;do-repeat.at:177;DO REPEAT -- missing END REPEAT;;
623;do-repeat.at:187;DO REPEAT -- syntax errors;;
624;do-repeat.at:256;DO REPEAT -- duplicate substitutions;;
625;examine.at:19;EXAMINE;categorical categoricals;
626;examine.at:191;EXAMINE -- extremes;categorical categoricals;
627;examine.at:252;EXAMINE -- extremes with fractional weights;categorical categoricals;
628;examine.at:329;EXAMINE -- percentiles;categorical categoricals;
629;examine.at:422;EXAMINE -- missing values;categorical categoricals;
630;examine.at:463;EXAMINE -- user missing values;categorical categoricals;
631;examine.at:490;EXAMINE -- missing values and percentiles;categorical categoricals;
632;examine.at:511;EXAMINE -- trimmed mean;categorical categoricals;
633;examine.at:559;EXAMINE -- crash bug;categorical categoricals;
634;examine.at:578;EXAMINE -- consecutive runs don't crash;categorical categoricals;
635;examine.at:597;EXAMINE -- missing values don't crash;categorical categoricals;
636;examine.at:615;EXAMINE -- single case doesn't crash;categorical categoricals;
637;examine.at:635;EXAMINE -- all-missing data doesn't crash;categorical categoricals;
638;examine.at:658;EXAMINE -- big input doesn't crash;categorical categoricals slow;
639;examine.at:679;EXAMINE -- big input doesn't crash 2;categorical categoricals slow;
640;examine.at:703;EXAMINE -- non-numeric ID;categorical categoricals;
641;examine.at:762;EXAMINE -- Bad Input;categorical categoricals;
642;examine.at:793;EXAMINE -- MISSING=REPORT;categorical categoricals;
643;examine.at:923;EXAMINE -- sample unweighted;categorical categoricals;
644;examine.at:1067;EXAMINE -- Empty Parentheses;categorical categoricals;
645;examine.at:1092;EXAMINE -- Bad variable;categorical categoricals;
646;examine.at:1116;EXAMINE -- Extremes vs. Missing Weights;categorical categoricals;
647;examine.at:1159;EXAMINE tutorial example 1;;
648;examine.at:1219;EXAMINE tutorial example 2;;
649;examine.at:1253;EXAMINE -- Crash on unrepresentable graphs;;
650;examine.at:1271;EXAMINE -- shapiro-wilk 1;shapiro wilk;
651;examine.at:1327;EXAMINE -- shapiro-wilk 2;shapiro wilk;
652;examine.at:1367;EXAMINE syntax errors;;
653;factor.at:19;FACTOR extraction=paf method=correlation;;
654;factor.at:1539;FACTOR extraction=pc method=correlation;;
655;factor.at:1800;FACTOR empty dataset;;
656;factor.at:1821;FACTOR /ROTATION=NOROTATE;;
657;factor.at:1896;FACTOR /CRITERIA=ITERATE;;
658;factor.at:1946;FACTOR promax;;
659;factor.at:2091;FACTOR covariance matrix;;
660;factor.at:2172;FACTOR correlation matrix;;
661;factor.at:2268;FACTOR bad input;;
662;factor.at:2301;FACTOR anti-image matrix;;
663;factor.at:2358;FACTOR Kaiser-Meyer-Olkin;;
664;factor.at:2404;FACTOR syntax errors;;
665;file-handle.at:19;FILE HANDLE;;
666;file-handle.at:45;FILE HANDLE syntax errors;;
667;file-handle.at:150;CLOSE FILE HANDLE;;
668;file-handle.at:197;CLOSE FILE HANDLE syntax errors;;
669;flip.at:19;FLIP with NEWNAMES;;
670;flip.at:68;FLIP without NEWNAMES;;
671;flip.at:106;FLIP badly formed;;
672;flip.at:122;FLIP with invalid variable names;;
673;formats.at:19;FORMATS positive tests;;
674;formats.at:68;FORMATS negative tests;;
675;frequencies.at:19;FREQUENCIES string variable;;
676;frequencies.at:50;FREQUENCIES with SPLIT FILE - LAYERED;;
677;frequencies.at:85;FREQUENCIES with SPLIT FILE - SEPARATE;;
678;frequencies.at:161;FREQUENCIES with SPLIT FILE - LAYERED - unsorted data;;
679;frequencies.at:209;FREQUENCIES two runs crash;;
680;frequencies.at:258;FREQUENCIES with LIMIT;;
681;frequencies.at:282;FREQUENCIES HTML output crash;;
682;frequencies.at:317;FREQUENCIES pie chart crash;;
683;frequencies.at:353;FREQUENCIES histogram crash;;
684;frequencies.at:384;FREQUENCIES median with histogram crash;;
685;frequencies.at:399;FREQUENCIES crash after TEMPORARY;;
686;frequencies.at:463;FREQUENCIES basic percentiles;;
687;frequencies.at:483;FREQUENCIES basic n-tiles;;
688;frequencies.at:504;FREQUENCIES compatibility percentiles;;
689;frequencies.at:546;FREQUENCIES enhanced percentiles;;
690;frequencies.at:587;FREQUENCIES enhanced percentiles, weighted;;
691;frequencies.at:632;FREQUENCIES enhanced percentiles, weighted (2);;
692;frequencies.at:675;FREQUENCIES enhanced percentiles, weighted (3);;
693;frequencies.at:716;FREQUENCIES enhanced percentiles, weighted, missing values;;
694;frequencies.at:762;FREQUENCIES dichotomous histogram;;
695;frequencies.at:796;FREQUENCIES median;;
696;frequencies.at:827;FREQUENCIES variance;;
697;frequencies.at:859;FREQUENCIES default statistics;;
698;frequencies.at:917;FREQUENCIES no valid data;;
699;frequencies.at:961;FREQUENCIES histogram no valid cases;;
700;frequencies.at:982;FREQUENCIES percentiles + histogram bug#48128;;
701;frequencies.at:1007;FREQUENCIES vs. missing weights;;
702;frequencies.at:1047;FREQUENCIES syntax errors;;
703;get-data-psql.at:147;GET DATA /TYPE=PSQL;slow;
704;get-data-spreadsheet.at:174;GET DATA /TYPE=GNM with CELLRANGE;spreadsheet gnumeric;
705;get-data-spreadsheet.at:174;GET DATA /TYPE=GNM with CELLRANGE and READNAMES;spreadsheet gnumeric;
706;get-data-spreadsheet.at:174;GET DATA /TYPE=GNM without CELLRANGE;spreadsheet gnumeric;
707;get-data-spreadsheet.at:174;GET DATA /TYPE=GNM with missing data;spreadsheet gnumeric;
708;get-data-spreadsheet.at:174;GET DATA /TYPE=GNM with no options;spreadsheet gnumeric;
709;get-data-spreadsheet.at:174;GET DATA /TYPE=GNM with empty sheet;spreadsheet gnumeric;
710;get-data-spreadsheet.at:174;GET DATA /TYPE=GNM with nonexistent sheet;spreadsheet gnumeric;
711;get-data-spreadsheet.at:177;GET DATA /TYPE=GNM sheet index bug;spreadsheet;
712;get-data-spreadsheet.at:326;GET DATA /TYPE=GNM assert-fail;spreadsheet;
713;get-data-spreadsheet.at:380;GET DATA /TYPE=ODS with CELLRANGE;spreadsheet ods;
714;get-data-spreadsheet.at:380;GET DATA /TYPE=ODS with CELLRANGE and READNAMES;spreadsheet ods;
715;get-data-spreadsheet.at:380;GET DATA /TYPE=ODS without CELLRANGE;spreadsheet ods;
716;get-data-spreadsheet.at:380;GET DATA /TYPE=ODS with missing data;spreadsheet ods;
717;get-data-spreadsheet.at:380;GET DATA /TYPE=ODS with no options;spreadsheet ods;
718;get-data-spreadsheet.at:380;GET DATA /TYPE=ODS with empty sheet;spreadsheet ods;
719;get-data-spreadsheet.at:380;GET DATA /TYPE=ODS with nonexistent sheet;spreadsheet ods;
720;get-data-spreadsheet.at:383;GET DATA /TYPE=ODS crash;spreadsheet;
721;get-data-spreadsheet.at:399;GET DATA /TYPE=ODS readnames;spreadsheet;
722;get-data-txt.at:23;GET DATA /TYPE=TXT with explicit delimiters;;
723;get-data-txt.at:45;GET DATA /TYPE=TXT with FIRSTCASE;;
724;get-data-txt.at:83;GET DATA /TYPE=TXT with FIRSTCASE and tab delimiter;;
725;get-data-txt.at:132;GET DATA /TYPE=TXT with multiple records per case;;
726;get-data-txt.at:161;GET DATA /TYPE=TXT with empty trailing record;;
727;get-data-txt.at:194;GET DATA /TYPE=TXT password example;;
728;get-data-txt.at:225;GET DATA /TYPE=TXT cars example;;
729;get-data-txt.at:272;GET DATA /TYPE=TXT pets example;;
730;get-data-txt.at:305;GET DATA /TYPE=TXT with IMPORTCASE;;
731;get-data-txt.at:340;GET DATA /TYPE=TXT with ENCODING subcommand;;
732;get-data-txt.at:358;GET DATA /TYPE= truncated;;
733;get-data-txt.at:371;GET DATA /TYPE=txt bug;;
734;get-data-txt.at:408;GET DATA /TYPE=txt another bug;;
735;get-data.at:3;GET DATA syntax errors;;
736;get.at:21;GET data works in multiple procedures;;
737;get.at:72;GET nonexistent file doesn't crash;;
738;get.at:106;GET with /KEEP=ALL crashes -- uncompressed;;
739;get.at:107;GET with /KEEP=ALL crashes -- compressed;;
740;get.at:111;GET data no type;;
741;glm.at:19;GLM latin square design;categorical categoricals;
742;glm.at:91;GLM 2 by 2 factorial design;categorical categoricals;
743;glm.at:144;GLM Type I and II Sums of Squares;categorical categoricals;
744;glm.at:275;GLM excluded intercept;categorical categoricals;
745;glm.at:347;GLM missing values;categorical categoricals;
746;glm.at:475;GLM syntax errors;;
747;graph.at:19;GRAPH simple scatterplot;;
748;graph.at:43;GRAPH Scatter and Histogram;slow;
749;graph.at:98;GRAPH missing values don't crash;;
750;graph.at:119;GRAPH missing=VARIABLE no crash;;
751;graph.at:142;GRAPH missing value in by variable;;
752;graph.at:167;GRAPH histogram with null data;;
753;graph.at:185;GRAPH histogram all missing;;
754;graph.at:204;GRAPH barcharts;;
755;graph.at:233;GRAPH barchart arity;;
756;graph.at:262;GRAPH barchart bad syntax;;
757;graph.at:290;GRAPH barchart full;;
758;graph.at:333;GRAPH buggy syntax;;
759;graph.at:354;GRAPH barchart percentage sub-categorical;;
760;graph.at:439;GRAPH syntax errors;;
761;host.at:19;HOST - one command;;
762;host.at:28;HOST - two commands;;
763;host.at:39;HOST - time limit;;
764;host.at:56;HOST - command failure;;
765;host.at:66;HOST - nonexistent shell;;
766;host.at:76;HOST - nonexistent command;;
767;host.at:86;HOST - output to stdout;;
768;host.at:95;HOST - output to stderr;;
769;host.at:104;HOST - input from stdin;;
770;host.at:114;HOST - zero time limit;;
771;host.at:124;HOST - signal termination;;
772;host.at:134;HOST - SAFER;;
773;inpt-pgm.at:21;INPUT PROGRAM invalid syntax crash;;
774;inpt-pgm.at:39;INPUT PROGRAM invalid syntax crash;;
775;inpt-pgm.at:54;INPUT PROGRAM infinite loop;;
776;inpt-pgm.at:76;INPUT PROGRAM with VECTOR and EXECUTE;;
777;inpt-pgm.at:107;INPUT PROGRAM taking shorter of two files;;
778;inpt-pgm.at:148;INPUT PROGRAM taking longer of two files;;
779;inpt-pgm.at:204;INPUT PROGRAM concatenating two files - version 1;;
780;inpt-pgm.at:252;INPUT PROGRAM concatenating two files - version 2;;
781;inpt-pgm.at:303;INPUT PROGRAM generating data;;
782;inpt-pgm.at:331;INPUT PROGRAM unexpected end of file;;
783;inpt-pgm.at:341;INPUT PROGRAM no variables;;
784;inpt-pgm.at:356;REREAD syntax errors;;
785;insert.at:31;INSERT SYNTAX=INTERACTIVE;;
786;insert.at:55;INSERT SYNTAX=BATCH;;
787;insert.at:75;INSERT CD=NO;;
788;insert.at:98;INSERT CD=YES;;
789;insert.at:142;INSERT ERROR=STOP;;
790;insert.at:154;INSERT ERROR=CONTINUE;;
791;insert.at:178;INSERT nonexistent file;;
792;insert.at:199;INCLUDE full check;;
793;insert.at:223;INSERT unterminated string;;
794;insert.at:232;INSERT syntax errors;include;
795;leave.at:3;LEAVE;;
796;leave.at:11;LEAVE syntax errors;;
797;list.at:19;LIST plain cases;;
798;list.at:61;LIST numbered cases;;
799;list.at:113;LIST with split file;;
800;list.at:158;LIST lots of variables;;
801;list.at:184;LIST selected cases;;
802;list.at:252;LIST very long string;;
803;list.at:281;LIST crash on invalid input;;
804;list.at:301;LIST tutorial example;;
805;list.at:329;LIST syntax errors;;
806;logistic.at:97;LOGISTIC REGRESSION basic test;categorical categoricals;
807;logistic.at:148;LOGISTIC REGRESSION missing values;categorical categoricals;
808;logistic.at:197;LOGISTIC REGRESSION weights;categorical categoricals;
809;logistic.at:259;LOGISTIC REGRESSION without constant;categorical categoricals;
810;logistic.at:315;LOGISTIC REGRESSION non-dichotomous dep var;categorical categoricals;
811;logistic.at:341;LOGISTIC REGRESSION with categorical;categorical categoricals;
812;logistic.at:807;LOGISTIC REGRESSION with cat var 2;categorical categoricals;
813;logistic.at:1073;LOGISTIC REGRESSION identical categories;categorical categoricals;
814;logistic.at:1094;LOGISTIC REGRESSION missing categoricals;categorical categoricals;
815;logistic.at:1232;LOGISTIC REGRESSION confidence interval;categorical categoricals;
816;logistic.at:1493;LOGISTIC REGRESSION syntax errors;;
817;loop.at:29;LOOP with index;;
818;loop.at:54;LOOP with IF condition;;
819;loop.at:81;LOOP with END IF condition;;
820;loop.at:109;LOOP with index and IF based on index;;
821;loop.at:131;LOOP with index and END IF based on index;;
822;loop.at:155;LOOP with index and IF and END IF based on index;;
823;loop.at:175;LOOP with no conditions containing BREAK;;
824;loop.at:204;LOOP with no conditions that ends due to MXLOOPS;;
825;loop.at:232;LOOP with IF condition that ends due to MXLOOPS;;
826;loop.at:264;LOOP negative;;
827;match-files.at:120;MATCH FILES -- system file and system file;;
828;match-files.at:121;MATCH FILES -- system file and active file;;
829;match-files.at:122;MATCH FILES -- active file and system file;;
830;match-files.at:123;MATCH FILES -- system file and system table;;
831;match-files.at:124;MATCH FILES -- system file and active table;;
832;match-files.at:125;MATCH FILES -- active file and system table;;
833;match-files.at:127;MATCH FILES parallel match;;
834;match-files.at:154;MATCH FILES bug with TABLE from active dataset;;
835;match-files.at:186;MATCH FILES bug with scratch variables;;
836;match-files.at:218;MATCH FILES with different string widths;;
837;match-files.at:247;MATCH FILES syntax errors;;
838;match-files.at:409;MATCH FILES incompatible encoding warning;;
839;matrix-data.at:20;MATRIX DATA - LOWER DIAGONAL with ROWTYPE_;;
840;matrix-data.at:59;MATRIX DATA - UPPER DIAGONAL with ROWTYPE_;;
841;matrix-data.at:91;MATRIX DATA - FULL with ROWTYPE_;;
842;matrix-data.at:125;MATRIX DATA - UPPER NODIAGONAL with ROWTYPE_;;
843;matrix-data.at:157;MATRIX DATA - UPPER NODIAGONAL with ROWTYPE_ - 2;;
844;matrix-data.at:194;MATRIX DATA - LOWER NODIAGONAL with ROWTYPE_;;
845;matrix-data.at:230;MATRIX DATA - split data;;
846;matrix-data.at:299;MATRIX DATA - split data - 2;;
847;matrix-data.at:357;MATRIX DATA - factor variables;;
848;matrix-data.at:394;MATRIX DATA - factors and splits;;
849;matrix-data.at:459;MATRIX DATA - bad ROWTYPE_;;
850;matrix-data.at:480;MATRIX DATA - unexpected ROWTYPE_;;
851;matrix-data.at:525;MATRIX DATA - bad number;;
852;matrix-data.at:553;MATRIX DATA - long variable names;;
853;matrix-data.at:585;MATRIX DATA - read integrity;;
854;matrix-data.at:662;MATRIX DATA - too many rows;;
855;matrix-data.at:709;MATRIX DATA - too few rows;;
856;matrix-data.at:760;MATRIX DATA - badly formed;;
857;matrix-data.at:790;MATRIX DATA - N subcommand;;
858;matrix-data.at:824;MATRIX DATA - N subcommand - 2;;
859;matrix-data.at:864;MATRIX DATA - crash;;
860;matrix-data.at:886;MATRIX DATA - LOWER DIAGONAL without ROWTYPE_;;
861;matrix-data.at:925;MATRIX DATA - LOWER DIAGONAL with N and without ROWTYPE_;;
862;matrix-data.at:963;MATRIX DATA - extraneous data without ROWTYPE_;;
863;matrix-data.at:1004;MATRIX DATA - Split variables with explicit values without ROWTYPE_;;
864;matrix-data.at:1062;MATRIX DATA - Split variables with explicit values with N and without ROWTYPE_;;
865;matrix-data.at:1119;MATRIX DATA - Split variable with sequential values without ROWTYPE_;;
866;matrix-data.at:1177;MATRIX DATA - Factor variables grouping within-cell records by factor without ROWTYPE_;;
867;matrix-data.at:1216;MATRIX DATA - Factor variables grouping within-cell records by row type without ROWTYPE_;;
868;matrix-data.at:1254;MATRIX DATA - syntax errors;;
869;matrix-data.at:1374;MATRIX DATA - plus and minus as delimiters;;
870;matrix-reader.at:3;Matrix reader - negative tests;;
871;matrix.at:3;MATRIX - empty matrices;;
872;matrix.at:32;MATRIX - submatrices as rvalues - all columns or all rows;;
873;matrix.at:192;MATRIX - COMPUTE submatrices as lvalues;;
874;matrix.at:282;MATRIX - COMPUTE submatrices as lvalues - negative;;
875;matrix.at:471;MATRIX - subvectors as rvalues;;
876;matrix.at:586;MATRIX - COMPUTE subvectors as lvalues;;
877;matrix.at:667;MATRIX - COMPUTE subvectors as lvalues - negative;;
878;matrix.at:928;MATRIX - COMPUTE - negative;;
879;matrix.at:956;MATRIX - elementwise arithmetic operators;;
880;matrix.at:1136;MATRIX - relational operators;;
881;matrix.at:1323;MATRIX - logical operators;;
882;matrix.at:1434;MATRIX - matrix operators;;
883;matrix.at:1549;MATRIX - sequences and construction;;
884;matrix.at:1670;MATRIX - comments;;
885;matrix.at:1688;MATRIX - string matrices;;
886;matrix.at:1701;MATRIX - ABS ALL ANY ARSIN ARTAN;;
887;matrix.at:1749;MATRIX - BLOCK CHOL CMAX CMIN COS;;
888;matrix.at:1798;MATRIX - CSSQ CSUM DESIGN DET DIAG;;
889;matrix.at:1838;MATRIX - EVAL EXP GINV GRADE GSCH;;
890;matrix.at:1915;MATRIX - IDENT INV KRONEKER LG10 LN;;
891;matrix.at:1992;MATRIX - MAGIC;;
892;matrix.at:2085;MATRIX - MAKE MDIAG MMAX MMIN MOD;;
893;matrix.at:2165;MATRIX - MSSQ MSUM NCOL NROW RANK;;
894;matrix.at:2213;MATRIX - RESHAPE RMAX RMIN RND RNKORDER;;
895;matrix.at:2302;MATRIX - RSSQ RSUM SIN SOLVE SQRT;;
896;matrix.at:2374;MATRIX - SSCP SVAL SWEEP TRACE TRANSPOS TRUNC;;
897;matrix.at:2509;MATRIX - UNIFORM;;
898;matrix.at:2525;MATRIX - invalid function arguments;;
899;matrix.at:2603;MATRIX - invalid number function arguments;;
900;matrix.at:2632;MATRIX - CALL SETDIAG;;
901;matrix.at:2693;MATRIX - CALL EIGEN;;
902;matrix.at:2726;MATRIX - CALL SVD;;
903;matrix.at:2757;MATRIX - PRINT;;
904;matrix.at:2892;MATRIX - PRINT - negative;;
905;matrix.at:2944;MATRIX - DO IF;;
906;matrix.at:2992;MATRIX - unbounded LOOP;;
907;matrix.at:3038;MATRIX - indexed or conditional LOOP;;
908;matrix.at:3213;MATRIX - BREAK outside LOOP;;
909;matrix.at:3226;MATRIX - READ;;
910;matrix.at:3364;MATRIX - READ - negative;;
911;matrix.at:3569;MATRIX - WRITE;;
912;matrix.at:3606;MATRIX - WRITE - negative;;
913;matrix.at:3756;MATRIX - GET;;
914;matrix.at:3908;MATRIX - GET - negative;;
915;matrix.at:4006;MATRIX - SAVE;;
916;matrix.at:4038;MATRIX - SAVE - inline;;
917;matrix.at:4077;MATRIX - SAVE - negative;;
918;matrix.at:4141;MATRIX - MGET;;
919;matrix.at:4197;MATRIX - MGET with split variables;;
920;matrix.at:4273;MATRIX - MGET with factor variables;;
921;matrix.at:4344;MATRIX - MGET with factor and split variables;;
922;matrix.at:4421;MATRIX - MGET with TYPE;;
923;matrix.at:4462;MATRIX - MGET - negative - parsing;;
924;matrix.at:4498;MATRIX - MGET - missing VARNAME_ and ROWTYPE_;;
925;matrix.at:4516;MATRIX - MGET - wrong format for VARNAME_ and ROWTYPE_;;
926;matrix.at:4536;MATRIX - MGET - wrong order for VARNAME_ and ROWTYPE_;;
927;matrix.at:4553;MATRIX - MGET - no continuous variables;;
928;matrix.at:4569;MATRIX - MGET - unexpected string variables;;
929;matrix.at:4586;MATRIX - MGET - unknown ROWTYPE_;;
930;matrix.at:4602;MATRIX - MGET - duplicate matrix variable name;;
931;matrix.at:4624;MATRIX - MGET - missing values in input;;
932;matrix.at:4657;MATRIX - MSAVE;;
933;matrix.at:4685;MATRIX - MSAVE with factor variables;;
934;matrix.at:4724;MATRIX - MSAVE with split variables;;
935;matrix.at:4763;MATRIX - MSAVE with factor and split variables;;
936;matrix.at:4791;MATRIX - MSAVE - negative;;
937;matrix.at:5032;MATRIX - DISPLAY;;
938;matrix.at:5056;MATRIX - DISPLAY - negative;;
939;matrix.at:5069;MATRIX - RELEASE;;
940;matrix.at:5088;MATRIX - RELEASE - negative;;
941;mconvert.at:19;MCONVERT;;
942;mconvert.at:51;MCONVERT from .sav file;;
943;mconvert.at:87;MCONVERT to .sav file;;
944;mconvert.at:134;MCONVERT from .sav file to .sav file;;
945;mconvert.at:179;MCONVERT with APPEND;;
946;mconvert.at:217;MCONVERT negative test;;
947;means.at:19;MEANS simple;categorical categoricals;
948;means.at:54;MEANS very simple;categorical categoricals;
949;means.at:100;MEANS empty factor spec;categorical categoricals;
950;means.at:121;MEANS parser bug;categorical categoricals;
951;means.at:140;MEANS default missing behaviour;categorical categoricals;
952;means.at:216;MEANS two way;categorical categoricals;
953;means.at:303;MEANS unbalanced;categorical categoricals;
954;means.at:349;MEANS three way;categorical categoricals;
955;means.at:415;MEANS three way string;categorical categoricals;
956;means.at:482;MEANS multiple tables;categorical categoricals;
957;means.at:592;MEANS multi variable;categorical categoricals;
958;means.at:684;MEANS multi combination;categorical categoricals;
959;means.at:904;MEANS clean up;categorical categoricals;
960;means.at:926;MEANS control all missing;categorical categoricals;
961;means.at:955;MEANS missing classes;categorical categoricals;
962;means.at:1046;MEANS split;categorical categoricals;
963;means.at:1091;MEANS formats;categorical categoricals;
964;means.at:1123;MEANS syntax errors;;
965;missing-values.at:19;MISSING VALUES valid cases;;
966;missing-values.at:147;MISSING VALUES invalid cases;;
967;missing-values.at:212;MISSING VALUES syntax errors;;
968;mrsets.at:128;MRSETS add, display, delete;;
969;mrsets.at:200;MRSETS read and write;;
970;mrsets.at:214;MRSETS syntax errors;;
971;npar.at:19;NPAR TESTS BINOMIAL P < 0.5; N1/N2 < 1;;
972;npar.at:44;NPAR TESTS BINOMIAL P < 0.5; N1/N2 > 1;;
973;npar.at:69;NPAR TESTS BINOMIAL P < 0.5; N1/N2 = 1;;
974;npar.at:94;NPAR TESTS BINOMIAL P > 0.5; N1/N2 < 1;;
975;npar.at:119;NPAR TESTS BINOMIAL P > 0.5; N1/N2 > 1;;
976;npar.at:143;NPAR TESTS BINOMIAL P > 0.5; N1/N2 = 1;;
977;npar.at:167;NPAR TESTS BINOMIAL P = 0.5; N1/N2 < 1;;
978;npar.at:192;NPAR TESTS BINOMIAL P = 0.5; N1/N2 > 1;;
979;npar.at:216;NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1;;
980;npar.at:241;NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1 Cutpoint;;
981;npar.at:267;NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1 Named values;;
982;npar.at:296;NPAR TESTS BINOMIAL - crash;;
983;npar.at:315;NPAR TESTS CHISQUARE;;
984;npar.at:397;NPAR TESTS CHISQUARE expected values missing;;
985;npar.at:428;NPAR TESTS CHISQUARE with DESCRIPTIVES;;
986;npar.at:479;NPAR TESTS CHISQUARE, listwise missing;;
987;npar.at:530;NPAR TESTS WILCOXON;;
988;npar.at:578;NPAR TESTS WILCOXON with missing values;;
989;npar.at:626;NPAR TESTS SIGN;;
990;npar.at:670;NPAR Kruskal-Wallis test;;
991;npar.at:803;NPAR Kruskal-Wallis multiple-variables;;
992;npar.at:870;NPAR TESTS Runs;;
993;npar.at:958;NPAR TESTS Runs (2);;
994;npar.at:981;NPAR TESTS Friedman;;
995;npar.at:1020;NPAR TESTS Mann-Whitney;;
996;npar.at:1082;NPAR TESTS Mann-Whitney Multiple;;
997;npar.at:1135;NPAR TESTS Cochran;;
998;npar.at:1183;NPAR TESTS Kendall;;
999;npar.at:1248;NPAR TESTS McNemar;;
1000;npar.at:1302;NPAR TESTS McNemar Symetricity;;
1001;npar.at:1346;NPAR TESTS Kolmogorov-Smirnov Uniform parameters given;;
1002;npar.at:1383;NPAR TESTS Kolmogorov-Smirnov Normal parameters imputed;;
1003;npar.at:1587;NPAR TESTS Median Test (median imputed);;
1004;npar.at:1652;NPAR TESTS Median Test (median given);;
1005;npar.at:1715;NPAR TESTS Median Test (two sample);;
1006;npar.at:1781;NPAR TESTS Jonckheere-Terpstra;;
1007;npar.at:1824;NPAR TESTS (PAIRED);;
1008;npar.at:1861;NPAR TESTS CHISQUARE crash;;
1009;npar.at:1890;NPAR TESTS - crash on invalid syntax;;
1010;npar.at:1914;NPAR TESTS - crash on unterminated string;;
1011;npar.at:1935;NPAR TESTS - syntax errors;;
1012;numeric.at:3;NUMERIC;;
1013;numeric.at:20;NUMERIC syntax errors;;
1014;oneway.at:19;ONEWAY basic operation;categorical categoricals;
1015;oneway.at:90;ONEWAY with splits;categorical categoricals;
1016;oneway.at:200;ONEWAY with missing values;categorical categoricals;
1017;oneway.at:306;ONEWAY descriptives subcommand;categorical categoricals;
1018;oneway.at:356;ONEWAY homogeneity subcommand;categorical categoricals;
1019;oneway.at:402;ONEWAY multiple variables;categorical categoricals;
1020;oneway.at:511;ONEWAY vs. weights;categorical categoricals;
1021;oneway.at:583;ONEWAY posthoc LSD and BONFERRONI;categorical categoricals;
1022;oneway.at:666;ONEWAY posthoc Tukey HSD and Games-Howell;categorical categoricals;
1023;oneway.at:724;ONEWAY posthoc Sidak;categorical categoricals;
1024;oneway.at:785;ONEWAY posthoc Scheffe;categorical categoricals;
1025;oneway.at:868;ONEWAY bad contrast count;categorical categoricals;
1026;oneway.at:942;ONEWAY crash on single category independent variable;categorical categoricals;
1027;oneway.at:964;ONEWAY crash on missing dependent variable;categorical categoricals;
1028;oneway.at:993;ONEWAY Games-Howell test with few cases;categorical categoricals;
1029;oneway.at:1016;ONEWAY Crash on empty data;categorical categoricals;
1030;oneway.at:1039;ONEWAY Crash on invalid dependent variable;categorical categoricals;
1031;oneway.at:1060;ONEWAY Crash on unterminated string;categorical categoricals;
1032;oneway.at:1080;ONEWAY contrast bug;categorical categoricals;
1033;oneway.at:1146;ONEWAY syntax errors;;
1034;output.at:3;OUTPUT MODIFY syntax errors;;
1035;permissions.at:19;PERMISSIONS;;
1036;permissions.at:45;PERMISSIONS - bad syntax;;
1037;print-space.at:19;PRINT SPACE without arguments;;
1038;print-space.at:38;PRINT SPACE with number;;
1039;print-space.at:59;PRINT SPACE to file;;
1040;print-space.at:80;PRINT SPACE to file with number;;
1041;print-space.at:103;PRINT SPACE syntax errors;;
1042;print-space.at:130;PRINT SPACE evaluation errors;;
1043;print.at:36;PRINT numeric variables;;
1044;print.at:93;PRINT string variables;;
1045;print.at:120;PRINT to file;;
1046;print.at:165;PRINT crash bug;;
1047;print.at:188;WRITE to file;;
1048;print.at:231;PRINT overwrites file;;
1049;print.at:247;PRINT overwrites file atomically;;
1050;print.at:265;PRINT to same file being read;;
1051;print.at:281;PRINT to special file;;
1052;print.at:310;PRINT with special line ends;;
1053;print.at:343;PRINT syntax errors;;
1054;quick-cluster.at:19;QUICK CLUSTER with small data set;;
1055;quick-cluster.at:61;QUICK CLUSTER with large data set;slow;
1056;quick-cluster.at:91;QUICK CLUSTER with weights;;
1057;quick-cluster.at:133;QUICK CLUSTER with listwise missing;;
1058;quick-cluster.at:172;QUICK CLUSTER with pairwise missing;;
1059;quick-cluster.at:245;QUICK CLUSTER crash on bad cluster quantity;;
1060;quick-cluster.at:262;QUICK CLUSTER infinite loop on bad command name;;
1061;quick-cluster.at:281;QUICK CLUSTER /PRINT subcommand;;
1062;quick-cluster.at:434;QUICK CLUSTER -- Empty Parentheses;;
1063;quick-cluster.at:454;QUICK CLUSTER with save;;
1064;quick-cluster.at:508;QUICK CLUSTER with single save;;
1065;quick-cluster.at:563;QUICK CLUSTER crash on bizarre input;;
1066;quick-cluster.at:591;QUICK CLUSTER syntax errors;;
1067;rank.at:19;RANK simple case with defaults;;
1068;rank.at:57;RANK multiple variables with defaults;;
1069;rank.at:84;RANK with RANK, RFRACTION, N;;
1070;rank.at:149;RANK with SAVAGE, PERCENT, PROPORTION, NTILES;;
1071;rank.at:202;RANK with SPLIT FILE;;
1072;rank.at:286;RANK with fractional ranks;;
1073;rank.at:330;RANK all-ties due to tiny weights;;
1074;rank.at:399;RANK and TEMPORARY;;
1075;rank.at:451;RANK variable name fallback;;
1076;rank.at:487;RANK robust variable name creation;;
1077;rank.at:538;RANK handling of invalid input;;
1078;rank.at:564;RANK syntax errors;;
1079;recode.at:37;RECODE numeric to numeric, without INTO;;
1080;recode.at:79;RECODE numeric to numeric, with INTO, without COPY;;
1081;recode.at:111;RECODE numeric to numeric, with INTO, with COPY;;
1082;recode.at:144;RECODE string to string, with INTO, without COPY;;
1083;recode.at:172;RECODE string to string;;
1084;recode.at:200;RECODE string to numeric;;
1085;recode.at:226;RECODE numeric to string;;
1086;recode.at:252;RECODE bug in COPY;;
1087;recode.at:283;RECODE bug in COPY with INTO;;
1088;recode.at:316;RECODE increased string widths;;
1089;recode.at:355;RECODE crash on invalid dest variable;;
1090;recode.at:377;RECODE syntax errors;;
1091;regression.at:19;LINEAR REGRESSION - basic;;
1092;regression.at:78;LINEAR REGRESSION - one save;;
1093;regression.at:151;LINEAR REGRESSION - SAVE vs SPLITS;;
1094;regression.at:244;LINEAR REGRESSION multiple dependent variables;;
1095;regression.at:276;LINEAR REGRESSION test of QR decomposition;;
1096;regression.at:1809;LINEAR REGRESSION no crash on all missing;;
1097;regression.at:1835;LINEAR REGRESSION missing dependent variable;;
1098;regression.at:1892;LINEAR REGRESSION with invalid syntax (and empty dataset);;
1099;regression.at:1912;LINEAR REGRESSION coefficient confidence interval;;
1100;regression.at:2154;LINEAR REGRESSION crash with long string variables;;
1101;regression.at:2204;LINEAR REGRESSION -- Empty Parentheses;;
1102;regression.at:2229;LINEAR REGRESSION varibles on ENTER subcommand;;
1103;regression.at:2285;LINEAR REGRESSION /ORIGIN;;
1104;regression.at:2342;REGRESSION tutorial example;;
1105;regression.at:2388;LINEAR REGRESSION vif;;
1106;regression.at:2464;REGRESSION syntax errors;;
1107;reliability.at:19;RELIABILITY;;
1108;reliability.at:278;RELIABILITY bad syntax;;
1109;reliability.at:298;RELIABILITY bad syntax 2;;
1110;reliability.at:313;RELIABILITY crash with no data;;
1111;reliability.at:331;RELIABILITY tutorial example;;
1112;reliability.at:358;RELIABILITY syntax errors;;
1113;rename-variables.at:19;RENAME VARIABLES;;
1114;rename-variables.at:64;RENAME VARIABLES -- multiple sets;;
1115;rename-variables.at:93;RENAME VARIABLES -- invalid syntax 1;;
1116;rename-variables.at:107;RENAME VARIABLES -- invalid syntax 2;;
1117;rename-variables.at:123;RENAME VARIABLES -- invalid syntax 3;;
1118;roc.at:19;ROC free distribution;;
1119;roc.at:70;ROC negative exponential distribution;;
1120;roc.at:129;ROC with anomaly;;
1121;roc.at:187;ROC crash on no state variable;;
1122;roc.at:204;ROC crash on invalid syntax;;
1123;roc.at:221;ROC syntax errors;;
1124;sample.at:19;SAMPLE;;
1125;save-translate.at:39;CSV output -- defaults;save translate;
1126;save-translate.at:48;CSV output -- recode missing, delete unselected;save translate;
1127;save-translate.at:56;CSV output -- var names, formats;save translate;
1128;save-translate.at:67;CSV output -- comma as decimal point;save translate;
1129;save-translate.at:77;CSV output -- custom delimiter, qualifier;save translate;
1130;save-translate.at:88;CSV output -- KEEP, RENAME quoted;save translate;
1131;save-translate.at:99;CSV output -- KEEP, RENAME multi quoted;save translate;
1132;save-translate.at:117;CSV output -- KEEP, RENAME bad name ;save translate;
1133;save-translate.at:157;TAB output;save translate;
1134;save-translate.at:167;SAVE TRANSLATE syntax errors;;
1135;save.at:19;IMPORT and EXPORT;;
1136;save.at:47;SAVE -- delete unselected;;
1137;save.at:75;SAVE RENAME with TO;;
1138;select-if.at:19;FILTER;;
1139;set.at:20;SET FORMAT to invalid output format;;
1140;set.at:46;SET crash on invalid cc;;
1141;set.at:60;SET MXWARNS;;
1142;set.at:96;SET MXWARNS special case zero;;
1143;set.at:130;SET macro - MEXPAND MPRINT MITERATE MNEST;;
1144;set.at:160;SET syntax errors;;
1145;set.at:426;PRESERVE of SET FORMAT;;
1146;set.at:447;PRESERVE and SHOW of TLOOK;;
1147;show.at:19;SHOW N;;
1148;show.at:37;SHOW N empty;;
1149;show.at:47;SHOW ENVIRONMENT;;
1150;sort-cases.at:64;sort 500 cases (100 unique) with 2 buffers;sort cases;
1151;sort-cases.at:65;sort 500 cases (100 unique) with 3 buffers;sort cases;
1152;sort-cases.at:66;sort 500 cases (100 unique) with 4 buffers;sort cases;
1153;sort-cases.at:67;sort 500 cases (100 unique) with 5 buffers;sort cases;
1154;sort-cases.at:68;sort 500 cases (100 unique) with 10 buffers;sort cases;
1155;sort-cases.at:69;sort 500 cases (100 unique) with 50 buffers;sort cases;
1156;sort-cases.at:70;sort 500 cases (100 unique) with 100 buffers;sort cases;
1157;sort-cases.at:71;sort 500 cases (100 unique);sort cases;
1158;sort-cases.at:73;sort 1000 cases (100 unique) with 2 buffers;sort cases;
1159;sort-cases.at:74;sort 1000 cases (100 unique) with 3 buffers;sort cases;
1160;sort-cases.at:75;sort 1000 cases (100 unique) with 5 buffers;sort cases;
1161;sort-cases.at:76;sort 1000 cases (100 unique);sort cases;
1162;sort-cases.at:78;sort 5000 cases (1000 unique) with 5 buffers;sort cases slow;
1163;sort-cases.at:79;sort 5000 cases (1000 unique) with 50 buffers;sort cases slow;
1164;sort-cases.at:80;sort 5000 cases (1000 unique);sort cases slow;
1165;sort-cases.at:82;sort 10000 cases (100 unique) with 3 buffers;sort cases slow;
1166;sort-cases.at:83;sort 10000 cases (100 unique) with 5 buffers;sort cases slow;
1167;sort-cases.at:84;sort 10000 cases (100 unique);sort cases slow;
1168;sort-cases.at:86;sort 50000 cases (10000 unique) with 500 buffers;sort cases slow;
1169;sort-cases.at:88;sort 50000 cases;sort cases slow;
1170;sort-cases.at:91;SORT CASES preserves filtered cases;;
1171;sort-cases.at:139;SORT CASES syntax errors;;
1172;sort-variables.at:19;SORT VARIABLES;;
1173;sort-variables.at:81;SORT VARIABLES syntax errors;;
1174;split-file.at:19;SPLIT FILE - basic test;;
1175;split-file.at:73;SPLIT FILE  - vs procedures;;
1176;split-file.at:136;SPLIT FILE - split variable limit;;
1177;split-file.at:149;SPLIT FILE - SHOW SPLIT and SPLIT FILE OFF;;
1178;string.at:3;STRING;;
1179;string.at:20;STRING syntax errors;;
1180;sys-file-info.at:19;SYSFILE INFO;;
1181;sys-file-info.at:67;DISPLAY FILE LABEL;;
1182;sys-file-info.at:89;DISPLAY SCRATCH;;
1183;sys-file-info.at:105;DISPLAY INDEX;;
1184;sys-file-info.at:118;DISPLAY NAMES;;
1185;sys-file-info.at:131;DISPLAY LABELS;;
1186;t-test.at:19;T-TEST /PAIRS;;
1187;t-test.at:59;T-TEST /PAIRS with duplicate variables in list;;
1188;t-test.at:111;T-TEST /PAIRS with per-analysis missing values;;
1189;t-test.at:176;T-TEST /PAIRS with listwise missing values;;
1190;t-test.at:244;T-TEST weighted paired bug;;
1191;t-test.at:286;T-TEST /PAIRS bug;;
1192;t-test.at:322;T-TEST /GROUPS;;
1193;t-test.at:372;T-TEST /GROUPS with one value for independent variable;;
1194;t-test.at:423;T-TEST /GROUPS with per-analysis missing values;;
1195;t-test.at:483;T-TEST /GROUPS with listwise missing values;;
1196;t-test.at:543;T-TEST /TESTVAL;;
1197;t-test.at:576;T-TEST /TESTVAL with per-analysis missing values;;
1198;t-test.at:629;T-TEST /TESTVAL with listwise missing values;;
1199;t-test.at:682;T-TEST wih TEMPORARY transformation;;
1200;t-test.at:740;T-TEST tutorial example;;
1201;t-test.at:768;T-TEST invalid syntax;;
1202;t-test.at:795;T-TEST string variable;;
1203;t-test.at:843;T-TEST string variable, only one value;;
1204;t-test.at:871;T-TEST string variable comparison bug;;
1205;t-test.at:913;T-TEST wrong group;;
1206;t-test.at:934;T-TEST non number p value;;
1207;t-test.at:953;T-TEST unterminated string - paired;;
1208;t-test.at:973;T-TEST syntax errors;;
1209;temporary.at:20;TEMPORARY as first transformation;;
1210;title.at:19;FILE LABEL and (ADD) DOCUMENT;;
1211;title.at:131;TITLE and SUBTITLE;;
1212;update.at:88;UPDATE sav with sav;;
1213;update.at:89;UPDATE sav with inline;;
1214;update.at:90;UPDATE inline with sav;;
1215;update.at:94;UPDATE syntax errors;;
1216;value-labels.at:19;VALUE LABELS date formats;;
1217;value-labels.at:43;VALUE LABELS with new-line;;
1218;value-labels.at:77;VALUE LABELS with new-line in system file;;
1219;value-labels.at:118;VALUE LABELS invalid syntax bug;;
1220;value-labels.at:138;VALUE LABELS trailing \`/' bug;;
1221;variable-labels.at:3;VARIABLE LABELS;;
1222;variable-display.at:19;variable display attribute commands;variable alignment width level role;
1223;variable-display.at:42;variable display attribute syntax errors;variable alignment width level role;
1224;variable-display.at:133;variable level inference and SCALEMIN;;
1225;variable-display.at:229;variable labels;;
1226;vector.at:19;VECTOR short form;;
1227;vector.at:36;VECTOR short form with format specification;;
1228;vector.at:57;VECTOR short form in INPUT PROGRAM;;
1229;vector.at:77;VECTOR long form;;
1230;vector.at:104;VECTOR syntax errors;;
1231;weight.at:19;WEIGHT;;
1232;abt.at:25;ABT -- insert-any-remove-any;;
1233;abt.at:26;ABT -- insert-any-remove-same;;
1234;abt.at:27;ABT -- insert-any-remove-reverse;;
1235;abt.at:28;ABT -- random-sequence;slow;
1236;abt.at:29;ABT -- insert-ordered;;
1237;abt.at:30;ABT -- moved;;
1238;abt.at:31;ABT -- changed;;
1239;bt.at:25;BT -- insert-any-remove-any;;
1240;bt.at:26;BT -- insert-any-remove-same;;
1241;bt.at:27;BT -- insert-any-remove-reverse;;
1242;bt.at:28;BT -- random-sequence;slow;
1243;bt.at:29;BT -- insert-ordered;;
1244;bt.at:30;BT -- find-ge-le;;
1245;bt.at:31;BT -- moved;;
1246;bt.at:32;BT -- changed;;
1247;encoding-guesser.at:19;ASCII;encoding guesser;
1248;encoding-guesser.at:25;UTF-8;encoding guesser;
1249;encoding-guesser.at:32;UTF-8 starting with ASCII;encoding guesser;
1250;encoding-guesser.at:39;UTF-16 with big-endian byte order mark;encoding guesser;
1251;encoding-guesser.at:46;UTF-16 with little-endian byte order mark;encoding guesser;
1252;encoding-guesser.at:53;UTF-16BE;encoding guesser;
1253;encoding-guesser.at:62;UTF-16BE starting with U+0100;encoding guesser;
1254;encoding-guesser.at:69;UTF-16LE;encoding guesser;
1255;encoding-guesser.at:78;UTF-16LE starting with U+0100;encoding guesser;
1256;encoding-guesser.at:85;UTF-32 with big-endian byte order mark;encoding guesser;
1257;encoding-guesser.at:92;UTF-32 with little-endian byte order mark;encoding guesser;
1258;encoding-guesser.at:99;UTF-32BE;encoding guesser;
1259;encoding-guesser.at:106;UTF-32LE;encoding guesser;
1260;encoding-guesser.at:113;ISO-8859-1;encoding guesser;
1261;encoding-guesser.at:121;GB-18030 with byte order mark;encoding guesser;
1262;encoding-guesser.at:129;UTF-EBCDIC with byte order mark;encoding guesser;
1263;encoding-guesser.at:137;EUC-JP as Auto,EUC-JP;encoding guesser;
1264;encoding-guesser.at:145;EUC-JP starting with ASCII as Auto,EUC-JP;encoding guesser;
1265;encoding-guesser.at:153;UTF-8 with character split across input buffers;encoding guesser;
1266;encoding-guesser.at:161;windows-1252 as Auto,UTF-8;encoding guesser;
1267;float-format.at:19;floating point format conversions;;
1268;heap.at:24;heap -- insert-no-dups-delete-min;;
1269;heap.at:25;heap -- insert-with-dups-delete-min;;
1270;heap.at:26;heap -- insert-no-dups-delete-random;;
1271;heap.at:27;heap -- inc-dec;;
1272;heap.at:28;heap -- random-insert-delete;;
1273;hmap.at:24;hmap -- insert-any-remove-any-random-hash;;
1274;hmap.at:25;hmap -- insert-any-remove-any-identity-hash;;
1275;hmap.at:26;hmap -- insert-any-remove-any-constant-hash;;
1276;hmap.at:27;hmap -- insert-any-remove-same-random-hash;;
1277;hmap.at:28;hmap -- insert-any-remove-same-identity-hash;;
1278;hmap.at:29;hmap -- insert-any-remove-same-constant-hash;;
1279;hmap.at:30;hmap -- insert-any-remove-reverse-random-hash;;
1280;hmap.at:31;hmap -- insert-any-remove-reverse-identity-hash;;
1281;hmap.at:32;hmap -- insert-any-remove-reverse-constant-hash;;
1282;hmap.at:33;hmap -- random-sequence-random-hash;;
1283;hmap.at:34;hmap -- random-sequence-identity-hash;;
1284;hmap.at:35;hmap -- random-sequence-constant-hash;;
1285;hmap.at:36;hmap -- insert-ordered-random-hash;;
1286;hmap.at:37;hmap -- insert-ordered-identity-hash;;
1287;hmap.at:38;hmap -- insert-ordered-constant-hash;;
1288;hmap.at:39;hmap -- moved-random-hash;;
1289;hmap.at:40;hmap -- moved-identity-hash;;
1290;hmap.at:41;hmap -- moved-constant-hash;;
1291;hmap.at:42;hmap -- changed-random-hash;;
1292;hmap.at:43;hmap -- changed-identity-hash;;
1293;hmap.at:44;hmap -- changed-constant-hash;;
1294;hmap.at:45;hmap -- swap-random-hash;;
1295;hmap.at:46;hmap -- clear;;
1296;hmap.at:47;hmap -- destroy-null;;
1297;hmap.at:48;hmap -- shrink-empty;;
1298;hmapx.at:24;hmapx -- insert-any-remove-any-random-hash;;
1299;hmapx.at:25;hmapx -- insert-any-remove-any-identity-hash;;
1300;hmapx.at:26;hmapx -- insert-any-remove-any-constant-hash;;
1301;hmapx.at:27;hmapx -- insert-any-remove-same-random-hash;;
1302;hmapx.at:28;hmapx -- insert-any-remove-same-identity-hash;;
1303;hmapx.at:29;hmapx -- insert-any-remove-same-constant-hash;;
1304;hmapx.at:30;hmapx -- insert-any-remove-reverse-random-hash;;
1305;hmapx.at:31;hmapx -- insert-any-remove-reverse-identity-hash;;
1306;hmapx.at:32;hmapx -- insert-any-remove-reverse-constant-hash;;
1307;hmapx.at:33;hmapx -- random-sequence-random-hash;;
1308;hmapx.at:34;hmapx -- random-sequence-identity-hash;;
1309;hmapx.at:35;hmapx -- random-sequence-constant-hash;;
1310;hmapx.at:36;hmapx -- insert-ordered-random-hash;;
1311;hmapx.at:37;hmapx -- insert-ordered-identity-hash;;
1312;hmapx.at:38;hmapx -- insert-ordered-constant-hash;;
1313;hmapx.at:39;hmapx -- moved-random-hash;;
1314;hmapx.at:40;hmapx -- moved-identity-hash;;
1315;hmapx.at:41;hmapx -- moved-constant-hash;;
1316;hmapx.at:42;hmapx -- changed-random-hash;;
1317;hmapx.at:43;hmapx -- changed-identity-hash;;
1318;hmapx.at:44;hmapx -- changed-constant-hash;;
1319;hmapx.at:45;hmapx -- change-random-hash;;
1320;hmapx.at:46;hmapx -- change-identity-hash;;
1321;hmapx.at:47;hmapx -- change-constant-hash;;
1322;hmapx.at:48;hmapx -- swap-random-hash;;
1323;hmapx.at:49;hmapx -- clear;;
1324;hmapx.at:50;hmapx -- destroy-null;;
1325;hmapx.at:51;hmapx -- shrink-empty;;
1326;i18n.at:34;convert reflexively;i18n;
1327;i18n.at:35;convert without any change;i18n;
1328;i18n.at:37;convert from ISO-8859-1 to UTF-8;i18n;
1329;i18n.at:39;convert from UTF-8 to ISO-8859-1;i18n;
1330;i18n.at:43;convert invalid UTF-8 to ISO-8859-1;i18n;
1331;i18n.at:58;convert truncated UTF-8 to ISO-8559-1;i18n;
1332;i18n.at:63;convert dropped final character in windows-1258;i18n;
1333;i18n.at:68;convert from ISO-8859-1 to UTF-8 with overflow;i18n;
1334;i18n.at:72;convert unknown encoding;i18n;
1335;i18n.at:102;truncate \"abc\" to 6 bytes in UTF-8;i18n;
1336;i18n.at:103;truncate \"\" + \"xyz\" to 6 bytes in UTF-8;i18n;
1337;i18n.at:104;truncate \"\" to 6 bytes in UTF-8;i18n;
1338;i18n.at:105;truncate \"abcdefghij\" to 6 bytes in UTF-8;i18n;
1339;i18n.at:106;truncate \"\" + \"tuvwxyz\" to 6 bytes in UTF-8;i18n;
1340;i18n.at:108;truncate \"abc\" + \"xyz\" to 6 bytes in UTF-8;i18n;
1341;i18n.at:109;truncate \"abcd\" + \"xyz\" to 6 bytes in UTF-8;i18n;
1342;i18n.at:110;truncate \"abc\" + \"uvwxyz\" to 6 bytes in UTF-8;i18n;
1343;i18n.at:114;truncate \"x\\342\\203\\236\" + \"y\" to 0 bytes in UTF-8;i18n;
1344;i18n.at:115;truncate \"x\\342\\203\\236\" + \"y\" to 1 bytes in UTF-8;i18n;
1345;i18n.at:116;truncate \"x\\342\\203\\236\" + \"y\" to 2 bytes in UTF-8;i18n;
1346;i18n.at:117;truncate \"x\\342\\203\\236\" + \"y\" to 3 bytes in UTF-8;i18n;
1347;i18n.at:118;truncate \"x\\342\\203\\236\" + \"y\" to 4 bytes in UTF-8;i18n;
1348;i18n.at:119;truncate \"x\\342\\203\\236\" + \"y\" to 5 bytes in UTF-8;i18n;
1349;i18n.at:122;truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 0 bytes in ISO-8859-1;i18n;
1350;i18n.at:123;truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 1 bytes in ISO-8859-1;i18n;
1351;i18n.at:124;truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 2 bytes in ISO-8859-1;i18n;
1352;i18n.at:125;truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 3 bytes in ISO-8859-1;i18n;
1353;i18n.at:126;truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 4 bytes in ISO-8859-1;i18n;
1354;i18n.at:128;truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 5 bytes in ISO-8859-1;i18n;
1355;i18n.at:130;truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 6 bytes in ISO-8859-1;i18n;
1356;line-reader.at:19;read ASCII;line_reader;
1357;line-reader.at:28;read UTF-8;line_reader;
1358;line-reader.at:36;read EUC-JP;line_reader;
1359;line-reader.at:45;read ASCII as Auto;line_reader;
1360;line-reader.at:53;read UTF-8 as Auto;line_reader;
1361;line-reader.at:62;read ISO-8859-1 as Auto,ISO-8859-1;line_reader;
1362;line-reader.at:74;read UTF-16BE as Auto,UTF-16BE;line_reader;
1363;line-reader.at:83;read EUC-JP as Auto,EUC-JP;line_reader;
1364;ll.at:25;ll -- push-pop;;
1365;ll.at:26;ll -- insert-remove;;
1366;ll.at:27;ll -- swap;;
1367;ll.at:28;ll -- swap-range;;
1368;ll.at:29;ll -- remove-range;;
1369;ll.at:30;ll -- remove-equal;;
1370;ll.at:31;ll -- remove-if;;
1371;ll.at:32;ll -- moved;;
1372;ll.at:33;ll -- find-equal;;
1373;ll.at:34;ll -- find-if;;
1374;ll.at:35;ll -- find-adjacent-equal;;
1375;ll.at:36;ll -- count-range;;
1376;ll.at:37;ll -- count-equal;;
1377;ll.at:38;ll -- count-if;;
1378;ll.at:39;ll -- min-max;;
1379;ll.at:40;ll -- lexicographical-compare-3way;;
1380;ll.at:41;ll -- apply;;
1381;ll.at:42;ll -- reverse;;
1382;ll.at:43;ll -- permutations-no-dups;;
1383;ll.at:44;ll -- permutations-with-dups;;
1384;ll.at:45;ll -- merge-no-dups;slow;
1385;ll.at:46;ll -- merge-with-dups;slow;
1386;ll.at:47;ll -- sort-exhaustive;;
1387;ll.at:48;ll -- sort-stable;;
1388;ll.at:49;ll -- sort-subset;;
1389;ll.at:50;ll -- sort-big;;
1390;ll.at:51;ll -- unique;;
1391;ll.at:52;ll -- sort-unique;;
1392;ll.at:53;ll -- insert-ordered;;
1393;ll.at:54;ll -- partition;;
1394;llx.at:25;llx -- push-pop;;
1395;llx.at:26;llx -- insert-remove;;
1396;llx.at:27;llx -- swap;;
1397;llx.at:28;llx -- swap-range;;
1398;llx.at:29;llx -- remove-range;;
1399;llx.at:30;llx -- remove-equal;;
1400;llx.at:31;llx -- remove-if;;
1401;llx.at:32;llx -- find-equal;;
1402;llx.at:33;llx -- find;;
1403;llx.at:34;llx -- find-if;;
1404;llx.at:35;llx -- find-adjacent-equal;;
1405;llx.at:36;llx -- count-range;;
1406;llx.at:37;llx -- count-equal;;
1407;llx.at:38;llx -- count-if;;
1408;llx.at:39;llx -- min-max;;
1409;llx.at:40;llx -- lexicographical-compare-3way;;
1410;llx.at:41;llx -- apply;;
1411;llx.at:42;llx -- destroy;;
1412;llx.at:43;llx -- reverse;;
1413;llx.at:44;llx -- permutations-no-dups;;
1414;llx.at:45;llx -- permutations-with-dups;;
1415;llx.at:46;llx -- merge-no-dups;slow;
1416;llx.at:47;llx -- merge-with-dups;slow;
1417;llx.at:48;llx -- sort-exhaustive;;
1418;llx.at:49;llx -- sort-stable;;
1419;llx.at:50;llx -- sort-subset;;
1420;llx.at:51;llx -- sort-big;;
1421;llx.at:52;llx -- unique;;
1422;llx.at:53;llx -- sort-unique;;
1423;llx.at:54;llx -- insert-ordered;;
1424;llx.at:55;llx -- partition;;
1425;llx.at:56;llx -- allocation-failure;;
1426;range-map.at:24;range-map -- insert;;
1427;range-map.at:25;range-map -- delete-contiguous;;
1428;range-map.at:26;range-map -- delete-gaps;;
1429;range-set.at:24;range-set -- insert;;
1430;range-set.at:25;range-set -- delete;;
1431;range-set.at:26;range-set -- allocate;;
1432;range-set.at:27;range-set -- allocate-fully;;
1433;range-set.at:28;range-set -- pool;;
1434;range-set.at:29;range-set -- destroy-null;;
1435;range-tower.at:25;range-tower -- set1;slow;
1436;range-tower.at:26;range-tower -- set0;slow;
1437;range-tower.at:27;range-tower -- insert0;slow;
1438;range-tower.at:28;range-tower -- insert1;slow;
1439;range-tower.at:29;range-tower -- delete;slow;
1440;range-tower.at:30;range-tower -- move;slow;
1441;range-tower.at:31;range-tower -- pool;slow;
1442;range-tower.at:32;range-tower -- destroy-null;slow;
1443;sparse-array.at:25;sparse array -- random-insert-delete;sparse-array slow;
1444;sparse-array.at:27;sparse array -- insert and delete with strides;sparse-array slow;
1445;sparse-xarray-test.at:58;in-memory sparse_xarray;slow;
1446;sparse-xarray-test.at:75;on-disk sparse_xarray max-memory-rows=0;slow;
1447;sparse-xarray-test.at:76;on-disk sparse_xarray max-memory-rows=1;slow;
1448;sparse-xarray-test.at:77;on-disk sparse_xarray max-memory-rows=2;slow;
1449;sparse-xarray-test.at:79;copying between in-memory sparse_xarrays;sparse_xarray slow;
1450;sparse-xarray-test.at:100;copying between on-disk sparse_xarrays max-memory-rows=0;sparse_xarray slow;
1451;sparse-xarray-test.at:101;copying between on-disk sparse_xarrays max-memory-rows=1;sparse_xarray slow;
1452;str.at:19;26-adic string formatting;;
1453;string-map.at:25;string map -- insert-any-remove-any;string-map slow;
1454;string-map.at:26;string map -- insert-any-remove-same;string-map slow;
1455;string-map.at:27;string map -- insert-any-remove-reverse;string-map slow;
1456;string-map.at:28;string map -- random-sequence;string-map slow;
1457;string-map.at:29;string map -- replace;string-map;
1458;string-map.at:30;string map -- insert-ordered;string-map;
1459;string-map.at:31;string map -- clear;string-map;
1460;string-map.at:32;string map -- clone;string-map;
1461;string-map.at:33;string map -- swap;string-map;
1462;string-map.at:34;string map -- node-swap-value;string-map;
1463;string-map.at:35;string map -- insert-map;string-map;
1464;string-map.at:36;string map -- replace-map;string-map;
1465;string-map.at:37;string map -- get-keys-and-values;string-map;
1466;string-map.at:38;string map -- destroy-null;string-map;
1467;stringi-map.at:25;case-insensitive string map -- insert-any-remove-any;stringi-map slow;
1468;stringi-map.at:26;case-insensitive string map -- insert-any-remove-same;stringi-map slow;
1469;stringi-map.at:27;case-insensitive string map -- insert-any-remove-reverse;stringi-map slow;
1470;stringi-map.at:28;case-insensitive string map -- random-sequence;stringi-map slow;
1471;stringi-map.at:29;case-insensitive string map -- replace;stringi-map;
1472;stringi-map.at:30;case-insensitive string map -- insert-ordered;stringi-map;
1473;stringi-map.at:31;case-insensitive string map -- clear;stringi-map;
1474;stringi-map.at:32;case-insensitive string map -- clone;stringi-map;
1475;stringi-map.at:33;case-insensitive string map -- swap;stringi-map;
1476;stringi-map.at:34;case-insensitive string map -- node-swap-value;stringi-map;
1477;stringi-map.at:35;case-insensitive string map -- insert-map;stringi-map;
1478;stringi-map.at:36;case-insensitive string map -- replace-map;stringi-map;
1479;stringi-map.at:37;case-insensitive string map -- get-keys-and-values;stringi-map;
1480;stringi-map.at:38;case-insensitive string map -- destroy-null;stringi-map;
1481;string-set.at:25;string set -- insert-any-remove-any;string-set;
1482;string-set.at:26;string set -- insert-any-remove-same;string-set;
1483;string-set.at:27;string set -- insert-any-remove-reverse;string-set;
1484;string-set.at:28;string set -- random-sequence;string-set;
1485;string-set.at:29;string set -- insert-ordered;string-set;
1486;string-set.at:30;string set -- union;string-set;
1487;string-set.at:31;string set -- union-and-intersection;string-set;
1488;string-set.at:32;string set -- intersect;string-set;
1489;string-set.at:33;string set -- subtract;string-set;
1490;string-set.at:34;string set -- swap;string-set;
1491;string-set.at:35;string set -- clear;string-set;
1492;string-set.at:36;string set -- clone;string-set;
1493;string-set.at:37;string set -- destroy-null;string-set;
1494;stringi-set.at:25;case-insensitive string set -- insert-any-remove-any;stringi-set slow;
1495;stringi-set.at:26;case-insensitive string set -- insert-any-remove-same;stringi-set slow;
1496;stringi-set.at:27;case-insensitive string set -- insert-any-remove-reverse;stringi-set slow;
1497;stringi-set.at:28;case-insensitive string set -- random-sequence;stringi-set slow;
1498;stringi-set.at:29;case-insensitive string set -- insert-ordered;stringi-set;
1499;stringi-set.at:30;case-insensitive string set -- union;stringi-set slow;
1500;stringi-set.at:31;case-insensitive string set -- union-and-intersection;stringi-set slow;
1501;stringi-set.at:32;case-insensitive string set -- intersect;stringi-set slow;
1502;stringi-set.at:33;case-insensitive string set -- subtract;stringi-set slow;
1503;stringi-set.at:34;case-insensitive string set -- swap;stringi-set slow;
1504;stringi-set.at:35;case-insensitive string set -- clear;stringi-set slow;
1505;stringi-set.at:36;case-insensitive string set -- clone;stringi-set slow;
1506;stringi-set.at:37;case-insensitive string set -- destroy-null;stringi-set;
1507;tower.at:24;tower -- insert;;
1508;tower.at:25;tower -- delete;;
1509;tower.at:26;tower -- resize;;
1510;tower.at:27;tower -- splice-out;;
1511;tower.at:28;tower -- splice-in;;
1512;u8-istream.at:19;read ASCII;u8_istream;
1513;u8-istream.at:26;read UTF-8;u8_istream;
1514;u8-istream.at:42;read EUC-JP;u8_istream;
1515;u8-istream.at:51;read UTF-8 with character split across input buffers;u8_istream;
1516;u8-istream.at:62;read UTF-8 with character split across output buffers;u8_istream;
1517;u8-istream.at:71;read UTF-8 with character split across input and output buffers;u8_istream;
1518;u8-istream.at:82;read EUC-JP with character split across input buffers;u8_istream;
1519;u8-istream.at:96;read EUC-JP with character split across output buffers;u8_istream;
1520;u8-istream.at:105;read EUC-JP with character split across input and output buffers;u8_istream;
1521;u8-istream.at:119;read ASCII as Auto;u8_istream;
1522;u8-istream.at:128;read UTF-8 as Auto;u8_istream;
1523;u8-istream.at:144;read ISO-8859-1 as Auto,ISO-8859-1;u8_istream;
1524;u8-istream.at:157;read UTF-16BE as Auto,UTF-16BE;u8_istream;
1525;u8-istream.at:172;read UTF-16 as Auto;u8_istream slow;
1526;u8-istream.at:193;read UTF-32 as Auto;u8_istream;
1527;u8-istream.at:212;read EUC-JP as Auto,EUC-JP;u8_istream;
1528;zip.at:19;basic zip - unzip test;compression;
1529;zip.at:60;zip - detect corruption on unzip;compression;
1530;zip.at:84;zip to pipe;compression;
1531;chart-geometry.at:19;Chart Scale;;
1532;chart-geometry.at:23;Chart Ticks Format;;
1533;moments.at:44;two-pass moments;;
1534;moments.at:45;one-pass moments;;
1535;randist.at:114;random distributions -- beta;;
1536;randist.at:349;random distributions -- cauchy;;
1537;randist.at:958;random distributions -- chisq;;
1538;randist.at:1006;random distributions -- exp;;
1539;randist.at:1054;random distributions -- f;;
1540;randist.at:1234;random distributions -- gamma;;
1541;randist.at:1458;random distributions -- laplace;;
1542;randist.at:1682;random distributions -- logistic;;
1543;randist.at:1906;random distributions -- lnormal;;
1544;randist.at:2086;random distributions -- normal;;
1545;randist.at:2310;random distributions -- pareto;;
1546;randist.at:2446;random distributions -- t;;
1547;randist.at:2538;random distributions -- uniform;;
1548;randist.at:2718;random distributions -- weibull;;
1549;ascii.at:19;ASCII driver overwriting single-width text;render rendering;
1550;ascii.at:151;ASCII driver overwriting double-width text;render rendering;
1551;ascii.at:407;ASCII driver overwriting combining characters;render rendering;
1552;ascii.at:539;ASCII driver u8_line_set_length;render rendering;
1553;ascii.at:580;ASCII driver syntax printback;;
1554;ascii.at:630;ASCII unicode box chars;;
1555;ascii.at:658;ASCII crash on empty line;;
1556;ascii.at:679;ASCII crash on non-printables;;
1557;charts.at:24;Examine;slow;
1558;charts.at:57;Roc;;
1559;charts.at:112;Scree;;
1560;charts.at:140;Histogram;;
1561;charts.at:177;FREQUENCIES charts;;
1562;charts.at:215;CROSSTABS charts;;
1563;charts.at:259;BOXPLOT Empty;;
1564;html.at:19;HTML bug;;
1565;journal.at:3;enable and disable journal;;
1566;output.at:39;output csv to unwritable directory;;
1567;output.at:40;output html to unwritable directory;;
1568;output.at:41;output odt to unwritable directory;;
1569;output.at:42;output pdf to unwritable directory;;
1570;output.at:43;output txt to unwritable directory;;
1571;paper-size.at:19;letter default paper size;;
1572;paper-size.at:28;a4 default paper size;;
1573;paper-size.at:37;specific paper sizes;paper size;
1574;pivot-table.at:3;1-d pivot table;;
1575;pivot-table.at:33;2-d pivot table;;
1576;pivot-table.at:90;2-d pivot table - dimension labels;;
1577;pivot-table.at:197;2-d pivot table - groups;;
1578;pivot-table.at:317;2-d pivot table - layers;;
1579;pivot-table.at:414;3-d pivot table - layers;;
1580;pivot-table.at:456;pivot table title and caption;;
1581;pivot-table.at:503;pivot table footnotes;footnote;
1582;pivot-table.at:601;pivot table with no dimensions;;
1583;pivot-table.at:614;pivot table with empty dimensions;;
1584;pivot-table.at:633;pivot table with empty groups;;
1585;pivot-table.at:654;pivot table - category and dimension borders 1;;
1586;pivot-table.at:755;pivot table - category and dimension borders 2;;
1587;pivot-table.at:846;pivot table - category and dimension borders 3;;
1588;pivot-table.at:895;pivot table - small numbers;;
1589;render.at:21;LIST puts space between columns;render rendering;
1590;tables.at:19;OUTPUT precision;;
1591;tables.at:84;OUTPUT crash;;
1592;tex.at:25;tex glyphs;;
1593;tex.at:48;tex utf8-strings;;
1594;tex.at:170;tex simple example;;
1595;tex.at:202;tex another example;;
1596;tex.at:217;tex table footnotes;;
1597;tex.at:257;tex non-ascii;;
1598;tex.at:301;tex multispan;;
1599;main.at:19;nonexistent syntax file crash;;
1600;main.at:25;SIGTERM yields clean shutdown;slow;
1601;main.at:41;SIGSEGV yields error report;;
1602;main.at:63;argument parsing;;
1603;syntax-gen.at:19;Syntax Generation - printf like;;
1604;pspp-convert.at:3;pspp-convert crash when output cannot be opened;;
1605;pspp-output.at:18;pspp-output dir;;
1606;pspp-output.at:40;pspp-output --select equal;;
1607;pspp-output.at:55;pspp-output --select unequal;;
1608;pspp-output.at:71;pspp-output --commands equal;;
1609;pspp-output.at:81;pspp-output --commands unequal;;
1610;pspp-output.at:100;pspp-output --nth-commands;;
1611;pspp-output.at:114;pspp-output --subtypes equal;;
1612;pspp-output.at:123;pspp-output --subtypes unequal;;
1613;pspp-output.at:143;pspp-output --labels equal;;
1614;pspp-output.at:152;pspp-output --labels unequal;;
1615;pspp-output.at:173;pspp-output --instances;;
1616;pspp-output.at:184;pspp-output --instances=last;--instances last;
1617;pspp-output.at:199;pspp-output --or;;
1618;pspp-output.at:215;pspp-output convert;;
1619;perl-module.at:48;Perl create system file;;
1620;perl-module.at:110;Perl writing cases to system files;;
1621;perl-module.at:205;Perl write variable parameters;;
1622;perl-module.at:274;Perl dictionary survives system file;;
1623;perl-module.at:343;Perl read system file;;
1624;perl-module.at:435;Perl copying system files;;
1625;perl-module.at:541;Perl value formatting;;
1626;perl-module.at:580;Perl opening nonexistent file;;
1627;perl-module.at:599;Perl missing values;;
1628;perl-module.at:645;Perl custom attributes;;
1629;perl-module.at:676;Perl Pspp.t;slow;
"
# List of the all the test groups.
at_groups_all=`printf "%s\n" "$at_help_all" | sed 's/;.*//'`

# at_fn_validate_ranges NAME...
# -----------------------------
# Validate and normalize the test group number contained in each variable
# NAME. Leading zeroes are treated as decimal.
at_fn_validate_ranges ()
{
  for at_grp
  do
    eval at_value=\$$at_grp
    if test $at_value -lt 1 || test $at_value -gt 1629; then
      printf "%s\n" "invalid test group: $at_value" >&2
      exit 1
    fi
    case $at_value in
      0*) # We want to treat leading 0 as decimal, like expr and test, but
	  # AS_VAR_ARITH treats it as octal if it uses $(( )).
	  # With XSI shells, ${at_value#${at_value%%[1-9]*}} avoids the
	  # expr fork, but it is not worth the effort to determine if the
	  # shell supports XSI when the user can just avoid leading 0.
	  eval $at_grp='`expr $at_value + 0`' ;;
    esac
  done
}

##
## Set up package specific options.
##

at_arg_given_xdvi=false


at_prev=
for at_option
do
  # If the previous option needs an argument, assign it.
  if test -n "$at_prev"; then
    at_option=$at_prev=$at_option
    at_prev=
  fi

  case $at_option in
  *=?*) at_optarg=`expr "X$at_option" : '[^=]*=\(.*\)'` ;;
  *)    at_optarg= ;;
  esac

  case $at_option in
    --help | -h )
	at_help_p=:
	;;

    --list | -l )
	at_list_p=:
	;;

    --version | -V )
	at_version_p=:
	;;

    --clean | -c )
	at_clean=:
	;;

    --color )
	at_color=always
	;;
    --color=* )
	case $at_optarg in
	no | never | none) at_color=never ;;
	auto | tty | if-tty) at_color=auto ;;
	always | yes | force) at_color=always ;;
	*) at_optname=`echo " $at_option" | sed 's/^ //; s/=.*//'`
	   as_fn_error $? "unrecognized argument to $at_optname: $at_optarg" ;;
	esac
	;;

    --debug | -d )
	at_debug_p=:
	;;

    --errexit | -e )
	at_debug_p=:
	at_errexit_p=:
	;;

    --verbose | -v )
	at_verbose=; at_quiet=:
	;;

    --trace | -x )
	at_traceon='set -x'
	at_trace_echo=echo
	at_check_filter_trace=at_fn_filter_trace
	;;

    [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9])
	at_fn_validate_ranges at_option
	as_fn_append at_groups "$at_option$as_nl"
	;;

    # Ranges
    [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-)
	at_range_start=`echo $at_option |tr -d X-`
	at_fn_validate_ranges at_range_start
	at_range=`printf "%s\n" "$at_groups_all" | \
	  sed -ne '/^'$at_range_start'$/,$p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9])
	at_range_end=`echo $at_option |tr -d X-`
	at_fn_validate_ranges at_range_end
	at_range=`printf "%s\n" "$at_groups_all" | \
	  sed -ne '1,/^'$at_range_end'$/p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \
    [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \
    [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \
    [0-9][0-9][0-9]-[0-9][0-9][0-9] | \
    [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \
    [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] )
	at_range_start=`expr $at_option : '\(.*\)-'`
	at_range_end=`expr $at_option : '.*-\(.*\)'`
	if test $at_range_start -gt $at_range_end; then
	  at_tmp=$at_range_end
	  at_range_end=$at_range_start
	  at_range_start=$at_tmp
	fi
	at_fn_validate_ranges at_range_start at_range_end
	at_range=`printf "%s\n" "$at_groups_all" | \
	  sed -ne '/^'$at_range_start'$/,/^'$at_range_end'$/p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    # Directory selection.
    --directory | -C )
	at_prev=--directory
	;;
    --directory=* )
	at_change_dir=:
	at_dir=$at_optarg
	if test x- = "x$at_dir" ; then
	  at_dir=./-
	fi
	;;

    # Parallel execution.
    --jobs | -j )
	at_jobs=0
	;;
    --jobs=* | -j[0-9]* )
	if test -n "$at_optarg"; then
	  at_jobs=$at_optarg
	else
	  at_jobs=`expr X$at_option : 'X-j\(.*\)'`
	fi
	case $at_jobs in *[!0-9]*)
	  at_optname=`echo " $at_option" | sed 's/^ //; s/[0-9=].*//'`
	  as_fn_error $? "non-numeric argument to $at_optname: $at_jobs" ;;
	esac
	;;

    # Keywords.
    --keywords | -k )
	at_prev=--keywords
	;;
    --keywords=* )
	at_groups_selected=$at_help_all
	at_save_IFS=$IFS
	IFS=,
	set X $at_optarg
	shift
	IFS=$at_save_IFS
	for at_keyword
	do
	  at_invert=
	  case $at_keyword in
	  '!'*)
	    at_invert="-v"
	    at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'`
	    ;;
	  esac
	  # It is on purpose that we match the test group titles too.
	  at_groups_selected=`printf "%s\n" "$at_groups_selected" |
	      grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"`
	done
	# Smash the keywords.
	at_groups_selected=`printf "%s\n" "$at_groups_selected" | sed 's/;.*//'`
	as_fn_append at_groups "$at_groups_selected$as_nl"
	;;
    --recheck)
	at_recheck=:
	;;
    --xdvi )
	at_prev=--xdvi
	;;
    --xdvi=* )
	at_arg_xdvi=$at_optarg
	at_arg_given_xdvi=:

	;;


    *=*)
	at_envvar=`expr "x$at_option" : 'x\([^=]*\)='`
	# Reject names that are not valid shell variable names.
	case $at_envvar in
	  '' | [0-9]* | *[!_$as_cr_alnum]* )
	    as_fn_error $? "invalid variable name: \`$at_envvar'" ;;
	esac
	at_value=`printf "%s\n" "$at_optarg" | sed "s/'/'\\\\\\\\''/g"`
	# Export now, but save eval for later and for debug scripts.
	export $at_envvar
	as_fn_append at_debug_args " $at_envvar='$at_value'"
	;;

     *) printf "%s\n" "$as_me: invalid option: $at_option" >&2
	printf "%s\n" "Try \`$0 --help' for more information." >&2
	exit 1
	;;
  esac
done

# Verify our last option didn't require an argument
if test -n "$at_prev"
then :
  as_fn_error $? "\`$at_prev' requires an argument"
fi

# The file containing the suite.
at_suite_log=$at_dir/$as_me.log

# Selected test groups.
if test -z "$at_groups$at_recheck"; then
  at_groups=$at_groups_all
else
  if test -n "$at_recheck" && test -r "$at_suite_log"; then
    at_oldfails=`sed -n '
      /^Failed tests:$/,/^Skipped tests:$/{
	s/^[ ]*\([1-9][0-9]*\):.*/\1/p
      }
      /^Unexpected passes:$/,/^## Detailed failed tests/{
	s/^[ ]*\([1-9][0-9]*\):.*/\1/p
      }
      /^## Detailed failed tests/q
      ' "$at_suite_log"`
    as_fn_append at_groups "$at_oldfails$as_nl"
  fi
  # Sort the tests, removing duplicates.
  at_groups=`printf "%s\n" "$at_groups" | sort -nu | sed '/^$/d'`
fi

if test x"$at_color" = xalways \
   || { test x"$at_color" = xauto && test -t 1; }; then
  at_red=`printf '\033[0;31m'`
  at_grn=`printf '\033[0;32m'`
  at_lgn=`printf '\033[1;32m'`
  at_blu=`printf '\033[1;34m'`
  at_std=`printf '\033[m'`
else
  at_red= at_grn= at_lgn= at_blu= at_std=
fi

# Help message.
if $at_help_p; then
  cat <<_ATEOF || at_write_fail=1
Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS]

Run all the tests, or the selected TESTS, given by numeric ranges, and
save a detailed log file.  Upon failure, create debugging scripts.

Do not change environment variables directly.  Instead, set them via
command line arguments.  Set \`AUTOTEST_PATH' to select the executables
to exercise.  Each relative directory is expanded as build and source
directories relative to the top level of this distribution.
E.g., from within the build directory /tmp/foo-1.0, invoking this:

  $ $0 AUTOTEST_PATH=bin

is equivalent to the following, assuming the source directory is /src/foo-1.0:

  PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH $0
_ATEOF
cat <<_ATEOF || at_write_fail=1

Operation modes:
  -h, --help     print the help message, then exit
  -V, --version  print version number, then exit
  -c, --clean    remove all the files this test suite might create and exit
  -l, --list     describes all the tests, or the selected TESTS
_ATEOF
cat <<_ATEOF || at_write_fail=1

Execution tuning:
  -C, --directory=DIR
                 change to directory DIR before starting
      --color[=never|auto|always]
                 disable colored test results, or enable even without terminal
  -j, --jobs[=N]
                 Allow N jobs at once; infinite jobs with no arg (default 1)
  -k, --keywords=KEYWORDS
                 select the tests matching all the comma-separated KEYWORDS
                 multiple \`-k' accumulate; prefixed \`!' negates a KEYWORD
      --recheck  select all tests that failed or passed unexpectedly last time
  -e, --errexit  abort as soon as a test fails; implies --debug
  -v, --verbose  force more detailed output
                 default for debugging scripts
  -d, --debug    inhibit clean up and top-level logging
                 default for debugging scripts
  -x, --trace    enable tests shell tracing
_ATEOF
cat <<_ATEOF || at_write_fail=1

Other options:
_ATEOF

cat <<_ATEOF || at_write_fail=1
  --xdvi                  the xdvi program to show show TeX output (default
                          none)
_ATEOF
cat <<_ATEOF || at_write_fail=1

Report bugs to <bug-gnu-pspp@gnu.org>.
GNU PSPP home page: <https://www.gnu.org/software/pspp/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
_ATEOF
  exit $at_write_fail
fi

# List of tests.
if $at_list_p; then
  cat <<_ATEOF || at_write_fail=1
GNU PSPP 2.0.1 test suite test groups:

 NUM: FILE-NAME:LINE     TEST-GROUP-NAME
      KEYWORDS

_ATEOF
  # Pass an empty line as separator between selected groups and help.
  printf "%s\n" "$at_groups$as_nl$as_nl$at_help_all" |
    awk 'NF == 1 && FS != ";" {
	   selected[$ 1] = 1
	   next
	 }
	 /^$/ { FS = ";" }
	 NF > 0 {
	   if (selected[$ 1]) {
	     printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3
	     if ($ 4) {
	       lmax = 79
	       indent = "     "
	       line = indent
	       len = length (line)
	       n = split ($ 4, a, " ")
	       for (i = 1; i <= n; i++) {
		 l = length (a[i]) + 1
		 if (i > 1 && len + l > lmax) {
		   print line
		   line = indent " " a[i]
		   len = length (line)
		 } else {
		   line = line " " a[i]
		   len += l
		 }
	       }
	       if (n)
		 print line
	     }
	   }
	 }' || at_write_fail=1
  exit $at_write_fail
fi
if $at_version_p; then
  printf "%s\n" "$as_me (GNU PSPP 2.0.1)" &&
  cat <<\_ATEOF || at_write_fail=1

Copyright (C) 2021 Free Software Foundation, Inc.
This test suite is free software; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
_ATEOF
  exit $at_write_fail
fi

# Should we print banners?  Yes if more than one test is run.
case $at_groups in #(
  *$as_nl* )
      at_print_banners=: ;; #(
  * ) at_print_banners=false ;;
esac
# Text for banner N, set to a single space once printed.
# Banner 1. calendar.at:17
# Category starts at test group 1.
at_banner_text_1="calendar"
# Banner 2. data-in.at:17
# Category starts at test group 2.
at_banner_text_2="data input (data-in)"
# Banner 3. data-out.at:17
# Category starts at test group 22.
at_banner_text_3="data output (data-out)"
# Banner 4. datasheet-test.at:17
# Category starts at test group 32.
at_banner_text_4="datasheet"
# Banner 5. spreadsheet-test.at:17
# Category starts at test group 37.
at_banner_text_5="spreadsheet"
# Banner 6. dictionary.at:17
# Category starts at test group 47.
at_banner_text_6="dictionary"
# Banner 7. file.at:17
# Category starts at test group 48.
at_banner_text_7="files handling"
# Banner 8. format-guesser.at:17
# Category starts at test group 54.
at_banner_text_8="format guesser"
# Banner 9. mdd-file.at:17
# Category starts at test group 55.
at_banner_text_9="MDD files"
# Banner 10. pc+-file-reader.at:17
# Category starts at test group 56.
at_banner_text_10="SPSS/PC+ file reader - positive"
# Banner 11. pc+-file-reader.at:423
# Category starts at test group 60.
at_banner_text_11="SPSS/PC+ file reader - negative"
# Banner 12. por-file.at:17
# Category starts at test group 76.
at_banner_text_12="portable files"
# Banner 13. sys-file-reader.at:17
# Category starts at test group 80.
at_banner_text_13="system file reader - positive"
# Banner 14. sys-file-reader.at:1583
# Category starts at test group 99.
at_banner_text_14="system file reader - negative"
# Banner 15. sys-file.at:17
# Category starts at test group 181.
at_banner_text_15="system files"
# Banner 16. sys-file.at:328
# Category starts at test group 190.
at_banner_text_16="system files -- very long strings"
# Banner 17. encrypted-file.at:17
# Category starts at test group 195.
at_banner_text_17="encrypted files"
# Banner 18. command.at:17
# Category starts at test group 198.
at_banner_text_18="command parser"
# Banner 19. command.at:70
# Category starts at test group 201.
at_banner_text_19="ERASE"
# Banner 20. command.at:100
# Category starts at test group 203.
at_banner_text_20="N OF CASES"
# Banner 21. command.at:137
# Category starts at test group 204.
at_banner_text_21="COMMENT"
# Banner 22. command-name.at:17
# Category starts at test group 205.
at_banner_text_22="command name matching"
# Banner 23. lexer.at:17
# Category starts at test group 212.
at_banner_text_23="lexer"
# Banner 24. scan.at:17
# Category starts at test group 217.
at_banner_text_24="syntax scanning"
# Banner 25. segment.at:17
# Category starts at test group 245.
at_banner_text_25="syntax segmentation"
# Banner 26. variable-parser.at:17
# Category starts at test group 278.
at_banner_text_26="Variable parser"
# Banner 27. evaluate.at:16
# Category starts at test group 280.
at_banner_text_27="expressions"
# Banner 28. parse.at:17
# Category starts at test group 356.
at_banner_text_28="expression parsing"
# Banner 29. add-files.at:118
# Category starts at test group 373.
at_banner_text_29="ADD FILES"
# Banner 30. aggregate.at:17
# Category starts at test group 379.
at_banner_text_30="AGGREGATE procedure"
# Banner 31. apply.at:17
# Category starts at test group 399.
at_banner_text_31="APPLY DICTIONARY"
# Banner 32. attributes.at:17
# Category starts at test group 400.
at_banner_text_32="VARIABLE ATTRIBUTES and DATAFILE ATTRIBUTES"
# Banner 33. autorecode.at:17
# Category starts at test group 401.
at_banner_text_33="AUTORECODE procedure"
# Banner 34. cache.at:17
# Category starts at test group 412.
at_banner_text_34="CACHE"
# Banner 35. cd.at:17
# Category starts at test group 413.
at_banner_text_35="CD"
# Banner 36. compute.at:17
# Category starts at test group 414.
at_banner_text_36="COMPUTE transformation"
# Banner 37. correlations.at:17
# Category starts at test group 418.
at_banner_text_37="CORRELATIONS"
# Banner 38. count.at:17
# Category starts at test group 426.
at_banner_text_38="COUNT"
# Banner 39. crosstabs.at:17
# Category starts at test group 428.
at_banner_text_39="CROSSTABS procedure"
# Banner 40. ctables.at:1
# Category starts at test group 458.
at_banner_text_40="CTABLES"
# Banner 41. data-list.at:17
# Category starts at test group 504.
at_banner_text_41="DATA LIST"
# Banner 42. data-reader.at:17
# Category starts at test group 520.
at_banner_text_42="BEGIN DATA"
# Banner 43. dataset.at:17
# Category starts at test group 526.
at_banner_text_43="DATASET commands"
# Banner 44. date.at:17
# Category starts at test group 534.
at_banner_text_44="USE"
# Banner 45. define.at:17
# Category starts at test group 535.
at_banner_text_45="DEFINE"
# Banner 46. delete-variables.at:17
# Category starts at test group 597.
at_banner_text_46="DELETE VARIABLES"
# Banner 47. descriptives.at:17
# Category starts at test group 602.
at_banner_text_47="DESCRIPTIVES procedure"
# Banner 48. do-if.at:17
# Category starts at test group 615.
at_banner_text_48="DO IF"
# Banner 49. do-repeat.at:17
# Category starts at test group 617.
at_banner_text_49="DO REPEAT"
# Banner 50. examine.at:17
# Category starts at test group 625.
at_banner_text_50="EXAMINE"
# Banner 51. factor.at:17
# Category starts at test group 653.
at_banner_text_51="FACTOR procedure"
# Banner 52. file-handle.at:17
# Category starts at test group 665.
at_banner_text_52="FILE HANDLE"
# Banner 53. flip.at:17
# Category starts at test group 669.
at_banner_text_53="FLIP command"
# Banner 54. formats.at:17
# Category starts at test group 673.
at_banner_text_54="FORMATS"
# Banner 55. frequencies.at:17
# Category starts at test group 675.
at_banner_text_55="FREQUENCIES procedure"
# Banner 56. get-data-psql.at:17
# Category starts at test group 703.
at_banner_text_56="GET DATA /TYPE=PSQL"
# Banner 57. get-data-spreadsheet.at:172
# Category starts at test group 704.
at_banner_text_57="GET DATA Spreadsheet /TYPE=GNM"
# Banner 58. get-data-spreadsheet.at:378
# Category starts at test group 713.
at_banner_text_58="GET DATA Spreadsheet /TYPE=ODS"
# Banner 59. get-data-txt.at:17
# Category starts at test group 722.
at_banner_text_59="GET DATA /TYPE=TXT"
# Banner 60. get-data.at:1
# Category starts at test group 735.
at_banner_text_60="GET DATA"
# Banner 61. get.at:17
# Category starts at test group 736.
at_banner_text_61="GET"
# Banner 62. glm.at:17
# Category starts at test group 741.
at_banner_text_62="GLM procedure"
# Banner 63. graph.at:17
# Category starts at test group 747.
at_banner_text_63="GRAPH"
# Banner 64. host.at:17
# Category starts at test group 761.
at_banner_text_64="HOST - portable tests"
# Banner 65. host.at:54
# Category starts at test group 764.
at_banner_text_65="HOST - Unix-like OSes only"
# Banner 66. inpt-pgm.at:17
# Category starts at test group 773.
at_banner_text_66="INPUT PROGRAM"
# Banner 67. insert.at:17
# Category starts at test group 785.
at_banner_text_67="INSERT"
# Banner 68. leave.at:1
# Category starts at test group 795.
at_banner_text_68="LEAVE"
# Banner 69. list.at:17
# Category starts at test group 797.
at_banner_text_69="LIST"
# Banner 70. logistic.at:17
# Category starts at test group 806.
at_banner_text_70="LOGISTIC REGRESSION"
# Banner 71. loop.at:17
# Category starts at test group 817.
at_banner_text_71="LOOP"
# Banner 72. match-files.at:17
# Category starts at test group 827.
at_banner_text_72="MATCH FILES"
# Banner 73. matrix-data.at:17
# Category starts at test group 839.
at_banner_text_73="MATRIX DATA"
# Banner 74. matrix-reader.at:1
# Category starts at test group 870.
at_banner_text_74="Matrix reader"
# Banner 75. matrix.at:1
# Category starts at test group 871.
at_banner_text_75="MATRIX"
# Banner 76. mconvert.at:17
# Category starts at test group 941.
at_banner_text_76="MCONVERT"
# Banner 77. means.at:17
# Category starts at test group 947.
at_banner_text_77="MEANS procedure"
# Banner 78. missing-values.at:17
# Category starts at test group 965.
at_banner_text_78="MISSING VALUES"
# Banner 79. mrsets.at:17
# Category starts at test group 968.
at_banner_text_79="MRSETS"
# Banner 80. npar.at:17
# Category starts at test group 971.
at_banner_text_80="NPAR TESTS"
# Banner 81. numeric.at:1
# Category starts at test group 1012.
at_banner_text_81="NUMERIC"
# Banner 82. oneway.at:17
# Category starts at test group 1014.
at_banner_text_82="ONEWAY procedure"
# Banner 83. output.at:1
# Category starts at test group 1034.
at_banner_text_83="OUTPUT MODIFY"
# Banner 84. permissions.at:17
# Category starts at test group 1035.
at_banner_text_84="PERMISSIONS"
# Banner 85. print-space.at:17
# Category starts at test group 1037.
at_banner_text_85="PRINT SPACE"
# Banner 86. print.at:17
# Category starts at test group 1043.
at_banner_text_86="PRINT and WRITE"
# Banner 87. quick-cluster.at:17
# Category starts at test group 1054.
at_banner_text_87="QUICK CLUSTER"
# Banner 88. rank.at:17
# Category starts at test group 1067.
at_banner_text_88="RANK"
# Banner 89. recode.at:17
# Category starts at test group 1079.
at_banner_text_89="RECODE transformation"
# Banner 90. regression.at:17
# Category starts at test group 1091.
at_banner_text_90="LINEAR REGRESSION"
# Banner 91. reliability.at:17
# Category starts at test group 1107.
at_banner_text_91="RELIABILITY"
# Banner 92. rename-variables.at:17
# Category starts at test group 1113.
at_banner_text_92="RENAME VARIABLES"
# Banner 93. roc.at:17
# Category starts at test group 1118.
at_banner_text_93="ROC"
# Banner 94. sample.at:17
# Category starts at test group 1124.
at_banner_text_94="SAMPLE"
# Banner 95. save-translate.at:17
# Category starts at test group 1125.
at_banner_text_95="SAVE TRANSLATE /TYPE=CSV"
# Banner 96. save-translate.at:155
# Category starts at test group 1133.
at_banner_text_96="SAVE TRANSLATE /TYPE=TAB"
# Banner 97. save.at:17
# Category starts at test group 1135.
at_banner_text_97="IMPORT and EXPORT"
# Banner 98. save.at:43
# Category starts at test group 1136.
at_banner_text_98="SAVE"
# Banner 99. select-if.at:17
# Category starts at test group 1138.
at_banner_text_99="FILTER"
# Banner 100. set.at:17
# Category starts at test group 1139.
at_banner_text_100="SET"
# Banner 101. set.at:424
# Category starts at test group 1145.
at_banner_text_101="PRESERVE and RESTORE"
# Banner 102. show.at:17
# Category starts at test group 1147.
at_banner_text_102="SHOW"
# Banner 103. sort-cases.at:17
# Category starts at test group 1150.
at_banner_text_103="SORT CASES"
# Banner 104. sort-variables.at:17
# Category starts at test group 1172.
at_banner_text_104="SORT VARIABLES"
# Banner 105. split-file.at:17
# Category starts at test group 1174.
at_banner_text_105="SPLIT FILE"
# Banner 106. string.at:1
# Category starts at test group 1178.
at_banner_text_106="STRING"
# Banner 107. sys-file-info.at:17
# Category starts at test group 1180.
at_banner_text_107="SYSFILE INFO"
# Banner 108. sys-file-info.at:63
# Category starts at test group 1181.
at_banner_text_108="DISPLAY"
# Banner 109. t-test.at:17
# Category starts at test group 1186.
at_banner_text_109="T-TEST"
# Banner 110. temporary.at:17
# Category starts at test group 1209.
at_banner_text_110="TEMPORARY"
# Banner 111. title.at:17
# Category starts at test group 1210.
at_banner_text_111="TITLE and related commands"
# Banner 112. update.at:86
# Category starts at test group 1212.
at_banner_text_112="UPDATE"
# Banner 113. value-labels.at:17
# Category starts at test group 1216.
at_banner_text_113="VALUE LABELS"
# Banner 114. variable-labels.at:1
# Category starts at test group 1221.
at_banner_text_114="VARIABLE LABELS"
# Banner 115. variable-display.at:17
# Category starts at test group 1222.
at_banner_text_115="variable display attributes"
# Banner 116. variable-display.at:227
# Category starts at test group 1225.
at_banner_text_116="VARIABLE LABELS"
# Banner 117. vector.at:17
# Category starts at test group 1226.
at_banner_text_117="VECTOR"
# Banner 118. weight.at:17
# Category starts at test group 1231.
at_banner_text_118="WEIGHT"
# Banner 119. abt.at:17
# Category starts at test group 1232.
at_banner_text_119="Augmented binary tree (ABT) library"
# Banner 120. bt.at:17
# Category starts at test group 1239.
at_banner_text_120="Balanced tree (BT) library"
# Banner 121. encoding-guesser.at:17
# Category starts at test group 1247.
at_banner_text_121="encoding guesser"
# Banner 122. float-format.at:17
# Category starts at test group 1267.
at_banner_text_122="floating point formats"
# Banner 123. heap.at:17
# Category starts at test group 1268.
at_banner_text_123="Heap library"
# Banner 124. hmap.at:17
# Category starts at test group 1273.
at_banner_text_124="Hash map (hmap) library"
# Banner 125. hmapx.at:17
# Category starts at test group 1298.
at_banner_text_125="Hash map of pointers (hmapx) library"
# Banner 126. i18n.at:17
# Category starts at test group 1326.
at_banner_text_126="i18n recoding"
# Banner 127. i18n.at:80
# Category starts at test group 1335.
at_banner_text_127="i18n concatenation"
# Banner 128. line-reader.at:17
# Category starts at test group 1356.
at_banner_text_128="line_reader"
# Banner 129. ll.at:17
# Category starts at test group 1364.
at_banner_text_129="doubly linked list (ll) library"
# Banner 130. llx.at:17
# Category starts at test group 1394.
at_banner_text_130="doubly linked list of pointers (llx) library"
# Banner 131. range-map.at:17
# Category starts at test group 1426.
at_banner_text_131="range map library"
# Banner 132. range-set.at:17
# Category starts at test group 1429.
at_banner_text_132="range set library"
# Banner 133. range-tower.at:17
# Category starts at test group 1435.
at_banner_text_133="range tower library"
# Banner 134. sparse-array.at:17
# Category starts at test group 1443.
at_banner_text_134="sparse array library"
# Banner 135. sparse-xarray-test.at:17
# Category starts at test group 1445.
at_banner_text_135="sparse external arrays"
# Banner 136. str.at:17
# Category starts at test group 1452.
at_banner_text_136="string library"
# Banner 137. string-map.at:17
# Category starts at test group 1453.
at_banner_text_137="string map library"
# Banner 138. stringi-map.at:17
# Category starts at test group 1467.
at_banner_text_138="case-insensitive string map library"
# Banner 139. string-set.at:17
# Category starts at test group 1481.
at_banner_text_139="string set library"
# Banner 140. stringi-set.at:17
# Category starts at test group 1494.
at_banner_text_140="case-insensitive string set library"
# Banner 141. tower.at:17
# Category starts at test group 1507.
at_banner_text_141="tower library"
# Banner 142. u8-istream.at:17
# Category starts at test group 1512.
at_banner_text_142="u8_istream"
# Banner 143. zip.at:17
# Category starts at test group 1528.
at_banner_text_143="zip"
# Banner 144. chart-geometry.at:17
# Category starts at test group 1531.
at_banner_text_144="Chart Geometry"
# Banner 145. moments.at:17
# Category starts at test group 1533.
at_banner_text_145="calculating moments"
# Banner 146. randist.at:17
# Category starts at test group 1535.
at_banner_text_146="random distributions"
# Banner 147. ascii.at:17
# Category starts at test group 1549.
at_banner_text_147="ASCII driver -- rendering corner cases"
# Banner 148. charts.at:17
# Category starts at test group 1557.
at_banner_text_148="CHARTS Rudimentary run tests"
# Banner 149. html.at:17
# Category starts at test group 1564.
at_banner_text_149="HTML driver"
# Banner 150. journal.at:1
# Category starts at test group 1565.
at_banner_text_150="journal"
# Banner 151. output.at:17
# Category starts at test group 1566.
at_banner_text_151="output drivers"
# Banner 152. paper-size.at:17
# Category starts at test group 1571.
at_banner_text_152="output -- paper sizes"
# Banner 153. pivot-table.at:1
# Category starts at test group 1574.
at_banner_text_153="pivot table rendering"
# Banner 154. render.at:17
# Category starts at test group 1589.
at_banner_text_154="output rendering -- problematic procedures"
# Banner 155. tables.at:17
# Category starts at test group 1590.
at_banner_text_155="output -- tables"
# Banner 156. tex.at:18
# Category starts at test group 1592.
at_banner_text_156="tex driver"
# Banner 157. main.at:17
# Category starts at test group 1599.
at_banner_text_157="PSPP terminal UI"
# Banner 158. syntax-gen.at:17
# Category starts at test group 1603.
at_banner_text_158="SYNTAX GENERATOR"
# Banner 159. pspp-convert.at:1
# Category starts at test group 1604.
at_banner_text_159="pspp-convert"
# Banner 160. pspp-output.at:16
# Category starts at test group 1605.
at_banner_text_160="pspp-output"
# Banner 161. perl-module.at:17
# Category starts at test group 1619.
at_banner_text_161="Perl module tests"

# Take any -C into account.
if $at_change_dir ; then
  test x != "x$at_dir" && cd "$at_dir" \
    || as_fn_error $? "unable to change directory"
  at_dir=`pwd`
fi

# Load the config files for any default variable assignments.
for at_file in atconfig atlocal
do
  test -r $at_file || continue
  . ./$at_file || as_fn_error $? "invalid content: $at_file"
done

# Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix:
: "${at_top_build_prefix=$at_top_builddir}"

# Perform any assignments requested during argument parsing.
eval "$at_debug_args"

# atconfig delivers names relative to the directory the test suite is
# in, but the groups themselves are run in testsuite-dir/group-dir.
if test -n "$at_top_srcdir"; then
  builddir=../..
  for at_dir_var in srcdir top_srcdir top_build_prefix
  do
    eval at_val=\$at_$at_dir_var
    case $at_val in
      [\\/$]* | ?:[\\/]* ) at_prefix= ;;
      *) at_prefix=../../ ;;
    esac
    eval "$at_dir_var=\$at_prefix\$at_val"
  done
fi

## -------------------- ##
## Directory structure. ##
## -------------------- ##

# This is the set of directories and files used by this script
# (non-literals are capitalized):
#
# TESTSUITE         - the testsuite
# TESTSUITE.log     - summarizes the complete testsuite run
# TESTSUITE.dir/    - created during a run, remains after -d or failed test
# + at-groups/      - during a run: status of all groups in run
# | + NNN/          - during a run: meta-data about test group NNN
# | | + check-line  - location (source file and line) of current AT_CHECK
# | | + status      - exit status of current AT_CHECK
# | | + stdout      - stdout of current AT_CHECK
# | | + stder1      - stderr, including trace
# | | + stderr      - stderr, with trace filtered out
# | | + test-source - portion of testsuite that defines group
# | | + times       - timestamps for computing duration
# | | + pass        - created if group passed
# | | + xpass       - created if group xpassed
# | | + fail        - created if group failed
# | | + xfail       - created if group xfailed
# | | + skip        - created if group skipped
# + at-stop         - during a run: end the run if this file exists
# + at-source-lines - during a run: cache of TESTSUITE line numbers for extraction
# + 0..NNN/         - created for each group NNN, remains after -d or failed test
# | + TESTSUITE.log - summarizes the group results
# | + ...           - files created during the group

# The directory the whole suite works in.
# Should be absolute to let the user `cd' at will.
at_suite_dir=$at_dir/$as_me.dir
# The file containing the suite ($at_dir might have changed since earlier).
at_suite_log=$at_dir/$as_me.log
# The directory containing helper files per test group.
at_helper_dir=$at_suite_dir/at-groups
# Stop file: if it exists, do not start new jobs.
at_stop_file=$at_suite_dir/at-stop
# The fifo used for the job dispatcher.
at_job_fifo=$at_suite_dir/at-job-fifo

if $at_clean; then
  test -d "$at_suite_dir" &&
    find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
  rm -f -r "$at_suite_dir" "$at_suite_log"
  exit $?
fi

# Don't take risks: use only absolute directories in PATH.
#
# For stand-alone test suites (ie. atconfig was not found),
# AUTOTEST_PATH is relative to `.'.
#
# For embedded test suites, AUTOTEST_PATH is relative to the top level
# of the package.  Then expand it into build/src parts, since users
# may create executables in both places.
AUTOTEST_PATH=`printf "%s\n" "$AUTOTEST_PATH" | sed "s|:|$PATH_SEPARATOR|g"`
at_path=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $AUTOTEST_PATH $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -n "$at_path" && as_fn_append at_path $PATH_SEPARATOR
case $as_dir in
  [\\/]* | ?:[\\/]* )
    as_fn_append at_path "$as_dir"
    ;;
  * )
    if test -z "$at_top_build_prefix"; then
      # Stand-alone test suite.
      as_fn_append at_path "$as_dir"
    else
      # Embedded test suite.
      as_fn_append at_path "$at_top_build_prefix$as_dir$PATH_SEPARATOR"
      as_fn_append at_path "$at_top_srcdir/$as_dir"
    fi
    ;;
esac
  done
IFS=$as_save_IFS


# Now build and simplify PATH.
#
# There might be directories that don't exist, but don't redirect
# builtins' (eg., cd) stderr directly: Ultrix's sh hates that.
at_new_path=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $at_path
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -d "$as_dir" || continue
case $as_dir in
  [\\/]* | ?:[\\/]* ) ;;
  * ) as_dir=`(cd "$as_dir" && pwd) 2>/dev/null` ;;
esac
case $PATH_SEPARATOR$at_new_path$PATH_SEPARATOR in
  *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR*) ;;
  $PATH_SEPARATOR$PATH_SEPARATOR) at_new_path=$as_dir ;;
  *) as_fn_append at_new_path "$PATH_SEPARATOR$as_dir" ;;
esac
  done
IFS=$as_save_IFS

PATH=$at_new_path
export PATH

# Setting up the FDs.



# 5 is the log file.  Not to be overwritten if `-d'.
if $at_debug_p; then
  at_suite_log=/dev/null
else
  : >"$at_suite_log"
fi
exec 5>>"$at_suite_log"

# Banners and logs.
printf "%s\n" "## -------------------------- ##
## GNU PSPP 2.0.1 test suite. ##
## -------------------------- ##"
{
  printf "%s\n" "## -------------------------- ##
## GNU PSPP 2.0.1 test suite. ##
## -------------------------- ##"
  echo

  printf "%s\n" "$as_me: command line was:"
  printf "%s\n" "  \$ $0 $at_cli_args"
  echo

  # If ChangeLog exists, list a few lines in case it might help determining
  # the exact version.
  if test -n "$at_top_srcdir" && test -f "$at_top_srcdir/ChangeLog"; then
    printf "%s\n" "## ---------- ##
## ChangeLog. ##
## ---------- ##"
    echo
    sed 's/^/| /;10q' "$at_top_srcdir/ChangeLog"
    echo
  fi

  {
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##

hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`

/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`

/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`

_ASUNAME

as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    printf "%s\n" "PATH: $as_dir"
  done
IFS=$as_save_IFS

}
  echo

  # Contents of the config files.
  for at_file in atconfig atlocal
  do
    test -r $at_file || continue
    printf "%s\n" "$as_me: $at_file:"
    sed 's/^/| /' $at_file
    echo
  done
} >&5


## ------------------------- ##
## Autotest shell functions. ##
## ------------------------- ##

# at_fn_banner NUMBER
# -------------------
# Output banner NUMBER, provided the testsuite is running multiple groups and
# this particular banner has not yet been printed.
at_fn_banner ()
{
  $at_print_banners || return 0
  eval at_banner_text=\$at_banner_text_$1
  test "x$at_banner_text" = "x " && return 0
  eval "at_banner_text_$1=\" \""
  if test -z "$at_banner_text"; then
    $at_first || echo
  else
    printf "%s\n" "$as_nl$at_banner_text$as_nl"
  fi
} # at_fn_banner

# at_fn_check_prepare_notrace REASON LINE
# ---------------------------------------
# Perform AT_CHECK preparations for the command at LINE for an untraceable
# command; REASON is the reason for disabling tracing.
at_fn_check_prepare_notrace ()
{
  $at_trace_echo "Not enabling shell tracing (command contains $1)"
  printf "%s\n" "$2" >"$at_check_line_file"
  at_check_trace=: at_check_filter=:
  : >"$at_stdout"; : >"$at_stderr"
}

# at_fn_check_prepare_trace LINE
# ------------------------------
# Perform AT_CHECK preparations for the command at LINE for a traceable
# command.
at_fn_check_prepare_trace ()
{
  printf "%s\n" "$1" >"$at_check_line_file"
  at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace
  : >"$at_stdout"; : >"$at_stderr"
}

# at_fn_check_prepare_dynamic COMMAND LINE
# ----------------------------------------
# Decide if COMMAND at LINE is traceable at runtime, and call the appropriate
# preparation function.
at_fn_check_prepare_dynamic ()
{
  case $1 in
    *$as_nl*)
      at_fn_check_prepare_notrace 'an embedded newline' "$2" ;;
    *)
      at_fn_check_prepare_trace "$2" ;;
  esac
}

# at_fn_filter_trace
# ------------------
# Remove the lines in the file "$at_stderr" generated by "set -x" and print
# them to stderr.
at_fn_filter_trace ()
{
  mv "$at_stderr" "$at_stder1"
  grep '^ *+' "$at_stder1" >&2
  grep -v '^ *+' "$at_stder1" >"$at_stderr"
}

# at_fn_log_failure FILE-LIST
# ---------------------------
# Copy the files in the list on stdout with a "> " prefix, and exit the shell
# with a failure exit code.
at_fn_log_failure ()
{
  for file
    do printf "%s\n" "$file:"; sed 's/^/> /' "$file"; done
  echo 1 > "$at_status_file"
  exit 1
}

# at_fn_check_skip EXIT-CODE LINE
# -------------------------------
# Check whether EXIT-CODE is a special exit code (77 or 99), and if so exit
# the test group subshell with that same exit code. Use LINE in any report
# about test failure.
at_fn_check_skip ()
{
  case $1 in
    99) echo 99 > "$at_status_file"; at_failed=:
	printf "%s\n" "$2: hard failure"; exit 99;;
    77) echo 77 > "$at_status_file"; exit 77;;
  esac
}

# at_fn_check_status EXPECTED EXIT-CODE LINE
# ------------------------------------------
# Check whether EXIT-CODE is the EXPECTED exit code, and if so do nothing.
# Otherwise, if it is 77 or 99, exit the test group subshell with that same
# exit code; if it is anything else print an error message referring to LINE,
# and fail the test.
at_fn_check_status ()
{
  case $2 in
    $1 ) ;;
    77) echo 77 > "$at_status_file"; exit 77;;
    99) echo 99 > "$at_status_file"; at_failed=:
	printf "%s\n" "$3: hard failure"; exit 99;;
    *) printf "%s\n" "$3: exit code was $2, expected $1"
      at_failed=:;;
  esac
}

# at_fn_diff_devnull FILE
# -----------------------
# Emit a diff between /dev/null and FILE. Uses "test -s" to avoid useless diff
# invocations.
at_fn_diff_devnull ()
{
  test -s "$1" || return 0
  $at_diff "$at_devnull" "$1"
}

# at_fn_test NUMBER
# -----------------
# Parse out test NUMBER from the tail of this file.
at_fn_test ()
{
  eval at_sed=\$at_sed$1
  sed "$at_sed" "$at_myself" > "$at_test_source"
}

# at_fn_create_debugging_script
# -----------------------------
# Create the debugging script $at_group_dir/run which will reproduce the
# current test group.
at_fn_create_debugging_script ()
{
  {
    echo "#! /bin/sh" &&
    echo 'test ${ZSH_VERSION+y} && alias -g '\''${1+"$@"}'\''='\''"$@"'\''' &&
    printf "%s\n" "cd '$at_dir'" &&
    printf "%s\n" "exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group \${1+\"\$@\"}" &&
    echo 'exit 1'
  } >"$at_group_dir/run" &&
  chmod +x "$at_group_dir/run"
}

## -------------------------------- ##
## End of autotest shell functions. ##
## -------------------------------- ##
if test X"$RUNNER" != X; then
    wrapper_dir=`pwd`/wrappers
    rm -f "$wrapper_dir"/*
    test -d "$wrapper_dir" || mkdir "$wrapper_dir"

    wrap_dir () {
        test -d "$1" || return
	for file in "$1"/*; do
            if test -x "$file" && test -f "$file"; then
		base=`basename $file $EXEEXT`
		wrapper=$wrapper_dir/$base
		if test ! -e "$wrapper"; then
		    echo "exec $RUNNER $file \"\$@\"" > $wrapper
		    chmod +x $wrapper
		fi
	    fi
	done
    }

    save_IFS=$IFS; IFS=$PATH_SEPARATOR
    for dir in $AUTOTEST_PATH; do
        IFS=$save_IFS
        test X"$dir" = X && dir=.
	case $dir in
            \\/* | ?:\\/*)
                wrap_dir "$dir"
		;;
            *)
	        wrap_dir "$abs_top_builddir/$dir"
		wrap_dir "$abs_top_srcdir/$dir"
		;;
	esac
    done
    IFS=$save_IFS
    PATH=$wrapper_dir:$PATH
fi


number_lines_in_hex () {
  $PYTHON3 -c '
import sys
for i, line in enumerate(sys.stdin):
    sys.stdout.write(" %04X %s" % (i, line))
'
}

zcompressed_sack () {
    cat <<'EOF'
"$FL3"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 6; 2; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

2; 4; 0; 0; 0x010400 *2; s8 "STR4";
2; 8; 0; 0; 0x010800 *2; s8 "STR8";
2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
2; -1; 0; 0; 0; 0; s8 "";

7; 20; 1; 12; "windows-1252";

999; 0;

i64 0x194;    # zheader_ofs
i64 0x205;    # ztrailer_ofs
i64 48;       # ztrailer_len

hex "78 01 63 4c f9 f7 f7 df  df ff bf 13 93 92 53 52";
hex "d3 d2 33 0c 0c 8d 8c 15  80 e0 ef df bf ff 52 d3";
hex "fe fe cd ca ce c9 05 f1  f3 f2 0b 0a 8b 8a 4b 4a";
hex "cb ca 2b 2a ab 1c 9d 9c  5d 5c dd dc 41 e2 1e 9e";
hex "5e de 3e be 7e fe ff fe  fe 61 00 81 80 c0 a0 e0";
hex "90 d0 b0 70 00 0f 3f 23  d7";

i64 -100;     # ztrailer_bias
i64 0;        # ztrailer_zero
0x3ff000;     # block_size
1;            # n_blocks

i64 0x194;    # uncompressed_ofs
i64 0x1ac;    # compressed_ofs
88;           # uncompressed_size
89;           # compressed_size
EOF
}

vls_gen_data () {
cat > data.txt <<EOF
 1xxxxxxxx2aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbcYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYdeZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZf
 1xxxxxxxx2aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbcYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYdeZZMaryHadAlittleLambZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZf
EOF
}

sort_cases_gen_data () {
  cat > gen-data.py <<'EOF'
#! /usr/bin/python3

import random
import sys

data = []
for i in range(int(sys.argv[1])):
    data += [i] * int(sys.argv[2])
random.shuffle(data)

data_txt = open('data.txt', 'w')
for i, item in enumerate(data):
    data_txt.write('%s %s\n' % (item, i))
data_txt.close()

shuffled = ((item, i) for i, item in enumerate(data))
expout = open('expout', 'w')
for item, i in sorted(shuffled):
    expout.write(' %8d %8d \n' % (item, i))
expout.close()
EOF
  $PYTHON3 gen-data.py "$@"
}

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"
}

randist_compare () {
  cat > compare.py <<'EOF'
#! /usr/bin/python3

import itertools
import sys

def count_decimals(s):
    if '.' not in s:
        return 0
    else:
        return len(s) - s.index('.')

def to_int(s):
    return int(s.replace('.', ''))

EPSILON = 1

errors = 0
line_number = 0
for a, b in itertools.zip_longest(open(sys.argv[1], 'r'),
                                  open(sys.argv[2], 'r')):
    line_number += 1
    if not a:
        sys.stderr.write("%s:%s: unexpected end of file\n"
                         % (sys.argv[2], line_number))
        sys.exit(1)
    if not b:
        sys.stderr.write("%s:%s: unexpected end of file\n"
                         % (sys.argv[1], line_number))
        sys.exit(1)

    af = a.split()
    bf = b.split()
    if len(af) != len(bf):
        sys.stderr.write("%s:%s: contains %s fields but should contain %s\n"
                         % (sys.argv[2], line_number, len(b), len(a)))
        sys.exit(1)

    for i in range(len(af)):
        if count_decimals(af[i]) != count_decimals(bf[i]):
            sys.stderr.write("%s:%s: unexpected number of decimals\n"
                             % (sys.argv[2], line_number))
            sys.exit(1)

        if af[i] == bf[i]:
            continue

        an = to_int(af[i])
        bn = to_int(bf[i])
        if an != bn and (bn < an - EPSILON or bn > an + EPSILON):
            errors += 1
            if errors > 50:
                print("%s: Additional differences suppressed."
                      % sys.argv[2])
                break
            print("%s:%s: Values differ from %s:%s"
                  % (sys.argv[2], line_number,
                     sys.argv[1], line_number))
            print("Expected:\n%s" % a)
            print("Calculated:\n%s" % b)

    if errors > 50:
        break
sys.exit(1 if errors > 0 else 0)

EOF
  $PYTHON3 compare.py "$@"
}

# Find the Address Sanitizer library that PSPP is linked against, if any.
# If it exists, it needs to be preloaded when we run Perl.
asan_lib=$("$abs_top_builddir/libtool" --mode=execute ldd \
               "$abs_top_builddir/src/ui/terminal/pspp" 2>/dev/null \
	   | grep asan \
	   | awk '{print $3}')
if test -e "$asan_lib"; then
    USING_ASAN=:
else
    USING_ASAN=false
    asan_lib=
fi

run_perl_module () {
    LD_PRELOAD="$asan_lib":"$LD_PRELOAD" \
    LD_LIBRARY_PATH="$abs_top_builddir/src/.libs" \
    DYLD_LIBRARY_PATH="$abs_top_builddir/src/.libs" \
    ASAN_OPTIONS="$ASAN_OPTIONS detect_leaks=false" \
    $PERL -I"$abs_top_builddir/perl-module/blib/arch" \
          -I"$abs_top_builddir/perl-module/blib/lib" "$@"
}
{
  printf "%s\n" "## ------------------ ##
## Running the tests. ##
## ------------------ ##"
} >&5

at_start_date=`date`
at_start_time=`date +%s 2>/dev/null`
printf "%s\n" "$as_me: starting at: $at_start_date" >&5

# Create the master directory if it doesn't already exist.
as_dir="$at_suite_dir"; as_fn_mkdir_p ||
  as_fn_error $? "cannot create \`$at_suite_dir'" "$LINENO" 5

# Can we diff with `/dev/null'?  DU 5.0 refuses.
if diff /dev/null /dev/null >/dev/null 2>&1; then
  at_devnull=/dev/null
else
  at_devnull=$at_suite_dir/devnull
  >"$at_devnull"
fi

# Use `diff -u' when possible.
if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff"
then
  at_diff='diff -u'
else
  at_diff=diff
fi

# Get the last needed group.
for at_group in : $at_groups; do :; done

# Extract the start and end lines of each test group at the tail
# of this file
awk '
BEGIN { FS="" }
/^#AT_START_/ {
  start = NR
}
/^#AT_STOP_/ {
  test = substr ($ 0, 10)
  print "at_sed" test "=\"1," start "d;" (NR-1) "q\""
  if (test == "'"$at_group"'") exit
}' "$at_myself" > "$at_suite_dir/at-source-lines" &&
. "$at_suite_dir/at-source-lines" ||
  as_fn_error $? "cannot create test line number cache" "$LINENO" 5
rm -f "$at_suite_dir/at-source-lines"

# Set number of jobs for `-j'; avoid more jobs than test groups.
set X $at_groups; shift; at_max_jobs=$#
if test $at_max_jobs -eq 0; then
  at_jobs=1
fi
if test $at_jobs -ne 1 &&
   { test $at_jobs -eq 0 || test $at_jobs -gt $at_max_jobs; }; then
  at_jobs=$at_max_jobs
fi

# If parallel mode, don't output banners, don't split summary lines.
if test $at_jobs -ne 1; then
  at_print_banners=false
  at_quiet=:
fi

# Set up helper dirs.
rm -rf "$at_helper_dir" &&
mkdir "$at_helper_dir" &&
cd "$at_helper_dir" &&
{ test -z "$at_groups" || mkdir $at_groups; } ||
as_fn_error $? "testsuite directory setup failed" "$LINENO" 5

# Functions for running a test group.  We leave the actual
# test group execution outside of a shell function in order
# to avoid hitting zsh 4.x exit status bugs.

# at_fn_group_prepare
# -------------------
# Prepare for running a test group.
at_fn_group_prepare ()
{
  # The directory for additional per-group helper files.
  at_job_dir=$at_helper_dir/$at_group
  # The file containing the location of the last AT_CHECK.
  at_check_line_file=$at_job_dir/check-line
  # The file containing the exit status of the last command.
  at_status_file=$at_job_dir/status
  # The files containing the output of the tested commands.
  at_stdout=$at_job_dir/stdout
  at_stder1=$at_job_dir/stder1
  at_stderr=$at_job_dir/stderr
  # The file containing the code for a test group.
  at_test_source=$at_job_dir/test-source
  # The file containing dates.
  at_times_file=$at_job_dir/times

  # Be sure to come back to the top test directory.
  cd "$at_suite_dir"

  # Clearly separate the test groups when verbose.
  $at_first || $at_verbose echo

  at_group_normalized=$at_group

  eval 'while :; do
    case $at_group_normalized in #(
    '"$at_format"'*) break;;
    esac
    at_group_normalized=0$at_group_normalized
  done'


  # Create a fresh directory for the next test group, and enter.
  # If one already exists, the user may have invoked ./run from
  # within that directory; we remove the contents, but not the
  # directory itself, so that we aren't pulling the rug out from
  # under the shell's notion of the current directory.
  at_group_dir=$at_suite_dir/$at_group_normalized
  at_group_log=$at_group_dir/$as_me.log
  if test -d "$at_group_dir"
then
  find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx {} \;
  rm -fr "$at_group_dir"/* "$at_group_dir"/.[!.] "$at_group_dir"/.??*
fi ||
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: test directory for $at_group_normalized could not be cleaned" >&5
printf "%s\n" "$as_me: WARNING: test directory for $at_group_normalized could not be cleaned" >&2;}
  # Be tolerant if the above `rm' was not able to remove the directory.
  as_dir="$at_group_dir"; as_fn_mkdir_p

  echo 0 > "$at_status_file"

  # In verbose mode, append to the log file *and* show on
  # the standard output; in quiet mode only write to the log.
  if test -z "$at_verbose"; then
    at_tee_pipe='tee -a "$at_group_log"'
  else
    at_tee_pipe='cat >> "$at_group_log"'
  fi
}

# at_fn_group_banner ORDINAL LINE DESC PAD [BANNER]
# -------------------------------------------------
# Declare the test group ORDINAL, located at LINE with group description DESC,
# and residing under BANNER. Use PAD to align the status column.
at_fn_group_banner ()
{
  at_setup_line="$2"
  test -n "$5" && at_fn_banner $5
  at_desc="$3"
  case $1 in
    [0-9])      at_desc_line="  $1: ";;
    [0-9][0-9]) at_desc_line=" $1: " ;;
    *)          at_desc_line="$1: "  ;;
  esac
  as_fn_append at_desc_line "$3$4"
  $at_quiet printf %s "$at_desc_line"
  echo "#                             -*- compilation -*-" >> "$at_group_log"
}

# at_fn_group_postprocess
# -----------------------
# Perform cleanup after running a test group.
at_fn_group_postprocess ()
{
  # Be sure to come back to the suite directory, in particular
  # since below we might `rm' the group directory we are in currently.
  cd "$at_suite_dir"

  if test ! -f "$at_check_line_file"; then
    sed "s/^ */$as_me: WARNING: /" <<_ATEOF
      A failure happened in a test group before any test could be
      run. This means that test suite is improperly designed.  Please
      report this failure to <bug-gnu-pspp@gnu.org>.
_ATEOF
    printf "%s\n" "$at_setup_line" >"$at_check_line_file"
    at_status=99
  fi
  $at_verbose printf %s "$at_group. $at_setup_line: "
  printf %s "$at_group. $at_setup_line: " >> "$at_group_log"
  case $at_xfail:$at_status in
    yes:0)
	at_msg="UNEXPECTED PASS"
	at_res=xpass
	at_errexit=$at_errexit_p
	at_color=$at_red
	;;
    no:0)
	at_msg="ok"
	at_res=pass
	at_errexit=false
	at_color=$at_grn
	;;
    *:77)
	at_msg='skipped ('`cat "$at_check_line_file"`')'
	at_res=skip
	at_errexit=false
	at_color=$at_blu
	;;
    no:* | *:99)
	at_msg='FAILED ('`cat "$at_check_line_file"`')'
	at_res=fail
	at_errexit=$at_errexit_p
	at_color=$at_red
	;;
    yes:*)
	at_msg='expected failure ('`cat "$at_check_line_file"`')'
	at_res=xfail
	at_errexit=false
	at_color=$at_lgn
	;;
  esac
  echo "$at_res" > "$at_job_dir/$at_res"
  # In parallel mode, output the summary line only afterwards.
  if test $at_jobs -ne 1 && test -n "$at_verbose"; then
    printf "%s\n" "$at_desc_line $at_color$at_msg$at_std"
  else
    # Make sure there is a separator even with long titles.
    printf "%s\n" " $at_color$at_msg$at_std"
  fi
  at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg"
  case $at_status in
    0|77)
      # $at_times_file is only available if the group succeeded.
      # We're not including the group log, so the success message
      # is written in the global log separately.  But we also
      # write to the group log in case they're using -d.
      if test -f "$at_times_file"; then
	at_log_msg="$at_log_msg     ("`sed 1d "$at_times_file"`')'
	rm -f "$at_times_file"
      fi
      printf "%s\n" "$at_log_msg" >> "$at_group_log"
      printf "%s\n" "$at_log_msg" >&5

      # Cleanup the group directory, unless the user wants the files
      # or the success was unexpected.
      if $at_debug_p || test $at_res = xpass; then
	at_fn_create_debugging_script
	if test $at_res = xpass && $at_errexit; then
	  echo stop > "$at_stop_file"
	fi
      else
	if test -d "$at_group_dir"; then
	  find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
	  rm -fr "$at_group_dir"
	fi
	rm -f "$at_test_source"
      fi
      ;;
    *)
      # Upon failure, include the log into the testsuite's global
      # log.  The failure message is written in the group log.  It
      # is later included in the global log.
      printf "%s\n" "$at_log_msg" >> "$at_group_log"

      # Upon failure, keep the group directory for autopsy, and create
      # the debugging script.  With -e, do not start any further tests.
      at_fn_create_debugging_script
      if $at_errexit; then
	echo stop > "$at_stop_file"
      fi
      ;;
  esac
}


## ------------ ##
## Driver loop. ##
## ------------ ##


if (set -m && set +m && set +b) >/dev/null 2>&1; then
  set +b
  at_job_control_on='set -m' at_job_control_off='set +m' at_job_group=-
else
  at_job_control_on=: at_job_control_off=: at_job_group=
fi

for at_signal in 1 2 15; do
  trap 'set +x; set +e
	$at_job_control_off
	at_signal='"$at_signal"'
	echo stop > "$at_stop_file"
	trap "" $at_signal
	at_pgids=
	for at_pgid in `jobs -p 2>/dev/null`; do
	  at_pgids="$at_pgids $at_job_group$at_pgid"
	done
	test -z "$at_pgids" || kill -$at_signal $at_pgids 2>/dev/null
	wait
	if test "$at_jobs" -eq 1 || test -z "$at_verbose"; then
	  echo >&2
	fi
	at_signame=`kill -l $at_signal 2>&1 || echo $at_signal`
	set x $at_signame
	test 0 -gt 2 && at_signame=$at_signal
	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: caught signal $at_signame, bailing out" >&5
printf "%s\n" "$as_me: WARNING: caught signal $at_signame, bailing out" >&2;}
	as_fn_arith 128 + $at_signal && exit_status=$as_val
	as_fn_exit $exit_status' $at_signal
done

rm -f "$at_stop_file"
at_first=:

if test $at_jobs -ne 1 &&
     rm -f "$at_job_fifo" &&
     test -n "$at_job_group" &&
     ( mkfifo "$at_job_fifo" && trap 'exit 1' PIPE STOP TSTP ) 2>/dev/null
then
  # FIFO job dispatcher.

  trap 'at_pids=
	for at_pid in `jobs -p`; do
	  at_pids="$at_pids $at_job_group$at_pid"
	done
	if test -n "$at_pids"; then
	  at_sig=TSTP
	  test ${TMOUT+y} && at_sig=STOP
	  kill -$at_sig $at_pids 2>/dev/null
	fi
	kill -STOP $$
	test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP

  echo
  # Turn jobs into a list of numbers, starting from 1.
  at_joblist=`printf "%s\n" "$at_groups" | sed -n 1,${at_jobs}p`

  set X $at_joblist
  shift
  for at_group in $at_groups; do
    $at_job_control_on 2>/dev/null
    (
      # Start one test group.
      $at_job_control_off
      if $at_first; then
	exec 7>"$at_job_fifo"
      else
	exec 6<&-
      fi
      trap 'set +x; set +e
	    trap "" PIPE
	    echo stop > "$at_stop_file"
	    echo >&7
	    as_fn_exit 141' PIPE
      at_fn_group_prepare
      if cd "$at_group_dir" &&
	 at_fn_test $at_group &&
	 . "$at_test_source"
      then :; else
	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5
printf "%s\n" "$as_me: WARNING: unable to parse test group: $at_group" >&2;}
	at_failed=:
      fi
      at_fn_group_postprocess
      echo >&7
    ) &
    $at_job_control_off
    if $at_first; then
      at_first=false
      exec 6<"$at_job_fifo" 7>"$at_job_fifo"
    fi
    shift # Consume one token.
    if test $# -gt 0; then :; else
      read at_token <&6 || break
      set x $*
    fi
    test -f "$at_stop_file" && break
  done
  exec 7>&-
  # Read back the remaining ($at_jobs - 1) tokens.
  set X $at_joblist
  shift
  if test $# -gt 0; then
    shift
    for at_job
    do
      read at_token
    done <&6
  fi
  exec 6<&-
  wait
else
  # Run serially, avoid forks and other potential surprises.
  for at_group in $at_groups; do
    at_fn_group_prepare
    if cd "$at_group_dir" &&
       at_fn_test $at_group &&
       . "$at_test_source"; then :; else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5
printf "%s\n" "$as_me: WARNING: unable to parse test group: $at_group" >&2;}
      at_failed=:
    fi
    at_fn_group_postprocess
    test -f "$at_stop_file" && break
    at_first=false
  done
fi

# Wrap up the test suite with summary statistics.
cd "$at_helper_dir"

# Use ?..???? when the list must remain sorted, the faster * otherwise.
at_pass_list=`for f in */pass; do echo $f; done | sed '/\*/d; s,/pass,,'`
at_skip_list=`for f in */skip; do echo $f; done | sed '/\*/d; s,/skip,,'`
at_xfail_list=`for f in */xfail; do echo $f; done | sed '/\*/d; s,/xfail,,'`
at_xpass_list=`for f in ?/xpass ??/xpass ???/xpass ????/xpass; do
		 echo $f; done | sed '/?/d; s,/xpass,,'`
at_fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do
		echo $f; done | sed '/?/d; s,/fail,,'`

set X $at_pass_list $at_xpass_list $at_xfail_list $at_fail_list $at_skip_list
shift; at_group_count=$#
set X $at_xpass_list; shift; at_xpass_count=$#; at_xpass_list=$*
set X $at_xfail_list; shift; at_xfail_count=$#
set X $at_fail_list; shift; at_fail_count=$#; at_fail_list=$*
set X $at_skip_list; shift; at_skip_count=$#

as_fn_arith $at_group_count - $at_skip_count && at_run_count=$as_val
as_fn_arith $at_xpass_count + $at_fail_count && at_unexpected_count=$as_val
as_fn_arith $at_xfail_count + $at_fail_count && at_total_fail_count=$as_val

# Back to the top directory.
cd "$at_dir"
rm -rf "$at_helper_dir"

# Compute the duration of the suite.
at_stop_date=`date`
at_stop_time=`date +%s 2>/dev/null`
printf "%s\n" "$as_me: ending at: $at_stop_date" >&5
case $at_start_time,$at_stop_time in
  [0-9]*,[0-9]*)
    as_fn_arith $at_stop_time - $at_start_time && at_duration_s=$as_val
    as_fn_arith $at_duration_s / 60 && at_duration_m=$as_val
    as_fn_arith $at_duration_m / 60 && at_duration_h=$as_val
    as_fn_arith $at_duration_s % 60 && at_duration_s=$as_val
    as_fn_arith $at_duration_m % 60 && at_duration_m=$as_val
    at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s"
    printf "%s\n" "$as_me: test suite duration: $at_duration" >&5
    ;;
esac

echo
printf "%s\n" "## ------------- ##
## Test results. ##
## ------------- ##"
echo
{
  echo
  printf "%s\n" "## ------------- ##
## Test results. ##
## ------------- ##"
  echo
} >&5

if test $at_run_count = 1; then
  at_result="1 test"
  at_were=was
else
  at_result="$at_run_count tests"
  at_were=were
fi
if $at_errexit_p && test $at_unexpected_count != 0; then
  if test $at_xpass_count = 1; then
    at_result="$at_result $at_were run, one passed"
  else
    at_result="$at_result $at_were run, one failed"
  fi
  at_result="$at_result unexpectedly and inhibited subsequent tests."
  at_color=$at_red
else
  # Don't you just love exponential explosion of the number of cases?
  at_color=$at_red
  case $at_xpass_count:$at_fail_count:$at_xfail_count in
    # So far, so good.
    0:0:0) at_result="$at_result $at_were successful." at_color=$at_grn ;;
    0:0:*) at_result="$at_result behaved as expected." at_color=$at_lgn ;;

    # Some unexpected failures
    0:*:0) at_result="$at_result $at_were run,
$at_fail_count failed unexpectedly." ;;

    # Some failures, both expected and unexpected
    0:*:1) at_result="$at_result $at_were run,
$at_total_fail_count failed ($at_xfail_count expected failure)." ;;
    0:*:*) at_result="$at_result $at_were run,
$at_total_fail_count failed ($at_xfail_count expected failures)." ;;

    # No unexpected failures, but some xpasses
    *:0:*) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly." ;;

    # No expected failures, but failures and xpasses
    *:1:0) at_result="$at_result $at_were run,
$at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;;
    *:*:0) at_result="$at_result $at_were run,
$at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;;

    # All of them.
    *:*:1) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly,
$at_total_fail_count failed ($at_xfail_count expected failure)." ;;
    *:*:*) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly,
$at_total_fail_count failed ($at_xfail_count expected failures)." ;;
  esac

  if test $at_skip_count = 0 && test $at_run_count -gt 1; then
    at_result="All $at_result"
  fi
fi

# Now put skips in the mix.
case $at_skip_count in
  0) ;;
  1) at_result="$at_result
1 test was skipped." ;;
  *) at_result="$at_result
$at_skip_count tests were skipped." ;;
esac

if test $at_unexpected_count = 0; then
  echo "$at_color$at_result$at_std"
  echo "$at_result" >&5
else
  echo "${at_color}ERROR: $at_result$at_std" >&2
  echo "ERROR: $at_result" >&5
  {
    echo
    printf "%s\n" "## ------------------------ ##
## Summary of the failures. ##
## ------------------------ ##"

    # Summary of failed and skipped tests.
    if test $at_fail_count != 0; then
      echo "Failed tests:"
      $SHELL "$at_myself" $at_fail_list --list
      echo
    fi
    if test $at_skip_count != 0; then
      echo "Skipped tests:"
      $SHELL "$at_myself" $at_skip_list --list
      echo
    fi
    if test $at_xpass_count != 0; then
      echo "Unexpected passes:"
      $SHELL "$at_myself" $at_xpass_list --list
      echo
    fi
    if test $at_fail_count != 0; then
      printf "%s\n" "## ---------------------- ##
## Detailed failed tests. ##
## ---------------------- ##"
      echo
      for at_group in $at_fail_list
      do
	at_group_normalized=$at_group

  eval 'while :; do
    case $at_group_normalized in #(
    '"$at_format"'*) break;;
    esac
    at_group_normalized=0$at_group_normalized
  done'

	cat "$at_suite_dir/$at_group_normalized/$as_me.log"
	echo
      done
      echo
    fi
    if test -n "$at_top_srcdir"; then
      sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## ${at_top_build_prefix}config.log ##
_ASBOX
      sed 's/^/| /' ${at_top_build_prefix}config.log
      echo
    fi
  } >&5

  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $as_me.log was created. ##
_ASBOX

  echo
  if $at_debug_p; then
    at_msg='per-test log files'
  else
    at_msg="\`${at_testdir+${at_testdir}/}$as_me.log'"
  fi
  at_msg1a=${at_xpass_list:+', '}
  at_msg1=$at_fail_list${at_fail_list:+" failed$at_msg1a"}
  at_msg2=$at_xpass_list${at_xpass_list:+" passed unexpectedly"}

  printf "%s\n" "Please send $at_msg and all information you think might help:

   To: <bug-gnu-pspp@gnu.org>
   Subject: [GNU PSPP 2.0.1] $as_me: $at_msg1$at_msg2

You may investigate any problem if you feel able to do so, in which
case the test suite provides a good starting point.  Its output may
be found below \`${at_testdir+${at_testdir}/}$as_me.dir'.
"
  exit 1
fi

exit 0

## ------------- ##
## Actual tests. ##
## ------------- ##
#AT_START_1
at_fn_group_banner 1 'calendar.at:19' \
  "epoch" "                                          " 1
at_xfail=no
(
  printf "%s\n" "1. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >epoch.sps <<'_ATEOF'
SET MXERR 1000.
SET MXWARN 1000.

SET EPOCH 1900.
DEBUG EVALUATE/YRMODA(0,1,1) = YRMODA(1900,1,1).
DEBUG EVALUATE/YRMODA(1,1,1) = YRMODA(1901,1,1).
DEBUG EVALUATE/YRMODA(12,1,1) = YRMODA(1912,1,1).
DEBUG EVALUATE/YRMODA(70,1,1) = YRMODA(1970,1,1).
DEBUG EVALUATE/YRMODA(87,1,1) = YRMODA(1987,1,1).
DEBUG EVALUATE/YRMODA(99,1,1) = YRMODA(1999,1,1).
DEBUG EVALUATE/YRMODA(100,1,1).
DEBUG EVALUATE/DATE.DMY(1,1,0) = DATE.DMY(1,1,1900).
DEBUG EVALUATE/DATE.DMY(1,1,1) = DATE.DMY(1,1,1901).
DEBUG EVALUATE/DATE.DMY(1,1,12) = DATE.DMY(1,1,1912).
DEBUG EVALUATE/DATE.DMY(1,1,70) = DATE.DMY(1,1,1970).
DEBUG EVALUATE/DATE.DMY(1,1,87) = DATE.DMY(1,1,1987).
DEBUG EVALUATE/DATE.DMY(1,1,99) = DATE.DMY(1,1,1999).
DEBUG EVALUATE/DATE.DMY(1,1,100).

SET EPOCH 1901.
DEBUG EVALUATE/YRMODA(0,1,1) = YRMODA(1900,1,1).
DEBUG EVALUATE/YRMODA(1,1,1) = YRMODA(1901,1,1).
DEBUG EVALUATE/YRMODA(12,1,1) = YRMODA(1912,1,1).
DEBUG EVALUATE/YRMODA(70,1,1) = YRMODA(1970,1,1).
DEBUG EVALUATE/YRMODA(87,1,1) = YRMODA(1987,1,1).
DEBUG EVALUATE/YRMODA(99,1,1) = YRMODA(1999,1,1).
DEBUG EVALUATE/YRMODA(100,1,1).
DEBUG EVALUATE/DATE.DMY(1,1,0) = DATE.DMY(1,1,2000).
DEBUG EVALUATE/DATE.DMY(1,1,1) = DATE.DMY(1,1,1901).
DEBUG EVALUATE/DATE.DMY(1,1,12) = DATE.DMY(1,1,1912).
DEBUG EVALUATE/DATE.DMY(1,1,70) = DATE.DMY(1,1,1970).
DEBUG EVALUATE/DATE.DMY(1,1,87) = DATE.DMY(1,1,1987).
DEBUG EVALUATE/DATE.DMY(1,1,99) = DATE.DMY(1,1,1999).
DEBUG EVALUATE/DATE.DMY(1,1,100).

SET EPOCH 1911.
DEBUG EVALUATE/YRMODA(0,1,1) = YRMODA(1900,1,1).
DEBUG EVALUATE/YRMODA(1,1,1) = YRMODA(1901,1,1).
DEBUG EVALUATE/YRMODA(12,1,1) = YRMODA(1912,1,1).
DEBUG EVALUATE/YRMODA(70,1,1) = YRMODA(1970,1,1).
DEBUG EVALUATE/YRMODA(87,1,1) = YRMODA(1987,1,1).
DEBUG EVALUATE/YRMODA(99,1,1) = YRMODA(1999,1,1).
DEBUG EVALUATE/YRMODA(100,1,1).
DEBUG EVALUATE/DATE.DMY(1,1,0) = DATE.DMY(1,1,2000).
DEBUG EVALUATE/DATE.DMY(1,1,1) = DATE.DMY(1,1,2001).
DEBUG EVALUATE/DATE.DMY(1,1,12) = DATE.DMY(1,1,1912).
DEBUG EVALUATE/DATE.DMY(1,1,70) = DATE.DMY(1,1,1970).
DEBUG EVALUATE/DATE.DMY(1,1,87) = DATE.DMY(1,1,1987).
DEBUG EVALUATE/DATE.DMY(1,1,99) = DATE.DMY(1,1,1999).
DEBUG EVALUATE/DATE.DMY(1,1,100).

SET EPOCH 1912.
DEBUG EVALUATE/YRMODA(0,1,1) = YRMODA(1900,1,1).
DEBUG EVALUATE/YRMODA(1,1,1) = YRMODA(1901,1,1).
DEBUG EVALUATE/YRMODA(12,1,1) = YRMODA(1912,1,1).
DEBUG EVALUATE/YRMODA(70,1,1) = YRMODA(1970,1,1).
DEBUG EVALUATE/YRMODA(87,1,1) = YRMODA(1987,1,1).
DEBUG EVALUATE/YRMODA(99,1,1) = YRMODA(1999,1,1).
DEBUG EVALUATE/YRMODA(100,1,1).
DEBUG EVALUATE/DATE.DMY(1,1,0) = DATE.DMY(1,1,2000).
DEBUG EVALUATE/DATE.DMY(1,1,1) = DATE.DMY(1,1,2001).
DEBUG EVALUATE/DATE.DMY(1,1,12) = DATE.DMY(1,1,1912).
DEBUG EVALUATE/DATE.DMY(1,1,70) = DATE.DMY(1,1,1970).
DEBUG EVALUATE/DATE.DMY(1,1,87) = DATE.DMY(1,1,1987).
DEBUG EVALUATE/DATE.DMY(1,1,99) = DATE.DMY(1,1,1999).
DEBUG EVALUATE/DATE.DMY(1,1,100).

SET EPOCH 2012.
DEBUG EVALUATE/YRMODA(0,1,1) = YRMODA(1900,1,1).
DEBUG EVALUATE/YRMODA(1,1,1) = YRMODA(1901,1,1).
DEBUG EVALUATE/YRMODA(12,1,1) = YRMODA(1912,1,1).
DEBUG EVALUATE/YRMODA(70,1,1) = YRMODA(1970,1,1).
DEBUG EVALUATE/YRMODA(87,1,1) = YRMODA(1987,1,1).
DEBUG EVALUATE/YRMODA(99,1,1) = YRMODA(1999,1,1).
DEBUG EVALUATE/YRMODA(100,1,1).
DEBUG EVALUATE/DATE.DMY(1,1,0) = DATE.DMY(1,1,2100).
DEBUG EVALUATE/DATE.DMY(1,1,1) = DATE.DMY(1,1,2101).
DEBUG EVALUATE/DATE.DMY(1,1,12) = DATE.DMY(1,1,2012).
DEBUG EVALUATE/DATE.DMY(1,1,70) = DATE.DMY(1,1,2070).
DEBUG EVALUATE/DATE.DMY(1,1,87) = DATE.DMY(1,1,2087).
DEBUG EVALUATE/DATE.DMY(1,1,99) = DATE.DMY(1,1,2099).
DEBUG EVALUATE/DATE.DMY(1,1,100).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/calendar.at:105: pspp --testing-mode epoch.sps"
at_fn_check_prepare_trace "calendar.at:105"
( $at_check_trace; pspp --testing-mode epoch.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "YRMODA(0,1,1) = YRMODA(1900,1,1) => true

YRMODA(1,1,1) = YRMODA(1901,1,1) => true

YRMODA(12,1,1) = YRMODA(1912,1,1) => true

YRMODA(70,1,1) = YRMODA(1970,1,1) => true

YRMODA(87,1,1) = YRMODA(1987,1,1) => true

YRMODA(99,1,1) = YRMODA(1999,1,1) => true

epoch.sps:11.16-11.30: error: DEBUG EVALUATE: Invalid arguments to YRMODA
function.
   11 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                ^~~~~~~~~~~~~~~

epoch.sps:11.23-11.25: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   11 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                       ^~~

YRMODA(100,1,1) => sysmis

DATE.DMY(1,1,0) = DATE.DMY(1,1,1900) => true

DATE.DMY(1,1,1) = DATE.DMY(1,1,1901) => true

DATE.DMY(1,1,12) = DATE.DMY(1,1,1912) => true

DATE.DMY(1,1,70) = DATE.DMY(1,1,1970) => true

DATE.DMY(1,1,87) = DATE.DMY(1,1,1987) => true

DATE.DMY(1,1,99) = DATE.DMY(1,1,1999) => true

epoch.sps:18.16-18.32: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
function.
   18 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                ^~~~~~~~~~~~~~~~~

epoch.sps:18.29-18.31: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   18 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                             ^~~

DATE.DMY(1,1,100) => sysmis

YRMODA(0,1,1) = YRMODA(1900,1,1) => true

YRMODA(1,1,1) = YRMODA(1901,1,1) => true

YRMODA(12,1,1) = YRMODA(1912,1,1) => true

YRMODA(70,1,1) = YRMODA(1970,1,1) => true

YRMODA(87,1,1) = YRMODA(1987,1,1) => true

YRMODA(99,1,1) = YRMODA(1999,1,1) => true

epoch.sps:27.16-27.30: error: DEBUG EVALUATE: Invalid arguments to YRMODA
function.
   27 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                ^~~~~~~~~~~~~~~

epoch.sps:27.23-27.25: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   27 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                       ^~~

YRMODA(100,1,1) => sysmis

DATE.DMY(1,1,0) = DATE.DMY(1,1,2000) => true

DATE.DMY(1,1,1) = DATE.DMY(1,1,1901) => true

DATE.DMY(1,1,12) = DATE.DMY(1,1,1912) => true

DATE.DMY(1,1,70) = DATE.DMY(1,1,1970) => true

DATE.DMY(1,1,87) = DATE.DMY(1,1,1987) => true

DATE.DMY(1,1,99) = DATE.DMY(1,1,1999) => true

epoch.sps:34.16-34.32: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
function.
   34 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                ^~~~~~~~~~~~~~~~~

epoch.sps:34.29-34.31: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   34 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                             ^~~

DATE.DMY(1,1,100) => sysmis

YRMODA(0,1,1) = YRMODA(1900,1,1) => true

YRMODA(1,1,1) = YRMODA(1901,1,1) => true

YRMODA(12,1,1) = YRMODA(1912,1,1) => true

YRMODA(70,1,1) = YRMODA(1970,1,1) => true

YRMODA(87,1,1) = YRMODA(1987,1,1) => true

YRMODA(99,1,1) = YRMODA(1999,1,1) => true

epoch.sps:43.16-43.30: error: DEBUG EVALUATE: Invalid arguments to YRMODA
function.
   43 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                ^~~~~~~~~~~~~~~

epoch.sps:43.23-43.25: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   43 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                       ^~~

YRMODA(100,1,1) => sysmis

DATE.DMY(1,1,0) = DATE.DMY(1,1,2000) => true

DATE.DMY(1,1,1) = DATE.DMY(1,1,2001) => true

DATE.DMY(1,1,12) = DATE.DMY(1,1,1912) => true

DATE.DMY(1,1,70) = DATE.DMY(1,1,1970) => true

DATE.DMY(1,1,87) = DATE.DMY(1,1,1987) => true

DATE.DMY(1,1,99) = DATE.DMY(1,1,1999) => true

epoch.sps:50.16-50.32: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
function.
   50 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                ^~~~~~~~~~~~~~~~~

epoch.sps:50.29-50.31: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   50 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                             ^~~

DATE.DMY(1,1,100) => sysmis

YRMODA(0,1,1) = YRMODA(1900,1,1) => true

YRMODA(1,1,1) = YRMODA(1901,1,1) => true

YRMODA(12,1,1) = YRMODA(1912,1,1) => true

YRMODA(70,1,1) = YRMODA(1970,1,1) => true

YRMODA(87,1,1) = YRMODA(1987,1,1) => true

YRMODA(99,1,1) = YRMODA(1999,1,1) => true

epoch.sps:59.16-59.30: error: DEBUG EVALUATE: Invalid arguments to YRMODA
function.
   59 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                ^~~~~~~~~~~~~~~

epoch.sps:59.23-59.25: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   59 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                       ^~~

YRMODA(100,1,1) => sysmis

DATE.DMY(1,1,0) = DATE.DMY(1,1,2000) => true

DATE.DMY(1,1,1) = DATE.DMY(1,1,2001) => true

DATE.DMY(1,1,12) = DATE.DMY(1,1,1912) => true

DATE.DMY(1,1,70) = DATE.DMY(1,1,1970) => true

DATE.DMY(1,1,87) = DATE.DMY(1,1,1987) => true

DATE.DMY(1,1,99) = DATE.DMY(1,1,1999) => true

epoch.sps:66.16-66.32: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
function.
   66 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                ^~~~~~~~~~~~~~~~~

epoch.sps:66.29-66.31: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   66 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                             ^~~

DATE.DMY(1,1,100) => sysmis

YRMODA(0,1,1) = YRMODA(1900,1,1) => true

YRMODA(1,1,1) = YRMODA(1901,1,1) => true

YRMODA(12,1,1) = YRMODA(1912,1,1) => true

YRMODA(70,1,1) = YRMODA(1970,1,1) => true

YRMODA(87,1,1) = YRMODA(1987,1,1) => true

YRMODA(99,1,1) = YRMODA(1999,1,1) => true

epoch.sps:75.16-75.30: error: DEBUG EVALUATE: Invalid arguments to YRMODA
function.
   75 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                ^~~~~~~~~~~~~~~

epoch.sps:75.23-75.25: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   75 | DEBUG EVALUATE/YRMODA(100,1,1).
      |                       ^~~

YRMODA(100,1,1) => sysmis

DATE.DMY(1,1,0) = DATE.DMY(1,1,2100) => true

DATE.DMY(1,1,1) = DATE.DMY(1,1,2101) => true

DATE.DMY(1,1,12) = DATE.DMY(1,1,2012) => true

DATE.DMY(1,1,70) = DATE.DMY(1,1,2070) => true

DATE.DMY(1,1,87) = DATE.DMY(1,1,2087) => true

DATE.DMY(1,1,99) = DATE.DMY(1,1,2099) => true

epoch.sps:82.16-82.32: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
function.
   82 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                ^~~~~~~~~~~~~~~~~

epoch.sps:82.29-82.31: note: DEBUG EVALUATE: Date 0100-1-1 is before the
earliest supported date 1582-10-15.
   82 | DEBUG EVALUATE/DATE.DMY(1,1,100).
      |                             ^~~

DATE.DMY(1,1,100) => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/calendar.at:105"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1
#AT_START_2
at_fn_group_banner 2 'data-in.at:19' \
  "numeric input formats" "                          " 2
at_xfail=no
(
  printf "%s\n" "2. $at_setup_line: testing $at_desc ..."
  $at_traceon


data_in_prng
cat >num-in.py <<'_ATEOF'
#! /usr/bin/python3

import math
import re

# 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.
def my_rand(modulus):
    global seed
    a = 16807
    m = 2147483647
    tmp = a * seed
    seed = tmp - m * (tmp // m)
    return seed % modulus

# Test the random number generator for reproducibility,
# then reset the seed
seed = 1
for i in range(10000):
    my_rand(1)
assert seed == 1043618065
seed = 1

def permute_zeros(fraction, exponent):
    frac_rep = "%f" % fraction
    leading_zeros = len(frac_rep) - len(frac_rep.lstrip('0'))
    trailing_zeros = len(re.search(r'(\.?0*)$', frac_rep).group(1))
    for i in range(leading_zeros + 1):
        for j in range(trailing_zeros + 1):
            trimmed = frac_rep[i:len(frac_rep) - j]
            if trimmed == '.' or not trimmed:
                continue

            permute_commas(trimmed, exponent)

def permute_commas(frac_rep, exponent):
    permute_dot_comma(frac_rep, exponent)
    pos = my_rand(len(frac_rep) + 1)
    frac_rep = "%s,%s" % (frac_rep[:pos], frac_rep[pos:])
    permute_dot_comma(frac_rep, exponent)

def permute_dot_comma(frac_rep, exponent):
    permute_exponent_syntax(frac_rep, exponent)
    if ',' in frac_rep or '.' in frac_rep:
        frac_rep = frac_rep.translate(str.maketrans('.,', ',.'))
        permute_exponent_syntax(frac_rep, exponent)

def permute_exponent_syntax(frac_rep, exponent):
    if exponent == 0:
        e = pick(('', 'e0', 'e-0', 'e+0', '-0', '+0'))
    elif exponent > 0:
        e = pick(("e%s" % exponent, "e+%s" % exponent, "+%s" % exponent))
    else:
        abs_exp = -exponent
        e = pick(("e-%s" % abs_exp, "e-%s" % abs_exp, "-%s" % abs_exp))
    permute_sign_and_affix(frac_rep, e)

def permute_sign_and_affix(frac_rep, exp_rep):
    for prefix in (pick(('', '$')),
                   pick(('-', '-$', '$-', '$-$')),
                   pick(('+', '+$', '$+', '$+$'))):
        for suffix in ('', '%'):
            permute_spaces(prefix + frac_rep + exp_rep + suffix)

def permute_spaces(s):
    fields = re.sub(r'([-+\$e%])', r' \1 ', s).split()
    print(''.join(fields))

    if len(fields) > 1:
        pos = my_rand(len(fields) - 1) + 1
        print("%s %s" % (''.join(fields[:pos]),
                         ''.join(fields[pos:])))

def pick(choices):
    return choices[my_rand(len(choices))]

for number in (0, 1, .5, .015625, 123):
    base_exp = math.floor(math.log10(number)) if number else 0
    for offset in range(-3, 4):
        exponent = base_exp + offset
        fraction = number / 10**offset

        permute_zeros(fraction, exponent)

_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:113: \$PYTHON3 num-in.py > num-in.data"
at_fn_check_prepare_dynamic "$PYTHON3 num-in.py > num-in.data" "data-in.at:113"
( $at_check_trace; $PYTHON3 num-in.py > num-in.data
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:113"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >num-in.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:128: pspp -O format=csv num-in.sps"
at_fn_check_prepare_trace "data-in.at:128"
( $at_check_trace; pspp -O format=csv num-in.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:129: gzip -cd < \$top_srcdir/tests/data/num-in.expected.gz > expout"
at_fn_check_prepare_dynamic "gzip -cd < $top_srcdir/tests/data/num-in.expected.gz > expout" "data-in.at:129"
( $at_check_trace; gzip -cd < $top_srcdir/tests/data/num-in.expected.gz > expout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:129"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:130: cat num-in.out"
at_fn_check_prepare_trace "data-in.at:130"
( $at_check_trace; cat num-in.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:130"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_2
#AT_START_3
at_fn_group_banner 3 'data-in.at:135' \
  "reading big numbers" "                            " 2
at_xfail=no
(
  printf "%s\n" "3. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >bignum.txt <<'_ATEOF'
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
_ATEOF

cat >bignum.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:212: pspp -o pspp.csv bignum.sps"
at_fn_check_prepare_trace "data-in.at:212"
( $at_check_trace; pspp -o pspp.csv bignum.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:212"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_3
#AT_START_4
at_fn_group_banner 4 'data-in.at:215' \
  "DATE input format" "                              " 2
at_xfail=no
(
  printf "%s\n" "4. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:217: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py date d-m-y"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py date d-m-y" "data-in.at:217"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py date d-m-y
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:217"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:218" >"$at_check_line_file"
(test ! -s date.sps || test ! -s date.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:218"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:219: pspp -O format=csv date.sps"
at_fn_check_prepare_trace "data-in.at:219"
( $at_check_trace; pspp -O format=csv date.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:219"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:220: cat date.output"
at_fn_check_prepare_trace "data-in.at:220"
( $at_check_trace; cat date.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:220"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_4
#AT_START_5
at_fn_group_banner 5 'data-in.at:223' \
  "ADATE input format" "                             " 2
at_xfail=no
(
  printf "%s\n" "5. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:225: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py adate m-d-y"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py adate m-d-y" "data-in.at:225"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py adate m-d-y
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:225"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:226" >"$at_check_line_file"
(test ! -s adate.sps || test ! -s adate.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:226"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:227: pspp -O format=csv adate.sps"
at_fn_check_prepare_trace "data-in.at:227"
( $at_check_trace; pspp -O format=csv adate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:227"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:228: cat adate.output"
at_fn_check_prepare_trace "data-in.at:228"
( $at_check_trace; cat adate.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:228"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_5
#AT_START_6
at_fn_group_banner 6 'data-in.at:231' \
  "EDATE input format" "                             " 2
at_xfail=no
(
  printf "%s\n" "6. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:233: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py edate d-m-y"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py edate d-m-y" "data-in.at:233"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py edate d-m-y
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:233"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:234" >"$at_check_line_file"
(test ! -s edate.sps || test ! -s edate.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:234"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:235: pspp -O format=csv edate.sps"
at_fn_check_prepare_trace "data-in.at:235"
( $at_check_trace; pspp -O format=csv edate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:235"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:236: cat edate.output"
at_fn_check_prepare_trace "data-in.at:236"
( $at_check_trace; cat edate.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:236"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_6
#AT_START_7
at_fn_group_banner 7 'data-in.at:239' \
  "JDATE input format" "                             " 2
at_xfail=no
(
  printf "%s\n" "7. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:241: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py jdate j"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py jdate j" "data-in.at:241"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py jdate j
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:241"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:242" >"$at_check_line_file"
(test ! -s jdate.sps || test ! -s jdate.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:242"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:243: pspp -O format=csv jdate.sps"
at_fn_check_prepare_trace "data-in.at:243"
( $at_check_trace; pspp -O format=csv jdate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:243"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:244: cat jdate.output"
at_fn_check_prepare_trace "data-in.at:244"
( $at_check_trace; cat jdate.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:244"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_7
#AT_START_8
at_fn_group_banner 8 'data-in.at:247' \
  "SDATE input format" "                             " 2
at_xfail=no
(
  printf "%s\n" "8. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:249: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py sdate y-m-d"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py sdate y-m-d" "data-in.at:249"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py sdate y-m-d
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:249"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:250" >"$at_check_line_file"
(test ! -s sdate.sps || test ! -s sdate.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:250"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:251: pspp -O format=csv sdate.sps"
at_fn_check_prepare_trace "data-in.at:251"
( $at_check_trace; pspp -O format=csv sdate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:251"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:252: cat sdate.output"
at_fn_check_prepare_trace "data-in.at:252"
( $at_check_trace; cat sdate.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:252"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_8
#AT_START_9
at_fn_group_banner 9 'data-in.at:255' \
  "QYR input format" "                               " 2
at_xfail=no
(
  printf "%s\n" "9. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:257: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py qyr qQy"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py qyr qQy" "data-in.at:257"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py qyr qQy
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:257"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:258" >"$at_check_line_file"
(test ! -s qyr.sps || test ! -s qyr.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:258"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:259: pspp -O format=csv qyr.sps"
at_fn_check_prepare_trace "data-in.at:259"
( $at_check_trace; pspp -O format=csv qyr.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:259"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:260: cat qyr.output"
at_fn_check_prepare_trace "data-in.at:260"
( $at_check_trace; cat qyr.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:260"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_9
#AT_START_10
at_fn_group_banner 10 'data-in.at:263' \
  "MOYR input format" "                              " 2
at_xfail=no
(
  printf "%s\n" "10. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:265: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py moyr m-y"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py moyr m-y" "data-in.at:265"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py moyr m-y
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:265"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:266" >"$at_check_line_file"
(test ! -s moyr.sps || test ! -s moyr.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:266"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:267: pspp -O format=csv moyr.sps"
at_fn_check_prepare_trace "data-in.at:267"
( $at_check_trace; pspp -O format=csv moyr.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:267"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:268: cat moyr.output"
at_fn_check_prepare_trace "data-in.at:268"
( $at_check_trace; cat moyr.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_10
#AT_START_11
at_fn_group_banner 11 'data-in.at:271' \
  "WKYR input format" "                              " 2
at_xfail=no
(
  printf "%s\n" "11. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:273: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py wkyr wWy"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py wkyr wWy" "data-in.at:273"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py wkyr wWy
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:273"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:274" >"$at_check_line_file"
(test ! -s wkyr.sps || test ! -s wkyr.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:274"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:275: pspp -O format=csv wkyr.sps"
at_fn_check_prepare_trace "data-in.at:275"
( $at_check_trace; pspp -O format=csv wkyr.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:275"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:276: cat wkyr.output"
at_fn_check_prepare_trace "data-in.at:276"
( $at_check_trace; cat wkyr.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:276"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_11
#AT_START_12
at_fn_group_banner 12 'data-in.at:279' \
  "DATETIME input format" "                          " 2
at_xfail=no
(
  printf "%s\n" "12. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:281: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py datetime \"d-m-y +H:M\" \"d-m-y +H:M:S\""
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py datetime \"d-m-y +H:M\" \"d-m-y +H:M:S\"" "data-in.at:281"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py datetime "d-m-y +H:M" "d-m-y +H:M:S"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:281"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:282" >"$at_check_line_file"
(test ! -s datetime.sps || test ! -s datetime.input || \
            test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:282"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:284: pspp -O format=csv datetime.sps"
at_fn_check_prepare_trace "data-in.at:284"
( $at_check_trace; pspp -O format=csv datetime.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:284"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:285: cat datetime.output"
at_fn_check_prepare_trace "data-in.at:285"
( $at_check_trace; cat datetime.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:285"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_12
#AT_START_13
at_fn_group_banner 13 'data-in.at:288' \
  "YMDHMS input format" "                            " 2
at_xfail=no
(
  printf "%s\n" "13. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:290: \$PYTHON3 \$top_srcdir/tests/data/test-date-input.py ymdhms \"y-m-d +H:M\" \"y-m-d +H:M:S\""
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-date-input.py ymdhms \"y-m-d +H:M\" \"y-m-d +H:M:S\"" "data-in.at:290"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-date-input.py ymdhms "y-m-d +H:M" "y-m-d +H:M:S"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:290"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:291" >"$at_check_line_file"
(test ! -s ymdhms.sps || test ! -s ymdhms.input || \
            test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:291"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:293: pspp -O format=csv ymdhms.sps"
at_fn_check_prepare_trace "data-in.at:293"
( $at_check_trace; pspp -O format=csv ymdhms.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:293"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:294: cat ymdhms.output"
at_fn_check_prepare_trace "data-in.at:294"
( $at_check_trace; cat ymdhms.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:294"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_13
#AT_START_14
at_fn_group_banner 14 'data-in.at:297' \
  "MTIME input format" "                             " 2
at_xfail=no
(
  printf "%s\n" "14. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:299: \$PYTHON3 \$top_srcdir/tests/data/test-time-input.py mtime +M:S"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-time-input.py mtime +M:S" "data-in.at:299"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-time-input.py mtime +M:S
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:299"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:300" >"$at_check_line_file"
(test ! -s mtime.sps || test ! -s mtime.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:300"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:301: pspp -O format=csv mtime.sps"
at_fn_check_prepare_trace "data-in.at:301"
( $at_check_trace; pspp -O format=csv mtime.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:301"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:302: cat mtime.output"
at_fn_check_prepare_trace "data-in.at:302"
( $at_check_trace; cat mtime.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:302"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_14
#AT_START_15
at_fn_group_banner 15 'data-in.at:305' \
  "TIME input format" "                              " 2
at_xfail=no
(
  printf "%s\n" "15. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:307: \$PYTHON3 \$top_srcdir/tests/data/test-time-input.py time +H:M +H:M:S"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-time-input.py time +H:M +H:M:S" "data-in.at:307"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-time-input.py time +H:M +H:M:S
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:307"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:308" >"$at_check_line_file"
(test ! -s time.sps || test ! -s time.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:308"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:309: pspp -O format=csv time.sps"
at_fn_check_prepare_trace "data-in.at:309"
( $at_check_trace; pspp -O format=csv time.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:309"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:310: cat time.output"
at_fn_check_prepare_trace "data-in.at:310"
( $at_check_trace; cat time.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:310"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_15
#AT_START_16
at_fn_group_banner 16 'data-in.at:313' \
  "DTIME input format" "                             " 2
at_xfail=no
(
  printf "%s\n" "16. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:315: \$PYTHON3 \$top_srcdir/tests/data/test-time-input.py dtime  '+D H:M' '+D H:M:S'"
at_fn_check_prepare_dynamic "$PYTHON3 $top_srcdir/tests/data/test-time-input.py dtime  '+D H:M' '+D H:M:S'" "data-in.at:315"
( $at_check_trace; $PYTHON3 $top_srcdir/tests/data/test-time-input.py dtime  '+D H:M' '+D H:M:S'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:315"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "data-in.at:316" >"$at_check_line_file"
(test ! -s dtime.sps || test ! -s dtime.input || test ! -s expout) \
  && at_fn_check_skip 99 "$at_srcdir/data-in.at:316"
{ set +x
printf "%s\n" "$at_srcdir/data-in.at:317: pspp -O format=csv dtime.sps"
at_fn_check_prepare_trace "data-in.at:317"
( $at_check_trace; pspp -O format=csv dtime.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:317"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:318: cat dtime.output"
at_fn_check_prepare_trace "data-in.at:318"
( $at_check_trace; cat dtime.output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:318"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_16
#AT_START_17
at_fn_group_banner 17 'data-in.at:332' \
  "binary and hexadecimal input (IB, PIB, and PIBHEX formats)" "" 2
at_xfail=no
(
  printf "%s\n" "17. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:334: \$PYTHON3 -c '
import struct
import sys
for i in range(65536):
    sys.stdout.buffer.write(struct.pack(\">H\", i))' > binhex-in.data"
at_fn_check_prepare_notrace 'an embedded newline' "data-in.at:334"
( $at_check_trace; $PYTHON3 -c '
import struct
import sys
for i in range(65536):
    sys.stdout.buffer.write(struct.pack(">H", i))' > binhex-in.data
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:334"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:339: wc -c < binhex-in.data | sed 's/[ 	]//g'"
at_fn_check_prepare_notrace 'a shell pipeline' "data-in.at:339"
( $at_check_trace; wc -c < binhex-in.data | sed 's/[ 	]//g'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "131072
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:339"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >binhex-in.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:352: gzip -cd < \$top_srcdir/tests/data/binhex-in.expected.cmp.gz | \\
            number_lines_in_hex > expout"
at_fn_check_prepare_notrace 'an embedded newline' "data-in.at:352"
( $at_check_trace; gzip -cd < $top_srcdir/tests/data/binhex-in.expected.cmp.gz | \
            number_lines_in_hex > expout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:352"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:354: pspp -O format=csv binhex-in.sps"
at_fn_check_prepare_trace "data-in.at:354"
( $at_check_trace; pspp -O format=csv binhex-in.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:354"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:355: cat binhex-in.out"
at_fn_check_prepare_trace "data-in.at:355"
( $at_check_trace; cat binhex-in.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:355"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_17
#AT_START_18
at_fn_group_banner 18 'data-in.at:358' \
  "BCD input (P and PK formats)" "                   " 2
at_xfail=no
(
  printf "%s\n" "18. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:360: \$PYTHON3 -c '
import struct
import sys
for i in range(65536):
    sys.stdout.buffer.write(struct.pack(\">H\", i))' > bcd-in.data"
at_fn_check_prepare_notrace 'an embedded newline' "data-in.at:360"
( $at_check_trace; $PYTHON3 -c '
import struct
import sys
for i in range(65536):
    sys.stdout.buffer.write(struct.pack(">H", i))' > bcd-in.data
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:360"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:365: wc -c < bcd-in.data | sed 's/[ 	]//g'"
at_fn_check_prepare_notrace 'a shell pipeline' "data-in.at:365"
( $at_check_trace; wc -c < bcd-in.data | sed 's/[ 	]//g'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "131072
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:365"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >bcd-in.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:377: gzip -cd < \$top_srcdir/tests/data/bcd-in.expected.cmp.gz | \\
            number_lines_in_hex > expout"
at_fn_check_prepare_notrace 'an embedded newline' "data-in.at:377"
( $at_check_trace; gzip -cd < $top_srcdir/tests/data/bcd-in.expected.cmp.gz | \
            number_lines_in_hex > expout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:377"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:379: pspp -O format=csv bcd-in.sps"
at_fn_check_prepare_trace "data-in.at:379"
( $at_check_trace; pspp -O format=csv bcd-in.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:379"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:380: cat bcd-in.out"
at_fn_check_prepare_trace "data-in.at:380"
( $at_check_trace; cat bcd-in.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_18
#AT_START_19
at_fn_group_banner 19 'data-in.at:383' \
  "legacy input (N and Z formats)" "                 " 2
at_xfail=no
(
  printf "%s\n" "19. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/data-in.at:385: \$PYTHON3 -c '
import struct
import sys
for i in range(65536):
    sys.stdout.buffer.write(struct.pack(\">H\", i))' > legacy-in.data"
at_fn_check_prepare_notrace 'an embedded newline' "data-in.at:385"
( $at_check_trace; $PYTHON3 -c '
import struct
import sys
for i in range(65536):
    sys.stdout.buffer.write(struct.pack(">H", i))' > legacy-in.data
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:385"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:390: wc -c < legacy-in.data | sed 's/[ 	]//g'"
at_fn_check_prepare_notrace 'a shell pipeline' "data-in.at:390"
( $at_check_trace; wc -c < legacy-in.data | sed 's/[ 	]//g'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "131072
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:390"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >legacy-in.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:402: gzip -cd < \$top_srcdir/tests/data/legacy-in.expected.cmp.gz | \\
            number_lines_in_hex > expout"
at_fn_check_prepare_notrace 'an embedded newline' "data-in.at:402"
( $at_check_trace; gzip -cd < $top_srcdir/tests/data/legacy-in.expected.cmp.gz | \
            number_lines_in_hex > expout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:402"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:404: pspp -O format=csv legacy-in.sps"
at_fn_check_prepare_trace "data-in.at:404"
( $at_check_trace; pspp -O format=csv legacy-in.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:404"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:405: cat legacy-in.out"
at_fn_check_prepare_trace "data-in.at:405"
( $at_check_trace; cat legacy-in.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:405"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_19
#AT_START_20
at_fn_group_banner 20 'data-in.at:408' \
  "WKDAY input format" "                             " 2
at_xfail=no
(
  printf "%s\n" "20. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >wkday.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:435: pspp -O format=csv wkday.sps"
at_fn_check_prepare_trace "data-in.at:435"
( $at_check_trace; pspp -O format=csv wkday.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "wkday.sps:20.1-20.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-20.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-20.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-20.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-20.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-20.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-20.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-20.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-20.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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:435"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:454: cat wkday.out"
at_fn_check_prepare_trace "data-in.at:454"
( $at_check_trace; cat wkday.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  .  .  .  .  .  .  .  .  . 
  .  .  .  .  .  .  .  .  . 
 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 
  .  .  .  .  .  .  .  .  . 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:454"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_20
#AT_START_21
at_fn_group_banner 21 'data-in.at:468' \
  "MONTH input format" "                             " 2
at_xfail=no
(
  printf "%s\n" "21. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >month.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:530: pspp -O format=csv month.sps"
at_fn_check_prepare_trace "data-in.at:530"
( $at_check_trace; pspp -O format=csv month.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "month.sps:15.1-15.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-15.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-15.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-15.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-15.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-15.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-15.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-26.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-26.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-26.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-26.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-26.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-26.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-26.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-26.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-39.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-39.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-39.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-39.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-39.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-39.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-39.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-39.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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:530"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-in.at:577: cat month.out"
at_fn_check_prepare_trace "data-in.at:577"
( $at_check_trace; cat month.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   .   .   .   .   .   .   .   . 
   .   .   .   .   .   .   .   . 
 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 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-in.at:577"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_21
#AT_START_22
at_fn_group_banner 22 'data-out.at:19' \
  "numeric format output" "                          " 3
at_xfail=no
(
  printf "%s\n" "22. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >num-out.py <<'_ATEOF'
print("""\
SET CCA=',,,'.
SET CCB='-,[[[,]]],-'.
SET CCC='((,[,],))'.
SET CCD=',XXX,,-'.
SET CCE=',,YYY,-'.
INPUT PROGRAM.
STRING EXPR(A16).""")

values = """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""".split()
for value in values:
    print("""COMPUTE NUM=%s.
COMPUTE EXPR='%s'.
END CASE.""" % (value, value))

print("""\
END FILE.
END INPUT PROGRAM.""")

print("PRINT OUTFILE='output.txt'/EXPR.")
for format in 'F COMMA DOT DOLLAR PCT E CCA CCB CCC CCD CCE N Z'.split():
    for d in range(17):
        if format != 'E':
            min_w = d + 1
            if format in ('DOLLAR', 'PCT'):
                min_w += 1
            if min_w == 1 and format.startswith('CC'):
                min_w = 2
        else:
            min_w = d + 7

        for w in range(min_w, 41):
            f = "%s%s.%s" % (format, w, d)
            print("PRINT OUTFILE='output.txt'/'%s: \"' NUM(%s) '\"'." % (f, f))
    print("PRINT SPACE OUTFILE='output.txt'.")
print("EXECUTE.")
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:65: \$PYTHON3 num-out.py > num-out.sps"
at_fn_check_prepare_dynamic "$PYTHON3 num-out.py > num-out.sps" "data-out.at:65"
( $at_check_trace; $PYTHON3 num-out.py > num-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:66: pspp -O format=csv num-out.sps"
at_fn_check_prepare_trace "data-out.at:66"
( $at_check_trace; pspp -O format=csv num-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:67: inexactify < output.txt > output.inexact"
at_fn_check_prepare_trace "data-out.at:67"
( $at_check_trace; inexactify < output.txt > output.inexact
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:67"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:68: gzip -cd < \$top_srcdir/tests/data/num-out.expected.cmp.gz > expout.cmp"
at_fn_check_prepare_dynamic "gzip -cd < $top_srcdir/tests/data/num-out.expected.cmp.gz > expout.cmp" "data-out.at:68"
( $at_check_trace; gzip -cd < $top_srcdir/tests/data/num-out.expected.cmp.gz > expout.cmp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:68"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >num-out-decmp.py <<'_ATEOF'
#! /usr/bin/python3

import re
import sys

state = []
for line in sys.stdin:
    line = line.rstrip('\r\n')
    if line.startswith('*'):
        n = int(line[1:])
        for i in range(n):
            state[1] = "%s" % (int(state[1]) + 1)
            state[3] = ' ' + state[3]
            print(' ' + ''.join(state))
    elif line.startswith('$'):
        for c in line[1:]:
            state[1] = "%s" % (int(state[1]) + 1)
            state[4] += c
            print(' ' + ''.join(state))
    elif line.startswith('^'):
        for c in line[1:]:
            state[1] = "%s" % (int(state[1]) + 1)
            state[4] = c + state[4]
            print(' ' + ''.join(state))
    else:
        m = re.match(r'^([A-Z]+)(\d+)([^"]+")( *)([^%"]*)(%?")$', line)
        if m:
            state = list(m.groups())
        print(' ' + line)
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:100: \$PYTHON3 num-out-decmp.py < expout.cmp > expout.exact"
at_fn_check_prepare_dynamic "$PYTHON3 num-out-decmp.py < expout.cmp > expout.exact" "data-out.at:100"
( $at_check_trace; $PYTHON3 num-out-decmp.py < expout.cmp > expout.exact
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:100"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:101: inexactify < expout.exact > expout.inexact"
at_fn_check_prepare_trace "data-out.at:101"
( $at_check_trace; inexactify < expout.exact > expout.inexact
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:101"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >num-out-compare.py <<'_ATEOF'
#! /usr/bin/python3

import getopt
import itertools
import re
import sys

def usage():
    print("""\
%s: compare expected and actual numeric formatting output
usage: %s [OPTION...] EXPECTED ACTUAL
where EXPECTED is the file containing expected output
and ACTUAL is the file containing actual output.
Options:
  -e, --exact: Require numbers to be exactly equal.
               (By default, small differences are permitted.)
  -s, --spss: Ignore most SPSS formatting bugs in EXPECTED.
              (A few differences are not compensated)
  -v, --verbose: Use once to summarize errors and differences.
                 Use twice for details of differences."""
          % (sys.argv[0], sys.argv[0]))
    sys.exit(0)

exact = 0
spss = 0
verbose = 0

options, args = getopt.gnu_getopt(sys.argv[1:], 'esvh',
                                  ['exact', 'spss', 'verbose', 'help'])
for key, value in options:
    if key in ['-e', '--exact']:
        exact = True
    elif key in ['-s', '--spss']:
        spss = True
    elif key in ['-v', '--verbose']:
        verbose += 1
    elif key in ['-h', '--help']:
        usage()
    else:
        assert False
if len(args) != 2:
    sys.stderr.write("%s\n" % len(args))
    sys.stderr.write("exactly two nonoption arguments are required "
                     "(use --help for help)\n")
    sys.exit(1)

def increment(n):
    """Returns 'n' incremented by one unit in its final decimal place.
    """

    last_digit = None
    for i, c in enumerate(n):
        if c == 'E':
            break
        if c.isdigit():
            last_digit = i
    if last_digit is None:
        return n

    for i in range(last_digit, -1, -1):
        c = n[i]
        if c == '9':
            n[i] = '0'
        elif c in '012345678':
            n[i] = chr(ord(c) + 1)
            break
    if i < 0:
        n = '1' + n
    return n

n_exact = 0
bad_round = 0
approximate = 0
spss_wtf1 = 0
spss_wtf2 = 0
lost_sign = 0
errors = 0
line_number = 0
for a, b in itertools.zip_longest(open(args[0], 'r'),
                                  open(args[1], 'r')):
    line_number += 1
    if not b:
        print("Extra lines in %s" % args[0])
        errors += 1
        break
    if not a:
        print("Extra lines in %s" % args[1])
        errors += 1
        break

    a = a.rstrip('\r\n')
    b = b.rstrip('\r\n')
    if a == b:
        n_exact += 1
        if not a.isspace() and ':' not in a:
            expr = a.strip()
    else:
        fmt, a_out = re.match(r'^ (.*): "(.*)"$', a).groups()
        b_fmt, b_out = re.match(r'^ (.*): "(.*)"$', b).groups()
        assert fmt == b_fmt
        assert a_out != b_out

        if not exact:
            if increment(a_out) == b_out or increment(b_out) == a_out:
                approximate += 1
                continue
        if spss:
            if re.search(r'0.*0', a_out) and not re.search(r'[1-9]', a_out):
                bad_round += 1
                continue
            elif '*' in a_out and len(a_out.strip('*')):
                spss_wtf1 += 1
                continue
            elif (expr.startswith('-')
                  and re.fullmatch(r'\*+', a_out)
                  and re.match(r'-\d(\.\d*#*)?E[-+]\d\d\d', b_out)
                  and fmt.startswith('E')):
                spss_wtf2 += 1
                continue
            elif (expr.startswith('-')
                  and (('-' not in a_out
                        and re.search(r'[1-9]', a_out)
                        and '-' in b_out)
                       or (a_out.isdigit()
                           and re.fullmatch(r'\*+', b_out)))):
                lost_sign += 1
                continue

        if verbose > 1:
            print('%s: %s in %s: expected "%s", got "%s'
                  % (line_number, expr, fmt, a_out, b_out))
        errors += 1
if verbose:
    print("%s exact matches" % n_exact)
    print("%s errors" % errors)
    if not exact:
        print('%s approximate matches' %approximate)
    if spss:
        print("%s bad rounds" % bad_round)
        print("%s SPSS WTF 1" % spss_wtf1)
        print("%s SPSS WTF 2" % spss_wtf2)
        print("%s lost signs" % lost_sign)
sys.exit(1 if errors else 0)
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:247: \$PYTHON3 num-out-compare.py \$PSPP_NUM_OUT_COMPARE_FLAGS expout.inexact output.inexact"
at_fn_check_prepare_dynamic "$PYTHON3 num-out-compare.py $PSPP_NUM_OUT_COMPARE_FLAGS expout.inexact output.inexact" "data-out.at:247"
( $at_check_trace; $PYTHON3 num-out-compare.py $PSPP_NUM_OUT_COMPARE_FLAGS expout.inexact output.inexact
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:247"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_22
#AT_START_23
at_fn_group_banner 23 'data-out.at:250' \
  "leading zeros in numeric output" "                " 3
at_xfail=no
(
  printf "%s\n" "23. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data-out.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x.
BEGIN DATA.
0.5
0.99
0.01
0
-0
-0.5
-0.99
-0.01
END DATA.

PRINT/x (F5.2) x (F5.1).
EXECUTE.

SET LEADZERO=ON.
PRINT/x (F5.2) x (F5.1).
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:272: pspp -O format=csv data-out.sps"
at_fn_check_prepare_trace "data-out.at:272"
( $at_check_trace; pspp -O format=csv data-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" ".50   .5
.99  1.0
.01   .0
.00   .0
.00   .0
-.50  -.5
-.99 -1.0
-.01   .0

0.50  0.5
0.99  1.0
0.01  0.0
0.00  0.0
0.00  0.0
-0.50 -0.5
-0.99 -1.0
-0.01  0.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:272"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_23
#AT_START_24
at_fn_group_banner 24 'data-out.at:293' \
  "non-ASCII custom currency formats" "              " 3
at_xfail=no
(
  printf "%s\n" "24. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data-out.sps <<'_ATEOF'
SET CCA='«,¥,€,»'.
SHOW CCA.
DATA LIST LIST NOTABLE/x.
PRINT/x (F8.2) x (CCA10.2).
EXECUTE.
BEGIN DATA.
1
-1
1.5
-1.5
.75
1.5e10
-1.5e10
END DATA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:311: pspp -O format=csv data-out.sps"
at_fn_check_prepare_trace "data-out.at:311"
( $at_check_trace; pspp -O format=csv data-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Settings
CCA,\"«,¥,€,»\"

1.00   ¥1.00€ 

-1.00  «¥1.00€»

1.50   ¥1.50€ 

-1.50  «¥1.50€»

.75    ¥.75€ 

1.5E+010 ¥2E+010€ 

-2E+010«¥2E+010€»
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:311"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_24
#AT_START_25
at_fn_group_banner 25 'data-out.at:331' \
  "binary and hexadecimal output" "                  " 3
at_xfail=no
(
  printf "%s\n" "25. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >binhex-out.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:445: pspp -O format=csv binhex-out.sps"
at_fn_check_prepare_trace "data-out.at:445"
( $at_check_trace; pspp -O format=csv binhex-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:445"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:446: gzip -cd < \$top_srcdir/tests/data/binhex-out.expected.gz > expout"
at_fn_check_prepare_dynamic "gzip -cd < $top_srcdir/tests/data/binhex-out.expected.gz > expout" "data-out.at:446"
( $at_check_trace; gzip -cd < $top_srcdir/tests/data/binhex-out.expected.gz > expout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:446"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:447: cat binhex.out"
at_fn_check_prepare_trace "data-out.at:447"
( $at_check_trace; cat binhex.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:447"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_25
#AT_START_26
at_fn_group_banner 26 'data-out.at:450' \
  "output valid dates" "                             " 3
at_xfail=no
(
  printf "%s\n" "26. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >date-out.sps <<'_ATEOF'
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'/x(date9) ' | ' x(date11).
print outfile='adate.out'/x(adate8) ' | ' x(adate10).
print outfile='edate.out'/x(edate8) ' | ' x(edate10).
print outfile='jdate.out'/x(jdate5) ' | ' x(jdate7).
print outfile='sdate.out'/x(sdate8) ' | ' x(sdate10).
print outfile='qyr.out'/x(qyr6) ' | ' x(qyr8).
print outfile='moyr.out'/x(moyr6) ' | ' x(moyr8).
print outfile='wkyr.out'/x(wkyr8) ' | ' x(wkyr10).
print outfile='datetime17.out'/x(datetime17).
print outfile='datetime18.out'/x(datetime18).
print outfile='datetime19.out'/x(datetime19).
print outfile='datetime20.out'/x(datetime20).
print outfile='datetime21.out'/x(datetime21).
print outfile='datetime22.out'/x(datetime22).
print outfile='datetime22.1.out'/x(datetime22.1).
print outfile='datetime23.2.out'/x(datetime23.2).
print outfile='datetime24.3.out'/x(datetime24.3).
print outfile='datetime25.4.out'/x(datetime25.4).
print outfile='datetime26.5.out'/x(datetime26.5).
print outfile='ymdhms16.out'/x(ymdhms16).
print outfile='ymdhms17.out'/x(ymdhms17).
print outfile='ymdhms18.out'/x(ymdhms18).
print outfile='ymdhms19.out'/x(ymdhms19).
print outfile='ymdhms20.out'/x(ymdhms20).
print outfile='ymdhms21.out'/x(ymdhms21).
print outfile='ymdhms21.1.out'/x(ymdhms21.1).
print outfile='ymdhms22.2.out'/x(ymdhms22.2).
print outfile='ymdhms23.3.out'/x(ymdhms23.3).
print outfile='ymdhms24.4.out'/x(ymdhms24.4).
print outfile='ymdhms25.5.out'/x(ymdhms25.5).
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:509: pspp -O format=csv date-out.sps"
at_fn_check_prepare_trace "data-out.at:509"
( $at_check_trace; pspp -O format=csv date-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:509"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:510: cat date.out"
at_fn_check_prepare_trace "data-out.at:510"
( $at_check_trace; cat date.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ********* | 10-JUN-1648
 ********* | 30-JUN-1680
 ********* | 24-JUL-1716
 ********* | 19-JUN-1768
 ********* | 02-AUG-1819
 ********* | 27-MAR-1839
 ********* | 19-APR-1903
 ********* | 25-AUG-1929
 29-SEP-41 | 29-SEP-1941
 19-APR-43 | 19-APR-1943
 07-OCT-43 | 07-OCT-1943
 17-MAR-92 | 17-MAR-1992
 25-FEB-96 | 25-FEB-1996
 29-SEP-41 | 29-SEP-1941
 19-APR-43 | 19-APR-1943
 07-OCT-43 | 07-OCT-1943
 17-MAR-92 | 17-MAR-1992
 25-FEB-96 | 25-FEB-1996
 ********* | 10-NOV-2038
 ********* | 18-JUL-2094
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:510"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:532: cat adate.out"
at_fn_check_prepare_trace "data-out.at:532"
( $at_check_trace; cat adate.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ******** | 06/10/1648
 ******** | 06/30/1680
 ******** | 07/24/1716
 ******** | 06/19/1768
 ******** | 08/02/1819
 ******** | 03/27/1839
 ******** | 04/19/1903
 ******** | 08/25/1929
 09/29/41 | 09/29/1941
 04/19/43 | 04/19/1943
 10/07/43 | 10/07/1943
 03/17/92 | 03/17/1992
 02/25/96 | 02/25/1996
 09/29/41 | 09/29/1941
 04/19/43 | 04/19/1943
 10/07/43 | 10/07/1943
 03/17/92 | 03/17/1992
 02/25/96 | 02/25/1996
 ******** | 11/10/2038
 ******** | 07/18/2094
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:532"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:554: cat edate.out"
at_fn_check_prepare_trace "data-out.at:554"
( $at_check_trace; cat edate.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ******** | 10.06.1648
 ******** | 30.06.1680
 ******** | 24.07.1716
 ******** | 19.06.1768
 ******** | 02.08.1819
 ******** | 27.03.1839
 ******** | 19.04.1903
 ******** | 25.08.1929
 29.09.41 | 29.09.1941
 19.04.43 | 19.04.1943
 07.10.43 | 07.10.1943
 17.03.92 | 17.03.1992
 25.02.96 | 25.02.1996
 29.09.41 | 29.09.1941
 19.04.43 | 19.04.1943
 07.10.43 | 07.10.1943
 17.03.92 | 17.03.1992
 25.02.96 | 25.02.1996
 ******** | 10.11.2038
 ******** | 18.07.2094
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:554"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:576: cat jdate.out"
at_fn_check_prepare_trace "data-out.at:576"
( $at_check_trace; cat jdate.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ***** | 1648162
 ***** | 1680182
 ***** | 1716206
 ***** | 1768171
 ***** | 1819214
 ***** | 1839086
 ***** | 1903109
 ***** | 1929237
 41272 | 1941272
 43109 | 1943109
 43280 | 1943280
 92077 | 1992077
 96056 | 1996056
 41272 | 1941272
 43109 | 1943109
 43280 | 1943280
 92077 | 1992077
 96056 | 1996056
 ***** | 2038314
 ***** | 2094199
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:576"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:598: cat sdate.out"
at_fn_check_prepare_trace "data-out.at:598"
( $at_check_trace; cat sdate.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ******** | 1648/06/10
 ******** | 1680/06/30
 ******** | 1716/07/24
 ******** | 1768/06/19
 ******** | 1819/08/02
 ******** | 1839/03/27
 ******** | 1903/04/19
 ******** | 1929/08/25
 41/09/29 | 1941/09/29
 43/04/19 | 1943/04/19
 43/10/07 | 1943/10/07
 92/03/17 | 1992/03/17
 96/02/25 | 1996/02/25
 41/09/29 | 1941/09/29
 43/04/19 | 1943/04/19
 43/10/07 | 1943/10/07
 92/03/17 | 1992/03/17
 96/02/25 | 1996/02/25
 ******** | 2038/11/10
 ******** | 2094/07/18
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:598"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:620: cat qyr.out"
at_fn_check_prepare_trace "data-out.at:620"
( $at_check_trace; cat qyr.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ****** | 2 Q 1648
 ****** | 2 Q 1680
 ****** | 3 Q 1716
 ****** | 2 Q 1768
 ****** | 3 Q 1819
 ****** | 1 Q 1839
 ****** | 2 Q 1903
 ****** | 3 Q 1929
 3 Q 41 | 3 Q 1941
 2 Q 43 | 2 Q 1943
 4 Q 43 | 4 Q 1943
 1 Q 92 | 1 Q 1992
 1 Q 96 | 1 Q 1996
 3 Q 41 | 3 Q 1941
 2 Q 43 | 2 Q 1943
 4 Q 43 | 4 Q 1943
 1 Q 92 | 1 Q 1992
 1 Q 96 | 1 Q 1996
 ****** | 4 Q 2038
 ****** | 3 Q 2094
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:620"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:642: cat moyr.out"
at_fn_check_prepare_trace "data-out.at:642"
( $at_check_trace; cat moyr.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ****** | JUN 1648
 ****** | JUN 1680
 ****** | JUL 1716
 ****** | JUN 1768
 ****** | AUG 1819
 ****** | MAR 1839
 ****** | APR 1903
 ****** | AUG 1929
 SEP 41 | SEP 1941
 APR 43 | APR 1943
 OCT 43 | OCT 1943
 MAR 92 | MAR 1992
 FEB 96 | FEB 1996
 SEP 41 | SEP 1941
 APR 43 | APR 1943
 OCT 43 | OCT 1943
 MAR 92 | MAR 1992
 FEB 96 | FEB 1996
 ****** | NOV 2038
 ****** | JUL 2094
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:642"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:664: cat wkyr.out"
at_fn_check_prepare_trace "data-out.at:664"
( $at_check_trace; cat wkyr.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ******** | 24 WK 1648
 ******** | 26 WK 1680
 ******** | 30 WK 1716
 ******** | 25 WK 1768
 ******** | 31 WK 1819
 ******** | 13 WK 1839
 ******** | 16 WK 1903
 ******** | 34 WK 1929
 39 WK 41 | 39 WK 1941
 16 WK 43 | 16 WK 1943
 40 WK 43 | 40 WK 1943
 11 WK 92 | 11 WK 1992
  8 WK 96 |  8 WK 1996
 39 WK 41 | 39 WK 1941
 16 WK 43 | 16 WK 1943
 40 WK 43 | 40 WK 1943
 11 WK 92 | 11 WK 1992
  8 WK 96 |  8 WK 1996
 ******** | 45 WK 2038
 ******** | 29 WK 2094
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:664"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:686: cat datetime17.out"
at_fn_check_prepare_trace "data-out.at:686"
( $at_check_trace; cat datetime17.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 10-JUN-1648 00:00
 30-JUN-1680 04:50
 24-JUL-1716 12:31
 19-JUN-1768 12:47
 02-AUG-1819 01:26
 27-MAR-1839 20:58
 19-APR-1903 07:36
 25-AUG-1929 15:43
 29-SEP-1941 04:25
 19-APR-1943 06:49
 07-OCT-1943 02:57
 17-MAR-1992 16:45
 25-FEB-1996 21:30
 29-SEP-1941 04:25
 19-APR-1943 06:49
 07-OCT-1943 02:57
 17-MAR-1992 16:45
 25-FEB-1996 21:30
 10-NOV-2038 22:30
 18-JUL-2094 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:686"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:708: cat datetime18.out"
at_fn_check_prepare_trace "data-out.at:708"
( $at_check_trace; cat datetime18.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  10-JUN-1648 00:00
  30-JUN-1680 04:50
  24-JUL-1716 12:31
  19-JUN-1768 12:47
  02-AUG-1819 01:26
  27-MAR-1839 20:58
  19-APR-1903 07:36
  25-AUG-1929 15:43
  29-SEP-1941 04:25
  19-APR-1943 06:49
  07-OCT-1943 02:57
  17-MAR-1992 16:45
  25-FEB-1996 21:30
  29-SEP-1941 04:25
  19-APR-1943 06:49
  07-OCT-1943 02:57
  17-MAR-1992 16:45
  25-FEB-1996 21:30
  10-NOV-2038 22:30
  18-JUL-2094 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:708"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:730: cat datetime19.out"
at_fn_check_prepare_trace "data-out.at:730"
( $at_check_trace; cat datetime19.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   10-JUN-1648 00:00
   30-JUN-1680 04:50
   24-JUL-1716 12:31
   19-JUN-1768 12:47
   02-AUG-1819 01:26
   27-MAR-1839 20:58
   19-APR-1903 07:36
   25-AUG-1929 15:43
   29-SEP-1941 04:25
   19-APR-1943 06:49
   07-OCT-1943 02:57
   17-MAR-1992 16:45
   25-FEB-1996 21:30
   29-SEP-1941 04:25
   19-APR-1943 06:49
   07-OCT-1943 02:57
   17-MAR-1992 16:45
   25-FEB-1996 21:30
   10-NOV-2038 22:30
   18-JUL-2094 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:730"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:752: cat datetime20.out"
at_fn_check_prepare_trace "data-out.at:752"
( $at_check_trace; cat datetime20.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 10-JUN-1648 00:00:00
 30-JUN-1680 04:50:38
 24-JUL-1716 12:31:35
 19-JUN-1768 12:47:53
 02-AUG-1819 01:26:00
 27-MAR-1839 20:58:11
 19-APR-1903 07:36:05
 25-AUG-1929 15:43:49
 29-SEP-1941 04:25:09
 19-APR-1943 06:49:27
 07-OCT-1943 02:57:52
 17-MAR-1992 16:45:44
 25-FEB-1996 21:30:57
 29-SEP-1941 04:25:09
 19-APR-1943 06:49:27
 07-OCT-1943 02:57:52
 17-MAR-1992 16:45:44
 25-FEB-1996 21:30:57
 10-NOV-2038 22:30:04
 18-JUL-2094 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:752"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:774: cat datetime21.out"
at_fn_check_prepare_trace "data-out.at:774"
( $at_check_trace; cat datetime21.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  10-JUN-1648 00:00:00
  30-JUN-1680 04:50:38
  24-JUL-1716 12:31:35
  19-JUN-1768 12:47:53
  02-AUG-1819 01:26:00
  27-MAR-1839 20:58:11
  19-APR-1903 07:36:05
  25-AUG-1929 15:43:49
  29-SEP-1941 04:25:09
  19-APR-1943 06:49:27
  07-OCT-1943 02:57:52
  17-MAR-1992 16:45:44
  25-FEB-1996 21:30:57
  29-SEP-1941 04:25:09
  19-APR-1943 06:49:27
  07-OCT-1943 02:57:52
  17-MAR-1992 16:45:44
  25-FEB-1996 21:30:57
  10-NOV-2038 22:30:04
  18-JUL-2094 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:774"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:796: cat datetime22.out"
at_fn_check_prepare_trace "data-out.at:796"
( $at_check_trace; cat datetime22.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   10-JUN-1648 00:00:00
   30-JUN-1680 04:50:38
   24-JUL-1716 12:31:35
   19-JUN-1768 12:47:53
   02-AUG-1819 01:26:00
   27-MAR-1839 20:58:11
   19-APR-1903 07:36:05
   25-AUG-1929 15:43:49
   29-SEP-1941 04:25:09
   19-APR-1943 06:49:27
   07-OCT-1943 02:57:52
   17-MAR-1992 16:45:44
   25-FEB-1996 21:30:57
   29-SEP-1941 04:25:09
   19-APR-1943 06:49:27
   07-OCT-1943 02:57:52
   17-MAR-1992 16:45:44
   25-FEB-1996 21:30:57
   10-NOV-2038 22:30:04
   18-JUL-2094 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:796"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:818: cat datetime22.1.out"
at_fn_check_prepare_trace "data-out.at:818"
( $at_check_trace; cat datetime22.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 10-JUN-1648 00:00:00.0
 30-JUN-1680 04:50:38.1
 24-JUL-1716 12:31:35.2
 19-JUN-1768 12:47:53.3
 02-AUG-1819 01:26:00.5
 27-MAR-1839 20:58:11.6
 19-APR-1903 07:36:05.2
 25-AUG-1929 15:43:49.8
 29-SEP-1941 04:25:09.0
 19-APR-1943 06:49:27.5
 07-OCT-1943 02:57:52.0
 17-MAR-1992 16:45:44.9
 25-FEB-1996 21:30:57.8
 29-SEP-1941 04:25:09.2
 19-APR-1943 06:49:27.1
 07-OCT-1943 02:57:52.5
 17-MAR-1992 16:45:44.7
 25-FEB-1996 21:30:57.6
 10-NOV-2038 22:30:04.2
 18-JUL-2094 01:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:818"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:840: cat datetime23.2.out"
at_fn_check_prepare_trace "data-out.at:840"
( $at_check_trace; cat datetime23.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 10-JUN-1648 00:00:00.00
 30-JUN-1680 04:50:38.12
 24-JUL-1716 12:31:35.23
 19-JUN-1768 12:47:53.35
 02-AUG-1819 01:26:00.46
 27-MAR-1839 20:58:11.57
 19-APR-1903 07:36:05.19
 25-AUG-1929 15:43:49.83
 29-SEP-1941 04:25:09.01
 19-APR-1943 06:49:27.52
 07-OCT-1943 02:57:52.02
 17-MAR-1992 16:45:44.87
 25-FEB-1996 21:30:57.82
 29-SEP-1941 04:25:09.15
 19-APR-1943 06:49:27.11
 07-OCT-1943 02:57:52.48
 17-MAR-1992 16:45:44.66
 25-FEB-1996 21:30:57.58
 10-NOV-2038 22:30:04.18
 18-JUL-2094 01:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:840"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:862: cat datetime24.3.out"
at_fn_check_prepare_trace "data-out.at:862"
( $at_check_trace; cat datetime24.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 10-JUN-1648 00:00:00.000
 30-JUN-1680 04:50:38.123
 24-JUL-1716 12:31:35.235
 19-JUN-1768 12:47:53.345
 02-AUG-1819 01:26:00.456
 27-MAR-1839 20:58:11.567
 19-APR-1903 07:36:05.190
 25-AUG-1929 15:43:49.831
 29-SEP-1941 04:25:09.013
 19-APR-1943 06:49:27.524
 07-OCT-1943 02:57:52.016
 17-MAR-1992 16:45:44.865
 25-FEB-1996 21:30:57.820
 29-SEP-1941 04:25:09.154
 19-APR-1943 06:49:27.105
 07-OCT-1943 02:57:52.482
 17-MAR-1992 16:45:44.658
 25-FEB-1996 21:30:57.582
 10-NOV-2038 22:30:04.183
 18-JUL-2094 01:56:51.593
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:862"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:884: cat datetime25.4.out"
at_fn_check_prepare_trace "data-out.at:884"
( $at_check_trace; cat datetime25.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 10-JUN-1648 00:00:00.0000
 30-JUN-1680 04:50:38.1230
 24-JUL-1716 12:31:35.2345
 19-JUN-1768 12:47:53.3450
 02-AUG-1819 01:26:00.4562
 27-MAR-1839 20:58:11.5668
 19-APR-1903 07:36:05.1896
 25-AUG-1929 15:43:49.8313
 29-SEP-1941 04:25:09.0129
 19-APR-1943 06:49:27.5238
 07-OCT-1943 02:57:52.0156
 17-MAR-1992 16:45:44.8653
 25-FEB-1996 21:30:57.8205
 29-SEP-1941 04:25:09.1539
 19-APR-1943 06:49:27.1053
 07-OCT-1943 02:57:52.4823
 17-MAR-1992 16:45:44.6583
 25-FEB-1996 21:30:57.5822
 10-NOV-2038 22:30:04.1835
 18-JUL-2094 01:56:51.5932
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:884"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:906: cat datetime26.5.out"
at_fn_check_prepare_trace "data-out.at:906"
( $at_check_trace; cat datetime26.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 10-JUN-1648 00:00:00.00000
 30-JUN-1680 04:50:38.12301
 24-JUL-1716 12:31:35.23453
 19-JUN-1768 12:47:53.34505
 02-AUG-1819 01:26:00.45615
 27-MAR-1839 20:58:11.56677
 19-APR-1903 07:36:05.18964
 25-AUG-1929 15:43:49.83132
 29-SEP-1941 04:25:09.01293
 19-APR-1943 06:49:27.52375
 07-OCT-1943 02:57:52.01565
 17-MAR-1992 16:45:44.86529
 25-FEB-1996 21:30:57.82047
 29-SEP-1941 04:25:09.15395
 19-APR-1943 06:49:27.10533
 07-OCT-1943 02:57:52.48229
 17-MAR-1992 16:45:44.65827
 25-FEB-1996 21:30:57.58219
 10-NOV-2038 22:30:04.18347
 18-JUL-2094 01:56:51.59319
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:906"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:928: cat ymdhms16.out"
at_fn_check_prepare_trace "data-out.at:928"
( $at_check_trace; cat ymdhms16.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1648-06-10 00:00
 1680-06-30 04:50
 1716-07-24 12:31
 1768-06-19 12:47
 1819-08-02 01:26
 1839-03-27 20:58
 1903-04-19 07:36
 1929-08-25 15:43
 1941-09-29 04:25
 1943-04-19 06:49
 1943-10-07 02:57
 1992-03-17 16:45
 1996-02-25 21:30
 1941-09-29 04:25
 1943-04-19 06:49
 1943-10-07 02:57
 1992-03-17 16:45
 1996-02-25 21:30
 2038-11-10 22:30
 2094-07-18 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:928"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:950: cat ymdhms17.out"
at_fn_check_prepare_trace "data-out.at:950"
( $at_check_trace; cat ymdhms17.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  1648-06-10 00:00
  1680-06-30 04:50
  1716-07-24 12:31
  1768-06-19 12:47
  1819-08-02 01:26
  1839-03-27 20:58
  1903-04-19 07:36
  1929-08-25 15:43
  1941-09-29 04:25
  1943-04-19 06:49
  1943-10-07 02:57
  1992-03-17 16:45
  1996-02-25 21:30
  1941-09-29 04:25
  1943-04-19 06:49
  1943-10-07 02:57
  1992-03-17 16:45
  1996-02-25 21:30
  2038-11-10 22:30
  2094-07-18 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:950"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:972: cat ymdhms18.out"
at_fn_check_prepare_trace "data-out.at:972"
( $at_check_trace; cat ymdhms18.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   1648-06-10 00:00
   1680-06-30 04:50
   1716-07-24 12:31
   1768-06-19 12:47
   1819-08-02 01:26
   1839-03-27 20:58
   1903-04-19 07:36
   1929-08-25 15:43
   1941-09-29 04:25
   1943-04-19 06:49
   1943-10-07 02:57
   1992-03-17 16:45
   1996-02-25 21:30
   1941-09-29 04:25
   1943-04-19 06:49
   1943-10-07 02:57
   1992-03-17 16:45
   1996-02-25 21:30
   2038-11-10 22:30
   2094-07-18 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:972"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:994: cat ymdhms19.out"
at_fn_check_prepare_trace "data-out.at:994"
( $at_check_trace; cat ymdhms19.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1648-06-10 00:00:00
 1680-06-30 04:50:38
 1716-07-24 12:31:35
 1768-06-19 12:47:53
 1819-08-02 01:26:00
 1839-03-27 20:58:11
 1903-04-19 07:36:05
 1929-08-25 15:43:49
 1941-09-29 04:25:09
 1943-04-19 06:49:27
 1943-10-07 02:57:52
 1992-03-17 16:45:44
 1996-02-25 21:30:57
 1941-09-29 04:25:09
 1943-04-19 06:49:27
 1943-10-07 02:57:52
 1992-03-17 16:45:44
 1996-02-25 21:30:57
 2038-11-10 22:30:04
 2094-07-18 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:994"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1016: cat ymdhms20.out"
at_fn_check_prepare_trace "data-out.at:1016"
( $at_check_trace; cat ymdhms20.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  1648-06-10 00:00:00
  1680-06-30 04:50:38
  1716-07-24 12:31:35
  1768-06-19 12:47:53
  1819-08-02 01:26:00
  1839-03-27 20:58:11
  1903-04-19 07:36:05
  1929-08-25 15:43:49
  1941-09-29 04:25:09
  1943-04-19 06:49:27
  1943-10-07 02:57:52
  1992-03-17 16:45:44
  1996-02-25 21:30:57
  1941-09-29 04:25:09
  1943-04-19 06:49:27
  1943-10-07 02:57:52
  1992-03-17 16:45:44
  1996-02-25 21:30:57
  2038-11-10 22:30:04
  2094-07-18 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1016"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1038: cat ymdhms21.out"
at_fn_check_prepare_trace "data-out.at:1038"
( $at_check_trace; cat ymdhms21.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   1648-06-10 00:00:00
   1680-06-30 04:50:38
   1716-07-24 12:31:35
   1768-06-19 12:47:53
   1819-08-02 01:26:00
   1839-03-27 20:58:11
   1903-04-19 07:36:05
   1929-08-25 15:43:49
   1941-09-29 04:25:09
   1943-04-19 06:49:27
   1943-10-07 02:57:52
   1992-03-17 16:45:44
   1996-02-25 21:30:57
   1941-09-29 04:25:09
   1943-04-19 06:49:27
   1943-10-07 02:57:52
   1992-03-17 16:45:44
   1996-02-25 21:30:57
   2038-11-10 22:30:04
   2094-07-18 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1038"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1060: cat ymdhms21.1.out"
at_fn_check_prepare_trace "data-out.at:1060"
( $at_check_trace; cat ymdhms21.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1648-06-10 00:00:00.0
 1680-06-30 04:50:38.1
 1716-07-24 12:31:35.2
 1768-06-19 12:47:53.3
 1819-08-02 01:26:00.5
 1839-03-27 20:58:11.6
 1903-04-19 07:36:05.2
 1929-08-25 15:43:49.8
 1941-09-29 04:25:09.0
 1943-04-19 06:49:27.5
 1943-10-07 02:57:52.0
 1992-03-17 16:45:44.9
 1996-02-25 21:30:57.8
 1941-09-29 04:25:09.2
 1943-04-19 06:49:27.1
 1943-10-07 02:57:52.5
 1992-03-17 16:45:44.7
 1996-02-25 21:30:57.6
 2038-11-10 22:30:04.2
 2094-07-18 01:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1060"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1082: cat ymdhms22.2.out"
at_fn_check_prepare_trace "data-out.at:1082"
( $at_check_trace; cat ymdhms22.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1648-06-10 00:00:00.00
 1680-06-30 04:50:38.12
 1716-07-24 12:31:35.23
 1768-06-19 12:47:53.35
 1819-08-02 01:26:00.46
 1839-03-27 20:58:11.57
 1903-04-19 07:36:05.19
 1929-08-25 15:43:49.83
 1941-09-29 04:25:09.01
 1943-04-19 06:49:27.52
 1943-10-07 02:57:52.02
 1992-03-17 16:45:44.87
 1996-02-25 21:30:57.82
 1941-09-29 04:25:09.15
 1943-04-19 06:49:27.11
 1943-10-07 02:57:52.48
 1992-03-17 16:45:44.66
 1996-02-25 21:30:57.58
 2038-11-10 22:30:04.18
 2094-07-18 01:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1082"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1104: cat ymdhms23.3.out"
at_fn_check_prepare_trace "data-out.at:1104"
( $at_check_trace; cat ymdhms23.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1648-06-10 00:00:00.000
 1680-06-30 04:50:38.123
 1716-07-24 12:31:35.235
 1768-06-19 12:47:53.345
 1819-08-02 01:26:00.456
 1839-03-27 20:58:11.567
 1903-04-19 07:36:05.190
 1929-08-25 15:43:49.831
 1941-09-29 04:25:09.013
 1943-04-19 06:49:27.524
 1943-10-07 02:57:52.016
 1992-03-17 16:45:44.865
 1996-02-25 21:30:57.820
 1941-09-29 04:25:09.154
 1943-04-19 06:49:27.105
 1943-10-07 02:57:52.482
 1992-03-17 16:45:44.658
 1996-02-25 21:30:57.582
 2038-11-10 22:30:04.183
 2094-07-18 01:56:51.593
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1104"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1126: cat ymdhms24.4.out"
at_fn_check_prepare_trace "data-out.at:1126"
( $at_check_trace; cat ymdhms24.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1648-06-10 00:00:00.0000
 1680-06-30 04:50:38.1230
 1716-07-24 12:31:35.2345
 1768-06-19 12:47:53.3450
 1819-08-02 01:26:00.4562
 1839-03-27 20:58:11.5668
 1903-04-19 07:36:05.1896
 1929-08-25 15:43:49.8313
 1941-09-29 04:25:09.0129
 1943-04-19 06:49:27.5238
 1943-10-07 02:57:52.0156
 1992-03-17 16:45:44.8653
 1996-02-25 21:30:57.8205
 1941-09-29 04:25:09.1539
 1943-04-19 06:49:27.1053
 1943-10-07 02:57:52.4823
 1992-03-17 16:45:44.6583
 1996-02-25 21:30:57.5822
 2038-11-10 22:30:04.1835
 2094-07-18 01:56:51.5932
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1126"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1148: cat ymdhms25.5.out"
at_fn_check_prepare_trace "data-out.at:1148"
( $at_check_trace; cat ymdhms25.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1648-06-10 00:00:00.00000
 1680-06-30 04:50:38.12301
 1716-07-24 12:31:35.23453
 1768-06-19 12:47:53.34505
 1819-08-02 01:26:00.45615
 1839-03-27 20:58:11.56677
 1903-04-19 07:36:05.18964
 1929-08-25 15:43:49.83132
 1941-09-29 04:25:09.01293
 1943-04-19 06:49:27.52375
 1943-10-07 02:57:52.01565
 1992-03-17 16:45:44.86529
 1996-02-25 21:30:57.82047
 1941-09-29 04:25:09.15395
 1943-04-19 06:49:27.10533
 1943-10-07 02:57:52.48229
 1992-03-17 16:45:44.65827
 1996-02-25 21:30:57.58219
 2038-11-10 22:30:04.18347
 2094-07-18 01:56:51.59319
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1148"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_26
#AT_START_27
at_fn_group_banner 27 'data-out.at:1172' \
  "output invalid dates" "                           " 3
at_xfail=no
(
  printf "%s\n" "27. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >bad-date.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1204: pspp -O format=csv bad-date.sps"
at_fn_check_prepare_trace "data-out.at:1204"
( $at_check_trace; pspp -O format=csv bad-date.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1204"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1205: cat bad-date.out"
at_fn_check_prepare_trace "data-out.at:1205"
( $at_check_trace; cat bad-date.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "         . |           .
        . |          .
        . |          .
     . |       .
        . |          .
      . |        .
      . |        .
        . |          .
                 .
                  .
                   .
                    .
                     .
                      .
                     . 
                     .  
                     .   
                     .    
                     .     
         . |           .
        . |          .
        . |          .
     . |       .
        . |          .
      . |        .
      . |        .
        . |          .
                 .
                  .
                   .
                    .
                     .
                      .
                     . 
                     .  
                     .   
                     .    
                     .     
 ********* | ***********
 ******** | **********
 ******** | **********
 ***** | *******
 ******** | **********
 ****** | ********
 ****** | ********
 ******** | **********
 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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1205"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_27
#AT_START_28
at_fn_group_banner 28 'data-out.at:1266' \
  "time output" "                                    " 3
at_xfail=no
(
  printf "%s\n" "28. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >time-out.sps <<'_ATEOF'
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='time5.out'/x(time5).
print outfile='time6.out'/x(time6).
print outfile='time7.out'/x(time7).
print outfile='time8.out'/x(time8).
print outfile='time9.out'/x(time9).
print outfile='time10.out'/x(time10).
print outfile='time10.1.out'/x(time10.1).
print outfile='time11.out'/x(time11).
print outfile='time11.1.out'/x(time11.1).
print outfile='time11.2.out'/x(time11.2).
print outfile='time12.out'/x(time12).
print outfile='time12.1.out'/x(time12.1).
print outfile='time12.2.out'/x(time12.2).
print outfile='time12.3.out'/x(time12.3).
print outfile='time13.out'/x(time13).
print outfile='time13.1.out'/x(time13.1).
print outfile='time13.2.out'/x(time13.2).
print outfile='time13.3.out'/x(time13.3).
print outfile='time13.4.out'/x(time13.4).
print outfile='time14.out'/x(time14).
print outfile='time14.1.out'/x(time14.1).
print outfile='time14.2.out'/x(time14.2).
print outfile='time14.3.out'/x(time14.3).
print outfile='time14.4.out'/x(time14.4).
print outfile='time14.5.out'/x(time14.5).
print outfile='time15.out'/x(time15).
print outfile='time15.1.out'/x(time15.1).
print outfile='time15.2.out'/x(time15.2).
print outfile='time15.3.out'/x(time15.3).
print outfile='time15.4.out'/x(time15.4).
print outfile='time15.5.out'/x(time15.5).
print outfile='time15.6.out'/x(time15.6).
print outfile='dtime8.out'/x(dtime8).
print outfile='dtime9.out'/x(dtime9).
print outfile='dtime10.out'/x(dtime10).
print outfile='dtime11.out'/x(dtime11).
print outfile='dtime12.out'/x(dtime12).
print outfile='dtime13.out'/x(dtime13).
print outfile='dtime13.1.out'/x(dtime13.1).
print outfile='dtime14.out'/x(dtime14).
print outfile='dtime14.1.out'/x(dtime14.1).
print outfile='dtime14.2.out'/x(dtime14.2).
print outfile='dtime15.out'/x(dtime15).
print outfile='dtime15.1.out'/x(dtime15.1).
print outfile='dtime15.2.out'/x(dtime15.2).
print outfile='dtime15.3.out'/x(dtime15.3).
print outfile='dtime16.out'/x(dtime16).
print outfile='dtime16.1.out'/x(dtime16.1).
print outfile='dtime16.2.out'/x(dtime16.2).
print outfile='dtime16.3.out'/x(dtime16.3).
print outfile='dtime16.4.out'/x(dtime16.4).
print outfile='dtime17.out'/x(dtime17).
print outfile='dtime17.1.out'/x(dtime17.1).
print outfile='dtime17.2.out'/x(dtime17.2).
print outfile='dtime17.3.out'/x(dtime17.3).
print outfile='dtime17.4.out'/x(dtime17.4).
print outfile='dtime17.5.out'/x(dtime17.5).
print outfile='dtime18.out'/x(dtime18).
print outfile='dtime18.1.out'/x(dtime18.1).
print outfile='dtime18.2.out'/x(dtime18.2).
print outfile='dtime18.3.out'/x(dtime18.3).
print outfile='dtime18.4.out'/x(dtime18.4).
print outfile='dtime18.5.out'/x(dtime18.5).
print outfile='dtime18.6.out'/x(dtime18.6).
print outfile='mtime5.out'/x(mtime5).
print outfile='mtime6.out'/x(mtime6).
print outfile='mtime7.out'/x(mtime7).
print outfile='mtime7.1.out'/x(mtime7.1).
print outfile='mtime8.out'/x(mtime8).
print outfile='mtime8.1.out'/x(mtime8.1).
print outfile='mtime8.2.out'/x(mtime8.2).
print outfile='mtime9.out'/x(mtime9).
print outfile='mtime9.1.out'/x(mtime9.1).
print outfile='mtime9.2.out'/x(mtime9.2).
print outfile='mtime9.3.out'/x(mtime9.3).
print outfile='mtime10.out'/x(mtime10).
print outfile='mtime10.1.out'/x(mtime10.1).
print outfile='mtime10.2.out'/x(mtime10.2).
print outfile='mtime10.3.out'/x(mtime10.3).
print outfile='mtime10.4.out'/x(mtime10.4).
print outfile='mtime11.out'/x(mtime11).
print outfile='mtime11.1.out'/x(mtime11.1).
print outfile='mtime11.2.out'/x(mtime11.2).
print outfile='mtime11.3.out'/x(mtime11.3).
print outfile='mtime11.4.out'/x(mtime11.4).
print outfile='mtime11.5.out'/x(mtime11.5).
print outfile='mtime12.5.out'/x(mtime12.5).
print outfile='mtime13.5.out'/x(mtime13.5).
print outfile='mtime14.5.out'/x(mtime14.5).
print outfile='mtime15.5.out'/x(mtime15.5).
print outfile='mtime16.5.out'/x(mtime16.5).
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1566: pspp -O format=csv time-out.sps"
at_fn_check_prepare_trace "data-out.at:1566"
( $at_check_trace; pspp -O format=csv time-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1566"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1567: cat time5.out"
at_fn_check_prepare_trace "data-out.at:1567"
( $at_check_trace; cat time5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00
 04:50
 12:31
 12:47
 01:26
 20:58
 07:36
 15:43
 04:25
 06:49
 02:57
 16:45
 21:30
 04:25
 06:49
 02:57
 16:45
 21:30
 22:30
 01:56
 24:00
 28:50
 36:31
 36:47
 25:26
 44:58
 31:36
 39:43
 28:25
 30:49
 26:57
 40:45
 45:30
 28:25
 30:49
 26:57
 40:45
 45:30
 46:30
 25:56
 48:00
 52:50
 60:31
 60:47
 49:26
 68:58
 55:36
 63:43
 52:25
 54:49
 50:57
 64:45
 69:30
 52:25
 54:49
 50:57
 64:45
 69:30
 70:30
 49:56
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 00:00
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1567"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1769: cat time6.out"
at_fn_check_prepare_trace "data-out.at:1769"
( $at_check_trace; cat time6.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00
  04:50
  12:31
  12:47
  01:26
  20:58
  07:36
  15:43
  04:25
  06:49
  02:57
  16:45
  21:30
  04:25
  06:49
  02:57
  16:45
  21:30
  22:30
  01:56
  24:00
  28:50
  36:31
  36:47
  25:26
  44:58
  31:36
  39:43
  28:25
  30:49
  26:57
  40:45
  45:30
  28:25
  30:49
  26:57
  40:45
  45:30
  46:30
  25:56
  48:00
  52:50
  60:31
  60:47
  49:26
  68:58
  55:36
  63:43
  52:25
  54:49
  50:57
  64:45
  69:30
  52:25
  54:49
  50:57
  64:45
  69:30
  70:30
  49:56
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
  00:00
 -04:50
 -12:31
 -12:47
 -01:26
 -20:58
 -07:36
 -15:43
 -04:25
 -06:49
 -02:57
 -16:45
 -21:30
 -04:25
 -06:49
 -02:57
 -16:45
 -21:30
 -22:30
 -01:56
 -24:00
 -28:50
 -36:31
 -36:47
 -25:26
 -44:58
 -31:36
 -39:43
 -28:25
 -30:49
 -26:57
 -40:45
 -45:30
 -28:25
 -30:49
 -26:57
 -40:45
 -45:30
 -46:30
 -25:56
 -48:00
 -52:50
 -60:31
 -60:47
 -49:26
 -68:58
 -55:36
 -63:43
 -52:25
 -54:49
 -50:57
 -64:45
 -69:30
 -52:25
 -54:49
 -50:57
 -64:45
 -69:30
 -70:30
 -49:56
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1769"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:1971: cat time7.out"
at_fn_check_prepare_trace "data-out.at:1971"
( $at_check_trace; cat time7.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00
   04:50
   12:31
   12:47
   01:26
   20:58
   07:36
   15:43
   04:25
   06:49
   02:57
   16:45
   21:30
   04:25
   06:49
   02:57
   16:45
   21:30
   22:30
   01:56
   24:00
   28:50
   36:31
   36:47
   25:26
   44:58
   31:36
   39:43
   28:25
   30:49
   26:57
   40:45
   45:30
   28:25
   30:49
   26:57
   40:45
   45:30
   46:30
   25:56
   48:00
   52:50
   60:31
   60:47
   49:26
   68:58
   55:36
   63:43
   52:25
   54:49
   50:57
   64:45
   69:30
   52:25
   54:49
   50:57
   64:45
   69:30
   70:30
   49:56
 1296:00
 1300:50
 1308:31
 1308:47
 1297:26
 1316:58
 1303:36
 1311:43
 1300:25
 1302:49
 1298:57
 1312:45
 1317:30
 1300:25
 1302:49
 1298:57
 1312:45
 1317:30
 1318:30
 1297:56
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
   00:00
  -04:50
  -12:31
  -12:47
  -01:26
  -20:58
  -07:36
  -15:43
  -04:25
  -06:49
  -02:57
  -16:45
  -21:30
  -04:25
  -06:49
  -02:57
  -16:45
  -21:30
  -22:30
  -01:56
  -24:00
  -28:50
  -36:31
  -36:47
  -25:26
  -44:58
  -31:36
  -39:43
  -28:25
  -30:49
  -26:57
  -40:45
  -45:30
  -28:25
  -30:49
  -26:57
  -40:45
  -45:30
  -46:30
  -25:56
  -48:00
  -52:50
  -60:31
  -60:47
  -49:26
  -68:58
  -55:36
  -63:43
  -52:25
  -54:49
  -50:57
  -64:45
  -69:30
  -52:25
  -54:49
  -50:57
  -64:45
  -69:30
  -70:30
  -49:56
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:1971"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:2173: cat time8.out"
at_fn_check_prepare_trace "data-out.at:2173"
( $at_check_trace; cat time8.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00:00
 04:50:38
 12:31:35
 12:47:53
 01:26:00
 20:58:11
 07:36:05
 15:43:49
 04:25:09
 06:49:27
 02:57:52
 16:45:44
 21:30:57
 04:25:09
 06:49:27
 02:57:52
 16:45:44
 21:30:57
 22:30:04
 01:56:51
 24:00:00
 28:50:38
 36:31:35
 36:47:53
 25:26:00
 44:58:11
 31:36:05
 39:43:49
 28:25:09
 30:49:27
 26:57:52
 40:45:44
 45:30:57
 28:25:09
 30:49:27
 26:57:52
 40:45:44
 45:30:57
 46:30:04
 25:56:51
 48:00:00
 52:50:38
 60:31:35
 60:47:53
 49:26:00
 68:58:11
 55:36:05
 63:43:49
 52:25:09
 54:49:27
 50:57:52
 64:45:44
 69:30:57
 52:25:09
 54:49:27
 50:57:52
 64:45:44
 69:30:57
 70:30:04
 49:56:51
  1296:00
  1300:50
  1308:31
  1308:47
  1297:26
  1316:58
  1303:36
  1311:43
  1300:25
  1302:49
  1298:57
  1312:45
  1317:30
  1300:25
  1302:49
  1298:57
  1312:45
  1317:30
  1318:30
  1297:56
 16344:00
 16348:50
 16356:31
 16356:47
 16345:26
 16364:58
 16351:36
 16359:43
 16348:25
 16350:49
 16346:57
 16360:45
 16365:30
 16348:25
 16350:49
 16346:57
 16360:45
 16365:30
 16366:30
 16345:56
 00:00:00
   -04:50
   -12:31
   -12:47
   -01:26
   -20:58
   -07:36
   -15:43
   -04:25
   -06:49
   -02:57
   -16:45
   -21:30
   -04:25
   -06:49
   -02:57
   -16:45
   -21:30
   -22:30
   -01:56
   -24:00
   -28:50
   -36:31
   -36:47
   -25:26
   -44:58
   -31:36
   -39:43
   -28:25
   -30:49
   -26:57
   -40:45
   -45:30
   -28:25
   -30:49
   -26:57
   -40:45
   -45:30
   -46:30
   -25:56
   -48:00
   -52:50
   -60:31
   -60:47
   -49:26
   -68:58
   -55:36
   -63:43
   -52:25
   -54:49
   -50:57
   -64:45
   -69:30
   -52:25
   -54:49
   -50:57
   -64:45
   -69:30
   -70:30
   -49:56
 -1296:00
 -1300:50
 -1308:31
 -1308:47
 -1297:26
 -1316:58
 -1303:36
 -1311:43
 -1300:25
 -1302:49
 -1298:57
 -1312:45
 -1317:30
 -1300:25
 -1302:49
 -1298:57
 -1312:45
 -1317:30
 -1318:30
 -1297:56
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:2173"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:2375: cat time9.out"
at_fn_check_prepare_trace "data-out.at:2375"
( $at_check_trace; cat time9.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00:00
  04:50:38
  12:31:35
  12:47:53
  01:26:00
  20:58:11
  07:36:05
  15:43:49
  04:25:09
  06:49:27
  02:57:52
  16:45:44
  21:30:57
  04:25:09
  06:49:27
  02:57:52
  16:45:44
  21:30:57
  22:30:04
  01:56:51
  24:00:00
  28:50:38
  36:31:35
  36:47:53
  25:26:00
  44:58:11
  31:36:05
  39:43:49
  28:25:09
  30:49:27
  26:57:52
  40:45:44
  45:30:57
  28:25:09
  30:49:27
  26:57:52
  40:45:44
  45:30:57
  46:30:04
  25:56:51
  48:00:00
  52:50:38
  60:31:35
  60:47:53
  49:26:00
  68:58:11
  55:36:05
  63:43:49
  52:25:09
  54:49:27
  50:57:52
  64:45:44
  69:30:57
  52:25:09
  54:49:27
  50:57:52
  64:45:44
  69:30:57
  70:30:04
  49:56:51
   1296:00
   1300:50
   1308:31
   1308:47
   1297:26
   1316:58
   1303:36
   1311:43
   1300:25
   1302:49
   1298:57
   1312:45
   1317:30
   1300:25
   1302:49
   1298:57
   1312:45
   1317:30
   1318:30
   1297:56
  16344:00
  16348:50
  16356:31
  16356:47
  16345:26
  16364:58
  16351:36
  16359:43
  16348:25
  16350:49
  16346:57
  16360:45
  16365:30
  16348:25
  16350:49
  16346:57
  16360:45
  16365:30
  16366:30
  16345:56
  00:00:00
 -04:50:38
 -12:31:35
 -12:47:53
 -01:26:00
 -20:58:11
 -07:36:05
 -15:43:49
 -04:25:09
 -06:49:27
 -02:57:52
 -16:45:44
 -21:30:57
 -04:25:09
 -06:49:27
 -02:57:52
 -16:45:44
 -21:30:57
 -22:30:04
 -01:56:51
 -24:00:00
 -28:50:38
 -36:31:35
 -36:47:53
 -25:26:00
 -44:58:11
 -31:36:05
 -39:43:49
 -28:25:09
 -30:49:27
 -26:57:52
 -40:45:44
 -45:30:57
 -28:25:09
 -30:49:27
 -26:57:52
 -40:45:44
 -45:30:57
 -46:30:04
 -25:56:51
 -48:00:00
 -52:50:38
 -60:31:35
 -60:47:53
 -49:26:00
 -68:58:11
 -55:36:05
 -63:43:49
 -52:25:09
 -54:49:27
 -50:57:52
 -64:45:44
 -69:30:57
 -52:25:09
 -54:49:27
 -50:57:52
 -64:45:44
 -69:30:57
 -70:30:04
 -49:56:51
  -1296:00
  -1300:50
  -1308:31
  -1308:47
  -1297:26
  -1316:58
  -1303:36
  -1311:43
  -1300:25
  -1302:49
  -1298:57
  -1312:45
  -1317:30
  -1300:25
  -1302:49
  -1298:57
  -1312:45
  -1317:30
  -1318:30
  -1297:56
 -16344:00
 -16348:50
 -16356:31
 -16356:47
 -16345:26
 -16364:58
 -16351:36
 -16359:43
 -16348:25
 -16350:49
 -16346:57
 -16360:45
 -16365:30
 -16348:25
 -16350:49
 -16346:57
 -16360:45
 -16365:30
 -16366:30
 -16345:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:2375"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:2577: cat time10.out"
at_fn_check_prepare_trace "data-out.at:2577"
( $at_check_trace; cat time10.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00:00
   04:50:38
   12:31:35
   12:47:53
   01:26:00
   20:58:11
   07:36:05
   15:43:49
   04:25:09
   06:49:27
   02:57:52
   16:45:44
   21:30:57
   04:25:09
   06:49:27
   02:57:52
   16:45:44
   21:30:57
   22:30:04
   01:56:51
   24:00:00
   28:50:38
   36:31:35
   36:47:53
   25:26:00
   44:58:11
   31:36:05
   39:43:49
   28:25:09
   30:49:27
   26:57:52
   40:45:44
   45:30:57
   28:25:09
   30:49:27
   26:57:52
   40:45:44
   45:30:57
   46:30:04
   25:56:51
   48:00:00
   52:50:38
   60:31:35
   60:47:53
   49:26:00
   68:58:11
   55:36:05
   63:43:49
   52:25:09
   54:49:27
   50:57:52
   64:45:44
   69:30:57
   52:25:09
   54:49:27
   50:57:52
   64:45:44
   69:30:57
   70:30:04
   49:56:51
 1296:00:00
 1300:50:38
 1308:31:35
 1308:47:53
 1297:26:00
 1316:58:11
 1303:36:05
 1311:43:49
 1300:25:09
 1302:49:27
 1298:57:52
 1312:45:44
 1317:30:57
 1300:25:09
 1302:49:27
 1298:57:52
 1312:45:44
 1317:30:57
 1318:30:04
 1297:56:51
   16344:00
   16348:50
   16356:31
   16356:47
   16345:26
   16364:58
   16351:36
   16359:43
   16348:25
   16350:49
   16346:57
   16360:45
   16365:30
   16348:25
   16350:49
   16346:57
   16360:45
   16365:30
   16366:30
   16345:56
   00:00:00
  -04:50:38
  -12:31:35
  -12:47:53
  -01:26:00
  -20:58:11
  -07:36:05
  -15:43:49
  -04:25:09
  -06:49:27
  -02:57:52
  -16:45:44
  -21:30:57
  -04:25:09
  -06:49:27
  -02:57:52
  -16:45:44
  -21:30:57
  -22:30:04
  -01:56:51
  -24:00:00
  -28:50:38
  -36:31:35
  -36:47:53
  -25:26:00
  -44:58:11
  -31:36:05
  -39:43:49
  -28:25:09
  -30:49:27
  -26:57:52
  -40:45:44
  -45:30:57
  -28:25:09
  -30:49:27
  -26:57:52
  -40:45:44
  -45:30:57
  -46:30:04
  -25:56:51
  -48:00:00
  -52:50:38
  -60:31:35
  -60:47:53
  -49:26:00
  -68:58:11
  -55:36:05
  -63:43:49
  -52:25:09
  -54:49:27
  -50:57:52
  -64:45:44
  -69:30:57
  -52:25:09
  -54:49:27
  -50:57:52
  -64:45:44
  -69:30:57
  -70:30:04
  -49:56:51
   -1296:00
   -1300:50
   -1308:31
   -1308:47
   -1297:26
   -1316:58
   -1303:36
   -1311:43
   -1300:25
   -1302:49
   -1298:57
   -1312:45
   -1317:30
   -1300:25
   -1302:49
   -1298:57
   -1312:45
   -1317:30
   -1318:30
   -1297:56
  -16344:00
  -16348:50
  -16356:31
  -16356:47
  -16345:26
  -16364:58
  -16351:36
  -16359:43
  -16348:25
  -16350:49
  -16346:57
  -16360:45
  -16365:30
  -16348:25
  -16350:49
  -16346:57
  -16360:45
  -16365:30
  -16366:30
  -16345:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:2577"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:2779: cat time10.1.out"
at_fn_check_prepare_trace "data-out.at:2779"
( $at_check_trace; cat time10.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00:00.0
 04:50:38.1
 12:31:35.2
 12:47:53.3
 01:26:00.5
 20:58:11.6
 07:36:05.2
 15:43:49.8
 04:25:09.0
 06:49:27.5
 02:57:52.0
 16:45:44.9
 21:30:57.8
 04:25:09.2
 06:49:27.1
 02:57:52.5
 16:45:44.7
 21:30:57.6
 22:30:04.2
 01:56:51.6
 24:00:00.0
 28:50:38.1
 36:31:35.2
 36:47:53.3
 25:26:00.5
 44:58:11.6
 31:36:05.2
 39:43:49.8
 28:25:09.0
 30:49:27.5
 26:57:52.0
 40:45:44.9
 45:30:57.8
 28:25:09.2
 30:49:27.1
 26:57:52.5
 40:45:44.7
 45:30:57.6
 46:30:04.2
 25:56:51.6
 48:00:00.0
 52:50:38.1
 60:31:35.2
 60:47:53.3
 49:26:00.5
 68:58:11.6
 55:36:05.2
 63:43:49.8
 52:25:09.0
 54:49:27.5
 50:57:52.0
 64:45:44.9
 69:30:57.8
 52:25:09.2
 54:49:27.1
 50:57:52.5
 64:45:44.7
 69:30:57.6
 70:30:04.2
 49:56:51.6
 1296:00:00
 1300:50:38
 1308:31:35
 1308:47:53
 1297:26:00
 1316:58:11
 1303:36:05
 1311:43:49
 1300:25:09
 1302:49:27
 1298:57:52
 1312:45:44
 1317:30:57
 1300:25:09
 1302:49:27
 1298:57:52
 1312:45:44
 1317:30:57
 1318:30:04
 1297:56:51
   16344:00
   16348:50
   16356:31
   16356:47
   16345:26
   16364:58
   16351:36
   16359:43
   16348:25
   16350:49
   16346:57
   16360:45
   16365:30
   16348:25
   16350:49
   16346:57
   16360:45
   16365:30
   16366:30
   16345:56
 00:00:00.0
  -04:50:38
  -12:31:35
  -12:47:53
  -01:26:00
  -20:58:11
  -07:36:05
  -15:43:49
  -04:25:09
  -06:49:27
  -02:57:52
  -16:45:44
  -21:30:57
  -04:25:09
  -06:49:27
  -02:57:52
  -16:45:44
  -21:30:57
  -22:30:04
  -01:56:51
  -24:00:00
  -28:50:38
  -36:31:35
  -36:47:53
  -25:26:00
  -44:58:11
  -31:36:05
  -39:43:49
  -28:25:09
  -30:49:27
  -26:57:52
  -40:45:44
  -45:30:57
  -28:25:09
  -30:49:27
  -26:57:52
  -40:45:44
  -45:30:57
  -46:30:04
  -25:56:51
  -48:00:00
  -52:50:38
  -60:31:35
  -60:47:53
  -49:26:00
  -68:58:11
  -55:36:05
  -63:43:49
  -52:25:09
  -54:49:27
  -50:57:52
  -64:45:44
  -69:30:57
  -52:25:09
  -54:49:27
  -50:57:52
  -64:45:44
  -69:30:57
  -70:30:04
  -49:56:51
   -1296:00
   -1300:50
   -1308:31
   -1308:47
   -1297:26
   -1316:58
   -1303:36
   -1311:43
   -1300:25
   -1302:49
   -1298:57
   -1312:45
   -1317:30
   -1300:25
   -1302:49
   -1298:57
   -1312:45
   -1317:30
   -1318:30
   -1297:56
  -16344:00
  -16348:50
  -16356:31
  -16356:47
  -16345:26
  -16364:58
  -16351:36
  -16359:43
  -16348:25
  -16350:49
  -16346:57
  -16360:45
  -16365:30
  -16348:25
  -16350:49
  -16346:57
  -16360:45
  -16365:30
  -16366:30
  -16345:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:2779"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:2981: cat time11.out"
at_fn_check_prepare_trace "data-out.at:2981"
( $at_check_trace; cat time11.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    00:00:00
    04:50:38
    12:31:35
    12:47:53
    01:26:00
    20:58:11
    07:36:05
    15:43:49
    04:25:09
    06:49:27
    02:57:52
    16:45:44
    21:30:57
    04:25:09
    06:49:27
    02:57:52
    16:45:44
    21:30:57
    22:30:04
    01:56:51
    24:00:00
    28:50:38
    36:31:35
    36:47:53
    25:26:00
    44:58:11
    31:36:05
    39:43:49
    28:25:09
    30:49:27
    26:57:52
    40:45:44
    45:30:57
    28:25:09
    30:49:27
    26:57:52
    40:45:44
    45:30:57
    46:30:04
    25:56:51
    48:00:00
    52:50:38
    60:31:35
    60:47:53
    49:26:00
    68:58:11
    55:36:05
    63:43:49
    52:25:09
    54:49:27
    50:57:52
    64:45:44
    69:30:57
    52:25:09
    54:49:27
    50:57:52
    64:45:44
    69:30:57
    70:30:04
    49:56:51
  1296:00:00
  1300:50:38
  1308:31:35
  1308:47:53
  1297:26:00
  1316:58:11
  1303:36:05
  1311:43:49
  1300:25:09
  1302:49:27
  1298:57:52
  1312:45:44
  1317:30:57
  1300:25:09
  1302:49:27
  1298:57:52
  1312:45:44
  1317:30:57
  1318:30:04
  1297:56:51
 16344:00:00
 16348:50:38
 16356:31:35
 16356:47:53
 16345:26:00
 16364:58:11
 16351:36:05
 16359:43:49
 16348:25:09
 16350:49:27
 16346:57:52
 16360:45:44
 16365:30:57
 16348:25:09
 16350:49:27
 16346:57:52
 16360:45:44
 16365:30:57
 16366:30:04
 16345:56:51
    00:00:00
   -04:50:38
   -12:31:35
   -12:47:53
   -01:26:00
   -20:58:11
   -07:36:05
   -15:43:49
   -04:25:09
   -06:49:27
   -02:57:52
   -16:45:44
   -21:30:57
   -04:25:09
   -06:49:27
   -02:57:52
   -16:45:44
   -21:30:57
   -22:30:04
   -01:56:51
   -24:00:00
   -28:50:38
   -36:31:35
   -36:47:53
   -25:26:00
   -44:58:11
   -31:36:05
   -39:43:49
   -28:25:09
   -30:49:27
   -26:57:52
   -40:45:44
   -45:30:57
   -28:25:09
   -30:49:27
   -26:57:52
   -40:45:44
   -45:30:57
   -46:30:04
   -25:56:51
   -48:00:00
   -52:50:38
   -60:31:35
   -60:47:53
   -49:26:00
   -68:58:11
   -55:36:05
   -63:43:49
   -52:25:09
   -54:49:27
   -50:57:52
   -64:45:44
   -69:30:57
   -52:25:09
   -54:49:27
   -50:57:52
   -64:45:44
   -69:30:57
   -70:30:04
   -49:56:51
 -1296:00:00
 -1300:50:38
 -1308:31:35
 -1308:47:53
 -1297:26:00
 -1316:58:11
 -1303:36:05
 -1311:43:49
 -1300:25:09
 -1302:49:27
 -1298:57:52
 -1312:45:44
 -1317:30:57
 -1300:25:09
 -1302:49:27
 -1298:57:52
 -1312:45:44
 -1317:30:57
 -1318:30:04
 -1297:56:51
   -16344:00
   -16348:50
   -16356:31
   -16356:47
   -16345:26
   -16364:58
   -16351:36
   -16359:43
   -16348:25
   -16350:49
   -16346:57
   -16360:45
   -16365:30
   -16348:25
   -16350:49
   -16346:57
   -16360:45
   -16365:30
   -16366:30
   -16345:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:2981"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:3183: cat time11.1.out"
at_fn_check_prepare_trace "data-out.at:3183"
( $at_check_trace; cat time11.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00:00.0
  04:50:38.1
  12:31:35.2
  12:47:53.3
  01:26:00.5
  20:58:11.6
  07:36:05.2
  15:43:49.8
  04:25:09.0
  06:49:27.5
  02:57:52.0
  16:45:44.9
  21:30:57.8
  04:25:09.2
  06:49:27.1
  02:57:52.5
  16:45:44.7
  21:30:57.6
  22:30:04.2
  01:56:51.6
  24:00:00.0
  28:50:38.1
  36:31:35.2
  36:47:53.3
  25:26:00.5
  44:58:11.6
  31:36:05.2
  39:43:49.8
  28:25:09.0
  30:49:27.5
  26:57:52.0
  40:45:44.9
  45:30:57.8
  28:25:09.2
  30:49:27.1
  26:57:52.5
  40:45:44.7
  45:30:57.6
  46:30:04.2
  25:56:51.6
  48:00:00.0
  52:50:38.1
  60:31:35.2
  60:47:53.3
  49:26:00.5
  68:58:11.6
  55:36:05.2
  63:43:49.8
  52:25:09.0
  54:49:27.5
  50:57:52.0
  64:45:44.9
  69:30:57.8
  52:25:09.2
  54:49:27.1
  50:57:52.5
  64:45:44.7
  69:30:57.6
  70:30:04.2
  49:56:51.6
  1296:00:00
  1300:50:38
  1308:31:35
  1308:47:53
  1297:26:00
  1316:58:11
  1303:36:05
  1311:43:49
  1300:25:09
  1302:49:27
  1298:57:52
  1312:45:44
  1317:30:57
  1300:25:09
  1302:49:27
  1298:57:52
  1312:45:44
  1317:30:57
  1318:30:04
  1297:56:51
 16344:00:00
 16348:50:38
 16356:31:35
 16356:47:53
 16345:26:00
 16364:58:11
 16351:36:05
 16359:43:49
 16348:25:09
 16350:49:27
 16346:57:52
 16360:45:44
 16365:30:57
 16348:25:09
 16350:49:27
 16346:57:52
 16360:45:44
 16365:30:57
 16366:30:04
 16345:56:51
  00:00:00.0
 -04:50:38.1
 -12:31:35.2
 -12:47:53.3
 -01:26:00.5
 -20:58:11.6
 -07:36:05.2
 -15:43:49.8
 -04:25:09.0
 -06:49:27.5
 -02:57:52.0
 -16:45:44.9
 -21:30:57.8
 -04:25:09.2
 -06:49:27.1
 -02:57:52.5
 -16:45:44.7
 -21:30:57.6
 -22:30:04.2
 -01:56:51.6
 -24:00:00.0
 -28:50:38.1
 -36:31:35.2
 -36:47:53.3
 -25:26:00.5
 -44:58:11.6
 -31:36:05.2
 -39:43:49.8
 -28:25:09.0
 -30:49:27.5
 -26:57:52.0
 -40:45:44.9
 -45:30:57.8
 -28:25:09.2
 -30:49:27.1
 -26:57:52.5
 -40:45:44.7
 -45:30:57.6
 -46:30:04.2
 -25:56:51.6
 -48:00:00.0
 -52:50:38.1
 -60:31:35.2
 -60:47:53.3
 -49:26:00.5
 -68:58:11.6
 -55:36:05.2
 -63:43:49.8
 -52:25:09.0
 -54:49:27.5
 -50:57:52.0
 -64:45:44.9
 -69:30:57.8
 -52:25:09.2
 -54:49:27.1
 -50:57:52.5
 -64:45:44.7
 -69:30:57.6
 -70:30:04.2
 -49:56:51.6
 -1296:00:00
 -1300:50:38
 -1308:31:35
 -1308:47:53
 -1297:26:00
 -1316:58:11
 -1303:36:05
 -1311:43:49
 -1300:25:09
 -1302:49:27
 -1298:57:52
 -1312:45:44
 -1317:30:57
 -1300:25:09
 -1302:49:27
 -1298:57:52
 -1312:45:44
 -1317:30:57
 -1318:30:04
 -1297:56:51
   -16344:00
   -16348:50
   -16356:31
   -16356:47
   -16345:26
   -16364:58
   -16351:36
   -16359:43
   -16348:25
   -16350:49
   -16346:57
   -16360:45
   -16365:30
   -16348:25
   -16350:49
   -16346:57
   -16360:45
   -16365:30
   -16366:30
   -16345:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:3183"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:3385: cat time11.2.out"
at_fn_check_prepare_trace "data-out.at:3385"
( $at_check_trace; cat time11.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00:00.00
 04:50:38.12
 12:31:35.23
 12:47:53.35
 01:26:00.46
 20:58:11.57
 07:36:05.19
 15:43:49.83
 04:25:09.01
 06:49:27.52
 02:57:52.02
 16:45:44.87
 21:30:57.82
 04:25:09.15
 06:49:27.11
 02:57:52.48
 16:45:44.66
 21:30:57.58
 22:30:04.18
 01:56:51.59
 24:00:00.00
 28:50:38.12
 36:31:35.23
 36:47:53.35
 25:26:00.46
 44:58:11.57
 31:36:05.19
 39:43:49.83
 28:25:09.01
 30:49:27.52
 26:57:52.02
 40:45:44.87
 45:30:57.82
 28:25:09.15
 30:49:27.11
 26:57:52.48
 40:45:44.66
 45:30:57.58
 46:30:04.18
 25:56:51.59
 48:00:00.00
 52:50:38.12
 60:31:35.23
 60:47:53.35
 49:26:00.46
 68:58:11.57
 55:36:05.19
 63:43:49.83
 52:25:09.01
 54:49:27.52
 50:57:52.02
 64:45:44.87
 69:30:57.82
 52:25:09.15
 54:49:27.11
 50:57:52.48
 64:45:44.66
 69:30:57.58
 70:30:04.18
 49:56:51.59
  1296:00:00
  1300:50:38
  1308:31:35
  1308:47:53
  1297:26:00
  1316:58:11
  1303:36:05
  1311:43:49
  1300:25:09
  1302:49:27
  1298:57:52
  1312:45:44
  1317:30:57
  1300:25:09
  1302:49:27
  1298:57:52
  1312:45:44
  1317:30:57
  1318:30:04
  1297:56:51
 16344:00:00
 16348:50:38
 16356:31:35
 16356:47:53
 16345:26:00
 16364:58:11
 16351:36:05
 16359:43:49
 16348:25:09
 16350:49:27
 16346:57:52
 16360:45:44
 16365:30:57
 16348:25:09
 16350:49:27
 16346:57:52
 16360:45:44
 16365:30:57
 16366:30:04
 16345:56:51
 00:00:00.00
 -04:50:38.1
 -12:31:35.2
 -12:47:53.3
 -01:26:00.5
 -20:58:11.6
 -07:36:05.2
 -15:43:49.8
 -04:25:09.0
 -06:49:27.5
 -02:57:52.0
 -16:45:44.9
 -21:30:57.8
 -04:25:09.2
 -06:49:27.1
 -02:57:52.5
 -16:45:44.7
 -21:30:57.6
 -22:30:04.2
 -01:56:51.6
 -24:00:00.0
 -28:50:38.1
 -36:31:35.2
 -36:47:53.3
 -25:26:00.5
 -44:58:11.6
 -31:36:05.2
 -39:43:49.8
 -28:25:09.0
 -30:49:27.5
 -26:57:52.0
 -40:45:44.9
 -45:30:57.8
 -28:25:09.2
 -30:49:27.1
 -26:57:52.5
 -40:45:44.7
 -45:30:57.6
 -46:30:04.2
 -25:56:51.6
 -48:00:00.0
 -52:50:38.1
 -60:31:35.2
 -60:47:53.3
 -49:26:00.5
 -68:58:11.6
 -55:36:05.2
 -63:43:49.8
 -52:25:09.0
 -54:49:27.5
 -50:57:52.0
 -64:45:44.9
 -69:30:57.8
 -52:25:09.2
 -54:49:27.1
 -50:57:52.5
 -64:45:44.7
 -69:30:57.6
 -70:30:04.2
 -49:56:51.6
 -1296:00:00
 -1300:50:38
 -1308:31:35
 -1308:47:53
 -1297:26:00
 -1316:58:11
 -1303:36:05
 -1311:43:49
 -1300:25:09
 -1302:49:27
 -1298:57:52
 -1312:45:44
 -1317:30:57
 -1300:25:09
 -1302:49:27
 -1298:57:52
 -1312:45:44
 -1317:30:57
 -1318:30:04
 -1297:56:51
   -16344:00
   -16348:50
   -16356:31
   -16356:47
   -16345:26
   -16364:58
   -16351:36
   -16359:43
   -16348:25
   -16350:49
   -16346:57
   -16360:45
   -16365:30
   -16348:25
   -16350:49
   -16346:57
   -16360:45
   -16365:30
   -16366:30
   -16345:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:3385"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:3587: cat time12.out"
at_fn_check_prepare_trace "data-out.at:3587"
( $at_check_trace; cat time12.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     00:00:00
     04:50:38
     12:31:35
     12:47:53
     01:26:00
     20:58:11
     07:36:05
     15:43:49
     04:25:09
     06:49:27
     02:57:52
     16:45:44
     21:30:57
     04:25:09
     06:49:27
     02:57:52
     16:45:44
     21:30:57
     22:30:04
     01:56:51
     24:00:00
     28:50:38
     36:31:35
     36:47:53
     25:26:00
     44:58:11
     31:36:05
     39:43:49
     28:25:09
     30:49:27
     26:57:52
     40:45:44
     45:30:57
     28:25:09
     30:49:27
     26:57:52
     40:45:44
     45:30:57
     46:30:04
     25:56:51
     48:00:00
     52:50:38
     60:31:35
     60:47:53
     49:26:00
     68:58:11
     55:36:05
     63:43:49
     52:25:09
     54:49:27
     50:57:52
     64:45:44
     69:30:57
     52:25:09
     54:49:27
     50:57:52
     64:45:44
     69:30:57
     70:30:04
     49:56:51
   1296:00:00
   1300:50:38
   1308:31:35
   1308:47:53
   1297:26:00
   1316:58:11
   1303:36:05
   1311:43:49
   1300:25:09
   1302:49:27
   1298:57:52
   1312:45:44
   1317:30:57
   1300:25:09
   1302:49:27
   1298:57:52
   1312:45:44
   1317:30:57
   1318:30:04
   1297:56:51
  16344:00:00
  16348:50:38
  16356:31:35
  16356:47:53
  16345:26:00
  16364:58:11
  16351:36:05
  16359:43:49
  16348:25:09
  16350:49:27
  16346:57:52
  16360:45:44
  16365:30:57
  16348:25:09
  16350:49:27
  16346:57:52
  16360:45:44
  16365:30:57
  16366:30:04
  16345:56:51
     00:00:00
    -04:50:38
    -12:31:35
    -12:47:53
    -01:26:00
    -20:58:11
    -07:36:05
    -15:43:49
    -04:25:09
    -06:49:27
    -02:57:52
    -16:45:44
    -21:30:57
    -04:25:09
    -06:49:27
    -02:57:52
    -16:45:44
    -21:30:57
    -22:30:04
    -01:56:51
    -24:00:00
    -28:50:38
    -36:31:35
    -36:47:53
    -25:26:00
    -44:58:11
    -31:36:05
    -39:43:49
    -28:25:09
    -30:49:27
    -26:57:52
    -40:45:44
    -45:30:57
    -28:25:09
    -30:49:27
    -26:57:52
    -40:45:44
    -45:30:57
    -46:30:04
    -25:56:51
    -48:00:00
    -52:50:38
    -60:31:35
    -60:47:53
    -49:26:00
    -68:58:11
    -55:36:05
    -63:43:49
    -52:25:09
    -54:49:27
    -50:57:52
    -64:45:44
    -69:30:57
    -52:25:09
    -54:49:27
    -50:57:52
    -64:45:44
    -69:30:57
    -70:30:04
    -49:56:51
  -1296:00:00
  -1300:50:38
  -1308:31:35
  -1308:47:53
  -1297:26:00
  -1316:58:11
  -1303:36:05
  -1311:43:49
  -1300:25:09
  -1302:49:27
  -1298:57:52
  -1312:45:44
  -1317:30:57
  -1300:25:09
  -1302:49:27
  -1298:57:52
  -1312:45:44
  -1317:30:57
  -1318:30:04
  -1297:56:51
 -16344:00:00
 -16348:50:38
 -16356:31:35
 -16356:47:53
 -16345:26:00
 -16364:58:11
 -16351:36:05
 -16359:43:49
 -16348:25:09
 -16350:49:27
 -16346:57:52
 -16360:45:44
 -16365:30:57
 -16348:25:09
 -16350:49:27
 -16346:57:52
 -16360:45:44
 -16365:30:57
 -16366:30:04
 -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:3587"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:3789: cat time12.1.out"
at_fn_check_prepare_trace "data-out.at:3789"
( $at_check_trace; cat time12.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00:00.0
   04:50:38.1
   12:31:35.2
   12:47:53.3
   01:26:00.5
   20:58:11.6
   07:36:05.2
   15:43:49.8
   04:25:09.0
   06:49:27.5
   02:57:52.0
   16:45:44.9
   21:30:57.8
   04:25:09.2
   06:49:27.1
   02:57:52.5
   16:45:44.7
   21:30:57.6
   22:30:04.2
   01:56:51.6
   24:00:00.0
   28:50:38.1
   36:31:35.2
   36:47:53.3
   25:26:00.5
   44:58:11.6
   31:36:05.2
   39:43:49.8
   28:25:09.0
   30:49:27.5
   26:57:52.0
   40:45:44.9
   45:30:57.8
   28:25:09.2
   30:49:27.1
   26:57:52.5
   40:45:44.7
   45:30:57.6
   46:30:04.2
   25:56:51.6
   48:00:00.0
   52:50:38.1
   60:31:35.2
   60:47:53.3
   49:26:00.5
   68:58:11.6
   55:36:05.2
   63:43:49.8
   52:25:09.0
   54:49:27.5
   50:57:52.0
   64:45:44.9
   69:30:57.8
   52:25:09.2
   54:49:27.1
   50:57:52.5
   64:45:44.7
   69:30:57.6
   70:30:04.2
   49:56:51.6
 1296:00:00.0
 1300:50:38.1
 1308:31:35.2
 1308:47:53.3
 1297:26:00.5
 1316:58:11.6
 1303:36:05.2
 1311:43:49.8
 1300:25:09.0
 1302:49:27.5
 1298:57:52.0
 1312:45:44.9
 1317:30:57.8
 1300:25:09.2
 1302:49:27.1
 1298:57:52.5
 1312:45:44.7
 1317:30:57.6
 1318:30:04.2
 1297:56:51.6
  16344:00:00
  16348:50:38
  16356:31:35
  16356:47:53
  16345:26:00
  16364:58:11
  16351:36:05
  16359:43:49
  16348:25:09
  16350:49:27
  16346:57:52
  16360:45:44
  16365:30:57
  16348:25:09
  16350:49:27
  16346:57:52
  16360:45:44
  16365:30:57
  16366:30:04
  16345:56:51
   00:00:00.0
  -04:50:38.1
  -12:31:35.2
  -12:47:53.3
  -01:26:00.5
  -20:58:11.6
  -07:36:05.2
  -15:43:49.8
  -04:25:09.0
  -06:49:27.5
  -02:57:52.0
  -16:45:44.9
  -21:30:57.8
  -04:25:09.2
  -06:49:27.1
  -02:57:52.5
  -16:45:44.7
  -21:30:57.6
  -22:30:04.2
  -01:56:51.6
  -24:00:00.0
  -28:50:38.1
  -36:31:35.2
  -36:47:53.3
  -25:26:00.5
  -44:58:11.6
  -31:36:05.2
  -39:43:49.8
  -28:25:09.0
  -30:49:27.5
  -26:57:52.0
  -40:45:44.9
  -45:30:57.8
  -28:25:09.2
  -30:49:27.1
  -26:57:52.5
  -40:45:44.7
  -45:30:57.6
  -46:30:04.2
  -25:56:51.6
  -48:00:00.0
  -52:50:38.1
  -60:31:35.2
  -60:47:53.3
  -49:26:00.5
  -68:58:11.6
  -55:36:05.2
  -63:43:49.8
  -52:25:09.0
  -54:49:27.5
  -50:57:52.0
  -64:45:44.9
  -69:30:57.8
  -52:25:09.2
  -54:49:27.1
  -50:57:52.5
  -64:45:44.7
  -69:30:57.6
  -70:30:04.2
  -49:56:51.6
  -1296:00:00
  -1300:50:38
  -1308:31:35
  -1308:47:53
  -1297:26:00
  -1316:58:11
  -1303:36:05
  -1311:43:49
  -1300:25:09
  -1302:49:27
  -1298:57:52
  -1312:45:44
  -1317:30:57
  -1300:25:09
  -1302:49:27
  -1298:57:52
  -1312:45:44
  -1317:30:57
  -1318:30:04
  -1297:56:51
 -16344:00:00
 -16348:50:38
 -16356:31:35
 -16356:47:53
 -16345:26:00
 -16364:58:11
 -16351:36:05
 -16359:43:49
 -16348:25:09
 -16350:49:27
 -16346:57:52
 -16360:45:44
 -16365:30:57
 -16348:25:09
 -16350:49:27
 -16346:57:52
 -16360:45:44
 -16365:30:57
 -16366:30:04
 -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:3789"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:3991: cat time12.2.out"
at_fn_check_prepare_trace "data-out.at:3991"
( $at_check_trace; cat time12.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00:00.00
  04:50:38.12
  12:31:35.23
  12:47:53.35
  01:26:00.46
  20:58:11.57
  07:36:05.19
  15:43:49.83
  04:25:09.01
  06:49:27.52
  02:57:52.02
  16:45:44.87
  21:30:57.82
  04:25:09.15
  06:49:27.11
  02:57:52.48
  16:45:44.66
  21:30:57.58
  22:30:04.18
  01:56:51.59
  24:00:00.00
  28:50:38.12
  36:31:35.23
  36:47:53.35
  25:26:00.46
  44:58:11.57
  31:36:05.19
  39:43:49.83
  28:25:09.01
  30:49:27.52
  26:57:52.02
  40:45:44.87
  45:30:57.82
  28:25:09.15
  30:49:27.11
  26:57:52.48
  40:45:44.66
  45:30:57.58
  46:30:04.18
  25:56:51.59
  48:00:00.00
  52:50:38.12
  60:31:35.23
  60:47:53.35
  49:26:00.46
  68:58:11.57
  55:36:05.19
  63:43:49.83
  52:25:09.01
  54:49:27.52
  50:57:52.02
  64:45:44.87
  69:30:57.82
  52:25:09.15
  54:49:27.11
  50:57:52.48
  64:45:44.66
  69:30:57.58
  70:30:04.18
  49:56:51.59
 1296:00:00.0
 1300:50:38.1
 1308:31:35.2
 1308:47:53.3
 1297:26:00.5
 1316:58:11.6
 1303:36:05.2
 1311:43:49.8
 1300:25:09.0
 1302:49:27.5
 1298:57:52.0
 1312:45:44.9
 1317:30:57.8
 1300:25:09.2
 1302:49:27.1
 1298:57:52.5
 1312:45:44.7
 1317:30:57.6
 1318:30:04.2
 1297:56:51.6
  16344:00:00
  16348:50:38
  16356:31:35
  16356:47:53
  16345:26:00
  16364:58:11
  16351:36:05
  16359:43:49
  16348:25:09
  16350:49:27
  16346:57:52
  16360:45:44
  16365:30:57
  16348:25:09
  16350:49:27
  16346:57:52
  16360:45:44
  16365:30:57
  16366:30:04
  16345:56:51
  00:00:00.00
 -04:50:38.12
 -12:31:35.23
 -12:47:53.35
 -01:26:00.46
 -20:58:11.57
 -07:36:05.19
 -15:43:49.83
 -04:25:09.01
 -06:49:27.52
 -02:57:52.02
 -16:45:44.87
 -21:30:57.82
 -04:25:09.15
 -06:49:27.11
 -02:57:52.48
 -16:45:44.66
 -21:30:57.58
 -22:30:04.18
 -01:56:51.59
 -24:00:00.00
 -28:50:38.12
 -36:31:35.23
 -36:47:53.35
 -25:26:00.46
 -44:58:11.57
 -31:36:05.19
 -39:43:49.83
 -28:25:09.01
 -30:49:27.52
 -26:57:52.02
 -40:45:44.87
 -45:30:57.82
 -28:25:09.15
 -30:49:27.11
 -26:57:52.48
 -40:45:44.66
 -45:30:57.58
 -46:30:04.18
 -25:56:51.59
 -48:00:00.00
 -52:50:38.12
 -60:31:35.23
 -60:47:53.35
 -49:26:00.46
 -68:58:11.57
 -55:36:05.19
 -63:43:49.83
 -52:25:09.01
 -54:49:27.52
 -50:57:52.02
 -64:45:44.87
 -69:30:57.82
 -52:25:09.15
 -54:49:27.11
 -50:57:52.48
 -64:45:44.66
 -69:30:57.58
 -70:30:04.18
 -49:56:51.59
  -1296:00:00
  -1300:50:38
  -1308:31:35
  -1308:47:53
  -1297:26:00
  -1316:58:11
  -1303:36:05
  -1311:43:49
  -1300:25:09
  -1302:49:27
  -1298:57:52
  -1312:45:44
  -1317:30:57
  -1300:25:09
  -1302:49:27
  -1298:57:52
  -1312:45:44
  -1317:30:57
  -1318:30:04
  -1297:56:51
 -16344:00:00
 -16348:50:38
 -16356:31:35
 -16356:47:53
 -16345:26:00
 -16364:58:11
 -16351:36:05
 -16359:43:49
 -16348:25:09
 -16350:49:27
 -16346:57:52
 -16360:45:44
 -16365:30:57
 -16348:25:09
 -16350:49:27
 -16346:57:52
 -16360:45:44
 -16365:30:57
 -16366:30:04
 -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:3991"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:4193: cat time12.3.out"
at_fn_check_prepare_trace "data-out.at:4193"
( $at_check_trace; cat time12.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00:00.000
 04:50:38.123
 12:31:35.235
 12:47:53.345
 01:26:00.456
 20:58:11.567
 07:36:05.190
 15:43:49.831
 04:25:09.013
 06:49:27.524
 02:57:52.016
 16:45:44.865
 21:30:57.820
 04:25:09.154
 06:49:27.105
 02:57:52.482
 16:45:44.658
 21:30:57.582
 22:30:04.183
 01:56:51.593
 24:00:00.000
 28:50:38.123
 36:31:35.235
 36:47:53.345
 25:26:00.456
 44:58:11.567
 31:36:05.190
 39:43:49.831
 28:25:09.013
 30:49:27.524
 26:57:52.016
 40:45:44.865
 45:30:57.820
 28:25:09.154
 30:49:27.105
 26:57:52.482
 40:45:44.658
 45:30:57.582
 46:30:04.183
 25:56:51.593
 48:00:00.000
 52:50:38.123
 60:31:35.235
 60:47:53.345
 49:26:00.456
 68:58:11.567
 55:36:05.190
 63:43:49.831
 52:25:09.013
 54:49:27.524
 50:57:52.016
 64:45:44.865
 69:30:57.820
 52:25:09.154
 54:49:27.105
 50:57:52.482
 64:45:44.658
 69:30:57.582
 70:30:04.183
 49:56:51.593
 1296:00:00.0
 1300:50:38.1
 1308:31:35.2
 1308:47:53.3
 1297:26:00.5
 1316:58:11.6
 1303:36:05.2
 1311:43:49.8
 1300:25:09.0
 1302:49:27.5
 1298:57:52.0
 1312:45:44.9
 1317:30:57.8
 1300:25:09.2
 1302:49:27.1
 1298:57:52.5
 1312:45:44.7
 1317:30:57.6
 1318:30:04.2
 1297:56:51.6
  16344:00:00
  16348:50:38
  16356:31:35
  16356:47:53
  16345:26:00
  16364:58:11
  16351:36:05
  16359:43:49
  16348:25:09
  16350:49:27
  16346:57:52
  16360:45:44
  16365:30:57
  16348:25:09
  16350:49:27
  16346:57:52
  16360:45:44
  16365:30:57
  16366:30:04
  16345:56:51
 00:00:00.000
 -04:50:38.12
 -12:31:35.23
 -12:47:53.35
 -01:26:00.46
 -20:58:11.57
 -07:36:05.19
 -15:43:49.83
 -04:25:09.01
 -06:49:27.52
 -02:57:52.02
 -16:45:44.87
 -21:30:57.82
 -04:25:09.15
 -06:49:27.11
 -02:57:52.48
 -16:45:44.66
 -21:30:57.58
 -22:30:04.18
 -01:56:51.59
 -24:00:00.00
 -28:50:38.12
 -36:31:35.23
 -36:47:53.35
 -25:26:00.46
 -44:58:11.57
 -31:36:05.19
 -39:43:49.83
 -28:25:09.01
 -30:49:27.52
 -26:57:52.02
 -40:45:44.87
 -45:30:57.82
 -28:25:09.15
 -30:49:27.11
 -26:57:52.48
 -40:45:44.66
 -45:30:57.58
 -46:30:04.18
 -25:56:51.59
 -48:00:00.00
 -52:50:38.12
 -60:31:35.23
 -60:47:53.35
 -49:26:00.46
 -68:58:11.57
 -55:36:05.19
 -63:43:49.83
 -52:25:09.01
 -54:49:27.52
 -50:57:52.02
 -64:45:44.87
 -69:30:57.82
 -52:25:09.15
 -54:49:27.11
 -50:57:52.48
 -64:45:44.66
 -69:30:57.58
 -70:30:04.18
 -49:56:51.59
  -1296:00:00
  -1300:50:38
  -1308:31:35
  -1308:47:53
  -1297:26:00
  -1316:58:11
  -1303:36:05
  -1311:43:49
  -1300:25:09
  -1302:49:27
  -1298:57:52
  -1312:45:44
  -1317:30:57
  -1300:25:09
  -1302:49:27
  -1298:57:52
  -1312:45:44
  -1317:30:57
  -1318:30:04
  -1297:56:51
 -16344:00:00
 -16348:50:38
 -16356:31:35
 -16356:47:53
 -16345:26:00
 -16364:58:11
 -16351:36:05
 -16359:43:49
 -16348:25:09
 -16350:49:27
 -16346:57:52
 -16360:45:44
 -16365:30:57
 -16348:25:09
 -16350:49:27
 -16346:57:52
 -16360:45:44
 -16365:30:57
 -16366:30:04
 -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:4193"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:4395: cat time13.out"
at_fn_check_prepare_trace "data-out.at:4395"
( $at_check_trace; cat time13.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "      00:00:00
      04:50:38
      12:31:35
      12:47:53
      01:26:00
      20:58:11
      07:36:05
      15:43:49
      04:25:09
      06:49:27
      02:57:52
      16:45:44
      21:30:57
      04:25:09
      06:49:27
      02:57:52
      16:45:44
      21:30:57
      22:30:04
      01:56:51
      24:00:00
      28:50:38
      36:31:35
      36:47:53
      25:26:00
      44:58:11
      31:36:05
      39:43:49
      28:25:09
      30:49:27
      26:57:52
      40:45:44
      45:30:57
      28:25:09
      30:49:27
      26:57:52
      40:45:44
      45:30:57
      46:30:04
      25:56:51
      48:00:00
      52:50:38
      60:31:35
      60:47:53
      49:26:00
      68:58:11
      55:36:05
      63:43:49
      52:25:09
      54:49:27
      50:57:52
      64:45:44
      69:30:57
      52:25:09
      54:49:27
      50:57:52
      64:45:44
      69:30:57
      70:30:04
      49:56:51
    1296:00:00
    1300:50:38
    1308:31:35
    1308:47:53
    1297:26:00
    1316:58:11
    1303:36:05
    1311:43:49
    1300:25:09
    1302:49:27
    1298:57:52
    1312:45:44
    1317:30:57
    1300:25:09
    1302:49:27
    1298:57:52
    1312:45:44
    1317:30:57
    1318:30:04
    1297:56:51
   16344:00:00
   16348:50:38
   16356:31:35
   16356:47:53
   16345:26:00
   16364:58:11
   16351:36:05
   16359:43:49
   16348:25:09
   16350:49:27
   16346:57:52
   16360:45:44
   16365:30:57
   16348:25:09
   16350:49:27
   16346:57:52
   16360:45:44
   16365:30:57
   16366:30:04
   16345:56:51
      00:00:00
     -04:50:38
     -12:31:35
     -12:47:53
     -01:26:00
     -20:58:11
     -07:36:05
     -15:43:49
     -04:25:09
     -06:49:27
     -02:57:52
     -16:45:44
     -21:30:57
     -04:25:09
     -06:49:27
     -02:57:52
     -16:45:44
     -21:30:57
     -22:30:04
     -01:56:51
     -24:00:00
     -28:50:38
     -36:31:35
     -36:47:53
     -25:26:00
     -44:58:11
     -31:36:05
     -39:43:49
     -28:25:09
     -30:49:27
     -26:57:52
     -40:45:44
     -45:30:57
     -28:25:09
     -30:49:27
     -26:57:52
     -40:45:44
     -45:30:57
     -46:30:04
     -25:56:51
     -48:00:00
     -52:50:38
     -60:31:35
     -60:47:53
     -49:26:00
     -68:58:11
     -55:36:05
     -63:43:49
     -52:25:09
     -54:49:27
     -50:57:52
     -64:45:44
     -69:30:57
     -52:25:09
     -54:49:27
     -50:57:52
     -64:45:44
     -69:30:57
     -70:30:04
     -49:56:51
   -1296:00:00
   -1300:50:38
   -1308:31:35
   -1308:47:53
   -1297:26:00
   -1316:58:11
   -1303:36:05
   -1311:43:49
   -1300:25:09
   -1302:49:27
   -1298:57:52
   -1312:45:44
   -1317:30:57
   -1300:25:09
   -1302:49:27
   -1298:57:52
   -1312:45:44
   -1317:30:57
   -1318:30:04
   -1297:56:51
  -16344:00:00
  -16348:50:38
  -16356:31:35
  -16356:47:53
  -16345:26:00
  -16364:58:11
  -16351:36:05
  -16359:43:49
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16366:30:04
  -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:4395"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:4597: cat time13.1.out"
at_fn_check_prepare_trace "data-out.at:4597"
( $at_check_trace; cat time13.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    00:00:00.0
    04:50:38.1
    12:31:35.2
    12:47:53.3
    01:26:00.5
    20:58:11.6
    07:36:05.2
    15:43:49.8
    04:25:09.0
    06:49:27.5
    02:57:52.0
    16:45:44.9
    21:30:57.8
    04:25:09.2
    06:49:27.1
    02:57:52.5
    16:45:44.7
    21:30:57.6
    22:30:04.2
    01:56:51.6
    24:00:00.0
    28:50:38.1
    36:31:35.2
    36:47:53.3
    25:26:00.5
    44:58:11.6
    31:36:05.2
    39:43:49.8
    28:25:09.0
    30:49:27.5
    26:57:52.0
    40:45:44.9
    45:30:57.8
    28:25:09.2
    30:49:27.1
    26:57:52.5
    40:45:44.7
    45:30:57.6
    46:30:04.2
    25:56:51.6
    48:00:00.0
    52:50:38.1
    60:31:35.2
    60:47:53.3
    49:26:00.5
    68:58:11.6
    55:36:05.2
    63:43:49.8
    52:25:09.0
    54:49:27.5
    50:57:52.0
    64:45:44.9
    69:30:57.8
    52:25:09.2
    54:49:27.1
    50:57:52.5
    64:45:44.7
    69:30:57.6
    70:30:04.2
    49:56:51.6
  1296:00:00.0
  1300:50:38.1
  1308:31:35.2
  1308:47:53.3
  1297:26:00.5
  1316:58:11.6
  1303:36:05.2
  1311:43:49.8
  1300:25:09.0
  1302:49:27.5
  1298:57:52.0
  1312:45:44.9
  1317:30:57.8
  1300:25:09.2
  1302:49:27.1
  1298:57:52.5
  1312:45:44.7
  1317:30:57.6
  1318:30:04.2
  1297:56:51.6
 16344:00:00.0
 16348:50:38.1
 16356:31:35.2
 16356:47:53.3
 16345:26:00.5
 16364:58:11.6
 16351:36:05.2
 16359:43:49.8
 16348:25:09.0
 16350:49:27.5
 16346:57:52.0
 16360:45:44.9
 16365:30:57.8
 16348:25:09.2
 16350:49:27.1
 16346:57:52.5
 16360:45:44.7
 16365:30:57.6
 16366:30:04.2
 16345:56:51.6
    00:00:00.0
   -04:50:38.1
   -12:31:35.2
   -12:47:53.3
   -01:26:00.5
   -20:58:11.6
   -07:36:05.2
   -15:43:49.8
   -04:25:09.0
   -06:49:27.5
   -02:57:52.0
   -16:45:44.9
   -21:30:57.8
   -04:25:09.2
   -06:49:27.1
   -02:57:52.5
   -16:45:44.7
   -21:30:57.6
   -22:30:04.2
   -01:56:51.6
   -24:00:00.0
   -28:50:38.1
   -36:31:35.2
   -36:47:53.3
   -25:26:00.5
   -44:58:11.6
   -31:36:05.2
   -39:43:49.8
   -28:25:09.0
   -30:49:27.5
   -26:57:52.0
   -40:45:44.9
   -45:30:57.8
   -28:25:09.2
   -30:49:27.1
   -26:57:52.5
   -40:45:44.7
   -45:30:57.6
   -46:30:04.2
   -25:56:51.6
   -48:00:00.0
   -52:50:38.1
   -60:31:35.2
   -60:47:53.3
   -49:26:00.5
   -68:58:11.6
   -55:36:05.2
   -63:43:49.8
   -52:25:09.0
   -54:49:27.5
   -50:57:52.0
   -64:45:44.9
   -69:30:57.8
   -52:25:09.2
   -54:49:27.1
   -50:57:52.5
   -64:45:44.7
   -69:30:57.6
   -70:30:04.2
   -49:56:51.6
 -1296:00:00.0
 -1300:50:38.1
 -1308:31:35.2
 -1308:47:53.3
 -1297:26:00.5
 -1316:58:11.6
 -1303:36:05.2
 -1311:43:49.8
 -1300:25:09.0
 -1302:49:27.5
 -1298:57:52.0
 -1312:45:44.9
 -1317:30:57.8
 -1300:25:09.2
 -1302:49:27.1
 -1298:57:52.5
 -1312:45:44.7
 -1317:30:57.6
 -1318:30:04.2
 -1297:56:51.6
  -16344:00:00
  -16348:50:38
  -16356:31:35
  -16356:47:53
  -16345:26:00
  -16364:58:11
  -16351:36:05
  -16359:43:49
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16366:30:04
  -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:4597"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:4799: cat time13.2.out"
at_fn_check_prepare_trace "data-out.at:4799"
( $at_check_trace; cat time13.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00:00.00
   04:50:38.12
   12:31:35.23
   12:47:53.35
   01:26:00.46
   20:58:11.57
   07:36:05.19
   15:43:49.83
   04:25:09.01
   06:49:27.52
   02:57:52.02
   16:45:44.87
   21:30:57.82
   04:25:09.15
   06:49:27.11
   02:57:52.48
   16:45:44.66
   21:30:57.58
   22:30:04.18
   01:56:51.59
   24:00:00.00
   28:50:38.12
   36:31:35.23
   36:47:53.35
   25:26:00.46
   44:58:11.57
   31:36:05.19
   39:43:49.83
   28:25:09.01
   30:49:27.52
   26:57:52.02
   40:45:44.87
   45:30:57.82
   28:25:09.15
   30:49:27.11
   26:57:52.48
   40:45:44.66
   45:30:57.58
   46:30:04.18
   25:56:51.59
   48:00:00.00
   52:50:38.12
   60:31:35.23
   60:47:53.35
   49:26:00.46
   68:58:11.57
   55:36:05.19
   63:43:49.83
   52:25:09.01
   54:49:27.52
   50:57:52.02
   64:45:44.87
   69:30:57.82
   52:25:09.15
   54:49:27.11
   50:57:52.48
   64:45:44.66
   69:30:57.58
   70:30:04.18
   49:56:51.59
 1296:00:00.00
 1300:50:38.12
 1308:31:35.23
 1308:47:53.35
 1297:26:00.46
 1316:58:11.57
 1303:36:05.19
 1311:43:49.83
 1300:25:09.01
 1302:49:27.52
 1298:57:52.02
 1312:45:44.87
 1317:30:57.82
 1300:25:09.15
 1302:49:27.11
 1298:57:52.48
 1312:45:44.66
 1317:30:57.58
 1318:30:04.18
 1297:56:51.59
 16344:00:00.0
 16348:50:38.1
 16356:31:35.2
 16356:47:53.3
 16345:26:00.5
 16364:58:11.6
 16351:36:05.2
 16359:43:49.8
 16348:25:09.0
 16350:49:27.5
 16346:57:52.0
 16360:45:44.9
 16365:30:57.8
 16348:25:09.2
 16350:49:27.1
 16346:57:52.5
 16360:45:44.7
 16365:30:57.6
 16366:30:04.2
 16345:56:51.6
   00:00:00.00
  -04:50:38.12
  -12:31:35.23
  -12:47:53.35
  -01:26:00.46
  -20:58:11.57
  -07:36:05.19
  -15:43:49.83
  -04:25:09.01
  -06:49:27.52
  -02:57:52.02
  -16:45:44.87
  -21:30:57.82
  -04:25:09.15
  -06:49:27.11
  -02:57:52.48
  -16:45:44.66
  -21:30:57.58
  -22:30:04.18
  -01:56:51.59
  -24:00:00.00
  -28:50:38.12
  -36:31:35.23
  -36:47:53.35
  -25:26:00.46
  -44:58:11.57
  -31:36:05.19
  -39:43:49.83
  -28:25:09.01
  -30:49:27.52
  -26:57:52.02
  -40:45:44.87
  -45:30:57.82
  -28:25:09.15
  -30:49:27.11
  -26:57:52.48
  -40:45:44.66
  -45:30:57.58
  -46:30:04.18
  -25:56:51.59
  -48:00:00.00
  -52:50:38.12
  -60:31:35.23
  -60:47:53.35
  -49:26:00.46
  -68:58:11.57
  -55:36:05.19
  -63:43:49.83
  -52:25:09.01
  -54:49:27.52
  -50:57:52.02
  -64:45:44.87
  -69:30:57.82
  -52:25:09.15
  -54:49:27.11
  -50:57:52.48
  -64:45:44.66
  -69:30:57.58
  -70:30:04.18
  -49:56:51.59
 -1296:00:00.0
 -1300:50:38.1
 -1308:31:35.2
 -1308:47:53.3
 -1297:26:00.5
 -1316:58:11.6
 -1303:36:05.2
 -1311:43:49.8
 -1300:25:09.0
 -1302:49:27.5
 -1298:57:52.0
 -1312:45:44.9
 -1317:30:57.8
 -1300:25:09.2
 -1302:49:27.1
 -1298:57:52.5
 -1312:45:44.7
 -1317:30:57.6
 -1318:30:04.2
 -1297:56:51.6
  -16344:00:00
  -16348:50:38
  -16356:31:35
  -16356:47:53
  -16345:26:00
  -16364:58:11
  -16351:36:05
  -16359:43:49
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16366:30:04
  -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:4799"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:5001: cat time13.3.out"
at_fn_check_prepare_trace "data-out.at:5001"
( $at_check_trace; cat time13.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00:00.000
  04:50:38.123
  12:31:35.235
  12:47:53.345
  01:26:00.456
  20:58:11.567
  07:36:05.190
  15:43:49.831
  04:25:09.013
  06:49:27.524
  02:57:52.016
  16:45:44.865
  21:30:57.820
  04:25:09.154
  06:49:27.105
  02:57:52.482
  16:45:44.658
  21:30:57.582
  22:30:04.183
  01:56:51.593
  24:00:00.000
  28:50:38.123
  36:31:35.235
  36:47:53.345
  25:26:00.456
  44:58:11.567
  31:36:05.190
  39:43:49.831
  28:25:09.013
  30:49:27.524
  26:57:52.016
  40:45:44.865
  45:30:57.820
  28:25:09.154
  30:49:27.105
  26:57:52.482
  40:45:44.658
  45:30:57.582
  46:30:04.183
  25:56:51.593
  48:00:00.000
  52:50:38.123
  60:31:35.235
  60:47:53.345
  49:26:00.456
  68:58:11.567
  55:36:05.190
  63:43:49.831
  52:25:09.013
  54:49:27.524
  50:57:52.016
  64:45:44.865
  69:30:57.820
  52:25:09.154
  54:49:27.105
  50:57:52.482
  64:45:44.658
  69:30:57.582
  70:30:04.183
  49:56:51.593
 1296:00:00.00
 1300:50:38.12
 1308:31:35.23
 1308:47:53.35
 1297:26:00.46
 1316:58:11.57
 1303:36:05.19
 1311:43:49.83
 1300:25:09.01
 1302:49:27.52
 1298:57:52.02
 1312:45:44.87
 1317:30:57.82
 1300:25:09.15
 1302:49:27.11
 1298:57:52.48
 1312:45:44.66
 1317:30:57.58
 1318:30:04.18
 1297:56:51.59
 16344:00:00.0
 16348:50:38.1
 16356:31:35.2
 16356:47:53.3
 16345:26:00.5
 16364:58:11.6
 16351:36:05.2
 16359:43:49.8
 16348:25:09.0
 16350:49:27.5
 16346:57:52.0
 16360:45:44.9
 16365:30:57.8
 16348:25:09.2
 16350:49:27.1
 16346:57:52.5
 16360:45:44.7
 16365:30:57.6
 16366:30:04.2
 16345:56:51.6
  00:00:00.000
 -04:50:38.123
 -12:31:35.235
 -12:47:53.345
 -01:26:00.456
 -20:58:11.567
 -07:36:05.190
 -15:43:49.831
 -04:25:09.013
 -06:49:27.524
 -02:57:52.016
 -16:45:44.865
 -21:30:57.820
 -04:25:09.154
 -06:49:27.105
 -02:57:52.482
 -16:45:44.658
 -21:30:57.582
 -22:30:04.183
 -01:56:51.593
 -24:00:00.000
 -28:50:38.123
 -36:31:35.235
 -36:47:53.345
 -25:26:00.456
 -44:58:11.567
 -31:36:05.190
 -39:43:49.831
 -28:25:09.013
 -30:49:27.524
 -26:57:52.016
 -40:45:44.865
 -45:30:57.820
 -28:25:09.154
 -30:49:27.105
 -26:57:52.482
 -40:45:44.658
 -45:30:57.582
 -46:30:04.183
 -25:56:51.593
 -48:00:00.000
 -52:50:38.123
 -60:31:35.235
 -60:47:53.345
 -49:26:00.456
 -68:58:11.567
 -55:36:05.190
 -63:43:49.831
 -52:25:09.013
 -54:49:27.524
 -50:57:52.016
 -64:45:44.865
 -69:30:57.820
 -52:25:09.154
 -54:49:27.105
 -50:57:52.482
 -64:45:44.658
 -69:30:57.582
 -70:30:04.183
 -49:56:51.593
 -1296:00:00.0
 -1300:50:38.1
 -1308:31:35.2
 -1308:47:53.3
 -1297:26:00.5
 -1316:58:11.6
 -1303:36:05.2
 -1311:43:49.8
 -1300:25:09.0
 -1302:49:27.5
 -1298:57:52.0
 -1312:45:44.9
 -1317:30:57.8
 -1300:25:09.2
 -1302:49:27.1
 -1298:57:52.5
 -1312:45:44.7
 -1317:30:57.6
 -1318:30:04.2
 -1297:56:51.6
  -16344:00:00
  -16348:50:38
  -16356:31:35
  -16356:47:53
  -16345:26:00
  -16364:58:11
  -16351:36:05
  -16359:43:49
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16366:30:04
  -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:5001"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:5203: cat time13.4.out"
at_fn_check_prepare_trace "data-out.at:5203"
( $at_check_trace; cat time13.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00:00.0000
 04:50:38.1230
 12:31:35.2345
 12:47:53.3451
 01:26:00.4561
 20:58:11.5668
 07:36:05.1896
 15:43:49.8313
 04:25:09.0129
 06:49:27.5238
 02:57:52.0156
 16:45:44.8653
 21:30:57.8205
 04:25:09.1539
 06:49:27.1053
 02:57:52.4823
 16:45:44.6583
 21:30:57.5822
 22:30:04.1835
 01:56:51.5932
 24:00:00.0000
 28:50:38.1230
 36:31:35.2345
 36:47:53.3451
 25:26:00.4561
 44:58:11.5668
 31:36:05.1896
 39:43:49.8313
 28:25:09.0129
 30:49:27.5237
 26:57:52.0157
 40:45:44.8653
 45:30:57.8205
 28:25:09.1540
 30:49:27.1053
 26:57:52.4823
 40:45:44.6583
 45:30:57.5822
 46:30:04.1835
 25:56:51.5932
 48:00:00.0000
 52:50:38.1230
 60:31:35.2345
 60:47:53.3451
 49:26:00.4562
 68:58:11.5668
 55:36:05.1896
 63:43:49.8313
 52:25:09.0129
 54:49:27.5237
 50:57:52.0156
 64:45:44.8653
 69:30:57.8205
 52:25:09.1540
 54:49:27.1053
 50:57:52.4823
 64:45:44.6583
 69:30:57.5822
 70:30:04.1835
 49:56:51.5932
 1296:00:00.00
 1300:50:38.12
 1308:31:35.23
 1308:47:53.35
 1297:26:00.46
 1316:58:11.57
 1303:36:05.19
 1311:43:49.83
 1300:25:09.01
 1302:49:27.52
 1298:57:52.02
 1312:45:44.87
 1317:30:57.82
 1300:25:09.15
 1302:49:27.11
 1298:57:52.48
 1312:45:44.66
 1317:30:57.58
 1318:30:04.18
 1297:56:51.59
 16344:00:00.0
 16348:50:38.1
 16356:31:35.2
 16356:47:53.3
 16345:26:00.5
 16364:58:11.6
 16351:36:05.2
 16359:43:49.8
 16348:25:09.0
 16350:49:27.5
 16346:57:52.0
 16360:45:44.9
 16365:30:57.8
 16348:25:09.2
 16350:49:27.1
 16346:57:52.5
 16360:45:44.7
 16365:30:57.6
 16366:30:04.2
 16345:56:51.6
 00:00:00.0000
 -04:50:38.123
 -12:31:35.235
 -12:47:53.345
 -01:26:00.456
 -20:58:11.567
 -07:36:05.190
 -15:43:49.831
 -04:25:09.013
 -06:49:27.524
 -02:57:52.016
 -16:45:44.865
 -21:30:57.820
 -04:25:09.154
 -06:49:27.105
 -02:57:52.482
 -16:45:44.658
 -21:30:57.582
 -22:30:04.183
 -01:56:51.593
 -24:00:00.000
 -28:50:38.123
 -36:31:35.235
 -36:47:53.345
 -25:26:00.456
 -44:58:11.567
 -31:36:05.190
 -39:43:49.831
 -28:25:09.013
 -30:49:27.524
 -26:57:52.016
 -40:45:44.865
 -45:30:57.820
 -28:25:09.154
 -30:49:27.105
 -26:57:52.482
 -40:45:44.658
 -45:30:57.582
 -46:30:04.183
 -25:56:51.593
 -48:00:00.000
 -52:50:38.123
 -60:31:35.235
 -60:47:53.345
 -49:26:00.456
 -68:58:11.567
 -55:36:05.190
 -63:43:49.831
 -52:25:09.013
 -54:49:27.524
 -50:57:52.016
 -64:45:44.865
 -69:30:57.820
 -52:25:09.154
 -54:49:27.105
 -50:57:52.482
 -64:45:44.658
 -69:30:57.582
 -70:30:04.183
 -49:56:51.593
 -1296:00:00.0
 -1300:50:38.1
 -1308:31:35.2
 -1308:47:53.3
 -1297:26:00.5
 -1316:58:11.6
 -1303:36:05.2
 -1311:43:49.8
 -1300:25:09.0
 -1302:49:27.5
 -1298:57:52.0
 -1312:45:44.9
 -1317:30:57.8
 -1300:25:09.2
 -1302:49:27.1
 -1298:57:52.5
 -1312:45:44.7
 -1317:30:57.6
 -1318:30:04.2
 -1297:56:51.6
  -16344:00:00
  -16348:50:38
  -16356:31:35
  -16356:47:53
  -16345:26:00
  -16364:58:11
  -16351:36:05
  -16359:43:49
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16348:25:09
  -16350:49:27
  -16346:57:52
  -16360:45:44
  -16365:30:57
  -16366:30:04
  -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:5203"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:5405: cat time14.out"
at_fn_check_prepare_trace "data-out.at:5405"
( $at_check_trace; cat time14.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "       00:00:00
       04:50:38
       12:31:35
       12:47:53
       01:26:00
       20:58:11
       07:36:05
       15:43:49
       04:25:09
       06:49:27
       02:57:52
       16:45:44
       21:30:57
       04:25:09
       06:49:27
       02:57:52
       16:45:44
       21:30:57
       22:30:04
       01:56:51
       24:00:00
       28:50:38
       36:31:35
       36:47:53
       25:26:00
       44:58:11
       31:36:05
       39:43:49
       28:25:09
       30:49:27
       26:57:52
       40:45:44
       45:30:57
       28:25:09
       30:49:27
       26:57:52
       40:45:44
       45:30:57
       46:30:04
       25:56:51
       48:00:00
       52:50:38
       60:31:35
       60:47:53
       49:26:00
       68:58:11
       55:36:05
       63:43:49
       52:25:09
       54:49:27
       50:57:52
       64:45:44
       69:30:57
       52:25:09
       54:49:27
       50:57:52
       64:45:44
       69:30:57
       70:30:04
       49:56:51
     1296:00:00
     1300:50:38
     1308:31:35
     1308:47:53
     1297:26:00
     1316:58:11
     1303:36:05
     1311:43:49
     1300:25:09
     1302:49:27
     1298:57:52
     1312:45:44
     1317:30:57
     1300:25:09
     1302:49:27
     1298:57:52
     1312:45:44
     1317:30:57
     1318:30:04
     1297:56:51
    16344:00:00
    16348:50:38
    16356:31:35
    16356:47:53
    16345:26:00
    16364:58:11
    16351:36:05
    16359:43:49
    16348:25:09
    16350:49:27
    16346:57:52
    16360:45:44
    16365:30:57
    16348:25:09
    16350:49:27
    16346:57:52
    16360:45:44
    16365:30:57
    16366:30:04
    16345:56:51
       00:00:00
      -04:50:38
      -12:31:35
      -12:47:53
      -01:26:00
      -20:58:11
      -07:36:05
      -15:43:49
      -04:25:09
      -06:49:27
      -02:57:52
      -16:45:44
      -21:30:57
      -04:25:09
      -06:49:27
      -02:57:52
      -16:45:44
      -21:30:57
      -22:30:04
      -01:56:51
      -24:00:00
      -28:50:38
      -36:31:35
      -36:47:53
      -25:26:00
      -44:58:11
      -31:36:05
      -39:43:49
      -28:25:09
      -30:49:27
      -26:57:52
      -40:45:44
      -45:30:57
      -28:25:09
      -30:49:27
      -26:57:52
      -40:45:44
      -45:30:57
      -46:30:04
      -25:56:51
      -48:00:00
      -52:50:38
      -60:31:35
      -60:47:53
      -49:26:00
      -68:58:11
      -55:36:05
      -63:43:49
      -52:25:09
      -54:49:27
      -50:57:52
      -64:45:44
      -69:30:57
      -52:25:09
      -54:49:27
      -50:57:52
      -64:45:44
      -69:30:57
      -70:30:04
      -49:56:51
    -1296:00:00
    -1300:50:38
    -1308:31:35
    -1308:47:53
    -1297:26:00
    -1316:58:11
    -1303:36:05
    -1311:43:49
    -1300:25:09
    -1302:49:27
    -1298:57:52
    -1312:45:44
    -1317:30:57
    -1300:25:09
    -1302:49:27
    -1298:57:52
    -1312:45:44
    -1317:30:57
    -1318:30:04
    -1297:56:51
   -16344:00:00
   -16348:50:38
   -16356:31:35
   -16356:47:53
   -16345:26:00
   -16364:58:11
   -16351:36:05
   -16359:43:49
   -16348:25:09
   -16350:49:27
   -16346:57:52
   -16360:45:44
   -16365:30:57
   -16348:25:09
   -16350:49:27
   -16346:57:52
   -16360:45:44
   -16365:30:57
   -16366:30:04
   -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:5405"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:5607: cat time14.1.out"
at_fn_check_prepare_trace "data-out.at:5607"
( $at_check_trace; cat time14.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     00:00:00.0
     04:50:38.1
     12:31:35.2
     12:47:53.3
     01:26:00.5
     20:58:11.6
     07:36:05.2
     15:43:49.8
     04:25:09.0
     06:49:27.5
     02:57:52.0
     16:45:44.9
     21:30:57.8
     04:25:09.2
     06:49:27.1
     02:57:52.5
     16:45:44.7
     21:30:57.6
     22:30:04.2
     01:56:51.6
     24:00:00.0
     28:50:38.1
     36:31:35.2
     36:47:53.3
     25:26:00.5
     44:58:11.6
     31:36:05.2
     39:43:49.8
     28:25:09.0
     30:49:27.5
     26:57:52.0
     40:45:44.9
     45:30:57.8
     28:25:09.2
     30:49:27.1
     26:57:52.5
     40:45:44.7
     45:30:57.6
     46:30:04.2
     25:56:51.6
     48:00:00.0
     52:50:38.1
     60:31:35.2
     60:47:53.3
     49:26:00.5
     68:58:11.6
     55:36:05.2
     63:43:49.8
     52:25:09.0
     54:49:27.5
     50:57:52.0
     64:45:44.9
     69:30:57.8
     52:25:09.2
     54:49:27.1
     50:57:52.5
     64:45:44.7
     69:30:57.6
     70:30:04.2
     49:56:51.6
   1296:00:00.0
   1300:50:38.1
   1308:31:35.2
   1308:47:53.3
   1297:26:00.5
   1316:58:11.6
   1303:36:05.2
   1311:43:49.8
   1300:25:09.0
   1302:49:27.5
   1298:57:52.0
   1312:45:44.9
   1317:30:57.8
   1300:25:09.2
   1302:49:27.1
   1298:57:52.5
   1312:45:44.7
   1317:30:57.6
   1318:30:04.2
   1297:56:51.6
  16344:00:00.0
  16348:50:38.1
  16356:31:35.2
  16356:47:53.3
  16345:26:00.5
  16364:58:11.6
  16351:36:05.2
  16359:43:49.8
  16348:25:09.0
  16350:49:27.5
  16346:57:52.0
  16360:45:44.9
  16365:30:57.8
  16348:25:09.2
  16350:49:27.1
  16346:57:52.5
  16360:45:44.7
  16365:30:57.6
  16366:30:04.2
  16345:56:51.6
     00:00:00.0
    -04:50:38.1
    -12:31:35.2
    -12:47:53.3
    -01:26:00.5
    -20:58:11.6
    -07:36:05.2
    -15:43:49.8
    -04:25:09.0
    -06:49:27.5
    -02:57:52.0
    -16:45:44.9
    -21:30:57.8
    -04:25:09.2
    -06:49:27.1
    -02:57:52.5
    -16:45:44.7
    -21:30:57.6
    -22:30:04.2
    -01:56:51.6
    -24:00:00.0
    -28:50:38.1
    -36:31:35.2
    -36:47:53.3
    -25:26:00.5
    -44:58:11.6
    -31:36:05.2
    -39:43:49.8
    -28:25:09.0
    -30:49:27.5
    -26:57:52.0
    -40:45:44.9
    -45:30:57.8
    -28:25:09.2
    -30:49:27.1
    -26:57:52.5
    -40:45:44.7
    -45:30:57.6
    -46:30:04.2
    -25:56:51.6
    -48:00:00.0
    -52:50:38.1
    -60:31:35.2
    -60:47:53.3
    -49:26:00.5
    -68:58:11.6
    -55:36:05.2
    -63:43:49.8
    -52:25:09.0
    -54:49:27.5
    -50:57:52.0
    -64:45:44.9
    -69:30:57.8
    -52:25:09.2
    -54:49:27.1
    -50:57:52.5
    -64:45:44.7
    -69:30:57.6
    -70:30:04.2
    -49:56:51.6
  -1296:00:00.0
  -1300:50:38.1
  -1308:31:35.2
  -1308:47:53.3
  -1297:26:00.5
  -1316:58:11.6
  -1303:36:05.2
  -1311:43:49.8
  -1300:25:09.0
  -1302:49:27.5
  -1298:57:52.0
  -1312:45:44.9
  -1317:30:57.8
  -1300:25:09.2
  -1302:49:27.1
  -1298:57:52.5
  -1312:45:44.7
  -1317:30:57.6
  -1318:30:04.2
  -1297:56:51.6
 -16344:00:00.0
 -16348:50:38.1
 -16356:31:35.2
 -16356:47:53.3
 -16345:26:00.5
 -16364:58:11.6
 -16351:36:05.2
 -16359:43:49.8
 -16348:25:09.0
 -16350:49:27.5
 -16346:57:52.0
 -16360:45:44.9
 -16365:30:57.8
 -16348:25:09.2
 -16350:49:27.1
 -16346:57:52.5
 -16360:45:44.7
 -16365:30:57.6
 -16366:30:04.2
 -16345:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:5607"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:5809: cat time14.2.out"
at_fn_check_prepare_trace "data-out.at:5809"
( $at_check_trace; cat time14.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    00:00:00.00
    04:50:38.12
    12:31:35.23
    12:47:53.35
    01:26:00.46
    20:58:11.57
    07:36:05.19
    15:43:49.83
    04:25:09.01
    06:49:27.52
    02:57:52.02
    16:45:44.87
    21:30:57.82
    04:25:09.15
    06:49:27.11
    02:57:52.48
    16:45:44.66
    21:30:57.58
    22:30:04.18
    01:56:51.59
    24:00:00.00
    28:50:38.12
    36:31:35.23
    36:47:53.35
    25:26:00.46
    44:58:11.57
    31:36:05.19
    39:43:49.83
    28:25:09.01
    30:49:27.52
    26:57:52.02
    40:45:44.87
    45:30:57.82
    28:25:09.15
    30:49:27.11
    26:57:52.48
    40:45:44.66
    45:30:57.58
    46:30:04.18
    25:56:51.59
    48:00:00.00
    52:50:38.12
    60:31:35.23
    60:47:53.35
    49:26:00.46
    68:58:11.57
    55:36:05.19
    63:43:49.83
    52:25:09.01
    54:49:27.52
    50:57:52.02
    64:45:44.87
    69:30:57.82
    52:25:09.15
    54:49:27.11
    50:57:52.48
    64:45:44.66
    69:30:57.58
    70:30:04.18
    49:56:51.59
  1296:00:00.00
  1300:50:38.12
  1308:31:35.23
  1308:47:53.35
  1297:26:00.46
  1316:58:11.57
  1303:36:05.19
  1311:43:49.83
  1300:25:09.01
  1302:49:27.52
  1298:57:52.02
  1312:45:44.87
  1317:30:57.82
  1300:25:09.15
  1302:49:27.11
  1298:57:52.48
  1312:45:44.66
  1317:30:57.58
  1318:30:04.18
  1297:56:51.59
 16344:00:00.00
 16348:50:38.12
 16356:31:35.23
 16356:47:53.35
 16345:26:00.46
 16364:58:11.57
 16351:36:05.19
 16359:43:49.83
 16348:25:09.01
 16350:49:27.52
 16346:57:52.02
 16360:45:44.87
 16365:30:57.82
 16348:25:09.15
 16350:49:27.11
 16346:57:52.48
 16360:45:44.66
 16365:30:57.58
 16366:30:04.18
 16345:56:51.59
    00:00:00.00
   -04:50:38.12
   -12:31:35.23
   -12:47:53.35
   -01:26:00.46
   -20:58:11.57
   -07:36:05.19
   -15:43:49.83
   -04:25:09.01
   -06:49:27.52
   -02:57:52.02
   -16:45:44.87
   -21:30:57.82
   -04:25:09.15
   -06:49:27.11
   -02:57:52.48
   -16:45:44.66
   -21:30:57.58
   -22:30:04.18
   -01:56:51.59
   -24:00:00.00
   -28:50:38.12
   -36:31:35.23
   -36:47:53.35
   -25:26:00.46
   -44:58:11.57
   -31:36:05.19
   -39:43:49.83
   -28:25:09.01
   -30:49:27.52
   -26:57:52.02
   -40:45:44.87
   -45:30:57.82
   -28:25:09.15
   -30:49:27.11
   -26:57:52.48
   -40:45:44.66
   -45:30:57.58
   -46:30:04.18
   -25:56:51.59
   -48:00:00.00
   -52:50:38.12
   -60:31:35.23
   -60:47:53.35
   -49:26:00.46
   -68:58:11.57
   -55:36:05.19
   -63:43:49.83
   -52:25:09.01
   -54:49:27.52
   -50:57:52.02
   -64:45:44.87
   -69:30:57.82
   -52:25:09.15
   -54:49:27.11
   -50:57:52.48
   -64:45:44.66
   -69:30:57.58
   -70:30:04.18
   -49:56:51.59
 -1296:00:00.00
 -1300:50:38.12
 -1308:31:35.23
 -1308:47:53.35
 -1297:26:00.46
 -1316:58:11.57
 -1303:36:05.19
 -1311:43:49.83
 -1300:25:09.01
 -1302:49:27.52
 -1298:57:52.02
 -1312:45:44.87
 -1317:30:57.82
 -1300:25:09.15
 -1302:49:27.11
 -1298:57:52.48
 -1312:45:44.66
 -1317:30:57.58
 -1318:30:04.18
 -1297:56:51.59
 -16344:00:00.0
 -16348:50:38.1
 -16356:31:35.2
 -16356:47:53.3
 -16345:26:00.5
 -16364:58:11.6
 -16351:36:05.2
 -16359:43:49.8
 -16348:25:09.0
 -16350:49:27.5
 -16346:57:52.0
 -16360:45:44.9
 -16365:30:57.8
 -16348:25:09.2
 -16350:49:27.1
 -16346:57:52.5
 -16360:45:44.7
 -16365:30:57.6
 -16366:30:04.2
 -16345:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:5809"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:6011: cat time14.3.out"
at_fn_check_prepare_trace "data-out.at:6011"
( $at_check_trace; cat time14.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00:00.000
   04:50:38.123
   12:31:35.235
   12:47:53.345
   01:26:00.456
   20:58:11.567
   07:36:05.190
   15:43:49.831
   04:25:09.013
   06:49:27.524
   02:57:52.016
   16:45:44.865
   21:30:57.820
   04:25:09.154
   06:49:27.105
   02:57:52.482
   16:45:44.658
   21:30:57.582
   22:30:04.183
   01:56:51.593
   24:00:00.000
   28:50:38.123
   36:31:35.235
   36:47:53.345
   25:26:00.456
   44:58:11.567
   31:36:05.190
   39:43:49.831
   28:25:09.013
   30:49:27.524
   26:57:52.016
   40:45:44.865
   45:30:57.820
   28:25:09.154
   30:49:27.105
   26:57:52.482
   40:45:44.658
   45:30:57.582
   46:30:04.183
   25:56:51.593
   48:00:00.000
   52:50:38.123
   60:31:35.235
   60:47:53.345
   49:26:00.456
   68:58:11.567
   55:36:05.190
   63:43:49.831
   52:25:09.013
   54:49:27.524
   50:57:52.016
   64:45:44.865
   69:30:57.820
   52:25:09.154
   54:49:27.105
   50:57:52.482
   64:45:44.658
   69:30:57.582
   70:30:04.183
   49:56:51.593
 1296:00:00.000
 1300:50:38.123
 1308:31:35.235
 1308:47:53.345
 1297:26:00.456
 1316:58:11.567
 1303:36:05.190
 1311:43:49.831
 1300:25:09.013
 1302:49:27.524
 1298:57:52.016
 1312:45:44.865
 1317:30:57.820
 1300:25:09.154
 1302:49:27.105
 1298:57:52.482
 1312:45:44.658
 1317:30:57.582
 1318:30:04.183
 1297:56:51.593
 16344:00:00.00
 16348:50:38.12
 16356:31:35.23
 16356:47:53.35
 16345:26:00.46
 16364:58:11.57
 16351:36:05.19
 16359:43:49.83
 16348:25:09.01
 16350:49:27.52
 16346:57:52.02
 16360:45:44.87
 16365:30:57.82
 16348:25:09.15
 16350:49:27.11
 16346:57:52.48
 16360:45:44.66
 16365:30:57.58
 16366:30:04.18
 16345:56:51.59
   00:00:00.000
  -04:50:38.123
  -12:31:35.235
  -12:47:53.345
  -01:26:00.456
  -20:58:11.567
  -07:36:05.190
  -15:43:49.831
  -04:25:09.013
  -06:49:27.524
  -02:57:52.016
  -16:45:44.865
  -21:30:57.820
  -04:25:09.154
  -06:49:27.105
  -02:57:52.482
  -16:45:44.658
  -21:30:57.582
  -22:30:04.183
  -01:56:51.593
  -24:00:00.000
  -28:50:38.123
  -36:31:35.235
  -36:47:53.345
  -25:26:00.456
  -44:58:11.567
  -31:36:05.190
  -39:43:49.831
  -28:25:09.013
  -30:49:27.524
  -26:57:52.016
  -40:45:44.865
  -45:30:57.820
  -28:25:09.154
  -30:49:27.105
  -26:57:52.482
  -40:45:44.658
  -45:30:57.582
  -46:30:04.183
  -25:56:51.593
  -48:00:00.000
  -52:50:38.123
  -60:31:35.235
  -60:47:53.345
  -49:26:00.456
  -68:58:11.567
  -55:36:05.190
  -63:43:49.831
  -52:25:09.013
  -54:49:27.524
  -50:57:52.016
  -64:45:44.865
  -69:30:57.820
  -52:25:09.154
  -54:49:27.105
  -50:57:52.482
  -64:45:44.658
  -69:30:57.582
  -70:30:04.183
  -49:56:51.593
 -1296:00:00.00
 -1300:50:38.12
 -1308:31:35.23
 -1308:47:53.35
 -1297:26:00.46
 -1316:58:11.57
 -1303:36:05.19
 -1311:43:49.83
 -1300:25:09.01
 -1302:49:27.52
 -1298:57:52.02
 -1312:45:44.87
 -1317:30:57.82
 -1300:25:09.15
 -1302:49:27.11
 -1298:57:52.48
 -1312:45:44.66
 -1317:30:57.58
 -1318:30:04.18
 -1297:56:51.59
 -16344:00:00.0
 -16348:50:38.1
 -16356:31:35.2
 -16356:47:53.3
 -16345:26:00.5
 -16364:58:11.6
 -16351:36:05.2
 -16359:43:49.8
 -16348:25:09.0
 -16350:49:27.5
 -16346:57:52.0
 -16360:45:44.9
 -16365:30:57.8
 -16348:25:09.2
 -16350:49:27.1
 -16346:57:52.5
 -16360:45:44.7
 -16365:30:57.6
 -16366:30:04.2
 -16345:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:6011"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:6213: cat time14.4.out"
at_fn_check_prepare_trace "data-out.at:6213"
( $at_check_trace; cat time14.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00:00.0000
  04:50:38.1230
  12:31:35.2345
  12:47:53.3451
  01:26:00.4561
  20:58:11.5668
  07:36:05.1896
  15:43:49.8313
  04:25:09.0129
  06:49:27.5238
  02:57:52.0156
  16:45:44.8653
  21:30:57.8205
  04:25:09.1539
  06:49:27.1053
  02:57:52.4823
  16:45:44.6583
  21:30:57.5822
  22:30:04.1835
  01:56:51.5932
  24:00:00.0000
  28:50:38.1230
  36:31:35.2345
  36:47:53.3451
  25:26:00.4561
  44:58:11.5668
  31:36:05.1896
  39:43:49.8313
  28:25:09.0129
  30:49:27.5237
  26:57:52.0157
  40:45:44.8653
  45:30:57.8205
  28:25:09.1540
  30:49:27.1053
  26:57:52.4823
  40:45:44.6583
  45:30:57.5822
  46:30:04.1835
  25:56:51.5932
  48:00:00.0000
  52:50:38.1230
  60:31:35.2345
  60:47:53.3451
  49:26:00.4562
  68:58:11.5668
  55:36:05.1896
  63:43:49.8313
  52:25:09.0129
  54:49:27.5237
  50:57:52.0156
  64:45:44.8653
  69:30:57.8205
  52:25:09.1540
  54:49:27.1053
  50:57:52.4823
  64:45:44.6583
  69:30:57.5822
  70:30:04.1835
  49:56:51.5932
 1296:00:00.000
 1300:50:38.123
 1308:31:35.235
 1308:47:53.345
 1297:26:00.456
 1316:58:11.567
 1303:36:05.190
 1311:43:49.831
 1300:25:09.013
 1302:49:27.524
 1298:57:52.016
 1312:45:44.865
 1317:30:57.820
 1300:25:09.154
 1302:49:27.105
 1298:57:52.482
 1312:45:44.658
 1317:30:57.582
 1318:30:04.183
 1297:56:51.593
 16344:00:00.00
 16348:50:38.12
 16356:31:35.23
 16356:47:53.35
 16345:26:00.46
 16364:58:11.57
 16351:36:05.19
 16359:43:49.83
 16348:25:09.01
 16350:49:27.52
 16346:57:52.02
 16360:45:44.87
 16365:30:57.82
 16348:25:09.15
 16350:49:27.11
 16346:57:52.48
 16360:45:44.66
 16365:30:57.58
 16366:30:04.18
 16345:56:51.59
  00:00:00.0000
 -04:50:38.1230
 -12:31:35.2345
 -12:47:53.3451
 -01:26:00.4561
 -20:58:11.5668
 -07:36:05.1896
 -15:43:49.8313
 -04:25:09.0129
 -06:49:27.5238
 -02:57:52.0156
 -16:45:44.8653
 -21:30:57.8205
 -04:25:09.1539
 -06:49:27.1053
 -02:57:52.4823
 -16:45:44.6583
 -21:30:57.5822
 -22:30:04.1835
 -01:56:51.5932
 -24:00:00.0000
 -28:50:38.1230
 -36:31:35.2345
 -36:47:53.3451
 -25:26:00.4561
 -44:58:11.5668
 -31:36:05.1896
 -39:43:49.8313
 -28:25:09.0129
 -30:49:27.5237
 -26:57:52.0157
 -40:45:44.8653
 -45:30:57.8205
 -28:25:09.1540
 -30:49:27.1053
 -26:57:52.4823
 -40:45:44.6583
 -45:30:57.5822
 -46:30:04.1835
 -25:56:51.5932
 -48:00:00.0000
 -52:50:38.1230
 -60:31:35.2345
 -60:47:53.3451
 -49:26:00.4562
 -68:58:11.5668
 -55:36:05.1896
 -63:43:49.8313
 -52:25:09.0129
 -54:49:27.5237
 -50:57:52.0156
 -64:45:44.8653
 -69:30:57.8205
 -52:25:09.1540
 -54:49:27.1053
 -50:57:52.4823
 -64:45:44.6583
 -69:30:57.5822
 -70:30:04.1835
 -49:56:51.5932
 -1296:00:00.00
 -1300:50:38.12
 -1308:31:35.23
 -1308:47:53.35
 -1297:26:00.46
 -1316:58:11.57
 -1303:36:05.19
 -1311:43:49.83
 -1300:25:09.01
 -1302:49:27.52
 -1298:57:52.02
 -1312:45:44.87
 -1317:30:57.82
 -1300:25:09.15
 -1302:49:27.11
 -1298:57:52.48
 -1312:45:44.66
 -1317:30:57.58
 -1318:30:04.18
 -1297:56:51.59
 -16344:00:00.0
 -16348:50:38.1
 -16356:31:35.2
 -16356:47:53.3
 -16345:26:00.5
 -16364:58:11.6
 -16351:36:05.2
 -16359:43:49.8
 -16348:25:09.0
 -16350:49:27.5
 -16346:57:52.0
 -16360:45:44.9
 -16365:30:57.8
 -16348:25:09.2
 -16350:49:27.1
 -16346:57:52.5
 -16360:45:44.7
 -16365:30:57.6
 -16366:30:04.2
 -16345:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:6213"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:6415: cat time14.5.out"
at_fn_check_prepare_trace "data-out.at:6415"
( $at_check_trace; cat time14.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00:00.00000
 04:50:38.12301
 12:31:35.23453
 12:47:53.34505
 01:26:00.45615
 20:58:11.56677
 07:36:05.18964
 15:43:49.83132
 04:25:09.01293
 06:49:27.52375
 02:57:52.01565
 16:45:44.86529
 21:30:57.82047
 04:25:09.15395
 06:49:27.10533
 02:57:52.48229
 16:45:44.65827
 21:30:57.58219
 22:30:04.18347
 01:56:51.59319
 24:00:00.00000
 28:50:38.12301
 36:31:35.23453
 36:47:53.34505
 25:26:00.45615
 44:58:11.56677
 31:36:05.18964
 39:43:49.83132
 28:25:09.01293
 30:49:27.52375
 26:57:52.01565
 40:45:44.86529
 45:30:57.82047
 28:25:09.15395
 30:49:27.10533
 26:57:52.48229
 40:45:44.65827
 45:30:57.58219
 46:30:04.18347
 25:56:51.59319
 48:00:00.00000
 52:50:38.12301
 60:31:35.23453
 60:47:53.34505
 49:26:00.45615
 68:58:11.56677
 55:36:05.18964
 63:43:49.83132
 52:25:09.01293
 54:49:27.52375
 50:57:52.01565
 64:45:44.86529
 69:30:57.82047
 52:25:09.15395
 54:49:27.10533
 50:57:52.48229
 64:45:44.65827
 69:30:57.58219
 70:30:04.18347
 49:56:51.59319
 1296:00:00.000
 1300:50:38.123
 1308:31:35.235
 1308:47:53.345
 1297:26:00.456
 1316:58:11.567
 1303:36:05.190
 1311:43:49.831
 1300:25:09.013
 1302:49:27.524
 1298:57:52.016
 1312:45:44.865
 1317:30:57.820
 1300:25:09.154
 1302:49:27.105
 1298:57:52.482
 1312:45:44.658
 1317:30:57.582
 1318:30:04.183
 1297:56:51.593
 16344:00:00.00
 16348:50:38.12
 16356:31:35.23
 16356:47:53.35
 16345:26:00.46
 16364:58:11.57
 16351:36:05.19
 16359:43:49.83
 16348:25:09.01
 16350:49:27.52
 16346:57:52.02
 16360:45:44.87
 16365:30:57.82
 16348:25:09.15
 16350:49:27.11
 16346:57:52.48
 16360:45:44.66
 16365:30:57.58
 16366:30:04.18
 16345:56:51.59
 00:00:00.00000
 -04:50:38.1230
 -12:31:35.2345
 -12:47:53.3451
 -01:26:00.4561
 -20:58:11.5668
 -07:36:05.1896
 -15:43:49.8313
 -04:25:09.0129
 -06:49:27.5238
 -02:57:52.0156
 -16:45:44.8653
 -21:30:57.8205
 -04:25:09.1539
 -06:49:27.1053
 -02:57:52.4823
 -16:45:44.6583
 -21:30:57.5822
 -22:30:04.1835
 -01:56:51.5932
 -24:00:00.0000
 -28:50:38.1230
 -36:31:35.2345
 -36:47:53.3451
 -25:26:00.4561
 -44:58:11.5668
 -31:36:05.1896
 -39:43:49.8313
 -28:25:09.0129
 -30:49:27.5237
 -26:57:52.0157
 -40:45:44.8653
 -45:30:57.8205
 -28:25:09.1540
 -30:49:27.1053
 -26:57:52.4823
 -40:45:44.6583
 -45:30:57.5822
 -46:30:04.1835
 -25:56:51.5932
 -48:00:00.0000
 -52:50:38.1230
 -60:31:35.2345
 -60:47:53.3451
 -49:26:00.4562
 -68:58:11.5668
 -55:36:05.1896
 -63:43:49.8313
 -52:25:09.0129
 -54:49:27.5237
 -50:57:52.0156
 -64:45:44.8653
 -69:30:57.8205
 -52:25:09.1540
 -54:49:27.1053
 -50:57:52.4823
 -64:45:44.6583
 -69:30:57.5822
 -70:30:04.1835
 -49:56:51.5932
 -1296:00:00.00
 -1300:50:38.12
 -1308:31:35.23
 -1308:47:53.35
 -1297:26:00.46
 -1316:58:11.57
 -1303:36:05.19
 -1311:43:49.83
 -1300:25:09.01
 -1302:49:27.52
 -1298:57:52.02
 -1312:45:44.87
 -1317:30:57.82
 -1300:25:09.15
 -1302:49:27.11
 -1298:57:52.48
 -1312:45:44.66
 -1317:30:57.58
 -1318:30:04.18
 -1297:56:51.59
 -16344:00:00.0
 -16348:50:38.1
 -16356:31:35.2
 -16356:47:53.3
 -16345:26:00.5
 -16364:58:11.6
 -16351:36:05.2
 -16359:43:49.8
 -16348:25:09.0
 -16350:49:27.5
 -16346:57:52.0
 -16360:45:44.9
 -16365:30:57.8
 -16348:25:09.2
 -16350:49:27.1
 -16346:57:52.5
 -16360:45:44.7
 -16365:30:57.6
 -16366:30:04.2
 -16345:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:6415"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:6617: cat time15.out"
at_fn_check_prepare_trace "data-out.at:6617"
( $at_check_trace; cat time15.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "        00:00:00
        04:50:38
        12:31:35
        12:47:53
        01:26:00
        20:58:11
        07:36:05
        15:43:49
        04:25:09
        06:49:27
        02:57:52
        16:45:44
        21:30:57
        04:25:09
        06:49:27
        02:57:52
        16:45:44
        21:30:57
        22:30:04
        01:56:51
        24:00:00
        28:50:38
        36:31:35
        36:47:53
        25:26:00
        44:58:11
        31:36:05
        39:43:49
        28:25:09
        30:49:27
        26:57:52
        40:45:44
        45:30:57
        28:25:09
        30:49:27
        26:57:52
        40:45:44
        45:30:57
        46:30:04
        25:56:51
        48:00:00
        52:50:38
        60:31:35
        60:47:53
        49:26:00
        68:58:11
        55:36:05
        63:43:49
        52:25:09
        54:49:27
        50:57:52
        64:45:44
        69:30:57
        52:25:09
        54:49:27
        50:57:52
        64:45:44
        69:30:57
        70:30:04
        49:56:51
      1296:00:00
      1300:50:38
      1308:31:35
      1308:47:53
      1297:26:00
      1316:58:11
      1303:36:05
      1311:43:49
      1300:25:09
      1302:49:27
      1298:57:52
      1312:45:44
      1317:30:57
      1300:25:09
      1302:49:27
      1298:57:52
      1312:45:44
      1317:30:57
      1318:30:04
      1297:56:51
     16344:00:00
     16348:50:38
     16356:31:35
     16356:47:53
     16345:26:00
     16364:58:11
     16351:36:05
     16359:43:49
     16348:25:09
     16350:49:27
     16346:57:52
     16360:45:44
     16365:30:57
     16348:25:09
     16350:49:27
     16346:57:52
     16360:45:44
     16365:30:57
     16366:30:04
     16345:56:51
        00:00:00
       -04:50:38
       -12:31:35
       -12:47:53
       -01:26:00
       -20:58:11
       -07:36:05
       -15:43:49
       -04:25:09
       -06:49:27
       -02:57:52
       -16:45:44
       -21:30:57
       -04:25:09
       -06:49:27
       -02:57:52
       -16:45:44
       -21:30:57
       -22:30:04
       -01:56:51
       -24:00:00
       -28:50:38
       -36:31:35
       -36:47:53
       -25:26:00
       -44:58:11
       -31:36:05
       -39:43:49
       -28:25:09
       -30:49:27
       -26:57:52
       -40:45:44
       -45:30:57
       -28:25:09
       -30:49:27
       -26:57:52
       -40:45:44
       -45:30:57
       -46:30:04
       -25:56:51
       -48:00:00
       -52:50:38
       -60:31:35
       -60:47:53
       -49:26:00
       -68:58:11
       -55:36:05
       -63:43:49
       -52:25:09
       -54:49:27
       -50:57:52
       -64:45:44
       -69:30:57
       -52:25:09
       -54:49:27
       -50:57:52
       -64:45:44
       -69:30:57
       -70:30:04
       -49:56:51
     -1296:00:00
     -1300:50:38
     -1308:31:35
     -1308:47:53
     -1297:26:00
     -1316:58:11
     -1303:36:05
     -1311:43:49
     -1300:25:09
     -1302:49:27
     -1298:57:52
     -1312:45:44
     -1317:30:57
     -1300:25:09
     -1302:49:27
     -1298:57:52
     -1312:45:44
     -1317:30:57
     -1318:30:04
     -1297:56:51
    -16344:00:00
    -16348:50:38
    -16356:31:35
    -16356:47:53
    -16345:26:00
    -16364:58:11
    -16351:36:05
    -16359:43:49
    -16348:25:09
    -16350:49:27
    -16346:57:52
    -16360:45:44
    -16365:30:57
    -16348:25:09
    -16350:49:27
    -16346:57:52
    -16360:45:44
    -16365:30:57
    -16366:30:04
    -16345:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:6617"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:6819: cat time15.1.out"
at_fn_check_prepare_trace "data-out.at:6819"
( $at_check_trace; cat time15.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "      00:00:00.0
      04:50:38.1
      12:31:35.2
      12:47:53.3
      01:26:00.5
      20:58:11.6
      07:36:05.2
      15:43:49.8
      04:25:09.0
      06:49:27.5
      02:57:52.0
      16:45:44.9
      21:30:57.8
      04:25:09.2
      06:49:27.1
      02:57:52.5
      16:45:44.7
      21:30:57.6
      22:30:04.2
      01:56:51.6
      24:00:00.0
      28:50:38.1
      36:31:35.2
      36:47:53.3
      25:26:00.5
      44:58:11.6
      31:36:05.2
      39:43:49.8
      28:25:09.0
      30:49:27.5
      26:57:52.0
      40:45:44.9
      45:30:57.8
      28:25:09.2
      30:49:27.1
      26:57:52.5
      40:45:44.7
      45:30:57.6
      46:30:04.2
      25:56:51.6
      48:00:00.0
      52:50:38.1
      60:31:35.2
      60:47:53.3
      49:26:00.5
      68:58:11.6
      55:36:05.2
      63:43:49.8
      52:25:09.0
      54:49:27.5
      50:57:52.0
      64:45:44.9
      69:30:57.8
      52:25:09.2
      54:49:27.1
      50:57:52.5
      64:45:44.7
      69:30:57.6
      70:30:04.2
      49:56:51.6
    1296:00:00.0
    1300:50:38.1
    1308:31:35.2
    1308:47:53.3
    1297:26:00.5
    1316:58:11.6
    1303:36:05.2
    1311:43:49.8
    1300:25:09.0
    1302:49:27.5
    1298:57:52.0
    1312:45:44.9
    1317:30:57.8
    1300:25:09.2
    1302:49:27.1
    1298:57:52.5
    1312:45:44.7
    1317:30:57.6
    1318:30:04.2
    1297:56:51.6
   16344:00:00.0
   16348:50:38.1
   16356:31:35.2
   16356:47:53.3
   16345:26:00.5
   16364:58:11.6
   16351:36:05.2
   16359:43:49.8
   16348:25:09.0
   16350:49:27.5
   16346:57:52.0
   16360:45:44.9
   16365:30:57.8
   16348:25:09.2
   16350:49:27.1
   16346:57:52.5
   16360:45:44.7
   16365:30:57.6
   16366:30:04.2
   16345:56:51.6
      00:00:00.0
     -04:50:38.1
     -12:31:35.2
     -12:47:53.3
     -01:26:00.5
     -20:58:11.6
     -07:36:05.2
     -15:43:49.8
     -04:25:09.0
     -06:49:27.5
     -02:57:52.0
     -16:45:44.9
     -21:30:57.8
     -04:25:09.2
     -06:49:27.1
     -02:57:52.5
     -16:45:44.7
     -21:30:57.6
     -22:30:04.2
     -01:56:51.6
     -24:00:00.0
     -28:50:38.1
     -36:31:35.2
     -36:47:53.3
     -25:26:00.5
     -44:58:11.6
     -31:36:05.2
     -39:43:49.8
     -28:25:09.0
     -30:49:27.5
     -26:57:52.0
     -40:45:44.9
     -45:30:57.8
     -28:25:09.2
     -30:49:27.1
     -26:57:52.5
     -40:45:44.7
     -45:30:57.6
     -46:30:04.2
     -25:56:51.6
     -48:00:00.0
     -52:50:38.1
     -60:31:35.2
     -60:47:53.3
     -49:26:00.5
     -68:58:11.6
     -55:36:05.2
     -63:43:49.8
     -52:25:09.0
     -54:49:27.5
     -50:57:52.0
     -64:45:44.9
     -69:30:57.8
     -52:25:09.2
     -54:49:27.1
     -50:57:52.5
     -64:45:44.7
     -69:30:57.6
     -70:30:04.2
     -49:56:51.6
   -1296:00:00.0
   -1300:50:38.1
   -1308:31:35.2
   -1308:47:53.3
   -1297:26:00.5
   -1316:58:11.6
   -1303:36:05.2
   -1311:43:49.8
   -1300:25:09.0
   -1302:49:27.5
   -1298:57:52.0
   -1312:45:44.9
   -1317:30:57.8
   -1300:25:09.2
   -1302:49:27.1
   -1298:57:52.5
   -1312:45:44.7
   -1317:30:57.6
   -1318:30:04.2
   -1297:56:51.6
  -16344:00:00.0
  -16348:50:38.1
  -16356:31:35.2
  -16356:47:53.3
  -16345:26:00.5
  -16364:58:11.6
  -16351:36:05.2
  -16359:43:49.8
  -16348:25:09.0
  -16350:49:27.5
  -16346:57:52.0
  -16360:45:44.9
  -16365:30:57.8
  -16348:25:09.2
  -16350:49:27.1
  -16346:57:52.5
  -16360:45:44.7
  -16365:30:57.6
  -16366:30:04.2
  -16345:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:6819"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:7021: cat time15.2.out"
at_fn_check_prepare_trace "data-out.at:7021"
( $at_check_trace; cat time15.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     00:00:00.00
     04:50:38.12
     12:31:35.23
     12:47:53.35
     01:26:00.46
     20:58:11.57
     07:36:05.19
     15:43:49.83
     04:25:09.01
     06:49:27.52
     02:57:52.02
     16:45:44.87
     21:30:57.82
     04:25:09.15
     06:49:27.11
     02:57:52.48
     16:45:44.66
     21:30:57.58
     22:30:04.18
     01:56:51.59
     24:00:00.00
     28:50:38.12
     36:31:35.23
     36:47:53.35
     25:26:00.46
     44:58:11.57
     31:36:05.19
     39:43:49.83
     28:25:09.01
     30:49:27.52
     26:57:52.02
     40:45:44.87
     45:30:57.82
     28:25:09.15
     30:49:27.11
     26:57:52.48
     40:45:44.66
     45:30:57.58
     46:30:04.18
     25:56:51.59
     48:00:00.00
     52:50:38.12
     60:31:35.23
     60:47:53.35
     49:26:00.46
     68:58:11.57
     55:36:05.19
     63:43:49.83
     52:25:09.01
     54:49:27.52
     50:57:52.02
     64:45:44.87
     69:30:57.82
     52:25:09.15
     54:49:27.11
     50:57:52.48
     64:45:44.66
     69:30:57.58
     70:30:04.18
     49:56:51.59
   1296:00:00.00
   1300:50:38.12
   1308:31:35.23
   1308:47:53.35
   1297:26:00.46
   1316:58:11.57
   1303:36:05.19
   1311:43:49.83
   1300:25:09.01
   1302:49:27.52
   1298:57:52.02
   1312:45:44.87
   1317:30:57.82
   1300:25:09.15
   1302:49:27.11
   1298:57:52.48
   1312:45:44.66
   1317:30:57.58
   1318:30:04.18
   1297:56:51.59
  16344:00:00.00
  16348:50:38.12
  16356:31:35.23
  16356:47:53.35
  16345:26:00.46
  16364:58:11.57
  16351:36:05.19
  16359:43:49.83
  16348:25:09.01
  16350:49:27.52
  16346:57:52.02
  16360:45:44.87
  16365:30:57.82
  16348:25:09.15
  16350:49:27.11
  16346:57:52.48
  16360:45:44.66
  16365:30:57.58
  16366:30:04.18
  16345:56:51.59
     00:00:00.00
    -04:50:38.12
    -12:31:35.23
    -12:47:53.35
    -01:26:00.46
    -20:58:11.57
    -07:36:05.19
    -15:43:49.83
    -04:25:09.01
    -06:49:27.52
    -02:57:52.02
    -16:45:44.87
    -21:30:57.82
    -04:25:09.15
    -06:49:27.11
    -02:57:52.48
    -16:45:44.66
    -21:30:57.58
    -22:30:04.18
    -01:56:51.59
    -24:00:00.00
    -28:50:38.12
    -36:31:35.23
    -36:47:53.35
    -25:26:00.46
    -44:58:11.57
    -31:36:05.19
    -39:43:49.83
    -28:25:09.01
    -30:49:27.52
    -26:57:52.02
    -40:45:44.87
    -45:30:57.82
    -28:25:09.15
    -30:49:27.11
    -26:57:52.48
    -40:45:44.66
    -45:30:57.58
    -46:30:04.18
    -25:56:51.59
    -48:00:00.00
    -52:50:38.12
    -60:31:35.23
    -60:47:53.35
    -49:26:00.46
    -68:58:11.57
    -55:36:05.19
    -63:43:49.83
    -52:25:09.01
    -54:49:27.52
    -50:57:52.02
    -64:45:44.87
    -69:30:57.82
    -52:25:09.15
    -54:49:27.11
    -50:57:52.48
    -64:45:44.66
    -69:30:57.58
    -70:30:04.18
    -49:56:51.59
  -1296:00:00.00
  -1300:50:38.12
  -1308:31:35.23
  -1308:47:53.35
  -1297:26:00.46
  -1316:58:11.57
  -1303:36:05.19
  -1311:43:49.83
  -1300:25:09.01
  -1302:49:27.52
  -1298:57:52.02
  -1312:45:44.87
  -1317:30:57.82
  -1300:25:09.15
  -1302:49:27.11
  -1298:57:52.48
  -1312:45:44.66
  -1317:30:57.58
  -1318:30:04.18
  -1297:56:51.59
 -16344:00:00.00
 -16348:50:38.12
 -16356:31:35.23
 -16356:47:53.35
 -16345:26:00.46
 -16364:58:11.57
 -16351:36:05.19
 -16359:43:49.83
 -16348:25:09.01
 -16350:49:27.52
 -16346:57:52.02
 -16360:45:44.87
 -16365:30:57.82
 -16348:25:09.15
 -16350:49:27.11
 -16346:57:52.48
 -16360:45:44.66
 -16365:30:57.58
 -16366:30:04.18
 -16345:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:7021"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:7223: cat time15.3.out"
at_fn_check_prepare_trace "data-out.at:7223"
( $at_check_trace; cat time15.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    00:00:00.000
    04:50:38.123
    12:31:35.235
    12:47:53.345
    01:26:00.456
    20:58:11.567
    07:36:05.190
    15:43:49.831
    04:25:09.013
    06:49:27.524
    02:57:52.016
    16:45:44.865
    21:30:57.820
    04:25:09.154
    06:49:27.105
    02:57:52.482
    16:45:44.658
    21:30:57.582
    22:30:04.183
    01:56:51.593
    24:00:00.000
    28:50:38.123
    36:31:35.235
    36:47:53.345
    25:26:00.456
    44:58:11.567
    31:36:05.190
    39:43:49.831
    28:25:09.013
    30:49:27.524
    26:57:52.016
    40:45:44.865
    45:30:57.820
    28:25:09.154
    30:49:27.105
    26:57:52.482
    40:45:44.658
    45:30:57.582
    46:30:04.183
    25:56:51.593
    48:00:00.000
    52:50:38.123
    60:31:35.235
    60:47:53.345
    49:26:00.456
    68:58:11.567
    55:36:05.190
    63:43:49.831
    52:25:09.013
    54:49:27.524
    50:57:52.016
    64:45:44.865
    69:30:57.820
    52:25:09.154
    54:49:27.105
    50:57:52.482
    64:45:44.658
    69:30:57.582
    70:30:04.183
    49:56:51.593
  1296:00:00.000
  1300:50:38.123
  1308:31:35.235
  1308:47:53.345
  1297:26:00.456
  1316:58:11.567
  1303:36:05.190
  1311:43:49.831
  1300:25:09.013
  1302:49:27.524
  1298:57:52.016
  1312:45:44.865
  1317:30:57.820
  1300:25:09.154
  1302:49:27.105
  1298:57:52.482
  1312:45:44.658
  1317:30:57.582
  1318:30:04.183
  1297:56:51.593
 16344:00:00.000
 16348:50:38.123
 16356:31:35.235
 16356:47:53.345
 16345:26:00.456
 16364:58:11.567
 16351:36:05.190
 16359:43:49.831
 16348:25:09.013
 16350:49:27.524
 16346:57:52.016
 16360:45:44.865
 16365:30:57.820
 16348:25:09.154
 16350:49:27.105
 16346:57:52.482
 16360:45:44.658
 16365:30:57.582
 16366:30:04.183
 16345:56:51.593
    00:00:00.000
   -04:50:38.123
   -12:31:35.235
   -12:47:53.345
   -01:26:00.456
   -20:58:11.567
   -07:36:05.190
   -15:43:49.831
   -04:25:09.013
   -06:49:27.524
   -02:57:52.016
   -16:45:44.865
   -21:30:57.820
   -04:25:09.154
   -06:49:27.105
   -02:57:52.482
   -16:45:44.658
   -21:30:57.582
   -22:30:04.183
   -01:56:51.593
   -24:00:00.000
   -28:50:38.123
   -36:31:35.235
   -36:47:53.345
   -25:26:00.456
   -44:58:11.567
   -31:36:05.190
   -39:43:49.831
   -28:25:09.013
   -30:49:27.524
   -26:57:52.016
   -40:45:44.865
   -45:30:57.820
   -28:25:09.154
   -30:49:27.105
   -26:57:52.482
   -40:45:44.658
   -45:30:57.582
   -46:30:04.183
   -25:56:51.593
   -48:00:00.000
   -52:50:38.123
   -60:31:35.235
   -60:47:53.345
   -49:26:00.456
   -68:58:11.567
   -55:36:05.190
   -63:43:49.831
   -52:25:09.013
   -54:49:27.524
   -50:57:52.016
   -64:45:44.865
   -69:30:57.820
   -52:25:09.154
   -54:49:27.105
   -50:57:52.482
   -64:45:44.658
   -69:30:57.582
   -70:30:04.183
   -49:56:51.593
 -1296:00:00.000
 -1300:50:38.123
 -1308:31:35.235
 -1308:47:53.345
 -1297:26:00.456
 -1316:58:11.567
 -1303:36:05.190
 -1311:43:49.831
 -1300:25:09.013
 -1302:49:27.524
 -1298:57:52.016
 -1312:45:44.865
 -1317:30:57.820
 -1300:25:09.154
 -1302:49:27.105
 -1298:57:52.482
 -1312:45:44.658
 -1317:30:57.582
 -1318:30:04.183
 -1297:56:51.593
 -16344:00:00.00
 -16348:50:38.12
 -16356:31:35.23
 -16356:47:53.35
 -16345:26:00.46
 -16364:58:11.57
 -16351:36:05.19
 -16359:43:49.83
 -16348:25:09.01
 -16350:49:27.52
 -16346:57:52.02
 -16360:45:44.87
 -16365:30:57.82
 -16348:25:09.15
 -16350:49:27.11
 -16346:57:52.48
 -16360:45:44.66
 -16365:30:57.58
 -16366:30:04.18
 -16345:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:7223"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:7425: cat time15.4.out"
at_fn_check_prepare_trace "data-out.at:7425"
( $at_check_trace; cat time15.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00:00.0000
   04:50:38.1230
   12:31:35.2345
   12:47:53.3451
   01:26:00.4561
   20:58:11.5668
   07:36:05.1896
   15:43:49.8313
   04:25:09.0129
   06:49:27.5238
   02:57:52.0156
   16:45:44.8653
   21:30:57.8205
   04:25:09.1539
   06:49:27.1053
   02:57:52.4823
   16:45:44.6583
   21:30:57.5822
   22:30:04.1835
   01:56:51.5932
   24:00:00.0000
   28:50:38.1230
   36:31:35.2345
   36:47:53.3451
   25:26:00.4561
   44:58:11.5668
   31:36:05.1896
   39:43:49.8313
   28:25:09.0129
   30:49:27.5237
   26:57:52.0157
   40:45:44.8653
   45:30:57.8205
   28:25:09.1540
   30:49:27.1053
   26:57:52.4823
   40:45:44.6583
   45:30:57.5822
   46:30:04.1835
   25:56:51.5932
   48:00:00.0000
   52:50:38.1230
   60:31:35.2345
   60:47:53.3451
   49:26:00.4562
   68:58:11.5668
   55:36:05.1896
   63:43:49.8313
   52:25:09.0129
   54:49:27.5237
   50:57:52.0156
   64:45:44.8653
   69:30:57.8205
   52:25:09.1540
   54:49:27.1053
   50:57:52.4823
   64:45:44.6583
   69:30:57.5822
   70:30:04.1835
   49:56:51.5932
 1296:00:00.0000
 1300:50:38.1230
 1308:31:35.2345
 1308:47:53.3450
 1297:26:00.4561
 1316:58:11.5668
 1303:36:05.1896
 1311:43:49.8313
 1300:25:09.0129
 1302:49:27.5237
 1298:57:52.0157
 1312:45:44.8653
 1317:30:57.8205
 1300:25:09.1540
 1302:49:27.1053
 1298:57:52.4823
 1312:45:44.6583
 1317:30:57.5822
 1318:30:04.1835
 1297:56:51.5932
 16344:00:00.000
 16348:50:38.123
 16356:31:35.235
 16356:47:53.345
 16345:26:00.456
 16364:58:11.567
 16351:36:05.190
 16359:43:49.831
 16348:25:09.013
 16350:49:27.524
 16346:57:52.016
 16360:45:44.865
 16365:30:57.820
 16348:25:09.154
 16350:49:27.105
 16346:57:52.482
 16360:45:44.658
 16365:30:57.582
 16366:30:04.183
 16345:56:51.593
   00:00:00.0000
  -04:50:38.1230
  -12:31:35.2345
  -12:47:53.3451
  -01:26:00.4561
  -20:58:11.5668
  -07:36:05.1896
  -15:43:49.8313
  -04:25:09.0129
  -06:49:27.5238
  -02:57:52.0156
  -16:45:44.8653
  -21:30:57.8205
  -04:25:09.1539
  -06:49:27.1053
  -02:57:52.4823
  -16:45:44.6583
  -21:30:57.5822
  -22:30:04.1835
  -01:56:51.5932
  -24:00:00.0000
  -28:50:38.1230
  -36:31:35.2345
  -36:47:53.3451
  -25:26:00.4561
  -44:58:11.5668
  -31:36:05.1896
  -39:43:49.8313
  -28:25:09.0129
  -30:49:27.5237
  -26:57:52.0157
  -40:45:44.8653
  -45:30:57.8205
  -28:25:09.1540
  -30:49:27.1053
  -26:57:52.4823
  -40:45:44.6583
  -45:30:57.5822
  -46:30:04.1835
  -25:56:51.5932
  -48:00:00.0000
  -52:50:38.1230
  -60:31:35.2345
  -60:47:53.3451
  -49:26:00.4562
  -68:58:11.5668
  -55:36:05.1896
  -63:43:49.8313
  -52:25:09.0129
  -54:49:27.5237
  -50:57:52.0156
  -64:45:44.8653
  -69:30:57.8205
  -52:25:09.1540
  -54:49:27.1053
  -50:57:52.4823
  -64:45:44.6583
  -69:30:57.5822
  -70:30:04.1835
  -49:56:51.5932
 -1296:00:00.000
 -1300:50:38.123
 -1308:31:35.235
 -1308:47:53.345
 -1297:26:00.456
 -1316:58:11.567
 -1303:36:05.190
 -1311:43:49.831
 -1300:25:09.013
 -1302:49:27.524
 -1298:57:52.016
 -1312:45:44.865
 -1317:30:57.820
 -1300:25:09.154
 -1302:49:27.105
 -1298:57:52.482
 -1312:45:44.658
 -1317:30:57.582
 -1318:30:04.183
 -1297:56:51.593
 -16344:00:00.00
 -16348:50:38.12
 -16356:31:35.23
 -16356:47:53.35
 -16345:26:00.46
 -16364:58:11.57
 -16351:36:05.19
 -16359:43:49.83
 -16348:25:09.01
 -16350:49:27.52
 -16346:57:52.02
 -16360:45:44.87
 -16365:30:57.82
 -16348:25:09.15
 -16350:49:27.11
 -16346:57:52.48
 -16360:45:44.66
 -16365:30:57.58
 -16366:30:04.18
 -16345:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:7425"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:7627: cat time15.5.out"
at_fn_check_prepare_trace "data-out.at:7627"
( $at_check_trace; cat time15.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00:00.00000
  04:50:38.12301
  12:31:35.23453
  12:47:53.34505
  01:26:00.45615
  20:58:11.56677
  07:36:05.18964
  15:43:49.83132
  04:25:09.01293
  06:49:27.52375
  02:57:52.01565
  16:45:44.86529
  21:30:57.82047
  04:25:09.15395
  06:49:27.10533
  02:57:52.48229
  16:45:44.65827
  21:30:57.58219
  22:30:04.18347
  01:56:51.59319
  24:00:00.00000
  28:50:38.12301
  36:31:35.23453
  36:47:53.34505
  25:26:00.45615
  44:58:11.56677
  31:36:05.18964
  39:43:49.83132
  28:25:09.01293
  30:49:27.52375
  26:57:52.01565
  40:45:44.86529
  45:30:57.82047
  28:25:09.15395
  30:49:27.10533
  26:57:52.48229
  40:45:44.65827
  45:30:57.58219
  46:30:04.18347
  25:56:51.59319
  48:00:00.00000
  52:50:38.12301
  60:31:35.23453
  60:47:53.34505
  49:26:00.45615
  68:58:11.56677
  55:36:05.18964
  63:43:49.83132
  52:25:09.01293
  54:49:27.52375
  50:57:52.01565
  64:45:44.86529
  69:30:57.82047
  52:25:09.15395
  54:49:27.10533
  50:57:52.48229
  64:45:44.65827
  69:30:57.58219
  70:30:04.18347
  49:56:51.59319
 1296:00:00.0000
 1300:50:38.1230
 1308:31:35.2345
 1308:47:53.3450
 1297:26:00.4561
 1316:58:11.5668
 1303:36:05.1896
 1311:43:49.8313
 1300:25:09.0129
 1302:49:27.5237
 1298:57:52.0157
 1312:45:44.8653
 1317:30:57.8205
 1300:25:09.1540
 1302:49:27.1053
 1298:57:52.4823
 1312:45:44.6583
 1317:30:57.5822
 1318:30:04.1835
 1297:56:51.5932
 16344:00:00.000
 16348:50:38.123
 16356:31:35.235
 16356:47:53.345
 16345:26:00.456
 16364:58:11.567
 16351:36:05.190
 16359:43:49.831
 16348:25:09.013
 16350:49:27.524
 16346:57:52.016
 16360:45:44.865
 16365:30:57.820
 16348:25:09.154
 16350:49:27.105
 16346:57:52.482
 16360:45:44.658
 16365:30:57.582
 16366:30:04.183
 16345:56:51.593
  00:00:00.00000
 -04:50:38.12301
 -12:31:35.23453
 -12:47:53.34505
 -01:26:00.45615
 -20:58:11.56677
 -07:36:05.18964
 -15:43:49.83132
 -04:25:09.01293
 -06:49:27.52375
 -02:57:52.01565
 -16:45:44.86529
 -21:30:57.82047
 -04:25:09.15395
 -06:49:27.10533
 -02:57:52.48229
 -16:45:44.65827
 -21:30:57.58219
 -22:30:04.18347
 -01:56:51.59319
 -24:00:00.00000
 -28:50:38.12301
 -36:31:35.23453
 -36:47:53.34505
 -25:26:00.45615
 -44:58:11.56677
 -31:36:05.18964
 -39:43:49.83132
 -28:25:09.01293
 -30:49:27.52375
 -26:57:52.01565
 -40:45:44.86529
 -45:30:57.82047
 -28:25:09.15395
 -30:49:27.10533
 -26:57:52.48229
 -40:45:44.65827
 -45:30:57.58219
 -46:30:04.18347
 -25:56:51.59319
 -48:00:00.00000
 -52:50:38.12301
 -60:31:35.23453
 -60:47:53.34505
 -49:26:00.45615
 -68:58:11.56677
 -55:36:05.18964
 -63:43:49.83132
 -52:25:09.01293
 -54:49:27.52375
 -50:57:52.01565
 -64:45:44.86529
 -69:30:57.82047
 -52:25:09.15395
 -54:49:27.10533
 -50:57:52.48229
 -64:45:44.65827
 -69:30:57.58219
 -70:30:04.18347
 -49:56:51.59319
 -1296:00:00.000
 -1300:50:38.123
 -1308:31:35.235
 -1308:47:53.345
 -1297:26:00.456
 -1316:58:11.567
 -1303:36:05.190
 -1311:43:49.831
 -1300:25:09.013
 -1302:49:27.524
 -1298:57:52.016
 -1312:45:44.865
 -1317:30:57.820
 -1300:25:09.154
 -1302:49:27.105
 -1298:57:52.482
 -1312:45:44.658
 -1317:30:57.582
 -1318:30:04.183
 -1297:56:51.593
 -16344:00:00.00
 -16348:50:38.12
 -16356:31:35.23
 -16356:47:53.35
 -16345:26:00.46
 -16364:58:11.57
 -16351:36:05.19
 -16359:43:49.83
 -16348:25:09.01
 -16350:49:27.52
 -16346:57:52.02
 -16360:45:44.87
 -16365:30:57.82
 -16348:25:09.15
 -16350:49:27.11
 -16346:57:52.48
 -16360:45:44.66
 -16365:30:57.58
 -16366:30:04.18
 -16345:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:7627"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:7829: cat time15.6.out"
at_fn_check_prepare_trace "data-out.at:7829"
( $at_check_trace; cat time15.6.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00:00.000000
 04:50:38.123010
 12:31:35.234530
 12:47:53.345050
 01:26:00.456150
 20:58:11.566770
 07:36:05.189640
 15:43:49.831320
 04:25:09.012930
 06:49:27.523750
 02:57:52.015650
 16:45:44.865290
 21:30:57.820470
 04:25:09.153950
 06:49:27.105330
 02:57:52.482290
 16:45:44.658270
 21:30:57.582190
 22:30:04.183470
 01:56:51.593190
 24:00:00.000000
 28:50:38.123010
 36:31:35.234530
 36:47:53.345050
 25:26:00.456150
 44:58:11.566770
 31:36:05.189640
 39:43:49.831320
 28:25:09.012930
 30:49:27.523750
 26:57:52.015650
 40:45:44.865290
 45:30:57.820470
 28:25:09.153950
 30:49:27.105330
 26:57:52.482290
 40:45:44.658270
 45:30:57.582190
 46:30:04.183470
 25:56:51.593190
 48:00:00.000000
 52:50:38.123010
 60:31:35.234530
 60:47:53.345050
 49:26:00.456150
 68:58:11.566770
 55:36:05.189640
 63:43:49.831320
 52:25:09.012930
 54:49:27.523750
 50:57:52.015650
 64:45:44.865290
 69:30:57.820470
 52:25:09.153950
 54:49:27.105330
 50:57:52.482290
 64:45:44.658270
 69:30:57.582190
 70:30:04.183470
 49:56:51.593190
 1296:00:00.0000
 1300:50:38.1230
 1308:31:35.2345
 1308:47:53.3450
 1297:26:00.4561
 1316:58:11.5668
 1303:36:05.1896
 1311:43:49.8313
 1300:25:09.0129
 1302:49:27.5237
 1298:57:52.0157
 1312:45:44.8653
 1317:30:57.8205
 1300:25:09.1540
 1302:49:27.1053
 1298:57:52.4823
 1312:45:44.6583
 1317:30:57.5822
 1318:30:04.1835
 1297:56:51.5932
 16344:00:00.000
 16348:50:38.123
 16356:31:35.235
 16356:47:53.345
 16345:26:00.456
 16364:58:11.567
 16351:36:05.190
 16359:43:49.831
 16348:25:09.013
 16350:49:27.524
 16346:57:52.016
 16360:45:44.865
 16365:30:57.820
 16348:25:09.154
 16350:49:27.105
 16346:57:52.482
 16360:45:44.658
 16365:30:57.582
 16366:30:04.183
 16345:56:51.593
 00:00:00.000000
 -04:50:38.12301
 -12:31:35.23453
 -12:47:53.34505
 -01:26:00.45615
 -20:58:11.56677
 -07:36:05.18964
 -15:43:49.83132
 -04:25:09.01293
 -06:49:27.52375
 -02:57:52.01565
 -16:45:44.86529
 -21:30:57.82047
 -04:25:09.15395
 -06:49:27.10533
 -02:57:52.48229
 -16:45:44.65827
 -21:30:57.58219
 -22:30:04.18347
 -01:56:51.59319
 -24:00:00.00000
 -28:50:38.12301
 -36:31:35.23453
 -36:47:53.34505
 -25:26:00.45615
 -44:58:11.56677
 -31:36:05.18964
 -39:43:49.83132
 -28:25:09.01293
 -30:49:27.52375
 -26:57:52.01565
 -40:45:44.86529
 -45:30:57.82047
 -28:25:09.15395
 -30:49:27.10533
 -26:57:52.48229
 -40:45:44.65827
 -45:30:57.58219
 -46:30:04.18347
 -25:56:51.59319
 -48:00:00.00000
 -52:50:38.12301
 -60:31:35.23453
 -60:47:53.34505
 -49:26:00.45615
 -68:58:11.56677
 -55:36:05.18964
 -63:43:49.83132
 -52:25:09.01293
 -54:49:27.52375
 -50:57:52.01565
 -64:45:44.86529
 -69:30:57.82047
 -52:25:09.15395
 -54:49:27.10533
 -50:57:52.48229
 -64:45:44.65827
 -69:30:57.58219
 -70:30:04.18347
 -49:56:51.59319
 -1296:00:00.000
 -1300:50:38.123
 -1308:31:35.235
 -1308:47:53.345
 -1297:26:00.456
 -1316:58:11.567
 -1303:36:05.190
 -1311:43:49.831
 -1300:25:09.013
 -1302:49:27.524
 -1298:57:52.016
 -1312:45:44.865
 -1317:30:57.820
 -1300:25:09.154
 -1302:49:27.105
 -1298:57:52.482
 -1312:45:44.658
 -1317:30:57.582
 -1318:30:04.183
 -1297:56:51.593
 -16344:00:00.00
 -16348:50:38.12
 -16356:31:35.23
 -16356:47:53.35
 -16345:26:00.46
 -16364:58:11.57
 -16351:36:05.19
 -16359:43:49.83
 -16348:25:09.01
 -16350:49:27.52
 -16346:57:52.02
 -16360:45:44.87
 -16365:30:57.82
 -16348:25:09.15
 -16350:49:27.11
 -16346:57:52.48
 -16360:45:44.66
 -16365:30:57.58
 -16366:30:04.18
 -16345:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:7829"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:8031: cat dtime8.out"
at_fn_check_prepare_trace "data-out.at:8031"
( $at_check_trace; cat dtime8.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  0 00:00
  0 04:50
  0 12:31
  0 12:47
  0 01:26
  0 20:58
  0 07:36
  0 15:43
  0 04:25
  0 06:49
  0 02:57
  0 16:45
  0 21:30
  0 04:25
  0 06:49
  0 02:57
  0 16:45
  0 21:30
  0 22:30
  0 01:56
  1 00:00
  1 04:50
  1 12:31
  1 12:47
  1 01:26
  1 20:58
  1 07:36
  1 15:43
  1 04:25
  1 06:49
  1 02:57
  1 16:45
  1 21:30
  1 04:25
  1 06:49
  1 02:57
  1 16:45
  1 21:30
  1 22:30
  1 01:56
  2 00:00
  2 04:50
  2 12:31
  2 12:47
  2 01:26
  2 20:58
  2 07:36
  2 15:43
  2 04:25
  2 06:49
  2 02:57
  2 16:45
  2 21:30
  2 04:25
  2 06:49
  2 02:57
  2 16:45
  2 21:30
  2 22:30
  2 01:56
 54 00:00
 54 04:50
 54 12:31
 54 12:47
 54 01:26
 54 20:58
 54 07:36
 54 15:43
 54 04:25
 54 06:49
 54 02:57
 54 16:45
 54 21:30
 54 04:25
 54 06:49
 54 02:57
 54 16:45
 54 21:30
 54 22:30
 54 01:56
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
  0 00:00
 -0 04:50
 -0 12:31
 -0 12:47
 -0 01:26
 -0 20:58
 -0 07:36
 -0 15:43
 -0 04:25
 -0 06:49
 -0 02:57
 -0 16:45
 -0 21:30
 -0 04:25
 -0 06:49
 -0 02:57
 -0 16:45
 -0 21:30
 -0 22:30
 -0 01:56
 -1 00:00
 -1 04:50
 -1 12:31
 -1 12:47
 -1 01:26
 -1 20:58
 -1 07:36
 -1 15:43
 -1 04:25
 -1 06:49
 -1 02:57
 -1 16:45
 -1 21:30
 -1 04:25
 -1 06:49
 -1 02:57
 -1 16:45
 -1 21:30
 -1 22:30
 -1 01:56
 -2 00:00
 -2 04:50
 -2 12:31
 -2 12:47
 -2 01:26
 -2 20:58
 -2 07:36
 -2 15:43
 -2 04:25
 -2 06:49
 -2 02:57
 -2 16:45
 -2 21:30
 -2 04:25
 -2 06:49
 -2 02:57
 -2 16:45
 -2 21:30
 -2 22:30
 -2 01:56
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:8031"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:8233: cat dtime9.out"
at_fn_check_prepare_trace "data-out.at:8233"
( $at_check_trace; cat dtime9.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   0 00:00
   0 04:50
   0 12:31
   0 12:47
   0 01:26
   0 20:58
   0 07:36
   0 15:43
   0 04:25
   0 06:49
   0 02:57
   0 16:45
   0 21:30
   0 04:25
   0 06:49
   0 02:57
   0 16:45
   0 21:30
   0 22:30
   0 01:56
   1 00:00
   1 04:50
   1 12:31
   1 12:47
   1 01:26
   1 20:58
   1 07:36
   1 15:43
   1 04:25
   1 06:49
   1 02:57
   1 16:45
   1 21:30
   1 04:25
   1 06:49
   1 02:57
   1 16:45
   1 21:30
   1 22:30
   1 01:56
   2 00:00
   2 04:50
   2 12:31
   2 12:47
   2 01:26
   2 20:58
   2 07:36
   2 15:43
   2 04:25
   2 06:49
   2 02:57
   2 16:45
   2 21:30
   2 04:25
   2 06:49
   2 02:57
   2 16:45
   2 21:30
   2 22:30
   2 01:56
  54 00:00
  54 04:50
  54 12:31
  54 12:47
  54 01:26
  54 20:58
  54 07:36
  54 15:43
  54 04:25
  54 06:49
  54 02:57
  54 16:45
  54 21:30
  54 04:25
  54 06:49
  54 02:57
  54 16:45
  54 21:30
  54 22:30
  54 01:56
 681 00:00
 681 04:50
 681 12:31
 681 12:47
 681 01:26
 681 20:58
 681 07:36
 681 15:43
 681 04:25
 681 06:49
 681 02:57
 681 16:45
 681 21:30
 681 04:25
 681 06:49
 681 02:57
 681 16:45
 681 21:30
 681 22:30
 681 01:56
   0 00:00
  -0 04:50
  -0 12:31
  -0 12:47
  -0 01:26
  -0 20:58
  -0 07:36
  -0 15:43
  -0 04:25
  -0 06:49
  -0 02:57
  -0 16:45
  -0 21:30
  -0 04:25
  -0 06:49
  -0 02:57
  -0 16:45
  -0 21:30
  -0 22:30
  -0 01:56
  -1 00:00
  -1 04:50
  -1 12:31
  -1 12:47
  -1 01:26
  -1 20:58
  -1 07:36
  -1 15:43
  -1 04:25
  -1 06:49
  -1 02:57
  -1 16:45
  -1 21:30
  -1 04:25
  -1 06:49
  -1 02:57
  -1 16:45
  -1 21:30
  -1 22:30
  -1 01:56
  -2 00:00
  -2 04:50
  -2 12:31
  -2 12:47
  -2 01:26
  -2 20:58
  -2 07:36
  -2 15:43
  -2 04:25
  -2 06:49
  -2 02:57
  -2 16:45
  -2 21:30
  -2 04:25
  -2 06:49
  -2 02:57
  -2 16:45
  -2 21:30
  -2 22:30
  -2 01:56
 -54 00:00
 -54 04:50
 -54 12:31
 -54 12:47
 -54 01:26
 -54 20:58
 -54 07:36
 -54 15:43
 -54 04:25
 -54 06:49
 -54 02:57
 -54 16:45
 -54 21:30
 -54 04:25
 -54 06:49
 -54 02:57
 -54 16:45
 -54 21:30
 -54 22:30
 -54 01:56
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:8233"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:8435: cat dtime10.out"
at_fn_check_prepare_trace "data-out.at:8435"
( $at_check_trace; cat dtime10.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 0 00:00:00
 0 04:50:38
 0 12:31:35
 0 12:47:53
 0 01:26:00
 0 20:58:11
 0 07:36:05
 0 15:43:49
 0 04:25:09
 0 06:49:27
 0 02:57:52
 0 16:45:44
 0 21:30:57
 0 04:25:09
 0 06:49:27
 0 02:57:52
 0 16:45:44
 0 21:30:57
 0 22:30:04
 0 01:56:51
 1 00:00:00
 1 04:50:38
 1 12:31:35
 1 12:47:53
 1 01:26:00
 1 20:58:11
 1 07:36:05
 1 15:43:49
 1 04:25:09
 1 06:49:27
 1 02:57:52
 1 16:45:44
 1 21:30:57
 1 04:25:09
 1 06:49:27
 1 02:57:52
 1 16:45:44
 1 21:30:57
 1 22:30:04
 1 01:56:51
 2 00:00:00
 2 04:50:38
 2 12:31:35
 2 12:47:53
 2 01:26:00
 2 20:58:11
 2 07:36:05
 2 15:43:49
 2 04:25:09
 2 06:49:27
 2 02:57:52
 2 16:45:44
 2 21:30:57
 2 04:25:09
 2 06:49:27
 2 02:57:52
 2 16:45:44
 2 21:30:57
 2 22:30:04
 2 01:56:51
   54 00:00
   54 04:50
   54 12:31
   54 12:47
   54 01:26
   54 20:58
   54 07:36
   54 15:43
   54 04:25
   54 06:49
   54 02:57
   54 16:45
   54 21:30
   54 04:25
   54 06:49
   54 02:57
   54 16:45
   54 21:30
   54 22:30
   54 01:56
  681 00:00
  681 04:50
  681 12:31
  681 12:47
  681 01:26
  681 20:58
  681 07:36
  681 15:43
  681 04:25
  681 06:49
  681 02:57
  681 16:45
  681 21:30
  681 04:25
  681 06:49
  681 02:57
  681 16:45
  681 21:30
  681 22:30
  681 01:56
 0 00:00:00
   -0 04:50
   -0 12:31
   -0 12:47
   -0 01:26
   -0 20:58
   -0 07:36
   -0 15:43
   -0 04:25
   -0 06:49
   -0 02:57
   -0 16:45
   -0 21:30
   -0 04:25
   -0 06:49
   -0 02:57
   -0 16:45
   -0 21:30
   -0 22:30
   -0 01:56
   -1 00:00
   -1 04:50
   -1 12:31
   -1 12:47
   -1 01:26
   -1 20:58
   -1 07:36
   -1 15:43
   -1 04:25
   -1 06:49
   -1 02:57
   -1 16:45
   -1 21:30
   -1 04:25
   -1 06:49
   -1 02:57
   -1 16:45
   -1 21:30
   -1 22:30
   -1 01:56
   -2 00:00
   -2 04:50
   -2 12:31
   -2 12:47
   -2 01:26
   -2 20:58
   -2 07:36
   -2 15:43
   -2 04:25
   -2 06:49
   -2 02:57
   -2 16:45
   -2 21:30
   -2 04:25
   -2 06:49
   -2 02:57
   -2 16:45
   -2 21:30
   -2 22:30
   -2 01:56
  -54 00:00
  -54 04:50
  -54 12:31
  -54 12:47
  -54 01:26
  -54 20:58
  -54 07:36
  -54 15:43
  -54 04:25
  -54 06:49
  -54 02:57
  -54 16:45
  -54 21:30
  -54 04:25
  -54 06:49
  -54 02:57
  -54 16:45
  -54 21:30
  -54 22:30
  -54 01:56
 -681 00:00
 -681 04:50
 -681 12:31
 -681 12:47
 -681 01:26
 -681 20:58
 -681 07:36
 -681 15:43
 -681 04:25
 -681 06:49
 -681 02:57
 -681 16:45
 -681 21:30
 -681 04:25
 -681 06:49
 -681 02:57
 -681 16:45
 -681 21:30
 -681 22:30
 -681 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:8435"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:8637: cat dtime11.out"
at_fn_check_prepare_trace "data-out.at:8637"
( $at_check_trace; cat dtime11.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  0 00:00:00
  0 04:50:38
  0 12:31:35
  0 12:47:53
  0 01:26:00
  0 20:58:11
  0 07:36:05
  0 15:43:49
  0 04:25:09
  0 06:49:27
  0 02:57:52
  0 16:45:44
  0 21:30:57
  0 04:25:09
  0 06:49:27
  0 02:57:52
  0 16:45:44
  0 21:30:57
  0 22:30:04
  0 01:56:51
  1 00:00:00
  1 04:50:38
  1 12:31:35
  1 12:47:53
  1 01:26:00
  1 20:58:11
  1 07:36:05
  1 15:43:49
  1 04:25:09
  1 06:49:27
  1 02:57:52
  1 16:45:44
  1 21:30:57
  1 04:25:09
  1 06:49:27
  1 02:57:52
  1 16:45:44
  1 21:30:57
  1 22:30:04
  1 01:56:51
  2 00:00:00
  2 04:50:38
  2 12:31:35
  2 12:47:53
  2 01:26:00
  2 20:58:11
  2 07:36:05
  2 15:43:49
  2 04:25:09
  2 06:49:27
  2 02:57:52
  2 16:45:44
  2 21:30:57
  2 04:25:09
  2 06:49:27
  2 02:57:52
  2 16:45:44
  2 21:30:57
  2 22:30:04
  2 01:56:51
 54 00:00:00
 54 04:50:38
 54 12:31:35
 54 12:47:53
 54 01:26:00
 54 20:58:11
 54 07:36:05
 54 15:43:49
 54 04:25:09
 54 06:49:27
 54 02:57:52
 54 16:45:44
 54 21:30:57
 54 04:25:09
 54 06:49:27
 54 02:57:52
 54 16:45:44
 54 21:30:57
 54 22:30:04
 54 01:56:51
   681 00:00
   681 04:50
   681 12:31
   681 12:47
   681 01:26
   681 20:58
   681 07:36
   681 15:43
   681 04:25
   681 06:49
   681 02:57
   681 16:45
   681 21:30
   681 04:25
   681 06:49
   681 02:57
   681 16:45
   681 21:30
   681 22:30
   681 01:56
  0 00:00:00
 -0 04:50:38
 -0 12:31:35
 -0 12:47:53
 -0 01:26:00
 -0 20:58:11
 -0 07:36:05
 -0 15:43:49
 -0 04:25:09
 -0 06:49:27
 -0 02:57:52
 -0 16:45:44
 -0 21:30:57
 -0 04:25:09
 -0 06:49:27
 -0 02:57:52
 -0 16:45:44
 -0 21:30:57
 -0 22:30:04
 -0 01:56:51
 -1 00:00:00
 -1 04:50:38
 -1 12:31:35
 -1 12:47:53
 -1 01:26:00
 -1 20:58:11
 -1 07:36:05
 -1 15:43:49
 -1 04:25:09
 -1 06:49:27
 -1 02:57:52
 -1 16:45:44
 -1 21:30:57
 -1 04:25:09
 -1 06:49:27
 -1 02:57:52
 -1 16:45:44
 -1 21:30:57
 -1 22:30:04
 -1 01:56:51
 -2 00:00:00
 -2 04:50:38
 -2 12:31:35
 -2 12:47:53
 -2 01:26:00
 -2 20:58:11
 -2 07:36:05
 -2 15:43:49
 -2 04:25:09
 -2 06:49:27
 -2 02:57:52
 -2 16:45:44
 -2 21:30:57
 -2 04:25:09
 -2 06:49:27
 -2 02:57:52
 -2 16:45:44
 -2 21:30:57
 -2 22:30:04
 -2 01:56:51
   -54 00:00
   -54 04:50
   -54 12:31
   -54 12:47
   -54 01:26
   -54 20:58
   -54 07:36
   -54 15:43
   -54 04:25
   -54 06:49
   -54 02:57
   -54 16:45
   -54 21:30
   -54 04:25
   -54 06:49
   -54 02:57
   -54 16:45
   -54 21:30
   -54 22:30
   -54 01:56
  -681 00:00
  -681 04:50
  -681 12:31
  -681 12:47
  -681 01:26
  -681 20:58
  -681 07:36
  -681 15:43
  -681 04:25
  -681 06:49
  -681 02:57
  -681 16:45
  -681 21:30
  -681 04:25
  -681 06:49
  -681 02:57
  -681 16:45
  -681 21:30
  -681 22:30
  -681 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:8637"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:8839: cat dtime12.out"
at_fn_check_prepare_trace "data-out.at:8839"
( $at_check_trace; cat dtime12.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   0 00:00:00
   0 04:50:38
   0 12:31:35
   0 12:47:53
   0 01:26:00
   0 20:58:11
   0 07:36:05
   0 15:43:49
   0 04:25:09
   0 06:49:27
   0 02:57:52
   0 16:45:44
   0 21:30:57
   0 04:25:09
   0 06:49:27
   0 02:57:52
   0 16:45:44
   0 21:30:57
   0 22:30:04
   0 01:56:51
   1 00:00:00
   1 04:50:38
   1 12:31:35
   1 12:47:53
   1 01:26:00
   1 20:58:11
   1 07:36:05
   1 15:43:49
   1 04:25:09
   1 06:49:27
   1 02:57:52
   1 16:45:44
   1 21:30:57
   1 04:25:09
   1 06:49:27
   1 02:57:52
   1 16:45:44
   1 21:30:57
   1 22:30:04
   1 01:56:51
   2 00:00:00
   2 04:50:38
   2 12:31:35
   2 12:47:53
   2 01:26:00
   2 20:58:11
   2 07:36:05
   2 15:43:49
   2 04:25:09
   2 06:49:27
   2 02:57:52
   2 16:45:44
   2 21:30:57
   2 04:25:09
   2 06:49:27
   2 02:57:52
   2 16:45:44
   2 21:30:57
   2 22:30:04
   2 01:56:51
  54 00:00:00
  54 04:50:38
  54 12:31:35
  54 12:47:53
  54 01:26:00
  54 20:58:11
  54 07:36:05
  54 15:43:49
  54 04:25:09
  54 06:49:27
  54 02:57:52
  54 16:45:44
  54 21:30:57
  54 04:25:09
  54 06:49:27
  54 02:57:52
  54 16:45:44
  54 21:30:57
  54 22:30:04
  54 01:56:51
 681 00:00:00
 681 04:50:38
 681 12:31:35
 681 12:47:53
 681 01:26:00
 681 20:58:11
 681 07:36:05
 681 15:43:49
 681 04:25:09
 681 06:49:27
 681 02:57:52
 681 16:45:44
 681 21:30:57
 681 04:25:09
 681 06:49:27
 681 02:57:52
 681 16:45:44
 681 21:30:57
 681 22:30:04
 681 01:56:51
   0 00:00:00
  -0 04:50:38
  -0 12:31:35
  -0 12:47:53
  -0 01:26:00
  -0 20:58:11
  -0 07:36:05
  -0 15:43:49
  -0 04:25:09
  -0 06:49:27
  -0 02:57:52
  -0 16:45:44
  -0 21:30:57
  -0 04:25:09
  -0 06:49:27
  -0 02:57:52
  -0 16:45:44
  -0 21:30:57
  -0 22:30:04
  -0 01:56:51
  -1 00:00:00
  -1 04:50:38
  -1 12:31:35
  -1 12:47:53
  -1 01:26:00
  -1 20:58:11
  -1 07:36:05
  -1 15:43:49
  -1 04:25:09
  -1 06:49:27
  -1 02:57:52
  -1 16:45:44
  -1 21:30:57
  -1 04:25:09
  -1 06:49:27
  -1 02:57:52
  -1 16:45:44
  -1 21:30:57
  -1 22:30:04
  -1 01:56:51
  -2 00:00:00
  -2 04:50:38
  -2 12:31:35
  -2 12:47:53
  -2 01:26:00
  -2 20:58:11
  -2 07:36:05
  -2 15:43:49
  -2 04:25:09
  -2 06:49:27
  -2 02:57:52
  -2 16:45:44
  -2 21:30:57
  -2 04:25:09
  -2 06:49:27
  -2 02:57:52
  -2 16:45:44
  -2 21:30:57
  -2 22:30:04
  -2 01:56:51
 -54 00:00:00
 -54 04:50:38
 -54 12:31:35
 -54 12:47:53
 -54 01:26:00
 -54 20:58:11
 -54 07:36:05
 -54 15:43:49
 -54 04:25:09
 -54 06:49:27
 -54 02:57:52
 -54 16:45:44
 -54 21:30:57
 -54 04:25:09
 -54 06:49:27
 -54 02:57:52
 -54 16:45:44
 -54 21:30:57
 -54 22:30:04
 -54 01:56:51
   -681 00:00
   -681 04:50
   -681 12:31
   -681 12:47
   -681 01:26
   -681 20:58
   -681 07:36
   -681 15:43
   -681 04:25
   -681 06:49
   -681 02:57
   -681 16:45
   -681 21:30
   -681 04:25
   -681 06:49
   -681 02:57
   -681 16:45
   -681 21:30
   -681 22:30
   -681 01:56
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:8839"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:9041: cat dtime13.out"
at_fn_check_prepare_trace "data-out.at:9041"
( $at_check_trace; cat dtime13.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    0 00:00:00
    0 04:50:38
    0 12:31:35
    0 12:47:53
    0 01:26:00
    0 20:58:11
    0 07:36:05
    0 15:43:49
    0 04:25:09
    0 06:49:27
    0 02:57:52
    0 16:45:44
    0 21:30:57
    0 04:25:09
    0 06:49:27
    0 02:57:52
    0 16:45:44
    0 21:30:57
    0 22:30:04
    0 01:56:51
    1 00:00:00
    1 04:50:38
    1 12:31:35
    1 12:47:53
    1 01:26:00
    1 20:58:11
    1 07:36:05
    1 15:43:49
    1 04:25:09
    1 06:49:27
    1 02:57:52
    1 16:45:44
    1 21:30:57
    1 04:25:09
    1 06:49:27
    1 02:57:52
    1 16:45:44
    1 21:30:57
    1 22:30:04
    1 01:56:51
    2 00:00:00
    2 04:50:38
    2 12:31:35
    2 12:47:53
    2 01:26:00
    2 20:58:11
    2 07:36:05
    2 15:43:49
    2 04:25:09
    2 06:49:27
    2 02:57:52
    2 16:45:44
    2 21:30:57
    2 04:25:09
    2 06:49:27
    2 02:57:52
    2 16:45:44
    2 21:30:57
    2 22:30:04
    2 01:56:51
   54 00:00:00
   54 04:50:38
   54 12:31:35
   54 12:47:53
   54 01:26:00
   54 20:58:11
   54 07:36:05
   54 15:43:49
   54 04:25:09
   54 06:49:27
   54 02:57:52
   54 16:45:44
   54 21:30:57
   54 04:25:09
   54 06:49:27
   54 02:57:52
   54 16:45:44
   54 21:30:57
   54 22:30:04
   54 01:56:51
  681 00:00:00
  681 04:50:38
  681 12:31:35
  681 12:47:53
  681 01:26:00
  681 20:58:11
  681 07:36:05
  681 15:43:49
  681 04:25:09
  681 06:49:27
  681 02:57:52
  681 16:45:44
  681 21:30:57
  681 04:25:09
  681 06:49:27
  681 02:57:52
  681 16:45:44
  681 21:30:57
  681 22:30:04
  681 01:56:51
    0 00:00:00
   -0 04:50:38
   -0 12:31:35
   -0 12:47:53
   -0 01:26:00
   -0 20:58:11
   -0 07:36:05
   -0 15:43:49
   -0 04:25:09
   -0 06:49:27
   -0 02:57:52
   -0 16:45:44
   -0 21:30:57
   -0 04:25:09
   -0 06:49:27
   -0 02:57:52
   -0 16:45:44
   -0 21:30:57
   -0 22:30:04
   -0 01:56:51
   -1 00:00:00
   -1 04:50:38
   -1 12:31:35
   -1 12:47:53
   -1 01:26:00
   -1 20:58:11
   -1 07:36:05
   -1 15:43:49
   -1 04:25:09
   -1 06:49:27
   -1 02:57:52
   -1 16:45:44
   -1 21:30:57
   -1 04:25:09
   -1 06:49:27
   -1 02:57:52
   -1 16:45:44
   -1 21:30:57
   -1 22:30:04
   -1 01:56:51
   -2 00:00:00
   -2 04:50:38
   -2 12:31:35
   -2 12:47:53
   -2 01:26:00
   -2 20:58:11
   -2 07:36:05
   -2 15:43:49
   -2 04:25:09
   -2 06:49:27
   -2 02:57:52
   -2 16:45:44
   -2 21:30:57
   -2 04:25:09
   -2 06:49:27
   -2 02:57:52
   -2 16:45:44
   -2 21:30:57
   -2 22:30:04
   -2 01:56:51
  -54 00:00:00
  -54 04:50:38
  -54 12:31:35
  -54 12:47:53
  -54 01:26:00
  -54 20:58:11
  -54 07:36:05
  -54 15:43:49
  -54 04:25:09
  -54 06:49:27
  -54 02:57:52
  -54 16:45:44
  -54 21:30:57
  -54 04:25:09
  -54 06:49:27
  -54 02:57:52
  -54 16:45:44
  -54 21:30:57
  -54 22:30:04
  -54 01:56:51
 -681 00:00:00
 -681 04:50:38
 -681 12:31:35
 -681 12:47:53
 -681 01:26:00
 -681 20:58:11
 -681 07:36:05
 -681 15:43:49
 -681 04:25:09
 -681 06:49:27
 -681 02:57:52
 -681 16:45:44
 -681 21:30:57
 -681 04:25:09
 -681 06:49:27
 -681 02:57:52
 -681 16:45:44
 -681 21:30:57
 -681 22:30:04
 -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:9041"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:9243: cat dtime13.1.out"
at_fn_check_prepare_trace "data-out.at:9243"
( $at_check_trace; cat dtime13.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  0 00:00:00.0
  0 04:50:38.1
  0 12:31:35.2
  0 12:47:53.3
  0 01:26:00.5
  0 20:58:11.6
  0 07:36:05.2
  0 15:43:49.8
  0 04:25:09.0
  0 06:49:27.5
  0 02:57:52.0
  0 16:45:44.9
  0 21:30:57.8
  0 04:25:09.2
  0 06:49:27.1
  0 02:57:52.5
  0 16:45:44.7
  0 21:30:57.6
  0 22:30:04.2
  0 01:56:51.6
  1 00:00:00.0
  1 04:50:38.1
  1 12:31:35.2
  1 12:47:53.3
  1 01:26:00.5
  1 20:58:11.6
  1 07:36:05.2
  1 15:43:49.8
  1 04:25:09.0
  1 06:49:27.5
  1 02:57:52.0
  1 16:45:44.9
  1 21:30:57.8
  1 04:25:09.2
  1 06:49:27.1
  1 02:57:52.5
  1 16:45:44.7
  1 21:30:57.6
  1 22:30:04.2
  1 01:56:51.6
  2 00:00:00.0
  2 04:50:38.1
  2 12:31:35.2
  2 12:47:53.3
  2 01:26:00.5
  2 20:58:11.6
  2 07:36:05.2
  2 15:43:49.8
  2 04:25:09.0
  2 06:49:27.5
  2 02:57:52.0
  2 16:45:44.9
  2 21:30:57.8
  2 04:25:09.2
  2 06:49:27.1
  2 02:57:52.5
  2 16:45:44.7
  2 21:30:57.6
  2 22:30:04.2
  2 01:56:51.6
 54 00:00:00.0
 54 04:50:38.1
 54 12:31:35.2
 54 12:47:53.3
 54 01:26:00.5
 54 20:58:11.6
 54 07:36:05.2
 54 15:43:49.8
 54 04:25:09.0
 54 06:49:27.5
 54 02:57:52.0
 54 16:45:44.9
 54 21:30:57.8
 54 04:25:09.2
 54 06:49:27.1
 54 02:57:52.5
 54 16:45:44.7
 54 21:30:57.6
 54 22:30:04.2
 54 01:56:51.6
  681 00:00:00
  681 04:50:38
  681 12:31:35
  681 12:47:53
  681 01:26:00
  681 20:58:11
  681 07:36:05
  681 15:43:49
  681 04:25:09
  681 06:49:27
  681 02:57:52
  681 16:45:44
  681 21:30:57
  681 04:25:09
  681 06:49:27
  681 02:57:52
  681 16:45:44
  681 21:30:57
  681 22:30:04
  681 01:56:51
  0 00:00:00.0
 -0 04:50:38.1
 -0 12:31:35.2
 -0 12:47:53.3
 -0 01:26:00.5
 -0 20:58:11.6
 -0 07:36:05.2
 -0 15:43:49.8
 -0 04:25:09.0
 -0 06:49:27.5
 -0 02:57:52.0
 -0 16:45:44.9
 -0 21:30:57.8
 -0 04:25:09.2
 -0 06:49:27.1
 -0 02:57:52.5
 -0 16:45:44.7
 -0 21:30:57.6
 -0 22:30:04.2
 -0 01:56:51.6
 -1 00:00:00.0
 -1 04:50:38.1
 -1 12:31:35.2
 -1 12:47:53.3
 -1 01:26:00.5
 -1 20:58:11.6
 -1 07:36:05.2
 -1 15:43:49.8
 -1 04:25:09.0
 -1 06:49:27.5
 -1 02:57:52.0
 -1 16:45:44.9
 -1 21:30:57.8
 -1 04:25:09.2
 -1 06:49:27.1
 -1 02:57:52.5
 -1 16:45:44.7
 -1 21:30:57.6
 -1 22:30:04.2
 -1 01:56:51.6
 -2 00:00:00.0
 -2 04:50:38.1
 -2 12:31:35.2
 -2 12:47:53.3
 -2 01:26:00.5
 -2 20:58:11.6
 -2 07:36:05.2
 -2 15:43:49.8
 -2 04:25:09.0
 -2 06:49:27.5
 -2 02:57:52.0
 -2 16:45:44.9
 -2 21:30:57.8
 -2 04:25:09.2
 -2 06:49:27.1
 -2 02:57:52.5
 -2 16:45:44.7
 -2 21:30:57.6
 -2 22:30:04.2
 -2 01:56:51.6
  -54 00:00:00
  -54 04:50:38
  -54 12:31:35
  -54 12:47:53
  -54 01:26:00
  -54 20:58:11
  -54 07:36:05
  -54 15:43:49
  -54 04:25:09
  -54 06:49:27
  -54 02:57:52
  -54 16:45:44
  -54 21:30:57
  -54 04:25:09
  -54 06:49:27
  -54 02:57:52
  -54 16:45:44
  -54 21:30:57
  -54 22:30:04
  -54 01:56:51
 -681 00:00:00
 -681 04:50:38
 -681 12:31:35
 -681 12:47:53
 -681 01:26:00
 -681 20:58:11
 -681 07:36:05
 -681 15:43:49
 -681 04:25:09
 -681 06:49:27
 -681 02:57:52
 -681 16:45:44
 -681 21:30:57
 -681 04:25:09
 -681 06:49:27
 -681 02:57:52
 -681 16:45:44
 -681 21:30:57
 -681 22:30:04
 -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:9243"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:9445: cat dtime14.out"
at_fn_check_prepare_trace "data-out.at:9445"
( $at_check_trace; cat dtime14.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     0 00:00:00
     0 04:50:38
     0 12:31:35
     0 12:47:53
     0 01:26:00
     0 20:58:11
     0 07:36:05
     0 15:43:49
     0 04:25:09
     0 06:49:27
     0 02:57:52
     0 16:45:44
     0 21:30:57
     0 04:25:09
     0 06:49:27
     0 02:57:52
     0 16:45:44
     0 21:30:57
     0 22:30:04
     0 01:56:51
     1 00:00:00
     1 04:50:38
     1 12:31:35
     1 12:47:53
     1 01:26:00
     1 20:58:11
     1 07:36:05
     1 15:43:49
     1 04:25:09
     1 06:49:27
     1 02:57:52
     1 16:45:44
     1 21:30:57
     1 04:25:09
     1 06:49:27
     1 02:57:52
     1 16:45:44
     1 21:30:57
     1 22:30:04
     1 01:56:51
     2 00:00:00
     2 04:50:38
     2 12:31:35
     2 12:47:53
     2 01:26:00
     2 20:58:11
     2 07:36:05
     2 15:43:49
     2 04:25:09
     2 06:49:27
     2 02:57:52
     2 16:45:44
     2 21:30:57
     2 04:25:09
     2 06:49:27
     2 02:57:52
     2 16:45:44
     2 21:30:57
     2 22:30:04
     2 01:56:51
    54 00:00:00
    54 04:50:38
    54 12:31:35
    54 12:47:53
    54 01:26:00
    54 20:58:11
    54 07:36:05
    54 15:43:49
    54 04:25:09
    54 06:49:27
    54 02:57:52
    54 16:45:44
    54 21:30:57
    54 04:25:09
    54 06:49:27
    54 02:57:52
    54 16:45:44
    54 21:30:57
    54 22:30:04
    54 01:56:51
   681 00:00:00
   681 04:50:38
   681 12:31:35
   681 12:47:53
   681 01:26:00
   681 20:58:11
   681 07:36:05
   681 15:43:49
   681 04:25:09
   681 06:49:27
   681 02:57:52
   681 16:45:44
   681 21:30:57
   681 04:25:09
   681 06:49:27
   681 02:57:52
   681 16:45:44
   681 21:30:57
   681 22:30:04
   681 01:56:51
     0 00:00:00
    -0 04:50:38
    -0 12:31:35
    -0 12:47:53
    -0 01:26:00
    -0 20:58:11
    -0 07:36:05
    -0 15:43:49
    -0 04:25:09
    -0 06:49:27
    -0 02:57:52
    -0 16:45:44
    -0 21:30:57
    -0 04:25:09
    -0 06:49:27
    -0 02:57:52
    -0 16:45:44
    -0 21:30:57
    -0 22:30:04
    -0 01:56:51
    -1 00:00:00
    -1 04:50:38
    -1 12:31:35
    -1 12:47:53
    -1 01:26:00
    -1 20:58:11
    -1 07:36:05
    -1 15:43:49
    -1 04:25:09
    -1 06:49:27
    -1 02:57:52
    -1 16:45:44
    -1 21:30:57
    -1 04:25:09
    -1 06:49:27
    -1 02:57:52
    -1 16:45:44
    -1 21:30:57
    -1 22:30:04
    -1 01:56:51
    -2 00:00:00
    -2 04:50:38
    -2 12:31:35
    -2 12:47:53
    -2 01:26:00
    -2 20:58:11
    -2 07:36:05
    -2 15:43:49
    -2 04:25:09
    -2 06:49:27
    -2 02:57:52
    -2 16:45:44
    -2 21:30:57
    -2 04:25:09
    -2 06:49:27
    -2 02:57:52
    -2 16:45:44
    -2 21:30:57
    -2 22:30:04
    -2 01:56:51
   -54 00:00:00
   -54 04:50:38
   -54 12:31:35
   -54 12:47:53
   -54 01:26:00
   -54 20:58:11
   -54 07:36:05
   -54 15:43:49
   -54 04:25:09
   -54 06:49:27
   -54 02:57:52
   -54 16:45:44
   -54 21:30:57
   -54 04:25:09
   -54 06:49:27
   -54 02:57:52
   -54 16:45:44
   -54 21:30:57
   -54 22:30:04
   -54 01:56:51
  -681 00:00:00
  -681 04:50:38
  -681 12:31:35
  -681 12:47:53
  -681 01:26:00
  -681 20:58:11
  -681 07:36:05
  -681 15:43:49
  -681 04:25:09
  -681 06:49:27
  -681 02:57:52
  -681 16:45:44
  -681 21:30:57
  -681 04:25:09
  -681 06:49:27
  -681 02:57:52
  -681 16:45:44
  -681 21:30:57
  -681 22:30:04
  -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:9445"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:9647: cat dtime14.1.out"
at_fn_check_prepare_trace "data-out.at:9647"
( $at_check_trace; cat dtime14.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   0 00:00:00.0
   0 04:50:38.1
   0 12:31:35.2
   0 12:47:53.3
   0 01:26:00.5
   0 20:58:11.6
   0 07:36:05.2
   0 15:43:49.8
   0 04:25:09.0
   0 06:49:27.5
   0 02:57:52.0
   0 16:45:44.9
   0 21:30:57.8
   0 04:25:09.2
   0 06:49:27.1
   0 02:57:52.5
   0 16:45:44.7
   0 21:30:57.6
   0 22:30:04.2
   0 01:56:51.6
   1 00:00:00.0
   1 04:50:38.1
   1 12:31:35.2
   1 12:47:53.3
   1 01:26:00.5
   1 20:58:11.6
   1 07:36:05.2
   1 15:43:49.8
   1 04:25:09.0
   1 06:49:27.5
   1 02:57:52.0
   1 16:45:44.9
   1 21:30:57.8
   1 04:25:09.2
   1 06:49:27.1
   1 02:57:52.5
   1 16:45:44.7
   1 21:30:57.6
   1 22:30:04.2
   1 01:56:51.6
   2 00:00:00.0
   2 04:50:38.1
   2 12:31:35.2
   2 12:47:53.3
   2 01:26:00.5
   2 20:58:11.6
   2 07:36:05.2
   2 15:43:49.8
   2 04:25:09.0
   2 06:49:27.5
   2 02:57:52.0
   2 16:45:44.9
   2 21:30:57.8
   2 04:25:09.2
   2 06:49:27.1
   2 02:57:52.5
   2 16:45:44.7
   2 21:30:57.6
   2 22:30:04.2
   2 01:56:51.6
  54 00:00:00.0
  54 04:50:38.1
  54 12:31:35.2
  54 12:47:53.3
  54 01:26:00.5
  54 20:58:11.6
  54 07:36:05.2
  54 15:43:49.8
  54 04:25:09.0
  54 06:49:27.5
  54 02:57:52.0
  54 16:45:44.9
  54 21:30:57.8
  54 04:25:09.2
  54 06:49:27.1
  54 02:57:52.5
  54 16:45:44.7
  54 21:30:57.6
  54 22:30:04.2
  54 01:56:51.6
 681 00:00:00.0
 681 04:50:38.1
 681 12:31:35.2
 681 12:47:53.3
 681 01:26:00.5
 681 20:58:11.6
 681 07:36:05.2
 681 15:43:49.8
 681 04:25:09.0
 681 06:49:27.5
 681 02:57:52.0
 681 16:45:44.9
 681 21:30:57.8
 681 04:25:09.2
 681 06:49:27.1
 681 02:57:52.5
 681 16:45:44.7
 681 21:30:57.6
 681 22:30:04.2
 681 01:56:51.6
   0 00:00:00.0
  -0 04:50:38.1
  -0 12:31:35.2
  -0 12:47:53.3
  -0 01:26:00.5
  -0 20:58:11.6
  -0 07:36:05.2
  -0 15:43:49.8
  -0 04:25:09.0
  -0 06:49:27.5
  -0 02:57:52.0
  -0 16:45:44.9
  -0 21:30:57.8
  -0 04:25:09.2
  -0 06:49:27.1
  -0 02:57:52.5
  -0 16:45:44.7
  -0 21:30:57.6
  -0 22:30:04.2
  -0 01:56:51.6
  -1 00:00:00.0
  -1 04:50:38.1
  -1 12:31:35.2
  -1 12:47:53.3
  -1 01:26:00.5
  -1 20:58:11.6
  -1 07:36:05.2
  -1 15:43:49.8
  -1 04:25:09.0
  -1 06:49:27.5
  -1 02:57:52.0
  -1 16:45:44.9
  -1 21:30:57.8
  -1 04:25:09.2
  -1 06:49:27.1
  -1 02:57:52.5
  -1 16:45:44.7
  -1 21:30:57.6
  -1 22:30:04.2
  -1 01:56:51.6
  -2 00:00:00.0
  -2 04:50:38.1
  -2 12:31:35.2
  -2 12:47:53.3
  -2 01:26:00.5
  -2 20:58:11.6
  -2 07:36:05.2
  -2 15:43:49.8
  -2 04:25:09.0
  -2 06:49:27.5
  -2 02:57:52.0
  -2 16:45:44.9
  -2 21:30:57.8
  -2 04:25:09.2
  -2 06:49:27.1
  -2 02:57:52.5
  -2 16:45:44.7
  -2 21:30:57.6
  -2 22:30:04.2
  -2 01:56:51.6
 -54 00:00:00.0
 -54 04:50:38.1
 -54 12:31:35.2
 -54 12:47:53.3
 -54 01:26:00.5
 -54 20:58:11.6
 -54 07:36:05.2
 -54 15:43:49.8
 -54 04:25:09.0
 -54 06:49:27.5
 -54 02:57:52.0
 -54 16:45:44.9
 -54 21:30:57.8
 -54 04:25:09.2
 -54 06:49:27.1
 -54 02:57:52.5
 -54 16:45:44.7
 -54 21:30:57.6
 -54 22:30:04.2
 -54 01:56:51.6
  -681 00:00:00
  -681 04:50:38
  -681 12:31:35
  -681 12:47:53
  -681 01:26:00
  -681 20:58:11
  -681 07:36:05
  -681 15:43:49
  -681 04:25:09
  -681 06:49:27
  -681 02:57:52
  -681 16:45:44
  -681 21:30:57
  -681 04:25:09
  -681 06:49:27
  -681 02:57:52
  -681 16:45:44
  -681 21:30:57
  -681 22:30:04
  -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:9647"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:9849: cat dtime14.2.out"
at_fn_check_prepare_trace "data-out.at:9849"
( $at_check_trace; cat dtime14.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  0 00:00:00.00
  0 04:50:38.12
  0 12:31:35.23
  0 12:47:53.35
  0 01:26:00.46
  0 20:58:11.57
  0 07:36:05.19
  0 15:43:49.83
  0 04:25:09.01
  0 06:49:27.52
  0 02:57:52.02
  0 16:45:44.87
  0 21:30:57.82
  0 04:25:09.15
  0 06:49:27.11
  0 02:57:52.48
  0 16:45:44.66
  0 21:30:57.58
  0 22:30:04.18
  0 01:56:51.59
  1 00:00:00.00
  1 04:50:38.12
  1 12:31:35.23
  1 12:47:53.35
  1 01:26:00.46
  1 20:58:11.57
  1 07:36:05.19
  1 15:43:49.83
  1 04:25:09.01
  1 06:49:27.52
  1 02:57:52.02
  1 16:45:44.87
  1 21:30:57.82
  1 04:25:09.15
  1 06:49:27.11
  1 02:57:52.48
  1 16:45:44.66
  1 21:30:57.58
  1 22:30:04.18
  1 01:56:51.59
  2 00:00:00.00
  2 04:50:38.12
  2 12:31:35.23
  2 12:47:53.35
  2 01:26:00.46
  2 20:58:11.57
  2 07:36:05.19
  2 15:43:49.83
  2 04:25:09.01
  2 06:49:27.52
  2 02:57:52.02
  2 16:45:44.87
  2 21:30:57.82
  2 04:25:09.15
  2 06:49:27.11
  2 02:57:52.48
  2 16:45:44.66
  2 21:30:57.58
  2 22:30:04.18
  2 01:56:51.59
 54 00:00:00.00
 54 04:50:38.12
 54 12:31:35.23
 54 12:47:53.35
 54 01:26:00.46
 54 20:58:11.57
 54 07:36:05.19
 54 15:43:49.83
 54 04:25:09.01
 54 06:49:27.52
 54 02:57:52.02
 54 16:45:44.87
 54 21:30:57.82
 54 04:25:09.15
 54 06:49:27.11
 54 02:57:52.48
 54 16:45:44.66
 54 21:30:57.58
 54 22:30:04.18
 54 01:56:51.59
 681 00:00:00.0
 681 04:50:38.1
 681 12:31:35.2
 681 12:47:53.3
 681 01:26:00.5
 681 20:58:11.6
 681 07:36:05.2
 681 15:43:49.8
 681 04:25:09.0
 681 06:49:27.5
 681 02:57:52.0
 681 16:45:44.9
 681 21:30:57.8
 681 04:25:09.2
 681 06:49:27.1
 681 02:57:52.5
 681 16:45:44.7
 681 21:30:57.6
 681 22:30:04.2
 681 01:56:51.6
  0 00:00:00.00
 -0 04:50:38.12
 -0 12:31:35.23
 -0 12:47:53.35
 -0 01:26:00.46
 -0 20:58:11.57
 -0 07:36:05.19
 -0 15:43:49.83
 -0 04:25:09.01
 -0 06:49:27.52
 -0 02:57:52.02
 -0 16:45:44.87
 -0 21:30:57.82
 -0 04:25:09.15
 -0 06:49:27.11
 -0 02:57:52.48
 -0 16:45:44.66
 -0 21:30:57.58
 -0 22:30:04.18
 -0 01:56:51.59
 -1 00:00:00.00
 -1 04:50:38.12
 -1 12:31:35.23
 -1 12:47:53.35
 -1 01:26:00.46
 -1 20:58:11.57
 -1 07:36:05.19
 -1 15:43:49.83
 -1 04:25:09.01
 -1 06:49:27.52
 -1 02:57:52.02
 -1 16:45:44.87
 -1 21:30:57.82
 -1 04:25:09.15
 -1 06:49:27.11
 -1 02:57:52.48
 -1 16:45:44.66
 -1 21:30:57.58
 -1 22:30:04.18
 -1 01:56:51.59
 -2 00:00:00.00
 -2 04:50:38.12
 -2 12:31:35.23
 -2 12:47:53.35
 -2 01:26:00.46
 -2 20:58:11.57
 -2 07:36:05.19
 -2 15:43:49.83
 -2 04:25:09.01
 -2 06:49:27.52
 -2 02:57:52.02
 -2 16:45:44.87
 -2 21:30:57.82
 -2 04:25:09.15
 -2 06:49:27.11
 -2 02:57:52.48
 -2 16:45:44.66
 -2 21:30:57.58
 -2 22:30:04.18
 -2 01:56:51.59
 -54 00:00:00.0
 -54 04:50:38.1
 -54 12:31:35.2
 -54 12:47:53.3
 -54 01:26:00.5
 -54 20:58:11.6
 -54 07:36:05.2
 -54 15:43:49.8
 -54 04:25:09.0
 -54 06:49:27.5
 -54 02:57:52.0
 -54 16:45:44.9
 -54 21:30:57.8
 -54 04:25:09.2
 -54 06:49:27.1
 -54 02:57:52.5
 -54 16:45:44.7
 -54 21:30:57.6
 -54 22:30:04.2
 -54 01:56:51.6
  -681 00:00:00
  -681 04:50:38
  -681 12:31:35
  -681 12:47:53
  -681 01:26:00
  -681 20:58:11
  -681 07:36:05
  -681 15:43:49
  -681 04:25:09
  -681 06:49:27
  -681 02:57:52
  -681 16:45:44
  -681 21:30:57
  -681 04:25:09
  -681 06:49:27
  -681 02:57:52
  -681 16:45:44
  -681 21:30:57
  -681 22:30:04
  -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:9849"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:10051: cat dtime15.out"
at_fn_check_prepare_trace "data-out.at:10051"
( $at_check_trace; cat dtime15.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "      0 00:00:00
      0 04:50:38
      0 12:31:35
      0 12:47:53
      0 01:26:00
      0 20:58:11
      0 07:36:05
      0 15:43:49
      0 04:25:09
      0 06:49:27
      0 02:57:52
      0 16:45:44
      0 21:30:57
      0 04:25:09
      0 06:49:27
      0 02:57:52
      0 16:45:44
      0 21:30:57
      0 22:30:04
      0 01:56:51
      1 00:00:00
      1 04:50:38
      1 12:31:35
      1 12:47:53
      1 01:26:00
      1 20:58:11
      1 07:36:05
      1 15:43:49
      1 04:25:09
      1 06:49:27
      1 02:57:52
      1 16:45:44
      1 21:30:57
      1 04:25:09
      1 06:49:27
      1 02:57:52
      1 16:45:44
      1 21:30:57
      1 22:30:04
      1 01:56:51
      2 00:00:00
      2 04:50:38
      2 12:31:35
      2 12:47:53
      2 01:26:00
      2 20:58:11
      2 07:36:05
      2 15:43:49
      2 04:25:09
      2 06:49:27
      2 02:57:52
      2 16:45:44
      2 21:30:57
      2 04:25:09
      2 06:49:27
      2 02:57:52
      2 16:45:44
      2 21:30:57
      2 22:30:04
      2 01:56:51
     54 00:00:00
     54 04:50:38
     54 12:31:35
     54 12:47:53
     54 01:26:00
     54 20:58:11
     54 07:36:05
     54 15:43:49
     54 04:25:09
     54 06:49:27
     54 02:57:52
     54 16:45:44
     54 21:30:57
     54 04:25:09
     54 06:49:27
     54 02:57:52
     54 16:45:44
     54 21:30:57
     54 22:30:04
     54 01:56:51
    681 00:00:00
    681 04:50:38
    681 12:31:35
    681 12:47:53
    681 01:26:00
    681 20:58:11
    681 07:36:05
    681 15:43:49
    681 04:25:09
    681 06:49:27
    681 02:57:52
    681 16:45:44
    681 21:30:57
    681 04:25:09
    681 06:49:27
    681 02:57:52
    681 16:45:44
    681 21:30:57
    681 22:30:04
    681 01:56:51
      0 00:00:00
     -0 04:50:38
     -0 12:31:35
     -0 12:47:53
     -0 01:26:00
     -0 20:58:11
     -0 07:36:05
     -0 15:43:49
     -0 04:25:09
     -0 06:49:27
     -0 02:57:52
     -0 16:45:44
     -0 21:30:57
     -0 04:25:09
     -0 06:49:27
     -0 02:57:52
     -0 16:45:44
     -0 21:30:57
     -0 22:30:04
     -0 01:56:51
     -1 00:00:00
     -1 04:50:38
     -1 12:31:35
     -1 12:47:53
     -1 01:26:00
     -1 20:58:11
     -1 07:36:05
     -1 15:43:49
     -1 04:25:09
     -1 06:49:27
     -1 02:57:52
     -1 16:45:44
     -1 21:30:57
     -1 04:25:09
     -1 06:49:27
     -1 02:57:52
     -1 16:45:44
     -1 21:30:57
     -1 22:30:04
     -1 01:56:51
     -2 00:00:00
     -2 04:50:38
     -2 12:31:35
     -2 12:47:53
     -2 01:26:00
     -2 20:58:11
     -2 07:36:05
     -2 15:43:49
     -2 04:25:09
     -2 06:49:27
     -2 02:57:52
     -2 16:45:44
     -2 21:30:57
     -2 04:25:09
     -2 06:49:27
     -2 02:57:52
     -2 16:45:44
     -2 21:30:57
     -2 22:30:04
     -2 01:56:51
    -54 00:00:00
    -54 04:50:38
    -54 12:31:35
    -54 12:47:53
    -54 01:26:00
    -54 20:58:11
    -54 07:36:05
    -54 15:43:49
    -54 04:25:09
    -54 06:49:27
    -54 02:57:52
    -54 16:45:44
    -54 21:30:57
    -54 04:25:09
    -54 06:49:27
    -54 02:57:52
    -54 16:45:44
    -54 21:30:57
    -54 22:30:04
    -54 01:56:51
   -681 00:00:00
   -681 04:50:38
   -681 12:31:35
   -681 12:47:53
   -681 01:26:00
   -681 20:58:11
   -681 07:36:05
   -681 15:43:49
   -681 04:25:09
   -681 06:49:27
   -681 02:57:52
   -681 16:45:44
   -681 21:30:57
   -681 04:25:09
   -681 06:49:27
   -681 02:57:52
   -681 16:45:44
   -681 21:30:57
   -681 22:30:04
   -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:10051"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:10253: cat dtime15.1.out"
at_fn_check_prepare_trace "data-out.at:10253"
( $at_check_trace; cat dtime15.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    0 00:00:00.0
    0 04:50:38.1
    0 12:31:35.2
    0 12:47:53.3
    0 01:26:00.5
    0 20:58:11.6
    0 07:36:05.2
    0 15:43:49.8
    0 04:25:09.0
    0 06:49:27.5
    0 02:57:52.0
    0 16:45:44.9
    0 21:30:57.8
    0 04:25:09.2
    0 06:49:27.1
    0 02:57:52.5
    0 16:45:44.7
    0 21:30:57.6
    0 22:30:04.2
    0 01:56:51.6
    1 00:00:00.0
    1 04:50:38.1
    1 12:31:35.2
    1 12:47:53.3
    1 01:26:00.5
    1 20:58:11.6
    1 07:36:05.2
    1 15:43:49.8
    1 04:25:09.0
    1 06:49:27.5
    1 02:57:52.0
    1 16:45:44.9
    1 21:30:57.8
    1 04:25:09.2
    1 06:49:27.1
    1 02:57:52.5
    1 16:45:44.7
    1 21:30:57.6
    1 22:30:04.2
    1 01:56:51.6
    2 00:00:00.0
    2 04:50:38.1
    2 12:31:35.2
    2 12:47:53.3
    2 01:26:00.5
    2 20:58:11.6
    2 07:36:05.2
    2 15:43:49.8
    2 04:25:09.0
    2 06:49:27.5
    2 02:57:52.0
    2 16:45:44.9
    2 21:30:57.8
    2 04:25:09.2
    2 06:49:27.1
    2 02:57:52.5
    2 16:45:44.7
    2 21:30:57.6
    2 22:30:04.2
    2 01:56:51.6
   54 00:00:00.0
   54 04:50:38.1
   54 12:31:35.2
   54 12:47:53.3
   54 01:26:00.5
   54 20:58:11.6
   54 07:36:05.2
   54 15:43:49.8
   54 04:25:09.0
   54 06:49:27.5
   54 02:57:52.0
   54 16:45:44.9
   54 21:30:57.8
   54 04:25:09.2
   54 06:49:27.1
   54 02:57:52.5
   54 16:45:44.7
   54 21:30:57.6
   54 22:30:04.2
   54 01:56:51.6
  681 00:00:00.0
  681 04:50:38.1
  681 12:31:35.2
  681 12:47:53.3
  681 01:26:00.5
  681 20:58:11.6
  681 07:36:05.2
  681 15:43:49.8
  681 04:25:09.0
  681 06:49:27.5
  681 02:57:52.0
  681 16:45:44.9
  681 21:30:57.8
  681 04:25:09.2
  681 06:49:27.1
  681 02:57:52.5
  681 16:45:44.7
  681 21:30:57.6
  681 22:30:04.2
  681 01:56:51.6
    0 00:00:00.0
   -0 04:50:38.1
   -0 12:31:35.2
   -0 12:47:53.3
   -0 01:26:00.5
   -0 20:58:11.6
   -0 07:36:05.2
   -0 15:43:49.8
   -0 04:25:09.0
   -0 06:49:27.5
   -0 02:57:52.0
   -0 16:45:44.9
   -0 21:30:57.8
   -0 04:25:09.2
   -0 06:49:27.1
   -0 02:57:52.5
   -0 16:45:44.7
   -0 21:30:57.6
   -0 22:30:04.2
   -0 01:56:51.6
   -1 00:00:00.0
   -1 04:50:38.1
   -1 12:31:35.2
   -1 12:47:53.3
   -1 01:26:00.5
   -1 20:58:11.6
   -1 07:36:05.2
   -1 15:43:49.8
   -1 04:25:09.0
   -1 06:49:27.5
   -1 02:57:52.0
   -1 16:45:44.9
   -1 21:30:57.8
   -1 04:25:09.2
   -1 06:49:27.1
   -1 02:57:52.5
   -1 16:45:44.7
   -1 21:30:57.6
   -1 22:30:04.2
   -1 01:56:51.6
   -2 00:00:00.0
   -2 04:50:38.1
   -2 12:31:35.2
   -2 12:47:53.3
   -2 01:26:00.5
   -2 20:58:11.6
   -2 07:36:05.2
   -2 15:43:49.8
   -2 04:25:09.0
   -2 06:49:27.5
   -2 02:57:52.0
   -2 16:45:44.9
   -2 21:30:57.8
   -2 04:25:09.2
   -2 06:49:27.1
   -2 02:57:52.5
   -2 16:45:44.7
   -2 21:30:57.6
   -2 22:30:04.2
   -2 01:56:51.6
  -54 00:00:00.0
  -54 04:50:38.1
  -54 12:31:35.2
  -54 12:47:53.3
  -54 01:26:00.5
  -54 20:58:11.6
  -54 07:36:05.2
  -54 15:43:49.8
  -54 04:25:09.0
  -54 06:49:27.5
  -54 02:57:52.0
  -54 16:45:44.9
  -54 21:30:57.8
  -54 04:25:09.2
  -54 06:49:27.1
  -54 02:57:52.5
  -54 16:45:44.7
  -54 21:30:57.6
  -54 22:30:04.2
  -54 01:56:51.6
 -681 00:00:00.0
 -681 04:50:38.1
 -681 12:31:35.2
 -681 12:47:53.3
 -681 01:26:00.5
 -681 20:58:11.6
 -681 07:36:05.2
 -681 15:43:49.8
 -681 04:25:09.0
 -681 06:49:27.5
 -681 02:57:52.0
 -681 16:45:44.9
 -681 21:30:57.8
 -681 04:25:09.2
 -681 06:49:27.1
 -681 02:57:52.5
 -681 16:45:44.7
 -681 21:30:57.6
 -681 22:30:04.2
 -681 01:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:10253"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:10455: cat dtime15.2.out"
at_fn_check_prepare_trace "data-out.at:10455"
( $at_check_trace; cat dtime15.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   0 00:00:00.00
   0 04:50:38.12
   0 12:31:35.23
   0 12:47:53.35
   0 01:26:00.46
   0 20:58:11.57
   0 07:36:05.19
   0 15:43:49.83
   0 04:25:09.01
   0 06:49:27.52
   0 02:57:52.02
   0 16:45:44.87
   0 21:30:57.82
   0 04:25:09.15
   0 06:49:27.11
   0 02:57:52.48
   0 16:45:44.66
   0 21:30:57.58
   0 22:30:04.18
   0 01:56:51.59
   1 00:00:00.00
   1 04:50:38.12
   1 12:31:35.23
   1 12:47:53.35
   1 01:26:00.46
   1 20:58:11.57
   1 07:36:05.19
   1 15:43:49.83
   1 04:25:09.01
   1 06:49:27.52
   1 02:57:52.02
   1 16:45:44.87
   1 21:30:57.82
   1 04:25:09.15
   1 06:49:27.11
   1 02:57:52.48
   1 16:45:44.66
   1 21:30:57.58
   1 22:30:04.18
   1 01:56:51.59
   2 00:00:00.00
   2 04:50:38.12
   2 12:31:35.23
   2 12:47:53.35
   2 01:26:00.46
   2 20:58:11.57
   2 07:36:05.19
   2 15:43:49.83
   2 04:25:09.01
   2 06:49:27.52
   2 02:57:52.02
   2 16:45:44.87
   2 21:30:57.82
   2 04:25:09.15
   2 06:49:27.11
   2 02:57:52.48
   2 16:45:44.66
   2 21:30:57.58
   2 22:30:04.18
   2 01:56:51.59
  54 00:00:00.00
  54 04:50:38.12
  54 12:31:35.23
  54 12:47:53.35
  54 01:26:00.46
  54 20:58:11.57
  54 07:36:05.19
  54 15:43:49.83
  54 04:25:09.01
  54 06:49:27.52
  54 02:57:52.02
  54 16:45:44.87
  54 21:30:57.82
  54 04:25:09.15
  54 06:49:27.11
  54 02:57:52.48
  54 16:45:44.66
  54 21:30:57.58
  54 22:30:04.18
  54 01:56:51.59
 681 00:00:00.00
 681 04:50:38.12
 681 12:31:35.23
 681 12:47:53.35
 681 01:26:00.46
 681 20:58:11.57
 681 07:36:05.19
 681 15:43:49.83
 681 04:25:09.01
 681 06:49:27.52
 681 02:57:52.02
 681 16:45:44.87
 681 21:30:57.82
 681 04:25:09.15
 681 06:49:27.11
 681 02:57:52.48
 681 16:45:44.66
 681 21:30:57.58
 681 22:30:04.18
 681 01:56:51.59
   0 00:00:00.00
  -0 04:50:38.12
  -0 12:31:35.23
  -0 12:47:53.35
  -0 01:26:00.46
  -0 20:58:11.57
  -0 07:36:05.19
  -0 15:43:49.83
  -0 04:25:09.01
  -0 06:49:27.52
  -0 02:57:52.02
  -0 16:45:44.87
  -0 21:30:57.82
  -0 04:25:09.15
  -0 06:49:27.11
  -0 02:57:52.48
  -0 16:45:44.66
  -0 21:30:57.58
  -0 22:30:04.18
  -0 01:56:51.59
  -1 00:00:00.00
  -1 04:50:38.12
  -1 12:31:35.23
  -1 12:47:53.35
  -1 01:26:00.46
  -1 20:58:11.57
  -1 07:36:05.19
  -1 15:43:49.83
  -1 04:25:09.01
  -1 06:49:27.52
  -1 02:57:52.02
  -1 16:45:44.87
  -1 21:30:57.82
  -1 04:25:09.15
  -1 06:49:27.11
  -1 02:57:52.48
  -1 16:45:44.66
  -1 21:30:57.58
  -1 22:30:04.18
  -1 01:56:51.59
  -2 00:00:00.00
  -2 04:50:38.12
  -2 12:31:35.23
  -2 12:47:53.35
  -2 01:26:00.46
  -2 20:58:11.57
  -2 07:36:05.19
  -2 15:43:49.83
  -2 04:25:09.01
  -2 06:49:27.52
  -2 02:57:52.02
  -2 16:45:44.87
  -2 21:30:57.82
  -2 04:25:09.15
  -2 06:49:27.11
  -2 02:57:52.48
  -2 16:45:44.66
  -2 21:30:57.58
  -2 22:30:04.18
  -2 01:56:51.59
 -54 00:00:00.00
 -54 04:50:38.12
 -54 12:31:35.23
 -54 12:47:53.35
 -54 01:26:00.46
 -54 20:58:11.57
 -54 07:36:05.19
 -54 15:43:49.83
 -54 04:25:09.01
 -54 06:49:27.52
 -54 02:57:52.02
 -54 16:45:44.87
 -54 21:30:57.82
 -54 04:25:09.15
 -54 06:49:27.11
 -54 02:57:52.48
 -54 16:45:44.66
 -54 21:30:57.58
 -54 22:30:04.18
 -54 01:56:51.59
 -681 00:00:00.0
 -681 04:50:38.1
 -681 12:31:35.2
 -681 12:47:53.3
 -681 01:26:00.5
 -681 20:58:11.6
 -681 07:36:05.2
 -681 15:43:49.8
 -681 04:25:09.0
 -681 06:49:27.5
 -681 02:57:52.0
 -681 16:45:44.9
 -681 21:30:57.8
 -681 04:25:09.2
 -681 06:49:27.1
 -681 02:57:52.5
 -681 16:45:44.7
 -681 21:30:57.6
 -681 22:30:04.2
 -681 01:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:10455"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:10657: cat dtime15.3.out"
at_fn_check_prepare_trace "data-out.at:10657"
( $at_check_trace; cat dtime15.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  0 00:00:00.000
  0 04:50:38.123
  0 12:31:35.235
  0 12:47:53.345
  0 01:26:00.456
  0 20:58:11.567
  0 07:36:05.190
  0 15:43:49.831
  0 04:25:09.013
  0 06:49:27.524
  0 02:57:52.016
  0 16:45:44.865
  0 21:30:57.820
  0 04:25:09.154
  0 06:49:27.105
  0 02:57:52.482
  0 16:45:44.658
  0 21:30:57.582
  0 22:30:04.183
  0 01:56:51.593
  1 00:00:00.000
  1 04:50:38.123
  1 12:31:35.235
  1 12:47:53.345
  1 01:26:00.456
  1 20:58:11.567
  1 07:36:05.190
  1 15:43:49.831
  1 04:25:09.013
  1 06:49:27.524
  1 02:57:52.016
  1 16:45:44.865
  1 21:30:57.820
  1 04:25:09.154
  1 06:49:27.105
  1 02:57:52.482
  1 16:45:44.658
  1 21:30:57.582
  1 22:30:04.183
  1 01:56:51.593
  2 00:00:00.000
  2 04:50:38.123
  2 12:31:35.235
  2 12:47:53.345
  2 01:26:00.456
  2 20:58:11.567
  2 07:36:05.190
  2 15:43:49.831
  2 04:25:09.013
  2 06:49:27.524
  2 02:57:52.016
  2 16:45:44.865
  2 21:30:57.820
  2 04:25:09.154
  2 06:49:27.105
  2 02:57:52.482
  2 16:45:44.658
  2 21:30:57.582
  2 22:30:04.183
  2 01:56:51.593
 54 00:00:00.000
 54 04:50:38.123
 54 12:31:35.235
 54 12:47:53.345
 54 01:26:00.456
 54 20:58:11.567
 54 07:36:05.190
 54 15:43:49.831
 54 04:25:09.013
 54 06:49:27.524
 54 02:57:52.016
 54 16:45:44.865
 54 21:30:57.820
 54 04:25:09.154
 54 06:49:27.105
 54 02:57:52.482
 54 16:45:44.658
 54 21:30:57.582
 54 22:30:04.183
 54 01:56:51.593
 681 00:00:00.00
 681 04:50:38.12
 681 12:31:35.23
 681 12:47:53.35
 681 01:26:00.46
 681 20:58:11.57
 681 07:36:05.19
 681 15:43:49.83
 681 04:25:09.01
 681 06:49:27.52
 681 02:57:52.02
 681 16:45:44.87
 681 21:30:57.82
 681 04:25:09.15
 681 06:49:27.11
 681 02:57:52.48
 681 16:45:44.66
 681 21:30:57.58
 681 22:30:04.18
 681 01:56:51.59
  0 00:00:00.000
 -0 04:50:38.123
 -0 12:31:35.235
 -0 12:47:53.345
 -0 01:26:00.456
 -0 20:58:11.567
 -0 07:36:05.190
 -0 15:43:49.831
 -0 04:25:09.013
 -0 06:49:27.524
 -0 02:57:52.016
 -0 16:45:44.865
 -0 21:30:57.820
 -0 04:25:09.154
 -0 06:49:27.105
 -0 02:57:52.482
 -0 16:45:44.658
 -0 21:30:57.582
 -0 22:30:04.183
 -0 01:56:51.593
 -1 00:00:00.000
 -1 04:50:38.123
 -1 12:31:35.235
 -1 12:47:53.345
 -1 01:26:00.456
 -1 20:58:11.567
 -1 07:36:05.190
 -1 15:43:49.831
 -1 04:25:09.013
 -1 06:49:27.524
 -1 02:57:52.016
 -1 16:45:44.865
 -1 21:30:57.820
 -1 04:25:09.154
 -1 06:49:27.105
 -1 02:57:52.482
 -1 16:45:44.658
 -1 21:30:57.582
 -1 22:30:04.183
 -1 01:56:51.593
 -2 00:00:00.000
 -2 04:50:38.123
 -2 12:31:35.235
 -2 12:47:53.345
 -2 01:26:00.456
 -2 20:58:11.567
 -2 07:36:05.190
 -2 15:43:49.831
 -2 04:25:09.013
 -2 06:49:27.524
 -2 02:57:52.016
 -2 16:45:44.865
 -2 21:30:57.820
 -2 04:25:09.154
 -2 06:49:27.105
 -2 02:57:52.482
 -2 16:45:44.658
 -2 21:30:57.582
 -2 22:30:04.183
 -2 01:56:51.593
 -54 00:00:00.00
 -54 04:50:38.12
 -54 12:31:35.23
 -54 12:47:53.35
 -54 01:26:00.46
 -54 20:58:11.57
 -54 07:36:05.19
 -54 15:43:49.83
 -54 04:25:09.01
 -54 06:49:27.52
 -54 02:57:52.02
 -54 16:45:44.87
 -54 21:30:57.82
 -54 04:25:09.15
 -54 06:49:27.11
 -54 02:57:52.48
 -54 16:45:44.66
 -54 21:30:57.58
 -54 22:30:04.18
 -54 01:56:51.59
 -681 00:00:00.0
 -681 04:50:38.1
 -681 12:31:35.2
 -681 12:47:53.3
 -681 01:26:00.5
 -681 20:58:11.6
 -681 07:36:05.2
 -681 15:43:49.8
 -681 04:25:09.0
 -681 06:49:27.5
 -681 02:57:52.0
 -681 16:45:44.9
 -681 21:30:57.8
 -681 04:25:09.2
 -681 06:49:27.1
 -681 02:57:52.5
 -681 16:45:44.7
 -681 21:30:57.6
 -681 22:30:04.2
 -681 01:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:10657"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:10859: cat dtime16.out"
at_fn_check_prepare_trace "data-out.at:10859"
( $at_check_trace; cat dtime16.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "       0 00:00:00
       0 04:50:38
       0 12:31:35
       0 12:47:53
       0 01:26:00
       0 20:58:11
       0 07:36:05
       0 15:43:49
       0 04:25:09
       0 06:49:27
       0 02:57:52
       0 16:45:44
       0 21:30:57
       0 04:25:09
       0 06:49:27
       0 02:57:52
       0 16:45:44
       0 21:30:57
       0 22:30:04
       0 01:56:51
       1 00:00:00
       1 04:50:38
       1 12:31:35
       1 12:47:53
       1 01:26:00
       1 20:58:11
       1 07:36:05
       1 15:43:49
       1 04:25:09
       1 06:49:27
       1 02:57:52
       1 16:45:44
       1 21:30:57
       1 04:25:09
       1 06:49:27
       1 02:57:52
       1 16:45:44
       1 21:30:57
       1 22:30:04
       1 01:56:51
       2 00:00:00
       2 04:50:38
       2 12:31:35
       2 12:47:53
       2 01:26:00
       2 20:58:11
       2 07:36:05
       2 15:43:49
       2 04:25:09
       2 06:49:27
       2 02:57:52
       2 16:45:44
       2 21:30:57
       2 04:25:09
       2 06:49:27
       2 02:57:52
       2 16:45:44
       2 21:30:57
       2 22:30:04
       2 01:56:51
      54 00:00:00
      54 04:50:38
      54 12:31:35
      54 12:47:53
      54 01:26:00
      54 20:58:11
      54 07:36:05
      54 15:43:49
      54 04:25:09
      54 06:49:27
      54 02:57:52
      54 16:45:44
      54 21:30:57
      54 04:25:09
      54 06:49:27
      54 02:57:52
      54 16:45:44
      54 21:30:57
      54 22:30:04
      54 01:56:51
     681 00:00:00
     681 04:50:38
     681 12:31:35
     681 12:47:53
     681 01:26:00
     681 20:58:11
     681 07:36:05
     681 15:43:49
     681 04:25:09
     681 06:49:27
     681 02:57:52
     681 16:45:44
     681 21:30:57
     681 04:25:09
     681 06:49:27
     681 02:57:52
     681 16:45:44
     681 21:30:57
     681 22:30:04
     681 01:56:51
       0 00:00:00
      -0 04:50:38
      -0 12:31:35
      -0 12:47:53
      -0 01:26:00
      -0 20:58:11
      -0 07:36:05
      -0 15:43:49
      -0 04:25:09
      -0 06:49:27
      -0 02:57:52
      -0 16:45:44
      -0 21:30:57
      -0 04:25:09
      -0 06:49:27
      -0 02:57:52
      -0 16:45:44
      -0 21:30:57
      -0 22:30:04
      -0 01:56:51
      -1 00:00:00
      -1 04:50:38
      -1 12:31:35
      -1 12:47:53
      -1 01:26:00
      -1 20:58:11
      -1 07:36:05
      -1 15:43:49
      -1 04:25:09
      -1 06:49:27
      -1 02:57:52
      -1 16:45:44
      -1 21:30:57
      -1 04:25:09
      -1 06:49:27
      -1 02:57:52
      -1 16:45:44
      -1 21:30:57
      -1 22:30:04
      -1 01:56:51
      -2 00:00:00
      -2 04:50:38
      -2 12:31:35
      -2 12:47:53
      -2 01:26:00
      -2 20:58:11
      -2 07:36:05
      -2 15:43:49
      -2 04:25:09
      -2 06:49:27
      -2 02:57:52
      -2 16:45:44
      -2 21:30:57
      -2 04:25:09
      -2 06:49:27
      -2 02:57:52
      -2 16:45:44
      -2 21:30:57
      -2 22:30:04
      -2 01:56:51
     -54 00:00:00
     -54 04:50:38
     -54 12:31:35
     -54 12:47:53
     -54 01:26:00
     -54 20:58:11
     -54 07:36:05
     -54 15:43:49
     -54 04:25:09
     -54 06:49:27
     -54 02:57:52
     -54 16:45:44
     -54 21:30:57
     -54 04:25:09
     -54 06:49:27
     -54 02:57:52
     -54 16:45:44
     -54 21:30:57
     -54 22:30:04
     -54 01:56:51
    -681 00:00:00
    -681 04:50:38
    -681 12:31:35
    -681 12:47:53
    -681 01:26:00
    -681 20:58:11
    -681 07:36:05
    -681 15:43:49
    -681 04:25:09
    -681 06:49:27
    -681 02:57:52
    -681 16:45:44
    -681 21:30:57
    -681 04:25:09
    -681 06:49:27
    -681 02:57:52
    -681 16:45:44
    -681 21:30:57
    -681 22:30:04
    -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:10859"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:11061: cat dtime16.1.out"
at_fn_check_prepare_trace "data-out.at:11061"
( $at_check_trace; cat dtime16.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     0 00:00:00.0
     0 04:50:38.1
     0 12:31:35.2
     0 12:47:53.3
     0 01:26:00.5
     0 20:58:11.6
     0 07:36:05.2
     0 15:43:49.8
     0 04:25:09.0
     0 06:49:27.5
     0 02:57:52.0
     0 16:45:44.9
     0 21:30:57.8
     0 04:25:09.2
     0 06:49:27.1
     0 02:57:52.5
     0 16:45:44.7
     0 21:30:57.6
     0 22:30:04.2
     0 01:56:51.6
     1 00:00:00.0
     1 04:50:38.1
     1 12:31:35.2
     1 12:47:53.3
     1 01:26:00.5
     1 20:58:11.6
     1 07:36:05.2
     1 15:43:49.8
     1 04:25:09.0
     1 06:49:27.5
     1 02:57:52.0
     1 16:45:44.9
     1 21:30:57.8
     1 04:25:09.2
     1 06:49:27.1
     1 02:57:52.5
     1 16:45:44.7
     1 21:30:57.6
     1 22:30:04.2
     1 01:56:51.6
     2 00:00:00.0
     2 04:50:38.1
     2 12:31:35.2
     2 12:47:53.3
     2 01:26:00.5
     2 20:58:11.6
     2 07:36:05.2
     2 15:43:49.8
     2 04:25:09.0
     2 06:49:27.5
     2 02:57:52.0
     2 16:45:44.9
     2 21:30:57.8
     2 04:25:09.2
     2 06:49:27.1
     2 02:57:52.5
     2 16:45:44.7
     2 21:30:57.6
     2 22:30:04.2
     2 01:56:51.6
    54 00:00:00.0
    54 04:50:38.1
    54 12:31:35.2
    54 12:47:53.3
    54 01:26:00.5
    54 20:58:11.6
    54 07:36:05.2
    54 15:43:49.8
    54 04:25:09.0
    54 06:49:27.5
    54 02:57:52.0
    54 16:45:44.9
    54 21:30:57.8
    54 04:25:09.2
    54 06:49:27.1
    54 02:57:52.5
    54 16:45:44.7
    54 21:30:57.6
    54 22:30:04.2
    54 01:56:51.6
   681 00:00:00.0
   681 04:50:38.1
   681 12:31:35.2
   681 12:47:53.3
   681 01:26:00.5
   681 20:58:11.6
   681 07:36:05.2
   681 15:43:49.8
   681 04:25:09.0
   681 06:49:27.5
   681 02:57:52.0
   681 16:45:44.9
   681 21:30:57.8
   681 04:25:09.2
   681 06:49:27.1
   681 02:57:52.5
   681 16:45:44.7
   681 21:30:57.6
   681 22:30:04.2
   681 01:56:51.6
     0 00:00:00.0
    -0 04:50:38.1
    -0 12:31:35.2
    -0 12:47:53.3
    -0 01:26:00.5
    -0 20:58:11.6
    -0 07:36:05.2
    -0 15:43:49.8
    -0 04:25:09.0
    -0 06:49:27.5
    -0 02:57:52.0
    -0 16:45:44.9
    -0 21:30:57.8
    -0 04:25:09.2
    -0 06:49:27.1
    -0 02:57:52.5
    -0 16:45:44.7
    -0 21:30:57.6
    -0 22:30:04.2
    -0 01:56:51.6
    -1 00:00:00.0
    -1 04:50:38.1
    -1 12:31:35.2
    -1 12:47:53.3
    -1 01:26:00.5
    -1 20:58:11.6
    -1 07:36:05.2
    -1 15:43:49.8
    -1 04:25:09.0
    -1 06:49:27.5
    -1 02:57:52.0
    -1 16:45:44.9
    -1 21:30:57.8
    -1 04:25:09.2
    -1 06:49:27.1
    -1 02:57:52.5
    -1 16:45:44.7
    -1 21:30:57.6
    -1 22:30:04.2
    -1 01:56:51.6
    -2 00:00:00.0
    -2 04:50:38.1
    -2 12:31:35.2
    -2 12:47:53.3
    -2 01:26:00.5
    -2 20:58:11.6
    -2 07:36:05.2
    -2 15:43:49.8
    -2 04:25:09.0
    -2 06:49:27.5
    -2 02:57:52.0
    -2 16:45:44.9
    -2 21:30:57.8
    -2 04:25:09.2
    -2 06:49:27.1
    -2 02:57:52.5
    -2 16:45:44.7
    -2 21:30:57.6
    -2 22:30:04.2
    -2 01:56:51.6
   -54 00:00:00.0
   -54 04:50:38.1
   -54 12:31:35.2
   -54 12:47:53.3
   -54 01:26:00.5
   -54 20:58:11.6
   -54 07:36:05.2
   -54 15:43:49.8
   -54 04:25:09.0
   -54 06:49:27.5
   -54 02:57:52.0
   -54 16:45:44.9
   -54 21:30:57.8
   -54 04:25:09.2
   -54 06:49:27.1
   -54 02:57:52.5
   -54 16:45:44.7
   -54 21:30:57.6
   -54 22:30:04.2
   -54 01:56:51.6
  -681 00:00:00.0
  -681 04:50:38.1
  -681 12:31:35.2
  -681 12:47:53.3
  -681 01:26:00.5
  -681 20:58:11.6
  -681 07:36:05.2
  -681 15:43:49.8
  -681 04:25:09.0
  -681 06:49:27.5
  -681 02:57:52.0
  -681 16:45:44.9
  -681 21:30:57.8
  -681 04:25:09.2
  -681 06:49:27.1
  -681 02:57:52.5
  -681 16:45:44.7
  -681 21:30:57.6
  -681 22:30:04.2
  -681 01:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:11061"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:11263: cat dtime16.2.out"
at_fn_check_prepare_trace "data-out.at:11263"
( $at_check_trace; cat dtime16.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    0 00:00:00.00
    0 04:50:38.12
    0 12:31:35.23
    0 12:47:53.35
    0 01:26:00.46
    0 20:58:11.57
    0 07:36:05.19
    0 15:43:49.83
    0 04:25:09.01
    0 06:49:27.52
    0 02:57:52.02
    0 16:45:44.87
    0 21:30:57.82
    0 04:25:09.15
    0 06:49:27.11
    0 02:57:52.48
    0 16:45:44.66
    0 21:30:57.58
    0 22:30:04.18
    0 01:56:51.59
    1 00:00:00.00
    1 04:50:38.12
    1 12:31:35.23
    1 12:47:53.35
    1 01:26:00.46
    1 20:58:11.57
    1 07:36:05.19
    1 15:43:49.83
    1 04:25:09.01
    1 06:49:27.52
    1 02:57:52.02
    1 16:45:44.87
    1 21:30:57.82
    1 04:25:09.15
    1 06:49:27.11
    1 02:57:52.48
    1 16:45:44.66
    1 21:30:57.58
    1 22:30:04.18
    1 01:56:51.59
    2 00:00:00.00
    2 04:50:38.12
    2 12:31:35.23
    2 12:47:53.35
    2 01:26:00.46
    2 20:58:11.57
    2 07:36:05.19
    2 15:43:49.83
    2 04:25:09.01
    2 06:49:27.52
    2 02:57:52.02
    2 16:45:44.87
    2 21:30:57.82
    2 04:25:09.15
    2 06:49:27.11
    2 02:57:52.48
    2 16:45:44.66
    2 21:30:57.58
    2 22:30:04.18
    2 01:56:51.59
   54 00:00:00.00
   54 04:50:38.12
   54 12:31:35.23
   54 12:47:53.35
   54 01:26:00.46
   54 20:58:11.57
   54 07:36:05.19
   54 15:43:49.83
   54 04:25:09.01
   54 06:49:27.52
   54 02:57:52.02
   54 16:45:44.87
   54 21:30:57.82
   54 04:25:09.15
   54 06:49:27.11
   54 02:57:52.48
   54 16:45:44.66
   54 21:30:57.58
   54 22:30:04.18
   54 01:56:51.59
  681 00:00:00.00
  681 04:50:38.12
  681 12:31:35.23
  681 12:47:53.35
  681 01:26:00.46
  681 20:58:11.57
  681 07:36:05.19
  681 15:43:49.83
  681 04:25:09.01
  681 06:49:27.52
  681 02:57:52.02
  681 16:45:44.87
  681 21:30:57.82
  681 04:25:09.15
  681 06:49:27.11
  681 02:57:52.48
  681 16:45:44.66
  681 21:30:57.58
  681 22:30:04.18
  681 01:56:51.59
    0 00:00:00.00
   -0 04:50:38.12
   -0 12:31:35.23
   -0 12:47:53.35
   -0 01:26:00.46
   -0 20:58:11.57
   -0 07:36:05.19
   -0 15:43:49.83
   -0 04:25:09.01
   -0 06:49:27.52
   -0 02:57:52.02
   -0 16:45:44.87
   -0 21:30:57.82
   -0 04:25:09.15
   -0 06:49:27.11
   -0 02:57:52.48
   -0 16:45:44.66
   -0 21:30:57.58
   -0 22:30:04.18
   -0 01:56:51.59
   -1 00:00:00.00
   -1 04:50:38.12
   -1 12:31:35.23
   -1 12:47:53.35
   -1 01:26:00.46
   -1 20:58:11.57
   -1 07:36:05.19
   -1 15:43:49.83
   -1 04:25:09.01
   -1 06:49:27.52
   -1 02:57:52.02
   -1 16:45:44.87
   -1 21:30:57.82
   -1 04:25:09.15
   -1 06:49:27.11
   -1 02:57:52.48
   -1 16:45:44.66
   -1 21:30:57.58
   -1 22:30:04.18
   -1 01:56:51.59
   -2 00:00:00.00
   -2 04:50:38.12
   -2 12:31:35.23
   -2 12:47:53.35
   -2 01:26:00.46
   -2 20:58:11.57
   -2 07:36:05.19
   -2 15:43:49.83
   -2 04:25:09.01
   -2 06:49:27.52
   -2 02:57:52.02
   -2 16:45:44.87
   -2 21:30:57.82
   -2 04:25:09.15
   -2 06:49:27.11
   -2 02:57:52.48
   -2 16:45:44.66
   -2 21:30:57.58
   -2 22:30:04.18
   -2 01:56:51.59
  -54 00:00:00.00
  -54 04:50:38.12
  -54 12:31:35.23
  -54 12:47:53.35
  -54 01:26:00.46
  -54 20:58:11.57
  -54 07:36:05.19
  -54 15:43:49.83
  -54 04:25:09.01
  -54 06:49:27.52
  -54 02:57:52.02
  -54 16:45:44.87
  -54 21:30:57.82
  -54 04:25:09.15
  -54 06:49:27.11
  -54 02:57:52.48
  -54 16:45:44.66
  -54 21:30:57.58
  -54 22:30:04.18
  -54 01:56:51.59
 -681 00:00:00.00
 -681 04:50:38.12
 -681 12:31:35.23
 -681 12:47:53.35
 -681 01:26:00.46
 -681 20:58:11.57
 -681 07:36:05.19
 -681 15:43:49.83
 -681 04:25:09.01
 -681 06:49:27.52
 -681 02:57:52.02
 -681 16:45:44.87
 -681 21:30:57.82
 -681 04:25:09.15
 -681 06:49:27.11
 -681 02:57:52.48
 -681 16:45:44.66
 -681 21:30:57.58
 -681 22:30:04.18
 -681 01:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:11263"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:11465: cat dtime16.3.out"
at_fn_check_prepare_trace "data-out.at:11465"
( $at_check_trace; cat dtime16.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   0 00:00:00.000
   0 04:50:38.123
   0 12:31:35.235
   0 12:47:53.345
   0 01:26:00.456
   0 20:58:11.567
   0 07:36:05.190
   0 15:43:49.831
   0 04:25:09.013
   0 06:49:27.524
   0 02:57:52.016
   0 16:45:44.865
   0 21:30:57.820
   0 04:25:09.154
   0 06:49:27.105
   0 02:57:52.482
   0 16:45:44.658
   0 21:30:57.582
   0 22:30:04.183
   0 01:56:51.593
   1 00:00:00.000
   1 04:50:38.123
   1 12:31:35.235
   1 12:47:53.345
   1 01:26:00.456
   1 20:58:11.567
   1 07:36:05.190
   1 15:43:49.831
   1 04:25:09.013
   1 06:49:27.524
   1 02:57:52.016
   1 16:45:44.865
   1 21:30:57.820
   1 04:25:09.154
   1 06:49:27.105
   1 02:57:52.482
   1 16:45:44.658
   1 21:30:57.582
   1 22:30:04.183
   1 01:56:51.593
   2 00:00:00.000
   2 04:50:38.123
   2 12:31:35.235
   2 12:47:53.345
   2 01:26:00.456
   2 20:58:11.567
   2 07:36:05.190
   2 15:43:49.831
   2 04:25:09.013
   2 06:49:27.524
   2 02:57:52.016
   2 16:45:44.865
   2 21:30:57.820
   2 04:25:09.154
   2 06:49:27.105
   2 02:57:52.482
   2 16:45:44.658
   2 21:30:57.582
   2 22:30:04.183
   2 01:56:51.593
  54 00:00:00.000
  54 04:50:38.123
  54 12:31:35.235
  54 12:47:53.345
  54 01:26:00.456
  54 20:58:11.567
  54 07:36:05.190
  54 15:43:49.831
  54 04:25:09.013
  54 06:49:27.524
  54 02:57:52.016
  54 16:45:44.865
  54 21:30:57.820
  54 04:25:09.154
  54 06:49:27.105
  54 02:57:52.482
  54 16:45:44.658
  54 21:30:57.582
  54 22:30:04.183
  54 01:56:51.593
 681 00:00:00.000
 681 04:50:38.123
 681 12:31:35.235
 681 12:47:53.345
 681 01:26:00.456
 681 20:58:11.567
 681 07:36:05.190
 681 15:43:49.831
 681 04:25:09.013
 681 06:49:27.524
 681 02:57:52.016
 681 16:45:44.865
 681 21:30:57.820
 681 04:25:09.154
 681 06:49:27.105
 681 02:57:52.482
 681 16:45:44.658
 681 21:30:57.582
 681 22:30:04.183
 681 01:56:51.593
   0 00:00:00.000
  -0 04:50:38.123
  -0 12:31:35.235
  -0 12:47:53.345
  -0 01:26:00.456
  -0 20:58:11.567
  -0 07:36:05.190
  -0 15:43:49.831
  -0 04:25:09.013
  -0 06:49:27.524
  -0 02:57:52.016
  -0 16:45:44.865
  -0 21:30:57.820
  -0 04:25:09.154
  -0 06:49:27.105
  -0 02:57:52.482
  -0 16:45:44.658
  -0 21:30:57.582
  -0 22:30:04.183
  -0 01:56:51.593
  -1 00:00:00.000
  -1 04:50:38.123
  -1 12:31:35.235
  -1 12:47:53.345
  -1 01:26:00.456
  -1 20:58:11.567
  -1 07:36:05.190
  -1 15:43:49.831
  -1 04:25:09.013
  -1 06:49:27.524
  -1 02:57:52.016
  -1 16:45:44.865
  -1 21:30:57.820
  -1 04:25:09.154
  -1 06:49:27.105
  -1 02:57:52.482
  -1 16:45:44.658
  -1 21:30:57.582
  -1 22:30:04.183
  -1 01:56:51.593
  -2 00:00:00.000
  -2 04:50:38.123
  -2 12:31:35.235
  -2 12:47:53.345
  -2 01:26:00.456
  -2 20:58:11.567
  -2 07:36:05.190
  -2 15:43:49.831
  -2 04:25:09.013
  -2 06:49:27.524
  -2 02:57:52.016
  -2 16:45:44.865
  -2 21:30:57.820
  -2 04:25:09.154
  -2 06:49:27.105
  -2 02:57:52.482
  -2 16:45:44.658
  -2 21:30:57.582
  -2 22:30:04.183
  -2 01:56:51.593
 -54 00:00:00.000
 -54 04:50:38.123
 -54 12:31:35.235
 -54 12:47:53.345
 -54 01:26:00.456
 -54 20:58:11.567
 -54 07:36:05.190
 -54 15:43:49.831
 -54 04:25:09.013
 -54 06:49:27.524
 -54 02:57:52.016
 -54 16:45:44.865
 -54 21:30:57.820
 -54 04:25:09.154
 -54 06:49:27.105
 -54 02:57:52.482
 -54 16:45:44.658
 -54 21:30:57.582
 -54 22:30:04.183
 -54 01:56:51.593
 -681 00:00:00.00
 -681 04:50:38.12
 -681 12:31:35.23
 -681 12:47:53.35
 -681 01:26:00.46
 -681 20:58:11.57
 -681 07:36:05.19
 -681 15:43:49.83
 -681 04:25:09.01
 -681 06:49:27.52
 -681 02:57:52.02
 -681 16:45:44.87
 -681 21:30:57.82
 -681 04:25:09.15
 -681 06:49:27.11
 -681 02:57:52.48
 -681 16:45:44.66
 -681 21:30:57.58
 -681 22:30:04.18
 -681 01:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:11465"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:11667: cat dtime16.4.out"
at_fn_check_prepare_trace "data-out.at:11667"
( $at_check_trace; cat dtime16.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  0 00:00:00.0000
  0 04:50:38.1230
  0 12:31:35.2345
  0 12:47:53.3451
  0 01:26:00.4561
  0 20:58:11.5668
  0 07:36:05.1896
  0 15:43:49.8313
  0 04:25:09.0129
  0 06:49:27.5238
  0 02:57:52.0156
  0 16:45:44.8653
  0 21:30:57.8205
  0 04:25:09.1539
  0 06:49:27.1053
  0 02:57:52.4823
  0 16:45:44.6583
  0 21:30:57.5822
  0 22:30:04.1835
  0 01:56:51.5932
  1 00:00:00.0000
  1 04:50:38.1230
  1 12:31:35.2345
  1 12:47:53.3451
  1 01:26:00.4561
  1 20:58:11.5668
  1 07:36:05.1896
  1 15:43:49.8313
  1 04:25:09.0129
  1 06:49:27.5237
  1 02:57:52.0157
  1 16:45:44.8653
  1 21:30:57.8205
  1 04:25:09.1540
  1 06:49:27.1053
  1 02:57:52.4823
  1 16:45:44.6583
  1 21:30:57.5822
  1 22:30:04.1835
  1 01:56:51.5932
  2 00:00:00.0000
  2 04:50:38.1230
  2 12:31:35.2345
  2 12:47:53.3451
  2 01:26:00.4562
  2 20:58:11.5668
  2 07:36:05.1896
  2 15:43:49.8313
  2 04:25:09.0129
  2 06:49:27.5237
  2 02:57:52.0156
  2 16:45:44.8653
  2 21:30:57.8205
  2 04:25:09.1540
  2 06:49:27.1053
  2 02:57:52.4823
  2 16:45:44.6583
  2 21:30:57.5822
  2 22:30:04.1835
  2 01:56:51.5932
 54 00:00:00.0000
 54 04:50:38.1230
 54 12:31:35.2345
 54 12:47:53.3450
 54 01:26:00.4561
 54 20:58:11.5668
 54 07:36:05.1896
 54 15:43:49.8313
 54 04:25:09.0129
 54 06:49:27.5237
 54 02:57:52.0157
 54 16:45:44.8653
 54 21:30:57.8205
 54 04:25:09.1540
 54 06:49:27.1053
 54 02:57:52.4823
 54 16:45:44.6583
 54 21:30:57.5822
 54 22:30:04.1835
 54 01:56:51.5932
 681 00:00:00.000
 681 04:50:38.123
 681 12:31:35.235
 681 12:47:53.345
 681 01:26:00.456
 681 20:58:11.567
 681 07:36:05.190
 681 15:43:49.831
 681 04:25:09.013
 681 06:49:27.524
 681 02:57:52.016
 681 16:45:44.865
 681 21:30:57.820
 681 04:25:09.154
 681 06:49:27.105
 681 02:57:52.482
 681 16:45:44.658
 681 21:30:57.582
 681 22:30:04.183
 681 01:56:51.593
  0 00:00:00.0000
 -0 04:50:38.1230
 -0 12:31:35.2345
 -0 12:47:53.3451
 -0 01:26:00.4561
 -0 20:58:11.5668
 -0 07:36:05.1896
 -0 15:43:49.8313
 -0 04:25:09.0129
 -0 06:49:27.5238
 -0 02:57:52.0156
 -0 16:45:44.8653
 -0 21:30:57.8205
 -0 04:25:09.1539
 -0 06:49:27.1053
 -0 02:57:52.4823
 -0 16:45:44.6583
 -0 21:30:57.5822
 -0 22:30:04.1835
 -0 01:56:51.5932
 -1 00:00:00.0000
 -1 04:50:38.1230
 -1 12:31:35.2345
 -1 12:47:53.3451
 -1 01:26:00.4561
 -1 20:58:11.5668
 -1 07:36:05.1896
 -1 15:43:49.8313
 -1 04:25:09.0129
 -1 06:49:27.5237
 -1 02:57:52.0157
 -1 16:45:44.8653
 -1 21:30:57.8205
 -1 04:25:09.1540
 -1 06:49:27.1053
 -1 02:57:52.4823
 -1 16:45:44.6583
 -1 21:30:57.5822
 -1 22:30:04.1835
 -1 01:56:51.5932
 -2 00:00:00.0000
 -2 04:50:38.1230
 -2 12:31:35.2345
 -2 12:47:53.3451
 -2 01:26:00.4562
 -2 20:58:11.5668
 -2 07:36:05.1896
 -2 15:43:49.8313
 -2 04:25:09.0129
 -2 06:49:27.5237
 -2 02:57:52.0156
 -2 16:45:44.8653
 -2 21:30:57.8205
 -2 04:25:09.1540
 -2 06:49:27.1053
 -2 02:57:52.4823
 -2 16:45:44.6583
 -2 21:30:57.5822
 -2 22:30:04.1835
 -2 01:56:51.5932
 -54 00:00:00.000
 -54 04:50:38.123
 -54 12:31:35.235
 -54 12:47:53.345
 -54 01:26:00.456
 -54 20:58:11.567
 -54 07:36:05.190
 -54 15:43:49.831
 -54 04:25:09.013
 -54 06:49:27.524
 -54 02:57:52.016
 -54 16:45:44.865
 -54 21:30:57.820
 -54 04:25:09.154
 -54 06:49:27.105
 -54 02:57:52.482
 -54 16:45:44.658
 -54 21:30:57.582
 -54 22:30:04.183
 -54 01:56:51.593
 -681 00:00:00.00
 -681 04:50:38.12
 -681 12:31:35.23
 -681 12:47:53.35
 -681 01:26:00.46
 -681 20:58:11.57
 -681 07:36:05.19
 -681 15:43:49.83
 -681 04:25:09.01
 -681 06:49:27.52
 -681 02:57:52.02
 -681 16:45:44.87
 -681 21:30:57.82
 -681 04:25:09.15
 -681 06:49:27.11
 -681 02:57:52.48
 -681 16:45:44.66
 -681 21:30:57.58
 -681 22:30:04.18
 -681 01:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:11667"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:11869: cat dtime17.out"
at_fn_check_prepare_trace "data-out.at:11869"
( $at_check_trace; cat dtime17.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "        0 00:00:00
        0 04:50:38
        0 12:31:35
        0 12:47:53
        0 01:26:00
        0 20:58:11
        0 07:36:05
        0 15:43:49
        0 04:25:09
        0 06:49:27
        0 02:57:52
        0 16:45:44
        0 21:30:57
        0 04:25:09
        0 06:49:27
        0 02:57:52
        0 16:45:44
        0 21:30:57
        0 22:30:04
        0 01:56:51
        1 00:00:00
        1 04:50:38
        1 12:31:35
        1 12:47:53
        1 01:26:00
        1 20:58:11
        1 07:36:05
        1 15:43:49
        1 04:25:09
        1 06:49:27
        1 02:57:52
        1 16:45:44
        1 21:30:57
        1 04:25:09
        1 06:49:27
        1 02:57:52
        1 16:45:44
        1 21:30:57
        1 22:30:04
        1 01:56:51
        2 00:00:00
        2 04:50:38
        2 12:31:35
        2 12:47:53
        2 01:26:00
        2 20:58:11
        2 07:36:05
        2 15:43:49
        2 04:25:09
        2 06:49:27
        2 02:57:52
        2 16:45:44
        2 21:30:57
        2 04:25:09
        2 06:49:27
        2 02:57:52
        2 16:45:44
        2 21:30:57
        2 22:30:04
        2 01:56:51
       54 00:00:00
       54 04:50:38
       54 12:31:35
       54 12:47:53
       54 01:26:00
       54 20:58:11
       54 07:36:05
       54 15:43:49
       54 04:25:09
       54 06:49:27
       54 02:57:52
       54 16:45:44
       54 21:30:57
       54 04:25:09
       54 06:49:27
       54 02:57:52
       54 16:45:44
       54 21:30:57
       54 22:30:04
       54 01:56:51
      681 00:00:00
      681 04:50:38
      681 12:31:35
      681 12:47:53
      681 01:26:00
      681 20:58:11
      681 07:36:05
      681 15:43:49
      681 04:25:09
      681 06:49:27
      681 02:57:52
      681 16:45:44
      681 21:30:57
      681 04:25:09
      681 06:49:27
      681 02:57:52
      681 16:45:44
      681 21:30:57
      681 22:30:04
      681 01:56:51
        0 00:00:00
       -0 04:50:38
       -0 12:31:35
       -0 12:47:53
       -0 01:26:00
       -0 20:58:11
       -0 07:36:05
       -0 15:43:49
       -0 04:25:09
       -0 06:49:27
       -0 02:57:52
       -0 16:45:44
       -0 21:30:57
       -0 04:25:09
       -0 06:49:27
       -0 02:57:52
       -0 16:45:44
       -0 21:30:57
       -0 22:30:04
       -0 01:56:51
       -1 00:00:00
       -1 04:50:38
       -1 12:31:35
       -1 12:47:53
       -1 01:26:00
       -1 20:58:11
       -1 07:36:05
       -1 15:43:49
       -1 04:25:09
       -1 06:49:27
       -1 02:57:52
       -1 16:45:44
       -1 21:30:57
       -1 04:25:09
       -1 06:49:27
       -1 02:57:52
       -1 16:45:44
       -1 21:30:57
       -1 22:30:04
       -1 01:56:51
       -2 00:00:00
       -2 04:50:38
       -2 12:31:35
       -2 12:47:53
       -2 01:26:00
       -2 20:58:11
       -2 07:36:05
       -2 15:43:49
       -2 04:25:09
       -2 06:49:27
       -2 02:57:52
       -2 16:45:44
       -2 21:30:57
       -2 04:25:09
       -2 06:49:27
       -2 02:57:52
       -2 16:45:44
       -2 21:30:57
       -2 22:30:04
       -2 01:56:51
      -54 00:00:00
      -54 04:50:38
      -54 12:31:35
      -54 12:47:53
      -54 01:26:00
      -54 20:58:11
      -54 07:36:05
      -54 15:43:49
      -54 04:25:09
      -54 06:49:27
      -54 02:57:52
      -54 16:45:44
      -54 21:30:57
      -54 04:25:09
      -54 06:49:27
      -54 02:57:52
      -54 16:45:44
      -54 21:30:57
      -54 22:30:04
      -54 01:56:51
     -681 00:00:00
     -681 04:50:38
     -681 12:31:35
     -681 12:47:53
     -681 01:26:00
     -681 20:58:11
     -681 07:36:05
     -681 15:43:49
     -681 04:25:09
     -681 06:49:27
     -681 02:57:52
     -681 16:45:44
     -681 21:30:57
     -681 04:25:09
     -681 06:49:27
     -681 02:57:52
     -681 16:45:44
     -681 21:30:57
     -681 22:30:04
     -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:11869"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:12071: cat dtime17.1.out"
at_fn_check_prepare_trace "data-out.at:12071"
( $at_check_trace; cat dtime17.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "      0 00:00:00.0
      0 04:50:38.1
      0 12:31:35.2
      0 12:47:53.3
      0 01:26:00.5
      0 20:58:11.6
      0 07:36:05.2
      0 15:43:49.8
      0 04:25:09.0
      0 06:49:27.5
      0 02:57:52.0
      0 16:45:44.9
      0 21:30:57.8
      0 04:25:09.2
      0 06:49:27.1
      0 02:57:52.5
      0 16:45:44.7
      0 21:30:57.6
      0 22:30:04.2
      0 01:56:51.6
      1 00:00:00.0
      1 04:50:38.1
      1 12:31:35.2
      1 12:47:53.3
      1 01:26:00.5
      1 20:58:11.6
      1 07:36:05.2
      1 15:43:49.8
      1 04:25:09.0
      1 06:49:27.5
      1 02:57:52.0
      1 16:45:44.9
      1 21:30:57.8
      1 04:25:09.2
      1 06:49:27.1
      1 02:57:52.5
      1 16:45:44.7
      1 21:30:57.6
      1 22:30:04.2
      1 01:56:51.6
      2 00:00:00.0
      2 04:50:38.1
      2 12:31:35.2
      2 12:47:53.3
      2 01:26:00.5
      2 20:58:11.6
      2 07:36:05.2
      2 15:43:49.8
      2 04:25:09.0
      2 06:49:27.5
      2 02:57:52.0
      2 16:45:44.9
      2 21:30:57.8
      2 04:25:09.2
      2 06:49:27.1
      2 02:57:52.5
      2 16:45:44.7
      2 21:30:57.6
      2 22:30:04.2
      2 01:56:51.6
     54 00:00:00.0
     54 04:50:38.1
     54 12:31:35.2
     54 12:47:53.3
     54 01:26:00.5
     54 20:58:11.6
     54 07:36:05.2
     54 15:43:49.8
     54 04:25:09.0
     54 06:49:27.5
     54 02:57:52.0
     54 16:45:44.9
     54 21:30:57.8
     54 04:25:09.2
     54 06:49:27.1
     54 02:57:52.5
     54 16:45:44.7
     54 21:30:57.6
     54 22:30:04.2
     54 01:56:51.6
    681 00:00:00.0
    681 04:50:38.1
    681 12:31:35.2
    681 12:47:53.3
    681 01:26:00.5
    681 20:58:11.6
    681 07:36:05.2
    681 15:43:49.8
    681 04:25:09.0
    681 06:49:27.5
    681 02:57:52.0
    681 16:45:44.9
    681 21:30:57.8
    681 04:25:09.2
    681 06:49:27.1
    681 02:57:52.5
    681 16:45:44.7
    681 21:30:57.6
    681 22:30:04.2
    681 01:56:51.6
      0 00:00:00.0
     -0 04:50:38.1
     -0 12:31:35.2
     -0 12:47:53.3
     -0 01:26:00.5
     -0 20:58:11.6
     -0 07:36:05.2
     -0 15:43:49.8
     -0 04:25:09.0
     -0 06:49:27.5
     -0 02:57:52.0
     -0 16:45:44.9
     -0 21:30:57.8
     -0 04:25:09.2
     -0 06:49:27.1
     -0 02:57:52.5
     -0 16:45:44.7
     -0 21:30:57.6
     -0 22:30:04.2
     -0 01:56:51.6
     -1 00:00:00.0
     -1 04:50:38.1
     -1 12:31:35.2
     -1 12:47:53.3
     -1 01:26:00.5
     -1 20:58:11.6
     -1 07:36:05.2
     -1 15:43:49.8
     -1 04:25:09.0
     -1 06:49:27.5
     -1 02:57:52.0
     -1 16:45:44.9
     -1 21:30:57.8
     -1 04:25:09.2
     -1 06:49:27.1
     -1 02:57:52.5
     -1 16:45:44.7
     -1 21:30:57.6
     -1 22:30:04.2
     -1 01:56:51.6
     -2 00:00:00.0
     -2 04:50:38.1
     -2 12:31:35.2
     -2 12:47:53.3
     -2 01:26:00.5
     -2 20:58:11.6
     -2 07:36:05.2
     -2 15:43:49.8
     -2 04:25:09.0
     -2 06:49:27.5
     -2 02:57:52.0
     -2 16:45:44.9
     -2 21:30:57.8
     -2 04:25:09.2
     -2 06:49:27.1
     -2 02:57:52.5
     -2 16:45:44.7
     -2 21:30:57.6
     -2 22:30:04.2
     -2 01:56:51.6
    -54 00:00:00.0
    -54 04:50:38.1
    -54 12:31:35.2
    -54 12:47:53.3
    -54 01:26:00.5
    -54 20:58:11.6
    -54 07:36:05.2
    -54 15:43:49.8
    -54 04:25:09.0
    -54 06:49:27.5
    -54 02:57:52.0
    -54 16:45:44.9
    -54 21:30:57.8
    -54 04:25:09.2
    -54 06:49:27.1
    -54 02:57:52.5
    -54 16:45:44.7
    -54 21:30:57.6
    -54 22:30:04.2
    -54 01:56:51.6
   -681 00:00:00.0
   -681 04:50:38.1
   -681 12:31:35.2
   -681 12:47:53.3
   -681 01:26:00.5
   -681 20:58:11.6
   -681 07:36:05.2
   -681 15:43:49.8
   -681 04:25:09.0
   -681 06:49:27.5
   -681 02:57:52.0
   -681 16:45:44.9
   -681 21:30:57.8
   -681 04:25:09.2
   -681 06:49:27.1
   -681 02:57:52.5
   -681 16:45:44.7
   -681 21:30:57.6
   -681 22:30:04.2
   -681 01:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:12071"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:12273: cat dtime17.2.out"
at_fn_check_prepare_trace "data-out.at:12273"
( $at_check_trace; cat dtime17.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     0 00:00:00.00
     0 04:50:38.12
     0 12:31:35.23
     0 12:47:53.35
     0 01:26:00.46
     0 20:58:11.57
     0 07:36:05.19
     0 15:43:49.83
     0 04:25:09.01
     0 06:49:27.52
     0 02:57:52.02
     0 16:45:44.87
     0 21:30:57.82
     0 04:25:09.15
     0 06:49:27.11
     0 02:57:52.48
     0 16:45:44.66
     0 21:30:57.58
     0 22:30:04.18
     0 01:56:51.59
     1 00:00:00.00
     1 04:50:38.12
     1 12:31:35.23
     1 12:47:53.35
     1 01:26:00.46
     1 20:58:11.57
     1 07:36:05.19
     1 15:43:49.83
     1 04:25:09.01
     1 06:49:27.52
     1 02:57:52.02
     1 16:45:44.87
     1 21:30:57.82
     1 04:25:09.15
     1 06:49:27.11
     1 02:57:52.48
     1 16:45:44.66
     1 21:30:57.58
     1 22:30:04.18
     1 01:56:51.59
     2 00:00:00.00
     2 04:50:38.12
     2 12:31:35.23
     2 12:47:53.35
     2 01:26:00.46
     2 20:58:11.57
     2 07:36:05.19
     2 15:43:49.83
     2 04:25:09.01
     2 06:49:27.52
     2 02:57:52.02
     2 16:45:44.87
     2 21:30:57.82
     2 04:25:09.15
     2 06:49:27.11
     2 02:57:52.48
     2 16:45:44.66
     2 21:30:57.58
     2 22:30:04.18
     2 01:56:51.59
    54 00:00:00.00
    54 04:50:38.12
    54 12:31:35.23
    54 12:47:53.35
    54 01:26:00.46
    54 20:58:11.57
    54 07:36:05.19
    54 15:43:49.83
    54 04:25:09.01
    54 06:49:27.52
    54 02:57:52.02
    54 16:45:44.87
    54 21:30:57.82
    54 04:25:09.15
    54 06:49:27.11
    54 02:57:52.48
    54 16:45:44.66
    54 21:30:57.58
    54 22:30:04.18
    54 01:56:51.59
   681 00:00:00.00
   681 04:50:38.12
   681 12:31:35.23
   681 12:47:53.35
   681 01:26:00.46
   681 20:58:11.57
   681 07:36:05.19
   681 15:43:49.83
   681 04:25:09.01
   681 06:49:27.52
   681 02:57:52.02
   681 16:45:44.87
   681 21:30:57.82
   681 04:25:09.15
   681 06:49:27.11
   681 02:57:52.48
   681 16:45:44.66
   681 21:30:57.58
   681 22:30:04.18
   681 01:56:51.59
     0 00:00:00.00
    -0 04:50:38.12
    -0 12:31:35.23
    -0 12:47:53.35
    -0 01:26:00.46
    -0 20:58:11.57
    -0 07:36:05.19
    -0 15:43:49.83
    -0 04:25:09.01
    -0 06:49:27.52
    -0 02:57:52.02
    -0 16:45:44.87
    -0 21:30:57.82
    -0 04:25:09.15
    -0 06:49:27.11
    -0 02:57:52.48
    -0 16:45:44.66
    -0 21:30:57.58
    -0 22:30:04.18
    -0 01:56:51.59
    -1 00:00:00.00
    -1 04:50:38.12
    -1 12:31:35.23
    -1 12:47:53.35
    -1 01:26:00.46
    -1 20:58:11.57
    -1 07:36:05.19
    -1 15:43:49.83
    -1 04:25:09.01
    -1 06:49:27.52
    -1 02:57:52.02
    -1 16:45:44.87
    -1 21:30:57.82
    -1 04:25:09.15
    -1 06:49:27.11
    -1 02:57:52.48
    -1 16:45:44.66
    -1 21:30:57.58
    -1 22:30:04.18
    -1 01:56:51.59
    -2 00:00:00.00
    -2 04:50:38.12
    -2 12:31:35.23
    -2 12:47:53.35
    -2 01:26:00.46
    -2 20:58:11.57
    -2 07:36:05.19
    -2 15:43:49.83
    -2 04:25:09.01
    -2 06:49:27.52
    -2 02:57:52.02
    -2 16:45:44.87
    -2 21:30:57.82
    -2 04:25:09.15
    -2 06:49:27.11
    -2 02:57:52.48
    -2 16:45:44.66
    -2 21:30:57.58
    -2 22:30:04.18
    -2 01:56:51.59
   -54 00:00:00.00
   -54 04:50:38.12
   -54 12:31:35.23
   -54 12:47:53.35
   -54 01:26:00.46
   -54 20:58:11.57
   -54 07:36:05.19
   -54 15:43:49.83
   -54 04:25:09.01
   -54 06:49:27.52
   -54 02:57:52.02
   -54 16:45:44.87
   -54 21:30:57.82
   -54 04:25:09.15
   -54 06:49:27.11
   -54 02:57:52.48
   -54 16:45:44.66
   -54 21:30:57.58
   -54 22:30:04.18
   -54 01:56:51.59
  -681 00:00:00.00
  -681 04:50:38.12
  -681 12:31:35.23
  -681 12:47:53.35
  -681 01:26:00.46
  -681 20:58:11.57
  -681 07:36:05.19
  -681 15:43:49.83
  -681 04:25:09.01
  -681 06:49:27.52
  -681 02:57:52.02
  -681 16:45:44.87
  -681 21:30:57.82
  -681 04:25:09.15
  -681 06:49:27.11
  -681 02:57:52.48
  -681 16:45:44.66
  -681 21:30:57.58
  -681 22:30:04.18
  -681 01:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:12273"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:12475: cat dtime17.3.out"
at_fn_check_prepare_trace "data-out.at:12475"
( $at_check_trace; cat dtime17.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    0 00:00:00.000
    0 04:50:38.123
    0 12:31:35.235
    0 12:47:53.345
    0 01:26:00.456
    0 20:58:11.567
    0 07:36:05.190
    0 15:43:49.831
    0 04:25:09.013
    0 06:49:27.524
    0 02:57:52.016
    0 16:45:44.865
    0 21:30:57.820
    0 04:25:09.154
    0 06:49:27.105
    0 02:57:52.482
    0 16:45:44.658
    0 21:30:57.582
    0 22:30:04.183
    0 01:56:51.593
    1 00:00:00.000
    1 04:50:38.123
    1 12:31:35.235
    1 12:47:53.345
    1 01:26:00.456
    1 20:58:11.567
    1 07:36:05.190
    1 15:43:49.831
    1 04:25:09.013
    1 06:49:27.524
    1 02:57:52.016
    1 16:45:44.865
    1 21:30:57.820
    1 04:25:09.154
    1 06:49:27.105
    1 02:57:52.482
    1 16:45:44.658
    1 21:30:57.582
    1 22:30:04.183
    1 01:56:51.593
    2 00:00:00.000
    2 04:50:38.123
    2 12:31:35.235
    2 12:47:53.345
    2 01:26:00.456
    2 20:58:11.567
    2 07:36:05.190
    2 15:43:49.831
    2 04:25:09.013
    2 06:49:27.524
    2 02:57:52.016
    2 16:45:44.865
    2 21:30:57.820
    2 04:25:09.154
    2 06:49:27.105
    2 02:57:52.482
    2 16:45:44.658
    2 21:30:57.582
    2 22:30:04.183
    2 01:56:51.593
   54 00:00:00.000
   54 04:50:38.123
   54 12:31:35.235
   54 12:47:53.345
   54 01:26:00.456
   54 20:58:11.567
   54 07:36:05.190
   54 15:43:49.831
   54 04:25:09.013
   54 06:49:27.524
   54 02:57:52.016
   54 16:45:44.865
   54 21:30:57.820
   54 04:25:09.154
   54 06:49:27.105
   54 02:57:52.482
   54 16:45:44.658
   54 21:30:57.582
   54 22:30:04.183
   54 01:56:51.593
  681 00:00:00.000
  681 04:50:38.123
  681 12:31:35.235
  681 12:47:53.345
  681 01:26:00.456
  681 20:58:11.567
  681 07:36:05.190
  681 15:43:49.831
  681 04:25:09.013
  681 06:49:27.524
  681 02:57:52.016
  681 16:45:44.865
  681 21:30:57.820
  681 04:25:09.154
  681 06:49:27.105
  681 02:57:52.482
  681 16:45:44.658
  681 21:30:57.582
  681 22:30:04.183
  681 01:56:51.593
    0 00:00:00.000
   -0 04:50:38.123
   -0 12:31:35.235
   -0 12:47:53.345
   -0 01:26:00.456
   -0 20:58:11.567
   -0 07:36:05.190
   -0 15:43:49.831
   -0 04:25:09.013
   -0 06:49:27.524
   -0 02:57:52.016
   -0 16:45:44.865
   -0 21:30:57.820
   -0 04:25:09.154
   -0 06:49:27.105
   -0 02:57:52.482
   -0 16:45:44.658
   -0 21:30:57.582
   -0 22:30:04.183
   -0 01:56:51.593
   -1 00:00:00.000
   -1 04:50:38.123
   -1 12:31:35.235
   -1 12:47:53.345
   -1 01:26:00.456
   -1 20:58:11.567
   -1 07:36:05.190
   -1 15:43:49.831
   -1 04:25:09.013
   -1 06:49:27.524
   -1 02:57:52.016
   -1 16:45:44.865
   -1 21:30:57.820
   -1 04:25:09.154
   -1 06:49:27.105
   -1 02:57:52.482
   -1 16:45:44.658
   -1 21:30:57.582
   -1 22:30:04.183
   -1 01:56:51.593
   -2 00:00:00.000
   -2 04:50:38.123
   -2 12:31:35.235
   -2 12:47:53.345
   -2 01:26:00.456
   -2 20:58:11.567
   -2 07:36:05.190
   -2 15:43:49.831
   -2 04:25:09.013
   -2 06:49:27.524
   -2 02:57:52.016
   -2 16:45:44.865
   -2 21:30:57.820
   -2 04:25:09.154
   -2 06:49:27.105
   -2 02:57:52.482
   -2 16:45:44.658
   -2 21:30:57.582
   -2 22:30:04.183
   -2 01:56:51.593
  -54 00:00:00.000
  -54 04:50:38.123
  -54 12:31:35.235
  -54 12:47:53.345
  -54 01:26:00.456
  -54 20:58:11.567
  -54 07:36:05.190
  -54 15:43:49.831
  -54 04:25:09.013
  -54 06:49:27.524
  -54 02:57:52.016
  -54 16:45:44.865
  -54 21:30:57.820
  -54 04:25:09.154
  -54 06:49:27.105
  -54 02:57:52.482
  -54 16:45:44.658
  -54 21:30:57.582
  -54 22:30:04.183
  -54 01:56:51.593
 -681 00:00:00.000
 -681 04:50:38.123
 -681 12:31:35.235
 -681 12:47:53.345
 -681 01:26:00.456
 -681 20:58:11.567
 -681 07:36:05.190
 -681 15:43:49.831
 -681 04:25:09.013
 -681 06:49:27.524
 -681 02:57:52.016
 -681 16:45:44.865
 -681 21:30:57.820
 -681 04:25:09.154
 -681 06:49:27.105
 -681 02:57:52.482
 -681 16:45:44.658
 -681 21:30:57.582
 -681 22:30:04.183
 -681 01:56:51.593
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:12475"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:12677: cat dtime17.4.out"
at_fn_check_prepare_trace "data-out.at:12677"
( $at_check_trace; cat dtime17.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   0 00:00:00.0000
   0 04:50:38.1230
   0 12:31:35.2345
   0 12:47:53.3451
   0 01:26:00.4561
   0 20:58:11.5668
   0 07:36:05.1896
   0 15:43:49.8313
   0 04:25:09.0129
   0 06:49:27.5238
   0 02:57:52.0156
   0 16:45:44.8653
   0 21:30:57.8205
   0 04:25:09.1539
   0 06:49:27.1053
   0 02:57:52.4823
   0 16:45:44.6583
   0 21:30:57.5822
   0 22:30:04.1835
   0 01:56:51.5932
   1 00:00:00.0000
   1 04:50:38.1230
   1 12:31:35.2345
   1 12:47:53.3451
   1 01:26:00.4561
   1 20:58:11.5668
   1 07:36:05.1896
   1 15:43:49.8313
   1 04:25:09.0129
   1 06:49:27.5237
   1 02:57:52.0157
   1 16:45:44.8653
   1 21:30:57.8205
   1 04:25:09.1540
   1 06:49:27.1053
   1 02:57:52.4823
   1 16:45:44.6583
   1 21:30:57.5822
   1 22:30:04.1835
   1 01:56:51.5932
   2 00:00:00.0000
   2 04:50:38.1230
   2 12:31:35.2345
   2 12:47:53.3451
   2 01:26:00.4562
   2 20:58:11.5668
   2 07:36:05.1896
   2 15:43:49.8313
   2 04:25:09.0129
   2 06:49:27.5237
   2 02:57:52.0156
   2 16:45:44.8653
   2 21:30:57.8205
   2 04:25:09.1540
   2 06:49:27.1053
   2 02:57:52.4823
   2 16:45:44.6583
   2 21:30:57.5822
   2 22:30:04.1835
   2 01:56:51.5932
  54 00:00:00.0000
  54 04:50:38.1230
  54 12:31:35.2345
  54 12:47:53.3450
  54 01:26:00.4561
  54 20:58:11.5668
  54 07:36:05.1896
  54 15:43:49.8313
  54 04:25:09.0129
  54 06:49:27.5237
  54 02:57:52.0157
  54 16:45:44.8653
  54 21:30:57.8205
  54 04:25:09.1540
  54 06:49:27.1053
  54 02:57:52.4823
  54 16:45:44.6583
  54 21:30:57.5822
  54 22:30:04.1835
  54 01:56:51.5932
 681 00:00:00.0000
 681 04:50:38.1230
 681 12:31:35.2345
 681 12:47:53.3450
 681 01:26:00.4562
 681 20:58:11.5668
 681 07:36:05.1896
 681 15:43:49.8313
 681 04:25:09.0129
 681 06:49:27.5237
 681 02:57:52.0156
 681 16:45:44.8653
 681 21:30:57.8205
 681 04:25:09.1539
 681 06:49:27.1053
 681 02:57:52.4823
 681 16:45:44.6583
 681 21:30:57.5822
 681 22:30:04.1835
 681 01:56:51.5932
   0 00:00:00.0000
  -0 04:50:38.1230
  -0 12:31:35.2345
  -0 12:47:53.3451
  -0 01:26:00.4561
  -0 20:58:11.5668
  -0 07:36:05.1896
  -0 15:43:49.8313
  -0 04:25:09.0129
  -0 06:49:27.5238
  -0 02:57:52.0156
  -0 16:45:44.8653
  -0 21:30:57.8205
  -0 04:25:09.1539
  -0 06:49:27.1053
  -0 02:57:52.4823
  -0 16:45:44.6583
  -0 21:30:57.5822
  -0 22:30:04.1835
  -0 01:56:51.5932
  -1 00:00:00.0000
  -1 04:50:38.1230
  -1 12:31:35.2345
  -1 12:47:53.3451
  -1 01:26:00.4561
  -1 20:58:11.5668
  -1 07:36:05.1896
  -1 15:43:49.8313
  -1 04:25:09.0129
  -1 06:49:27.5237
  -1 02:57:52.0157
  -1 16:45:44.8653
  -1 21:30:57.8205
  -1 04:25:09.1540
  -1 06:49:27.1053
  -1 02:57:52.4823
  -1 16:45:44.6583
  -1 21:30:57.5822
  -1 22:30:04.1835
  -1 01:56:51.5932
  -2 00:00:00.0000
  -2 04:50:38.1230
  -2 12:31:35.2345
  -2 12:47:53.3451
  -2 01:26:00.4562
  -2 20:58:11.5668
  -2 07:36:05.1896
  -2 15:43:49.8313
  -2 04:25:09.0129
  -2 06:49:27.5237
  -2 02:57:52.0156
  -2 16:45:44.8653
  -2 21:30:57.8205
  -2 04:25:09.1540
  -2 06:49:27.1053
  -2 02:57:52.4823
  -2 16:45:44.6583
  -2 21:30:57.5822
  -2 22:30:04.1835
  -2 01:56:51.5932
 -54 00:00:00.0000
 -54 04:50:38.1230
 -54 12:31:35.2345
 -54 12:47:53.3450
 -54 01:26:00.4561
 -54 20:58:11.5668
 -54 07:36:05.1896
 -54 15:43:49.8313
 -54 04:25:09.0129
 -54 06:49:27.5237
 -54 02:57:52.0157
 -54 16:45:44.8653
 -54 21:30:57.8205
 -54 04:25:09.1540
 -54 06:49:27.1053
 -54 02:57:52.4823
 -54 16:45:44.6583
 -54 21:30:57.5822
 -54 22:30:04.1835
 -54 01:56:51.5932
 -681 00:00:00.000
 -681 04:50:38.123
 -681 12:31:35.235
 -681 12:47:53.345
 -681 01:26:00.456
 -681 20:58:11.567
 -681 07:36:05.190
 -681 15:43:49.831
 -681 04:25:09.013
 -681 06:49:27.524
 -681 02:57:52.016
 -681 16:45:44.865
 -681 21:30:57.820
 -681 04:25:09.154
 -681 06:49:27.105
 -681 02:57:52.482
 -681 16:45:44.658
 -681 21:30:57.582
 -681 22:30:04.183
 -681 01:56:51.593
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:12677"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:12879: cat dtime17.5.out"
at_fn_check_prepare_trace "data-out.at:12879"
( $at_check_trace; cat dtime17.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  0 00:00:00.00000
  0 04:50:38.12301
  0 12:31:35.23453
  0 12:47:53.34505
  0 01:26:00.45615
  0 20:58:11.56677
  0 07:36:05.18964
  0 15:43:49.83132
  0 04:25:09.01293
  0 06:49:27.52375
  0 02:57:52.01565
  0 16:45:44.86529
  0 21:30:57.82047
  0 04:25:09.15395
  0 06:49:27.10533
  0 02:57:52.48229
  0 16:45:44.65827
  0 21:30:57.58219
  0 22:30:04.18347
  0 01:56:51.59319
  1 00:00:00.00000
  1 04:50:38.12301
  1 12:31:35.23453
  1 12:47:53.34505
  1 01:26:00.45615
  1 20:58:11.56677
  1 07:36:05.18964
  1 15:43:49.83132
  1 04:25:09.01293
  1 06:49:27.52375
  1 02:57:52.01565
  1 16:45:44.86529
  1 21:30:57.82047
  1 04:25:09.15395
  1 06:49:27.10533
  1 02:57:52.48229
  1 16:45:44.65827
  1 21:30:57.58219
  1 22:30:04.18347
  1 01:56:51.59319
  2 00:00:00.00000
  2 04:50:38.12301
  2 12:31:35.23453
  2 12:47:53.34505
  2 01:26:00.45615
  2 20:58:11.56677
  2 07:36:05.18964
  2 15:43:49.83132
  2 04:25:09.01293
  2 06:49:27.52375
  2 02:57:52.01565
  2 16:45:44.86529
  2 21:30:57.82047
  2 04:25:09.15395
  2 06:49:27.10533
  2 02:57:52.48229
  2 16:45:44.65827
  2 21:30:57.58219
  2 22:30:04.18347
  2 01:56:51.59319
 54 00:00:00.00000
 54 04:50:38.12301
 54 12:31:35.23453
 54 12:47:53.34505
 54 01:26:00.45615
 54 20:58:11.56677
 54 07:36:05.18964
 54 15:43:49.83132
 54 04:25:09.01293
 54 06:49:27.52375
 54 02:57:52.01565
 54 16:45:44.86529
 54 21:30:57.82047
 54 04:25:09.15395
 54 06:49:27.10533
 54 02:57:52.48229
 54 16:45:44.65827
 54 21:30:57.58219
 54 22:30:04.18347
 54 01:56:51.59319
 681 00:00:00.0000
 681 04:50:38.1230
 681 12:31:35.2345
 681 12:47:53.3450
 681 01:26:00.4562
 681 20:58:11.5668
 681 07:36:05.1896
 681 15:43:49.8313
 681 04:25:09.0129
 681 06:49:27.5237
 681 02:57:52.0156
 681 16:45:44.8653
 681 21:30:57.8205
 681 04:25:09.1539
 681 06:49:27.1053
 681 02:57:52.4823
 681 16:45:44.6583
 681 21:30:57.5822
 681 22:30:04.1835
 681 01:56:51.5932
  0 00:00:00.00000
 -0 04:50:38.12301
 -0 12:31:35.23453
 -0 12:47:53.34505
 -0 01:26:00.45615
 -0 20:58:11.56677
 -0 07:36:05.18964
 -0 15:43:49.83132
 -0 04:25:09.01293
 -0 06:49:27.52375
 -0 02:57:52.01565
 -0 16:45:44.86529
 -0 21:30:57.82047
 -0 04:25:09.15395
 -0 06:49:27.10533
 -0 02:57:52.48229
 -0 16:45:44.65827
 -0 21:30:57.58219
 -0 22:30:04.18347
 -0 01:56:51.59319
 -1 00:00:00.00000
 -1 04:50:38.12301
 -1 12:31:35.23453
 -1 12:47:53.34505
 -1 01:26:00.45615
 -1 20:58:11.56677
 -1 07:36:05.18964
 -1 15:43:49.83132
 -1 04:25:09.01293
 -1 06:49:27.52375
 -1 02:57:52.01565
 -1 16:45:44.86529
 -1 21:30:57.82047
 -1 04:25:09.15395
 -1 06:49:27.10533
 -1 02:57:52.48229
 -1 16:45:44.65827
 -1 21:30:57.58219
 -1 22:30:04.18347
 -1 01:56:51.59319
 -2 00:00:00.00000
 -2 04:50:38.12301
 -2 12:31:35.23453
 -2 12:47:53.34505
 -2 01:26:00.45615
 -2 20:58:11.56677
 -2 07:36:05.18964
 -2 15:43:49.83132
 -2 04:25:09.01293
 -2 06:49:27.52375
 -2 02:57:52.01565
 -2 16:45:44.86529
 -2 21:30:57.82047
 -2 04:25:09.15395
 -2 06:49:27.10533
 -2 02:57:52.48229
 -2 16:45:44.65827
 -2 21:30:57.58219
 -2 22:30:04.18347
 -2 01:56:51.59319
 -54 00:00:00.0000
 -54 04:50:38.1230
 -54 12:31:35.2345
 -54 12:47:53.3450
 -54 01:26:00.4561
 -54 20:58:11.5668
 -54 07:36:05.1896
 -54 15:43:49.8313
 -54 04:25:09.0129
 -54 06:49:27.5237
 -54 02:57:52.0157
 -54 16:45:44.8653
 -54 21:30:57.8205
 -54 04:25:09.1540
 -54 06:49:27.1053
 -54 02:57:52.4823
 -54 16:45:44.6583
 -54 21:30:57.5822
 -54 22:30:04.1835
 -54 01:56:51.5932
 -681 00:00:00.000
 -681 04:50:38.123
 -681 12:31:35.235
 -681 12:47:53.345
 -681 01:26:00.456
 -681 20:58:11.567
 -681 07:36:05.190
 -681 15:43:49.831
 -681 04:25:09.013
 -681 06:49:27.524
 -681 02:57:52.016
 -681 16:45:44.865
 -681 21:30:57.820
 -681 04:25:09.154
 -681 06:49:27.105
 -681 02:57:52.482
 -681 16:45:44.658
 -681 21:30:57.582
 -681 22:30:04.183
 -681 01:56:51.593
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:12879"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:13081: cat dtime18.out"
at_fn_check_prepare_trace "data-out.at:13081"
( $at_check_trace; cat dtime18.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "         0 00:00:00
         0 04:50:38
         0 12:31:35
         0 12:47:53
         0 01:26:00
         0 20:58:11
         0 07:36:05
         0 15:43:49
         0 04:25:09
         0 06:49:27
         0 02:57:52
         0 16:45:44
         0 21:30:57
         0 04:25:09
         0 06:49:27
         0 02:57:52
         0 16:45:44
         0 21:30:57
         0 22:30:04
         0 01:56:51
         1 00:00:00
         1 04:50:38
         1 12:31:35
         1 12:47:53
         1 01:26:00
         1 20:58:11
         1 07:36:05
         1 15:43:49
         1 04:25:09
         1 06:49:27
         1 02:57:52
         1 16:45:44
         1 21:30:57
         1 04:25:09
         1 06:49:27
         1 02:57:52
         1 16:45:44
         1 21:30:57
         1 22:30:04
         1 01:56:51
         2 00:00:00
         2 04:50:38
         2 12:31:35
         2 12:47:53
         2 01:26:00
         2 20:58:11
         2 07:36:05
         2 15:43:49
         2 04:25:09
         2 06:49:27
         2 02:57:52
         2 16:45:44
         2 21:30:57
         2 04:25:09
         2 06:49:27
         2 02:57:52
         2 16:45:44
         2 21:30:57
         2 22:30:04
         2 01:56:51
        54 00:00:00
        54 04:50:38
        54 12:31:35
        54 12:47:53
        54 01:26:00
        54 20:58:11
        54 07:36:05
        54 15:43:49
        54 04:25:09
        54 06:49:27
        54 02:57:52
        54 16:45:44
        54 21:30:57
        54 04:25:09
        54 06:49:27
        54 02:57:52
        54 16:45:44
        54 21:30:57
        54 22:30:04
        54 01:56:51
       681 00:00:00
       681 04:50:38
       681 12:31:35
       681 12:47:53
       681 01:26:00
       681 20:58:11
       681 07:36:05
       681 15:43:49
       681 04:25:09
       681 06:49:27
       681 02:57:52
       681 16:45:44
       681 21:30:57
       681 04:25:09
       681 06:49:27
       681 02:57:52
       681 16:45:44
       681 21:30:57
       681 22:30:04
       681 01:56:51
         0 00:00:00
        -0 04:50:38
        -0 12:31:35
        -0 12:47:53
        -0 01:26:00
        -0 20:58:11
        -0 07:36:05
        -0 15:43:49
        -0 04:25:09
        -0 06:49:27
        -0 02:57:52
        -0 16:45:44
        -0 21:30:57
        -0 04:25:09
        -0 06:49:27
        -0 02:57:52
        -0 16:45:44
        -0 21:30:57
        -0 22:30:04
        -0 01:56:51
        -1 00:00:00
        -1 04:50:38
        -1 12:31:35
        -1 12:47:53
        -1 01:26:00
        -1 20:58:11
        -1 07:36:05
        -1 15:43:49
        -1 04:25:09
        -1 06:49:27
        -1 02:57:52
        -1 16:45:44
        -1 21:30:57
        -1 04:25:09
        -1 06:49:27
        -1 02:57:52
        -1 16:45:44
        -1 21:30:57
        -1 22:30:04
        -1 01:56:51
        -2 00:00:00
        -2 04:50:38
        -2 12:31:35
        -2 12:47:53
        -2 01:26:00
        -2 20:58:11
        -2 07:36:05
        -2 15:43:49
        -2 04:25:09
        -2 06:49:27
        -2 02:57:52
        -2 16:45:44
        -2 21:30:57
        -2 04:25:09
        -2 06:49:27
        -2 02:57:52
        -2 16:45:44
        -2 21:30:57
        -2 22:30:04
        -2 01:56:51
       -54 00:00:00
       -54 04:50:38
       -54 12:31:35
       -54 12:47:53
       -54 01:26:00
       -54 20:58:11
       -54 07:36:05
       -54 15:43:49
       -54 04:25:09
       -54 06:49:27
       -54 02:57:52
       -54 16:45:44
       -54 21:30:57
       -54 04:25:09
       -54 06:49:27
       -54 02:57:52
       -54 16:45:44
       -54 21:30:57
       -54 22:30:04
       -54 01:56:51
      -681 00:00:00
      -681 04:50:38
      -681 12:31:35
      -681 12:47:53
      -681 01:26:00
      -681 20:58:11
      -681 07:36:05
      -681 15:43:49
      -681 04:25:09
      -681 06:49:27
      -681 02:57:52
      -681 16:45:44
      -681 21:30:57
      -681 04:25:09
      -681 06:49:27
      -681 02:57:52
      -681 16:45:44
      -681 21:30:57
      -681 22:30:04
      -681 01:56:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:13081"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:13283: cat dtime18.1.out"
at_fn_check_prepare_trace "data-out.at:13283"
( $at_check_trace; cat dtime18.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "       0 00:00:00.0
       0 04:50:38.1
       0 12:31:35.2
       0 12:47:53.3
       0 01:26:00.5
       0 20:58:11.6
       0 07:36:05.2
       0 15:43:49.8
       0 04:25:09.0
       0 06:49:27.5
       0 02:57:52.0
       0 16:45:44.9
       0 21:30:57.8
       0 04:25:09.2
       0 06:49:27.1
       0 02:57:52.5
       0 16:45:44.7
       0 21:30:57.6
       0 22:30:04.2
       0 01:56:51.6
       1 00:00:00.0
       1 04:50:38.1
       1 12:31:35.2
       1 12:47:53.3
       1 01:26:00.5
       1 20:58:11.6
       1 07:36:05.2
       1 15:43:49.8
       1 04:25:09.0
       1 06:49:27.5
       1 02:57:52.0
       1 16:45:44.9
       1 21:30:57.8
       1 04:25:09.2
       1 06:49:27.1
       1 02:57:52.5
       1 16:45:44.7
       1 21:30:57.6
       1 22:30:04.2
       1 01:56:51.6
       2 00:00:00.0
       2 04:50:38.1
       2 12:31:35.2
       2 12:47:53.3
       2 01:26:00.5
       2 20:58:11.6
       2 07:36:05.2
       2 15:43:49.8
       2 04:25:09.0
       2 06:49:27.5
       2 02:57:52.0
       2 16:45:44.9
       2 21:30:57.8
       2 04:25:09.2
       2 06:49:27.1
       2 02:57:52.5
       2 16:45:44.7
       2 21:30:57.6
       2 22:30:04.2
       2 01:56:51.6
      54 00:00:00.0
      54 04:50:38.1
      54 12:31:35.2
      54 12:47:53.3
      54 01:26:00.5
      54 20:58:11.6
      54 07:36:05.2
      54 15:43:49.8
      54 04:25:09.0
      54 06:49:27.5
      54 02:57:52.0
      54 16:45:44.9
      54 21:30:57.8
      54 04:25:09.2
      54 06:49:27.1
      54 02:57:52.5
      54 16:45:44.7
      54 21:30:57.6
      54 22:30:04.2
      54 01:56:51.6
     681 00:00:00.0
     681 04:50:38.1
     681 12:31:35.2
     681 12:47:53.3
     681 01:26:00.5
     681 20:58:11.6
     681 07:36:05.2
     681 15:43:49.8
     681 04:25:09.0
     681 06:49:27.5
     681 02:57:52.0
     681 16:45:44.9
     681 21:30:57.8
     681 04:25:09.2
     681 06:49:27.1
     681 02:57:52.5
     681 16:45:44.7
     681 21:30:57.6
     681 22:30:04.2
     681 01:56:51.6
       0 00:00:00.0
      -0 04:50:38.1
      -0 12:31:35.2
      -0 12:47:53.3
      -0 01:26:00.5
      -0 20:58:11.6
      -0 07:36:05.2
      -0 15:43:49.8
      -0 04:25:09.0
      -0 06:49:27.5
      -0 02:57:52.0
      -0 16:45:44.9
      -0 21:30:57.8
      -0 04:25:09.2
      -0 06:49:27.1
      -0 02:57:52.5
      -0 16:45:44.7
      -0 21:30:57.6
      -0 22:30:04.2
      -0 01:56:51.6
      -1 00:00:00.0
      -1 04:50:38.1
      -1 12:31:35.2
      -1 12:47:53.3
      -1 01:26:00.5
      -1 20:58:11.6
      -1 07:36:05.2
      -1 15:43:49.8
      -1 04:25:09.0
      -1 06:49:27.5
      -1 02:57:52.0
      -1 16:45:44.9
      -1 21:30:57.8
      -1 04:25:09.2
      -1 06:49:27.1
      -1 02:57:52.5
      -1 16:45:44.7
      -1 21:30:57.6
      -1 22:30:04.2
      -1 01:56:51.6
      -2 00:00:00.0
      -2 04:50:38.1
      -2 12:31:35.2
      -2 12:47:53.3
      -2 01:26:00.5
      -2 20:58:11.6
      -2 07:36:05.2
      -2 15:43:49.8
      -2 04:25:09.0
      -2 06:49:27.5
      -2 02:57:52.0
      -2 16:45:44.9
      -2 21:30:57.8
      -2 04:25:09.2
      -2 06:49:27.1
      -2 02:57:52.5
      -2 16:45:44.7
      -2 21:30:57.6
      -2 22:30:04.2
      -2 01:56:51.6
     -54 00:00:00.0
     -54 04:50:38.1
     -54 12:31:35.2
     -54 12:47:53.3
     -54 01:26:00.5
     -54 20:58:11.6
     -54 07:36:05.2
     -54 15:43:49.8
     -54 04:25:09.0
     -54 06:49:27.5
     -54 02:57:52.0
     -54 16:45:44.9
     -54 21:30:57.8
     -54 04:25:09.2
     -54 06:49:27.1
     -54 02:57:52.5
     -54 16:45:44.7
     -54 21:30:57.6
     -54 22:30:04.2
     -54 01:56:51.6
    -681 00:00:00.0
    -681 04:50:38.1
    -681 12:31:35.2
    -681 12:47:53.3
    -681 01:26:00.5
    -681 20:58:11.6
    -681 07:36:05.2
    -681 15:43:49.8
    -681 04:25:09.0
    -681 06:49:27.5
    -681 02:57:52.0
    -681 16:45:44.9
    -681 21:30:57.8
    -681 04:25:09.2
    -681 06:49:27.1
    -681 02:57:52.5
    -681 16:45:44.7
    -681 21:30:57.6
    -681 22:30:04.2
    -681 01:56:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:13283"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:13485: cat dtime18.2.out"
at_fn_check_prepare_trace "data-out.at:13485"
( $at_check_trace; cat dtime18.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "      0 00:00:00.00
      0 04:50:38.12
      0 12:31:35.23
      0 12:47:53.35
      0 01:26:00.46
      0 20:58:11.57
      0 07:36:05.19
      0 15:43:49.83
      0 04:25:09.01
      0 06:49:27.52
      0 02:57:52.02
      0 16:45:44.87
      0 21:30:57.82
      0 04:25:09.15
      0 06:49:27.11
      0 02:57:52.48
      0 16:45:44.66
      0 21:30:57.58
      0 22:30:04.18
      0 01:56:51.59
      1 00:00:00.00
      1 04:50:38.12
      1 12:31:35.23
      1 12:47:53.35
      1 01:26:00.46
      1 20:58:11.57
      1 07:36:05.19
      1 15:43:49.83
      1 04:25:09.01
      1 06:49:27.52
      1 02:57:52.02
      1 16:45:44.87
      1 21:30:57.82
      1 04:25:09.15
      1 06:49:27.11
      1 02:57:52.48
      1 16:45:44.66
      1 21:30:57.58
      1 22:30:04.18
      1 01:56:51.59
      2 00:00:00.00
      2 04:50:38.12
      2 12:31:35.23
      2 12:47:53.35
      2 01:26:00.46
      2 20:58:11.57
      2 07:36:05.19
      2 15:43:49.83
      2 04:25:09.01
      2 06:49:27.52
      2 02:57:52.02
      2 16:45:44.87
      2 21:30:57.82
      2 04:25:09.15
      2 06:49:27.11
      2 02:57:52.48
      2 16:45:44.66
      2 21:30:57.58
      2 22:30:04.18
      2 01:56:51.59
     54 00:00:00.00
     54 04:50:38.12
     54 12:31:35.23
     54 12:47:53.35
     54 01:26:00.46
     54 20:58:11.57
     54 07:36:05.19
     54 15:43:49.83
     54 04:25:09.01
     54 06:49:27.52
     54 02:57:52.02
     54 16:45:44.87
     54 21:30:57.82
     54 04:25:09.15
     54 06:49:27.11
     54 02:57:52.48
     54 16:45:44.66
     54 21:30:57.58
     54 22:30:04.18
     54 01:56:51.59
    681 00:00:00.00
    681 04:50:38.12
    681 12:31:35.23
    681 12:47:53.35
    681 01:26:00.46
    681 20:58:11.57
    681 07:36:05.19
    681 15:43:49.83
    681 04:25:09.01
    681 06:49:27.52
    681 02:57:52.02
    681 16:45:44.87
    681 21:30:57.82
    681 04:25:09.15
    681 06:49:27.11
    681 02:57:52.48
    681 16:45:44.66
    681 21:30:57.58
    681 22:30:04.18
    681 01:56:51.59
      0 00:00:00.00
     -0 04:50:38.12
     -0 12:31:35.23
     -0 12:47:53.35
     -0 01:26:00.46
     -0 20:58:11.57
     -0 07:36:05.19
     -0 15:43:49.83
     -0 04:25:09.01
     -0 06:49:27.52
     -0 02:57:52.02
     -0 16:45:44.87
     -0 21:30:57.82
     -0 04:25:09.15
     -0 06:49:27.11
     -0 02:57:52.48
     -0 16:45:44.66
     -0 21:30:57.58
     -0 22:30:04.18
     -0 01:56:51.59
     -1 00:00:00.00
     -1 04:50:38.12
     -1 12:31:35.23
     -1 12:47:53.35
     -1 01:26:00.46
     -1 20:58:11.57
     -1 07:36:05.19
     -1 15:43:49.83
     -1 04:25:09.01
     -1 06:49:27.52
     -1 02:57:52.02
     -1 16:45:44.87
     -1 21:30:57.82
     -1 04:25:09.15
     -1 06:49:27.11
     -1 02:57:52.48
     -1 16:45:44.66
     -1 21:30:57.58
     -1 22:30:04.18
     -1 01:56:51.59
     -2 00:00:00.00
     -2 04:50:38.12
     -2 12:31:35.23
     -2 12:47:53.35
     -2 01:26:00.46
     -2 20:58:11.57
     -2 07:36:05.19
     -2 15:43:49.83
     -2 04:25:09.01
     -2 06:49:27.52
     -2 02:57:52.02
     -2 16:45:44.87
     -2 21:30:57.82
     -2 04:25:09.15
     -2 06:49:27.11
     -2 02:57:52.48
     -2 16:45:44.66
     -2 21:30:57.58
     -2 22:30:04.18
     -2 01:56:51.59
    -54 00:00:00.00
    -54 04:50:38.12
    -54 12:31:35.23
    -54 12:47:53.35
    -54 01:26:00.46
    -54 20:58:11.57
    -54 07:36:05.19
    -54 15:43:49.83
    -54 04:25:09.01
    -54 06:49:27.52
    -54 02:57:52.02
    -54 16:45:44.87
    -54 21:30:57.82
    -54 04:25:09.15
    -54 06:49:27.11
    -54 02:57:52.48
    -54 16:45:44.66
    -54 21:30:57.58
    -54 22:30:04.18
    -54 01:56:51.59
   -681 00:00:00.00
   -681 04:50:38.12
   -681 12:31:35.23
   -681 12:47:53.35
   -681 01:26:00.46
   -681 20:58:11.57
   -681 07:36:05.19
   -681 15:43:49.83
   -681 04:25:09.01
   -681 06:49:27.52
   -681 02:57:52.02
   -681 16:45:44.87
   -681 21:30:57.82
   -681 04:25:09.15
   -681 06:49:27.11
   -681 02:57:52.48
   -681 16:45:44.66
   -681 21:30:57.58
   -681 22:30:04.18
   -681 01:56:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:13485"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:13687: cat dtime18.3.out"
at_fn_check_prepare_trace "data-out.at:13687"
( $at_check_trace; cat dtime18.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     0 00:00:00.000
     0 04:50:38.123
     0 12:31:35.235
     0 12:47:53.345
     0 01:26:00.456
     0 20:58:11.567
     0 07:36:05.190
     0 15:43:49.831
     0 04:25:09.013
     0 06:49:27.524
     0 02:57:52.016
     0 16:45:44.865
     0 21:30:57.820
     0 04:25:09.154
     0 06:49:27.105
     0 02:57:52.482
     0 16:45:44.658
     0 21:30:57.582
     0 22:30:04.183
     0 01:56:51.593
     1 00:00:00.000
     1 04:50:38.123
     1 12:31:35.235
     1 12:47:53.345
     1 01:26:00.456
     1 20:58:11.567
     1 07:36:05.190
     1 15:43:49.831
     1 04:25:09.013
     1 06:49:27.524
     1 02:57:52.016
     1 16:45:44.865
     1 21:30:57.820
     1 04:25:09.154
     1 06:49:27.105
     1 02:57:52.482
     1 16:45:44.658
     1 21:30:57.582
     1 22:30:04.183
     1 01:56:51.593
     2 00:00:00.000
     2 04:50:38.123
     2 12:31:35.235
     2 12:47:53.345
     2 01:26:00.456
     2 20:58:11.567
     2 07:36:05.190
     2 15:43:49.831
     2 04:25:09.013
     2 06:49:27.524
     2 02:57:52.016
     2 16:45:44.865
     2 21:30:57.820
     2 04:25:09.154
     2 06:49:27.105
     2 02:57:52.482
     2 16:45:44.658
     2 21:30:57.582
     2 22:30:04.183
     2 01:56:51.593
    54 00:00:00.000
    54 04:50:38.123
    54 12:31:35.235
    54 12:47:53.345
    54 01:26:00.456
    54 20:58:11.567
    54 07:36:05.190
    54 15:43:49.831
    54 04:25:09.013
    54 06:49:27.524
    54 02:57:52.016
    54 16:45:44.865
    54 21:30:57.820
    54 04:25:09.154
    54 06:49:27.105
    54 02:57:52.482
    54 16:45:44.658
    54 21:30:57.582
    54 22:30:04.183
    54 01:56:51.593
   681 00:00:00.000
   681 04:50:38.123
   681 12:31:35.235
   681 12:47:53.345
   681 01:26:00.456
   681 20:58:11.567
   681 07:36:05.190
   681 15:43:49.831
   681 04:25:09.013
   681 06:49:27.524
   681 02:57:52.016
   681 16:45:44.865
   681 21:30:57.820
   681 04:25:09.154
   681 06:49:27.105
   681 02:57:52.482
   681 16:45:44.658
   681 21:30:57.582
   681 22:30:04.183
   681 01:56:51.593
     0 00:00:00.000
    -0 04:50:38.123
    -0 12:31:35.235
    -0 12:47:53.345
    -0 01:26:00.456
    -0 20:58:11.567
    -0 07:36:05.190
    -0 15:43:49.831
    -0 04:25:09.013
    -0 06:49:27.524
    -0 02:57:52.016
    -0 16:45:44.865
    -0 21:30:57.820
    -0 04:25:09.154
    -0 06:49:27.105
    -0 02:57:52.482
    -0 16:45:44.658
    -0 21:30:57.582
    -0 22:30:04.183
    -0 01:56:51.593
    -1 00:00:00.000
    -1 04:50:38.123
    -1 12:31:35.235
    -1 12:47:53.345
    -1 01:26:00.456
    -1 20:58:11.567
    -1 07:36:05.190
    -1 15:43:49.831
    -1 04:25:09.013
    -1 06:49:27.524
    -1 02:57:52.016
    -1 16:45:44.865
    -1 21:30:57.820
    -1 04:25:09.154
    -1 06:49:27.105
    -1 02:57:52.482
    -1 16:45:44.658
    -1 21:30:57.582
    -1 22:30:04.183
    -1 01:56:51.593
    -2 00:00:00.000
    -2 04:50:38.123
    -2 12:31:35.235
    -2 12:47:53.345
    -2 01:26:00.456
    -2 20:58:11.567
    -2 07:36:05.190
    -2 15:43:49.831
    -2 04:25:09.013
    -2 06:49:27.524
    -2 02:57:52.016
    -2 16:45:44.865
    -2 21:30:57.820
    -2 04:25:09.154
    -2 06:49:27.105
    -2 02:57:52.482
    -2 16:45:44.658
    -2 21:30:57.582
    -2 22:30:04.183
    -2 01:56:51.593
   -54 00:00:00.000
   -54 04:50:38.123
   -54 12:31:35.235
   -54 12:47:53.345
   -54 01:26:00.456
   -54 20:58:11.567
   -54 07:36:05.190
   -54 15:43:49.831
   -54 04:25:09.013
   -54 06:49:27.524
   -54 02:57:52.016
   -54 16:45:44.865
   -54 21:30:57.820
   -54 04:25:09.154
   -54 06:49:27.105
   -54 02:57:52.482
   -54 16:45:44.658
   -54 21:30:57.582
   -54 22:30:04.183
   -54 01:56:51.593
  -681 00:00:00.000
  -681 04:50:38.123
  -681 12:31:35.235
  -681 12:47:53.345
  -681 01:26:00.456
  -681 20:58:11.567
  -681 07:36:05.190
  -681 15:43:49.831
  -681 04:25:09.013
  -681 06:49:27.524
  -681 02:57:52.016
  -681 16:45:44.865
  -681 21:30:57.820
  -681 04:25:09.154
  -681 06:49:27.105
  -681 02:57:52.482
  -681 16:45:44.658
  -681 21:30:57.582
  -681 22:30:04.183
  -681 01:56:51.593
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:13687"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:13889: cat dtime18.4.out"
at_fn_check_prepare_trace "data-out.at:13889"
( $at_check_trace; cat dtime18.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    0 00:00:00.0000
    0 04:50:38.1230
    0 12:31:35.2345
    0 12:47:53.3451
    0 01:26:00.4561
    0 20:58:11.5668
    0 07:36:05.1896
    0 15:43:49.8313
    0 04:25:09.0129
    0 06:49:27.5238
    0 02:57:52.0156
    0 16:45:44.8653
    0 21:30:57.8205
    0 04:25:09.1539
    0 06:49:27.1053
    0 02:57:52.4823
    0 16:45:44.6583
    0 21:30:57.5822
    0 22:30:04.1835
    0 01:56:51.5932
    1 00:00:00.0000
    1 04:50:38.1230
    1 12:31:35.2345
    1 12:47:53.3451
    1 01:26:00.4561
    1 20:58:11.5668
    1 07:36:05.1896
    1 15:43:49.8313
    1 04:25:09.0129
    1 06:49:27.5237
    1 02:57:52.0157
    1 16:45:44.8653
    1 21:30:57.8205
    1 04:25:09.1540
    1 06:49:27.1053
    1 02:57:52.4823
    1 16:45:44.6583
    1 21:30:57.5822
    1 22:30:04.1835
    1 01:56:51.5932
    2 00:00:00.0000
    2 04:50:38.1230
    2 12:31:35.2345
    2 12:47:53.3451
    2 01:26:00.4562
    2 20:58:11.5668
    2 07:36:05.1896
    2 15:43:49.8313
    2 04:25:09.0129
    2 06:49:27.5237
    2 02:57:52.0156
    2 16:45:44.8653
    2 21:30:57.8205
    2 04:25:09.1540
    2 06:49:27.1053
    2 02:57:52.4823
    2 16:45:44.6583
    2 21:30:57.5822
    2 22:30:04.1835
    2 01:56:51.5932
   54 00:00:00.0000
   54 04:50:38.1230
   54 12:31:35.2345
   54 12:47:53.3450
   54 01:26:00.4561
   54 20:58:11.5668
   54 07:36:05.1896
   54 15:43:49.8313
   54 04:25:09.0129
   54 06:49:27.5237
   54 02:57:52.0157
   54 16:45:44.8653
   54 21:30:57.8205
   54 04:25:09.1540
   54 06:49:27.1053
   54 02:57:52.4823
   54 16:45:44.6583
   54 21:30:57.5822
   54 22:30:04.1835
   54 01:56:51.5932
  681 00:00:00.0000
  681 04:50:38.1230
  681 12:31:35.2345
  681 12:47:53.3450
  681 01:26:00.4562
  681 20:58:11.5668
  681 07:36:05.1896
  681 15:43:49.8313
  681 04:25:09.0129
  681 06:49:27.5237
  681 02:57:52.0156
  681 16:45:44.8653
  681 21:30:57.8205
  681 04:25:09.1539
  681 06:49:27.1053
  681 02:57:52.4823
  681 16:45:44.6583
  681 21:30:57.5822
  681 22:30:04.1835
  681 01:56:51.5932
    0 00:00:00.0000
   -0 04:50:38.1230
   -0 12:31:35.2345
   -0 12:47:53.3451
   -0 01:26:00.4561
   -0 20:58:11.5668
   -0 07:36:05.1896
   -0 15:43:49.8313
   -0 04:25:09.0129
   -0 06:49:27.5238
   -0 02:57:52.0156
   -0 16:45:44.8653
   -0 21:30:57.8205
   -0 04:25:09.1539
   -0 06:49:27.1053
   -0 02:57:52.4823
   -0 16:45:44.6583
   -0 21:30:57.5822
   -0 22:30:04.1835
   -0 01:56:51.5932
   -1 00:00:00.0000
   -1 04:50:38.1230
   -1 12:31:35.2345
   -1 12:47:53.3451
   -1 01:26:00.4561
   -1 20:58:11.5668
   -1 07:36:05.1896
   -1 15:43:49.8313
   -1 04:25:09.0129
   -1 06:49:27.5237
   -1 02:57:52.0157
   -1 16:45:44.8653
   -1 21:30:57.8205
   -1 04:25:09.1540
   -1 06:49:27.1053
   -1 02:57:52.4823
   -1 16:45:44.6583
   -1 21:30:57.5822
   -1 22:30:04.1835
   -1 01:56:51.5932
   -2 00:00:00.0000
   -2 04:50:38.1230
   -2 12:31:35.2345
   -2 12:47:53.3451
   -2 01:26:00.4562
   -2 20:58:11.5668
   -2 07:36:05.1896
   -2 15:43:49.8313
   -2 04:25:09.0129
   -2 06:49:27.5237
   -2 02:57:52.0156
   -2 16:45:44.8653
   -2 21:30:57.8205
   -2 04:25:09.1540
   -2 06:49:27.1053
   -2 02:57:52.4823
   -2 16:45:44.6583
   -2 21:30:57.5822
   -2 22:30:04.1835
   -2 01:56:51.5932
  -54 00:00:00.0000
  -54 04:50:38.1230
  -54 12:31:35.2345
  -54 12:47:53.3450
  -54 01:26:00.4561
  -54 20:58:11.5668
  -54 07:36:05.1896
  -54 15:43:49.8313
  -54 04:25:09.0129
  -54 06:49:27.5237
  -54 02:57:52.0157
  -54 16:45:44.8653
  -54 21:30:57.8205
  -54 04:25:09.1540
  -54 06:49:27.1053
  -54 02:57:52.4823
  -54 16:45:44.6583
  -54 21:30:57.5822
  -54 22:30:04.1835
  -54 01:56:51.5932
 -681 00:00:00.0000
 -681 04:50:38.1230
 -681 12:31:35.2345
 -681 12:47:53.3450
 -681 01:26:00.4562
 -681 20:58:11.5668
 -681 07:36:05.1896
 -681 15:43:49.8313
 -681 04:25:09.0129
 -681 06:49:27.5237
 -681 02:57:52.0156
 -681 16:45:44.8653
 -681 21:30:57.8205
 -681 04:25:09.1539
 -681 06:49:27.1053
 -681 02:57:52.4823
 -681 16:45:44.6583
 -681 21:30:57.5822
 -681 22:30:04.1835
 -681 01:56:51.5932
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:13889"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:14091: cat dtime18.5.out"
at_fn_check_prepare_trace "data-out.at:14091"
( $at_check_trace; cat dtime18.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   0 00:00:00.00000
   0 04:50:38.12301
   0 12:31:35.23453
   0 12:47:53.34505
   0 01:26:00.45615
   0 20:58:11.56677
   0 07:36:05.18964
   0 15:43:49.83132
   0 04:25:09.01293
   0 06:49:27.52375
   0 02:57:52.01565
   0 16:45:44.86529
   0 21:30:57.82047
   0 04:25:09.15395
   0 06:49:27.10533
   0 02:57:52.48229
   0 16:45:44.65827
   0 21:30:57.58219
   0 22:30:04.18347
   0 01:56:51.59319
   1 00:00:00.00000
   1 04:50:38.12301
   1 12:31:35.23453
   1 12:47:53.34505
   1 01:26:00.45615
   1 20:58:11.56677
   1 07:36:05.18964
   1 15:43:49.83132
   1 04:25:09.01293
   1 06:49:27.52375
   1 02:57:52.01565
   1 16:45:44.86529
   1 21:30:57.82047
   1 04:25:09.15395
   1 06:49:27.10533
   1 02:57:52.48229
   1 16:45:44.65827
   1 21:30:57.58219
   1 22:30:04.18347
   1 01:56:51.59319
   2 00:00:00.00000
   2 04:50:38.12301
   2 12:31:35.23453
   2 12:47:53.34505
   2 01:26:00.45615
   2 20:58:11.56677
   2 07:36:05.18964
   2 15:43:49.83132
   2 04:25:09.01293
   2 06:49:27.52375
   2 02:57:52.01565
   2 16:45:44.86529
   2 21:30:57.82047
   2 04:25:09.15395
   2 06:49:27.10533
   2 02:57:52.48229
   2 16:45:44.65827
   2 21:30:57.58219
   2 22:30:04.18347
   2 01:56:51.59319
  54 00:00:00.00000
  54 04:50:38.12301
  54 12:31:35.23453
  54 12:47:53.34505
  54 01:26:00.45615
  54 20:58:11.56677
  54 07:36:05.18964
  54 15:43:49.83132
  54 04:25:09.01293
  54 06:49:27.52375
  54 02:57:52.01565
  54 16:45:44.86529
  54 21:30:57.82047
  54 04:25:09.15395
  54 06:49:27.10533
  54 02:57:52.48229
  54 16:45:44.65827
  54 21:30:57.58219
  54 22:30:04.18347
  54 01:56:51.59319
 681 00:00:00.00000
 681 04:50:38.12301
 681 12:31:35.23453
 681 12:47:53.34505
 681 01:26:00.45615
 681 20:58:11.56677
 681 07:36:05.18964
 681 15:43:49.83132
 681 04:25:09.01293
 681 06:49:27.52375
 681 02:57:52.01565
 681 16:45:44.86529
 681 21:30:57.82047
 681 04:25:09.15395
 681 06:49:27.10533
 681 02:57:52.48229
 681 16:45:44.65827
 681 21:30:57.58219
 681 22:30:04.18347
 681 01:56:51.59319
   0 00:00:00.00000
  -0 04:50:38.12301
  -0 12:31:35.23453
  -0 12:47:53.34505
  -0 01:26:00.45615
  -0 20:58:11.56677
  -0 07:36:05.18964
  -0 15:43:49.83132
  -0 04:25:09.01293
  -0 06:49:27.52375
  -0 02:57:52.01565
  -0 16:45:44.86529
  -0 21:30:57.82047
  -0 04:25:09.15395
  -0 06:49:27.10533
  -0 02:57:52.48229
  -0 16:45:44.65827
  -0 21:30:57.58219
  -0 22:30:04.18347
  -0 01:56:51.59319
  -1 00:00:00.00000
  -1 04:50:38.12301
  -1 12:31:35.23453
  -1 12:47:53.34505
  -1 01:26:00.45615
  -1 20:58:11.56677
  -1 07:36:05.18964
  -1 15:43:49.83132
  -1 04:25:09.01293
  -1 06:49:27.52375
  -1 02:57:52.01565
  -1 16:45:44.86529
  -1 21:30:57.82047
  -1 04:25:09.15395
  -1 06:49:27.10533
  -1 02:57:52.48229
  -1 16:45:44.65827
  -1 21:30:57.58219
  -1 22:30:04.18347
  -1 01:56:51.59319
  -2 00:00:00.00000
  -2 04:50:38.12301
  -2 12:31:35.23453
  -2 12:47:53.34505
  -2 01:26:00.45615
  -2 20:58:11.56677
  -2 07:36:05.18964
  -2 15:43:49.83132
  -2 04:25:09.01293
  -2 06:49:27.52375
  -2 02:57:52.01565
  -2 16:45:44.86529
  -2 21:30:57.82047
  -2 04:25:09.15395
  -2 06:49:27.10533
  -2 02:57:52.48229
  -2 16:45:44.65827
  -2 21:30:57.58219
  -2 22:30:04.18347
  -2 01:56:51.59319
 -54 00:00:00.00000
 -54 04:50:38.12301
 -54 12:31:35.23453
 -54 12:47:53.34505
 -54 01:26:00.45615
 -54 20:58:11.56677
 -54 07:36:05.18964
 -54 15:43:49.83132
 -54 04:25:09.01293
 -54 06:49:27.52375
 -54 02:57:52.01565
 -54 16:45:44.86529
 -54 21:30:57.82047
 -54 04:25:09.15395
 -54 06:49:27.10533
 -54 02:57:52.48229
 -54 16:45:44.65827
 -54 21:30:57.58219
 -54 22:30:04.18347
 -54 01:56:51.59319
 -681 00:00:00.0000
 -681 04:50:38.1230
 -681 12:31:35.2345
 -681 12:47:53.3450
 -681 01:26:00.4562
 -681 20:58:11.5668
 -681 07:36:05.1896
 -681 15:43:49.8313
 -681 04:25:09.0129
 -681 06:49:27.5237
 -681 02:57:52.0156
 -681 16:45:44.8653
 -681 21:30:57.8205
 -681 04:25:09.1539
 -681 06:49:27.1053
 -681 02:57:52.4823
 -681 16:45:44.6583
 -681 21:30:57.5822
 -681 22:30:04.1835
 -681 01:56:51.5932
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:14091"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:14293: cat dtime18.6.out"
at_fn_check_prepare_trace "data-out.at:14293"
( $at_check_trace; cat dtime18.6.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  0 00:00:00.000000
  0 04:50:38.123010
  0 12:31:35.234530
  0 12:47:53.345050
  0 01:26:00.456150
  0 20:58:11.566770
  0 07:36:05.189640
  0 15:43:49.831320
  0 04:25:09.012930
  0 06:49:27.523750
  0 02:57:52.015650
  0 16:45:44.865290
  0 21:30:57.820470
  0 04:25:09.153950
  0 06:49:27.105330
  0 02:57:52.482290
  0 16:45:44.658270
  0 21:30:57.582190
  0 22:30:04.183470
  0 01:56:51.593190
  1 00:00:00.000000
  1 04:50:38.123010
  1 12:31:35.234530
  1 12:47:53.345050
  1 01:26:00.456150
  1 20:58:11.566770
  1 07:36:05.189640
  1 15:43:49.831320
  1 04:25:09.012930
  1 06:49:27.523750
  1 02:57:52.015650
  1 16:45:44.865290
  1 21:30:57.820470
  1 04:25:09.153950
  1 06:49:27.105330
  1 02:57:52.482290
  1 16:45:44.658270
  1 21:30:57.582190
  1 22:30:04.183470
  1 01:56:51.593190
  2 00:00:00.000000
  2 04:50:38.123010
  2 12:31:35.234530
  2 12:47:53.345050
  2 01:26:00.456150
  2 20:58:11.566770
  2 07:36:05.189640
  2 15:43:49.831320
  2 04:25:09.012930
  2 06:49:27.523750
  2 02:57:52.015650
  2 16:45:44.865290
  2 21:30:57.820470
  2 04:25:09.153950
  2 06:49:27.105330
  2 02:57:52.482290
  2 16:45:44.658270
  2 21:30:57.582190
  2 22:30:04.183470
  2 01:56:51.593190
 54 00:00:00.000000
 54 04:50:38.123010
 54 12:31:35.234530
 54 12:47:53.345050
 54 01:26:00.456150
 54 20:58:11.566770
 54 07:36:05.189640
 54 15:43:49.831320
 54 04:25:09.012930
 54 06:49:27.523750
 54 02:57:52.015650
 54 16:45:44.865290
 54 21:30:57.820470
 54 04:25:09.153950
 54 06:49:27.105330
 54 02:57:52.482290
 54 16:45:44.658270
 54 21:30:57.582190
 54 22:30:04.183470
 54 01:56:51.593190
 681 00:00:00.00000
 681 04:50:38.12301
 681 12:31:35.23453
 681 12:47:53.34505
 681 01:26:00.45615
 681 20:58:11.56677
 681 07:36:05.18964
 681 15:43:49.83132
 681 04:25:09.01293
 681 06:49:27.52375
 681 02:57:52.01565
 681 16:45:44.86529
 681 21:30:57.82047
 681 04:25:09.15395
 681 06:49:27.10533
 681 02:57:52.48229
 681 16:45:44.65827
 681 21:30:57.58219
 681 22:30:04.18347
 681 01:56:51.59319
  0 00:00:00.000000
 -0 04:50:38.123010
 -0 12:31:35.234530
 -0 12:47:53.345050
 -0 01:26:00.456150
 -0 20:58:11.566770
 -0 07:36:05.189640
 -0 15:43:49.831320
 -0 04:25:09.012930
 -0 06:49:27.523750
 -0 02:57:52.015650
 -0 16:45:44.865290
 -0 21:30:57.820470
 -0 04:25:09.153950
 -0 06:49:27.105330
 -0 02:57:52.482290
 -0 16:45:44.658270
 -0 21:30:57.582190
 -0 22:30:04.183470
 -0 01:56:51.593190
 -1 00:00:00.000000
 -1 04:50:38.123010
 -1 12:31:35.234530
 -1 12:47:53.345050
 -1 01:26:00.456150
 -1 20:58:11.566770
 -1 07:36:05.189640
 -1 15:43:49.831320
 -1 04:25:09.012930
 -1 06:49:27.523750
 -1 02:57:52.015650
 -1 16:45:44.865290
 -1 21:30:57.820470
 -1 04:25:09.153950
 -1 06:49:27.105330
 -1 02:57:52.482290
 -1 16:45:44.658270
 -1 21:30:57.582190
 -1 22:30:04.183470
 -1 01:56:51.593190
 -2 00:00:00.000000
 -2 04:50:38.123010
 -2 12:31:35.234530
 -2 12:47:53.345050
 -2 01:26:00.456150
 -2 20:58:11.566770
 -2 07:36:05.189640
 -2 15:43:49.831320
 -2 04:25:09.012930
 -2 06:49:27.523750
 -2 02:57:52.015650
 -2 16:45:44.865290
 -2 21:30:57.820470
 -2 04:25:09.153950
 -2 06:49:27.105330
 -2 02:57:52.482290
 -2 16:45:44.658270
 -2 21:30:57.582190
 -2 22:30:04.183470
 -2 01:56:51.593190
 -54 00:00:00.00000
 -54 04:50:38.12301
 -54 12:31:35.23453
 -54 12:47:53.34505
 -54 01:26:00.45615
 -54 20:58:11.56677
 -54 07:36:05.18964
 -54 15:43:49.83132
 -54 04:25:09.01293
 -54 06:49:27.52375
 -54 02:57:52.01565
 -54 16:45:44.86529
 -54 21:30:57.82047
 -54 04:25:09.15395
 -54 06:49:27.10533
 -54 02:57:52.48229
 -54 16:45:44.65827
 -54 21:30:57.58219
 -54 22:30:04.18347
 -54 01:56:51.59319
 -681 00:00:00.0000
 -681 04:50:38.1230
 -681 12:31:35.2345
 -681 12:47:53.3450
 -681 01:26:00.4562
 -681 20:58:11.5668
 -681 07:36:05.1896
 -681 15:43:49.8313
 -681 04:25:09.0129
 -681 06:49:27.5237
 -681 02:57:52.0156
 -681 16:45:44.8653
 -681 21:30:57.8205
 -681 04:25:09.1539
 -681 06:49:27.1053
 -681 02:57:52.4823
 -681 16:45:44.6583
 -681 21:30:57.5822
 -681 22:30:04.1835
 -681 01:56:51.5932
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:14293"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:14495: cat mtime5.out"
at_fn_check_prepare_trace "data-out.at:14495"
( $at_check_trace; cat mtime5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00
 *****
 *****
 *****
 86:00
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 00:00
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
 *****
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:14495"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:14697: cat mtime6.out"
at_fn_check_prepare_trace "data-out.at:14697"
( $at_check_trace; cat mtime6.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00
 290:38
 751:35
 767:53
  86:00
 ******
 456:05
 943:49
 265:09
 409:27
 177:52
 ******
 ******
 265:09
 409:27
 177:52
 ******
 ******
 ******
 116:51
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
  00:00
 ******
 ******
 ******
 -86:00
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
 ******
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:14697"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:14899: cat mtime7.out"
at_fn_check_prepare_trace "data-out.at:14899"
( $at_check_trace; cat mtime7.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00
  290:38
  751:35
  767:53
   86:00
 1258:11
  456:05
  943:49
  265:09
  409:27
  177:52
 1005:44
 1290:57
  265:09
  409:27
  177:52
 1005:44
 1290:57
 1350:04
  116:51
 1440:00
 1730:38
 2191:35
 2207:53
 1526:00
 2698:11
 1896:05
 2383:49
 1705:09
 1849:27
 1617:52
 2445:44
 2730:57
 1705:09
 1849:27
 1617:52
 2445:44
 2730:57
 2790:04
 1556:51
 2880:00
 3170:38
 3631:35
 3647:53
 2966:00
 4138:11
 3336:05
 3823:49
 3145:09
 3289:27
 3057:52
 3885:44
 4170:57
 3145:09
 3289:27
 3057:52
 3885:44
 4170:57
 4230:04
 2996:51
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
   00:00
 -290:38
 -751:35
 -767:53
  -86:00
 *******
 -456:05
 -943:49
 -265:09
 -409:27
 -177:52
 *******
 *******
 -265:09
 -409:27
 -177:52
 *******
 *******
 *******
 -116:51
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:14899"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:15101: cat mtime7.1.out"
at_fn_check_prepare_trace "data-out.at:15101"
( $at_check_trace; cat mtime7.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00.0
  290:38
  751:35
  767:53
 86:00.5
 1258:11
  456:05
  943:49
  265:09
  409:27
  177:52
 1005:44
 1290:57
  265:09
  409:27
  177:52
 1005:44
 1290:57
 1350:04
  116:51
 1440:00
 1730:38
 2191:35
 2207:53
 1526:00
 2698:11
 1896:05
 2383:49
 1705:09
 1849:27
 1617:52
 2445:44
 2730:57
 1705:09
 1849:27
 1617:52
 2445:44
 2730:57
 2790:04
 1556:51
 2880:00
 3170:38
 3631:35
 3647:53
 2966:00
 4138:11
 3336:05
 3823:49
 3145:09
 3289:27
 3057:52
 3885:44
 4170:57
 3145:09
 3289:27
 3057:52
 3885:44
 4170:57
 4230:04
 2996:51
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 00:00.0
 -290:38
 -751:35
 -767:53
  -86:00
 *******
 -456:05
 -943:49
 -265:09
 -409:27
 -177:52
 *******
 *******
 -265:09
 -409:27
 -177:52
 *******
 *******
 *******
 -116:51
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
 *******
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:15101"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:15303: cat mtime8.out"
at_fn_check_prepare_trace "data-out.at:15303"
( $at_check_trace; cat mtime8.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    00:00
   290:38
   751:35
   767:53
    86:00
  1258:11
   456:05
   943:49
   265:09
   409:27
   177:52
  1005:44
  1290:57
   265:09
   409:27
   177:52
  1005:44
  1290:57
  1350:04
   116:51
  1440:00
  1730:38
  2191:35
  2207:53
  1526:00
  2698:11
  1896:05
  2383:49
  1705:09
  1849:27
  1617:52
  2445:44
  2730:57
  1705:09
  1849:27
  1617:52
  2445:44
  2730:57
  2790:04
  1556:51
  2880:00
  3170:38
  3631:35
  3647:53
  2966:00
  4138:11
  3336:05
  3823:49
  3145:09
  3289:27
  3057:52
  3885:44
  4170:57
  3145:09
  3289:27
  3057:52
  3885:44
  4170:57
  4230:04
  2996:51
 77760:00
 78050:38
 78511:35
 78527:53
 77846:00
 79018:11
 78216:05
 78703:49
 78025:09
 78169:27
 77937:52
 78765:44
 79050:57
 78025:09
 78169:27
 77937:52
 78765:44
 79050:57
 79110:04
 77876:51
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
    00:00
  -290:38
  -751:35
  -767:53
   -86:00
 -1258:11
  -456:05
  -943:49
  -265:09
  -409:27
  -177:52
 -1005:44
 -1290:57
  -265:09
  -409:27
  -177:52
 -1005:44
 -1290:57
 -1350:04
  -116:51
 -1440:00
 -1730:38
 -2191:35
 -2207:53
 -1526:00
 -2698:11
 -1896:05
 -2383:49
 -1705:09
 -1849:27
 -1617:52
 -2445:44
 -2730:57
 -1705:09
 -1849:27
 -1617:52
 -2445:44
 -2730:57
 -2790:04
 -1556:51
 -2880:00
 -3170:38
 -3631:35
 -3647:53
 -2966:00
 -4138:11
 -3336:05
 -3823:49
 -3145:09
 -3289:27
 -3057:52
 -3885:44
 -4170:57
 -3145:09
 -3289:27
 -3057:52
 -3885:44
 -4170:57
 -4230:04
 -2996:51
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:15303"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:15505: cat mtime8.1.out"
at_fn_check_prepare_trace "data-out.at:15505"
( $at_check_trace; cat mtime8.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00.0
 290:38.1
 751:35.2
 767:53.3
  86:00.5
  1258:11
 456:05.2
 943:49.8
 265:09.0
 409:27.5
 177:52.0
  1005:44
  1290:57
 265:09.2
 409:27.1
 177:52.5
  1005:44
  1290:57
  1350:04
 116:51.6
  1440:00
  1730:38
  2191:35
  2207:53
  1526:00
  2698:11
  1896:05
  2383:49
  1705:09
  1849:27
  1617:52
  2445:44
  2730:57
  1705:09
  1849:27
  1617:52
  2445:44
  2730:57
  2790:04
  1556:51
  2880:00
  3170:38
  3631:35
  3647:53
  2966:00
  4138:11
  3336:05
  3823:49
  3145:09
  3289:27
  3057:52
  3885:44
  4170:57
  3145:09
  3289:27
  3057:52
  3885:44
  4170:57
  4230:04
  2996:51
 77760:00
 78050:38
 78511:35
 78527:53
 77846:00
 79018:11
 78216:05
 78703:49
 78025:09
 78169:27
 77937:52
 78765:44
 79050:57
 78025:09
 78169:27
 77937:52
 78765:44
 79050:57
 79110:04
 77876:51
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
  00:00.0
  -290:38
  -751:35
  -767:53
 -86:00.5
 -1258:11
  -456:05
  -943:49
  -265:09
  -409:27
  -177:52
 -1005:44
 -1290:57
  -265:09
  -409:27
  -177:52
 -1005:44
 -1290:57
 -1350:04
  -116:51
 -1440:00
 -1730:38
 -2191:35
 -2207:53
 -1526:00
 -2698:11
 -1896:05
 -2383:49
 -1705:09
 -1849:27
 -1617:52
 -2445:44
 -2730:57
 -1705:09
 -1849:27
 -1617:52
 -2445:44
 -2730:57
 -2790:04
 -1556:51
 -2880:00
 -3170:38
 -3631:35
 -3647:53
 -2966:00
 -4138:11
 -3336:05
 -3823:49
 -3145:09
 -3289:27
 -3057:52
 -3885:44
 -4170:57
 -3145:09
 -3289:27
 -3057:52
 -3885:44
 -4170:57
 -4230:04
 -2996:51
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:15505"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:15707: cat mtime8.2.out"
at_fn_check_prepare_trace "data-out.at:15707"
( $at_check_trace; cat mtime8.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00.00
 290:38.1
 751:35.2
 767:53.3
 86:00.46
  1258:11
 456:05.2
 943:49.8
 265:09.0
 409:27.5
 177:52.0
  1005:44
  1290:57
 265:09.2
 409:27.1
 177:52.5
  1005:44
  1290:57
  1350:04
 116:51.6
  1440:00
  1730:38
  2191:35
  2207:53
  1526:00
  2698:11
  1896:05
  2383:49
  1705:09
  1849:27
  1617:52
  2445:44
  2730:57
  1705:09
  1849:27
  1617:52
  2445:44
  2730:57
  2790:04
  1556:51
  2880:00
  3170:38
  3631:35
  3647:53
  2966:00
  4138:11
  3336:05
  3823:49
  3145:09
  3289:27
  3057:52
  3885:44
  4170:57
  3145:09
  3289:27
  3057:52
  3885:44
  4170:57
  4230:04
  2996:51
 77760:00
 78050:38
 78511:35
 78527:53
 77846:00
 79018:11
 78216:05
 78703:49
 78025:09
 78169:27
 77937:52
 78765:44
 79050:57
 78025:09
 78169:27
 77937:52
 78765:44
 79050:57
 79110:04
 77876:51
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 00:00.00
  -290:38
  -751:35
  -767:53
 -86:00.5
 -1258:11
  -456:05
  -943:49
  -265:09
  -409:27
  -177:52
 -1005:44
 -1290:57
  -265:09
  -409:27
  -177:52
 -1005:44
 -1290:57
 -1350:04
  -116:51
 -1440:00
 -1730:38
 -2191:35
 -2207:53
 -1526:00
 -2698:11
 -1896:05
 -2383:49
 -1705:09
 -1849:27
 -1617:52
 -2445:44
 -2730:57
 -1705:09
 -1849:27
 -1617:52
 -2445:44
 -2730:57
 -2790:04
 -1556:51
 -2880:00
 -3170:38
 -3631:35
 -3647:53
 -2966:00
 -4138:11
 -3336:05
 -3823:49
 -3145:09
 -3289:27
 -3057:52
 -3885:44
 -4170:57
 -3145:09
 -3289:27
 -3057:52
 -3885:44
 -4170:57
 -4230:04
 -2996:51
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
 ********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:15707"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:15909: cat mtime9.out"
at_fn_check_prepare_trace "data-out.at:15909"
( $at_check_trace; cat mtime9.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     00:00
    290:38
    751:35
    767:53
     86:00
   1258:11
    456:05
    943:49
    265:09
    409:27
    177:52
   1005:44
   1290:57
    265:09
    409:27
    177:52
   1005:44
   1290:57
   1350:04
    116:51
   1440:00
   1730:38
   2191:35
   2207:53
   1526:00
   2698:11
   1896:05
   2383:49
   1705:09
   1849:27
   1617:52
   2445:44
   2730:57
   1705:09
   1849:27
   1617:52
   2445:44
   2730:57
   2790:04
   1556:51
   2880:00
   3170:38
   3631:35
   3647:53
   2966:00
   4138:11
   3336:05
   3823:49
   3145:09
   3289:27
   3057:52
   3885:44
   4170:57
   3145:09
   3289:27
   3057:52
   3885:44
   4170:57
   4230:04
   2996:51
  77760:00
  78050:38
  78511:35
  78527:53
  77846:00
  79018:11
  78216:05
  78703:49
  78025:09
  78169:27
  77937:52
  78765:44
  79050:57
  78025:09
  78169:27
  77937:52
  78765:44
  79050:57
  79110:04
  77876:51
 980640:00
 980930:38
 981391:35
 981407:53
 980726:00
 981898:11
 981096:05
 981583:49
 980905:09
 981049:27
 980817:52
 981645:44
 981930:57
 980905:09
 981049:27
 980817:52
 981645:44
 981930:57
 981990:04
 980756:51
     00:00
   -290:38
   -751:35
   -767:53
    -86:00
  -1258:11
   -456:05
   -943:49
   -265:09
   -409:27
   -177:52
  -1005:44
  -1290:57
   -265:09
   -409:27
   -177:52
  -1005:44
  -1290:57
  -1350:04
   -116:51
  -1440:00
  -1730:38
  -2191:35
  -2207:53
  -1526:00
  -2698:11
  -1896:05
  -2383:49
  -1705:09
  -1849:27
  -1617:52
  -2445:44
  -2730:57
  -1705:09
  -1849:27
  -1617:52
  -2445:44
  -2730:57
  -2790:04
  -1556:51
  -2880:00
  -3170:38
  -3631:35
  -3647:53
  -2966:00
  -4138:11
  -3336:05
  -3823:49
  -3145:09
  -3289:27
  -3057:52
  -3885:44
  -4170:57
  -3145:09
  -3289:27
  -3057:52
  -3885:44
  -4170:57
  -4230:04
  -2996:51
 -77760:00
 -78050:38
 -78511:35
 -78527:53
 -77846:00
 -79018:11
 -78216:05
 -78703:49
 -78025:09
 -78169:27
 -77937:52
 -78765:44
 -79050:57
 -78025:09
 -78169:27
 -77937:52
 -78765:44
 -79050:57
 -79110:04
 -77876:51
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:15909"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:16111: cat mtime9.1.out"
at_fn_check_prepare_trace "data-out.at:16111"
( $at_check_trace; cat mtime9.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00.0
  290:38.1
  751:35.2
  767:53.3
   86:00.5
 1258:11.6
  456:05.2
  943:49.8
  265:09.0
  409:27.5
  177:52.0
 1005:44.9
 1290:57.8
  265:09.2
  409:27.1
  177:52.5
 1005:44.7
 1290:57.6
 1350:04.2
  116:51.6
 1440:00.0
 1730:38.1
 2191:35.2
 2207:53.3
 1526:00.5
 2698:11.6
 1896:05.2
 2383:49.8
 1705:09.0
 1849:27.5
 1617:52.0
 2445:44.9
 2730:57.8
 1705:09.2
 1849:27.1
 1617:52.5
 2445:44.7
 2730:57.6
 2790:04.2
 1556:51.6
 2880:00.0
 3170:38.1
 3631:35.2
 3647:53.3
 2966:00.5
 4138:11.6
 3336:05.2
 3823:49.8
 3145:09.0
 3289:27.5
 3057:52.0
 3885:44.9
 4170:57.8
 3145:09.2
 3289:27.1
 3057:52.5
 3885:44.7
 4170:57.6
 4230:04.2
 2996:51.6
  77760:00
  78050:38
  78511:35
  78527:53
  77846:00
  79018:11
  78216:05
  78703:49
  78025:09
  78169:27
  77937:52
  78765:44
  79050:57
  78025:09
  78169:27
  77937:52
  78765:44
  79050:57
  79110:04
  77876:51
 980640:00
 980930:38
 981391:35
 981407:53
 980726:00
 981898:11
 981096:05
 981583:49
 980905:09
 981049:27
 980817:52
 981645:44
 981930:57
 980905:09
 981049:27
 980817:52
 981645:44
 981930:57
 981990:04
 980756:51
   00:00.0
 -290:38.1
 -751:35.2
 -767:53.3
  -86:00.5
  -1258:11
 -456:05.2
 -943:49.8
 -265:09.0
 -409:27.5
 -177:52.0
  -1005:44
  -1290:57
 -265:09.2
 -409:27.1
 -177:52.5
  -1005:44
  -1290:57
  -1350:04
 -116:51.6
  -1440:00
  -1730:38
  -2191:35
  -2207:53
  -1526:00
  -2698:11
  -1896:05
  -2383:49
  -1705:09
  -1849:27
  -1617:52
  -2445:44
  -2730:57
  -1705:09
  -1849:27
  -1617:52
  -2445:44
  -2730:57
  -2790:04
  -1556:51
  -2880:00
  -3170:38
  -3631:35
  -3647:53
  -2966:00
  -4138:11
  -3336:05
  -3823:49
  -3145:09
  -3289:27
  -3057:52
  -3885:44
  -4170:57
  -3145:09
  -3289:27
  -3057:52
  -3885:44
  -4170:57
  -4230:04
  -2996:51
 -77760:00
 -78050:38
 -78511:35
 -78527:53
 -77846:00
 -79018:11
 -78216:05
 -78703:49
 -78025:09
 -78169:27
 -77937:52
 -78765:44
 -79050:57
 -78025:09
 -78169:27
 -77937:52
 -78765:44
 -79050:57
 -79110:04
 -77876:51
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:16111"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:16313: cat mtime9.2.out"
at_fn_check_prepare_trace "data-out.at:16313"
( $at_check_trace; cat mtime9.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00.00
 290:38.12
 751:35.23
 767:53.35
  86:00.46
 1258:11.6
 456:05.19
 943:49.83
 265:09.01
 409:27.52
 177:52.02
 1005:44.9
 1290:57.8
 265:09.15
 409:27.11
 177:52.48
 1005:44.7
 1290:57.6
 1350:04.2
 116:51.59
 1440:00.0
 1730:38.1
 2191:35.2
 2207:53.3
 1526:00.5
 2698:11.6
 1896:05.2
 2383:49.8
 1705:09.0
 1849:27.5
 1617:52.0
 2445:44.9
 2730:57.8
 1705:09.2
 1849:27.1
 1617:52.5
 2445:44.7
 2730:57.6
 2790:04.2
 1556:51.6
 2880:00.0
 3170:38.1
 3631:35.2
 3647:53.3
 2966:00.5
 4138:11.6
 3336:05.2
 3823:49.8
 3145:09.0
 3289:27.5
 3057:52.0
 3885:44.9
 4170:57.8
 3145:09.2
 3289:27.1
 3057:52.5
 3885:44.7
 4170:57.6
 4230:04.2
 2996:51.6
  77760:00
  78050:38
  78511:35
  78527:53
  77846:00
  79018:11
  78216:05
  78703:49
  78025:09
  78169:27
  77937:52
  78765:44
  79050:57
  78025:09
  78169:27
  77937:52
  78765:44
  79050:57
  79110:04
  77876:51
 980640:00
 980930:38
 981391:35
 981407:53
 980726:00
 981898:11
 981096:05
 981583:49
 980905:09
 981049:27
 980817:52
 981645:44
 981930:57
 980905:09
 981049:27
 980817:52
 981645:44
 981930:57
 981990:04
 980756:51
  00:00.00
 -290:38.1
 -751:35.2
 -767:53.3
 -86:00.46
  -1258:11
 -456:05.2
 -943:49.8
 -265:09.0
 -409:27.5
 -177:52.0
  -1005:44
  -1290:57
 -265:09.2
 -409:27.1
 -177:52.5
  -1005:44
  -1290:57
  -1350:04
 -116:51.6
  -1440:00
  -1730:38
  -2191:35
  -2207:53
  -1526:00
  -2698:11
  -1896:05
  -2383:49
  -1705:09
  -1849:27
  -1617:52
  -2445:44
  -2730:57
  -1705:09
  -1849:27
  -1617:52
  -2445:44
  -2730:57
  -2790:04
  -1556:51
  -2880:00
  -3170:38
  -3631:35
  -3647:53
  -2966:00
  -4138:11
  -3336:05
  -3823:49
  -3145:09
  -3289:27
  -3057:52
  -3885:44
  -4170:57
  -3145:09
  -3289:27
  -3057:52
  -3885:44
  -4170:57
  -4230:04
  -2996:51
 -77760:00
 -78050:38
 -78511:35
 -78527:53
 -77846:00
 -79018:11
 -78216:05
 -78703:49
 -78025:09
 -78169:27
 -77937:52
 -78765:44
 -79050:57
 -78025:09
 -78169:27
 -77937:52
 -78765:44
 -79050:57
 -79110:04
 -77876:51
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:16313"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:16515: cat mtime9.3.out"
at_fn_check_prepare_trace "data-out.at:16515"
( $at_check_trace; cat mtime9.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00.000
 290:38.12
 751:35.23
 767:53.35
 86:00.456
 1258:11.6
 456:05.19
 943:49.83
 265:09.01
 409:27.52
 177:52.02
 1005:44.9
 1290:57.8
 265:09.15
 409:27.11
 177:52.48
 1005:44.7
 1290:57.6
 1350:04.2
 116:51.59
 1440:00.0
 1730:38.1
 2191:35.2
 2207:53.3
 1526:00.5
 2698:11.6
 1896:05.2
 2383:49.8
 1705:09.0
 1849:27.5
 1617:52.0
 2445:44.9
 2730:57.8
 1705:09.2
 1849:27.1
 1617:52.5
 2445:44.7
 2730:57.6
 2790:04.2
 1556:51.6
 2880:00.0
 3170:38.1
 3631:35.2
 3647:53.3
 2966:00.5
 4138:11.6
 3336:05.2
 3823:49.8
 3145:09.0
 3289:27.5
 3057:52.0
 3885:44.9
 4170:57.8
 3145:09.2
 3289:27.1
 3057:52.5
 3885:44.7
 4170:57.6
 4230:04.2
 2996:51.6
  77760:00
  78050:38
  78511:35
  78527:53
  77846:00
  79018:11
  78216:05
  78703:49
  78025:09
  78169:27
  77937:52
  78765:44
  79050:57
  78025:09
  78169:27
  77937:52
  78765:44
  79050:57
  79110:04
  77876:51
 980640:00
 980930:38
 981391:35
 981407:53
 980726:00
 981898:11
 981096:05
 981583:49
 980905:09
 981049:27
 980817:52
 981645:44
 981930:57
 980905:09
 981049:27
 980817:52
 981645:44
 981930:57
 981990:04
 980756:51
 00:00.000
 -290:38.1
 -751:35.2
 -767:53.3
 -86:00.46
  -1258:11
 -456:05.2
 -943:49.8
 -265:09.0
 -409:27.5
 -177:52.0
  -1005:44
  -1290:57
 -265:09.2
 -409:27.1
 -177:52.5
  -1005:44
  -1290:57
  -1350:04
 -116:51.6
  -1440:00
  -1730:38
  -2191:35
  -2207:53
  -1526:00
  -2698:11
  -1896:05
  -2383:49
  -1705:09
  -1849:27
  -1617:52
  -2445:44
  -2730:57
  -1705:09
  -1849:27
  -1617:52
  -2445:44
  -2730:57
  -2790:04
  -1556:51
  -2880:00
  -3170:38
  -3631:35
  -3647:53
  -2966:00
  -4138:11
  -3336:05
  -3823:49
  -3145:09
  -3289:27
  -3057:52
  -3885:44
  -4170:57
  -3145:09
  -3289:27
  -3057:52
  -3885:44
  -4170:57
  -4230:04
  -2996:51
 -77760:00
 -78050:38
 -78511:35
 -78527:53
 -77846:00
 -79018:11
 -78216:05
 -78703:49
 -78025:09
 -78169:27
 -77937:52
 -78765:44
 -79050:57
 -78025:09
 -78169:27
 -77937:52
 -78765:44
 -79050:57
 -79110:04
 -77876:51
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
 *********
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:16515"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:16717: cat mtime10.out"
at_fn_check_prepare_trace "data-out.at:16717"
( $at_check_trace; cat mtime10.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "      00:00
     290:38
     751:35
     767:53
      86:00
    1258:11
     456:05
     943:49
     265:09
     409:27
     177:52
    1005:44
    1290:57
     265:09
     409:27
     177:52
    1005:44
    1290:57
    1350:04
     116:51
    1440:00
    1730:38
    2191:35
    2207:53
    1526:00
    2698:11
    1896:05
    2383:49
    1705:09
    1849:27
    1617:52
    2445:44
    2730:57
    1705:09
    1849:27
    1617:52
    2445:44
    2730:57
    2790:04
    1556:51
    2880:00
    3170:38
    3631:35
    3647:53
    2966:00
    4138:11
    3336:05
    3823:49
    3145:09
    3289:27
    3057:52
    3885:44
    4170:57
    3145:09
    3289:27
    3057:52
    3885:44
    4170:57
    4230:04
    2996:51
   77760:00
   78050:38
   78511:35
   78527:53
   77846:00
   79018:11
   78216:05
   78703:49
   78025:09
   78169:27
   77937:52
   78765:44
   79050:57
   78025:09
   78169:27
   77937:52
   78765:44
   79050:57
   79110:04
   77876:51
  980640:00
  980930:38
  981391:35
  981407:53
  980726:00
  981898:11
  981096:05
  981583:49
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  981990:04
  980756:51
      00:00
    -290:38
    -751:35
    -767:53
     -86:00
   -1258:11
    -456:05
    -943:49
    -265:09
    -409:27
    -177:52
   -1005:44
   -1290:57
    -265:09
    -409:27
    -177:52
   -1005:44
   -1290:57
   -1350:04
    -116:51
   -1440:00
   -1730:38
   -2191:35
   -2207:53
   -1526:00
   -2698:11
   -1896:05
   -2383:49
   -1705:09
   -1849:27
   -1617:52
   -2445:44
   -2730:57
   -1705:09
   -1849:27
   -1617:52
   -2445:44
   -2730:57
   -2790:04
   -1556:51
   -2880:00
   -3170:38
   -3631:35
   -3647:53
   -2966:00
   -4138:11
   -3336:05
   -3823:49
   -3145:09
   -3289:27
   -3057:52
   -3885:44
   -4170:57
   -3145:09
   -3289:27
   -3057:52
   -3885:44
   -4170:57
   -4230:04
   -2996:51
  -77760:00
  -78050:38
  -78511:35
  -78527:53
  -77846:00
  -79018:11
  -78216:05
  -78703:49
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -79110:04
  -77876:51
 -980640:00
 -980930:38
 -981391:35
 -981407:53
 -980726:00
 -981898:11
 -981096:05
 -981583:49
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -981990:04
 -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:16717"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:16919: cat mtime10.1.out"
at_fn_check_prepare_trace "data-out.at:16919"
( $at_check_trace; cat mtime10.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    00:00.0
   290:38.1
   751:35.2
   767:53.3
    86:00.5
  1258:11.6
   456:05.2
   943:49.8
   265:09.0
   409:27.5
   177:52.0
  1005:44.9
  1290:57.8
   265:09.2
   409:27.1
   177:52.5
  1005:44.7
  1290:57.6
  1350:04.2
   116:51.6
  1440:00.0
  1730:38.1
  2191:35.2
  2207:53.3
  1526:00.5
  2698:11.6
  1896:05.2
  2383:49.8
  1705:09.0
  1849:27.5
  1617:52.0
  2445:44.9
  2730:57.8
  1705:09.2
  1849:27.1
  1617:52.5
  2445:44.7
  2730:57.6
  2790:04.2
  1556:51.6
  2880:00.0
  3170:38.1
  3631:35.2
  3647:53.3
  2966:00.5
  4138:11.6
  3336:05.2
  3823:49.8
  3145:09.0
  3289:27.5
  3057:52.0
  3885:44.9
  4170:57.8
  3145:09.2
  3289:27.1
  3057:52.5
  3885:44.7
  4170:57.6
  4230:04.2
  2996:51.6
 77760:00.0
 78050:38.1
 78511:35.2
 78527:53.3
 77846:00.5
 79018:11.6
 78216:05.2
 78703:49.8
 78025:09.0
 78169:27.5
 77937:52.0
 78765:44.9
 79050:57.8
 78025:09.2
 78169:27.1
 77937:52.5
 78765:44.7
 79050:57.6
 79110:04.2
 77876:51.6
  980640:00
  980930:38
  981391:35
  981407:53
  980726:00
  981898:11
  981096:05
  981583:49
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  981990:04
  980756:51
    00:00.0
  -290:38.1
  -751:35.2
  -767:53.3
   -86:00.5
 -1258:11.6
  -456:05.2
  -943:49.8
  -265:09.0
  -409:27.5
  -177:52.0
 -1005:44.9
 -1290:57.8
  -265:09.2
  -409:27.1
  -177:52.5
 -1005:44.7
 -1290:57.6
 -1350:04.2
  -116:51.6
 -1440:00.0
 -1730:38.1
 -2191:35.2
 -2207:53.3
 -1526:00.5
 -2698:11.6
 -1896:05.2
 -2383:49.8
 -1705:09.0
 -1849:27.5
 -1617:52.0
 -2445:44.9
 -2730:57.8
 -1705:09.2
 -1849:27.1
 -1617:52.5
 -2445:44.7
 -2730:57.6
 -2790:04.2
 -1556:51.6
 -2880:00.0
 -3170:38.1
 -3631:35.2
 -3647:53.3
 -2966:00.5
 -4138:11.6
 -3336:05.2
 -3823:49.8
 -3145:09.0
 -3289:27.5
 -3057:52.0
 -3885:44.9
 -4170:57.8
 -3145:09.2
 -3289:27.1
 -3057:52.5
 -3885:44.7
 -4170:57.6
 -4230:04.2
 -2996:51.6
  -77760:00
  -78050:38
  -78511:35
  -78527:53
  -77846:00
  -79018:11
  -78216:05
  -78703:49
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -79110:04
  -77876:51
 -980640:00
 -980930:38
 -981391:35
 -981407:53
 -980726:00
 -981898:11
 -981096:05
 -981583:49
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -981990:04
 -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:16919"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:17121: cat mtime10.2.out"
at_fn_check_prepare_trace "data-out.at:17121"
( $at_check_trace; cat mtime10.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00.00
  290:38.12
  751:35.23
  767:53.35
   86:00.46
 1258:11.57
  456:05.19
  943:49.83
  265:09.01
  409:27.52
  177:52.02
 1005:44.87
 1290:57.82
  265:09.15
  409:27.11
  177:52.48
 1005:44.66
 1290:57.58
 1350:04.18
  116:51.59
 1440:00.00
 1730:38.12
 2191:35.23
 2207:53.35
 1526:00.46
 2698:11.57
 1896:05.19
 2383:49.83
 1705:09.01
 1849:27.52
 1617:52.02
 2445:44.87
 2730:57.82
 1705:09.15
 1849:27.11
 1617:52.48
 2445:44.66
 2730:57.58
 2790:04.18
 1556:51.59
 2880:00.00
 3170:38.12
 3631:35.23
 3647:53.35
 2966:00.46
 4138:11.57
 3336:05.19
 3823:49.83
 3145:09.01
 3289:27.52
 3057:52.02
 3885:44.87
 4170:57.82
 3145:09.15
 3289:27.11
 3057:52.48
 3885:44.66
 4170:57.58
 4230:04.18
 2996:51.59
 77760:00.0
 78050:38.1
 78511:35.2
 78527:53.3
 77846:00.5
 79018:11.6
 78216:05.2
 78703:49.8
 78025:09.0
 78169:27.5
 77937:52.0
 78765:44.9
 79050:57.8
 78025:09.2
 78169:27.1
 77937:52.5
 78765:44.7
 79050:57.6
 79110:04.2
 77876:51.6
  980640:00
  980930:38
  981391:35
  981407:53
  980726:00
  981898:11
  981096:05
  981583:49
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  981990:04
  980756:51
   00:00.00
 -290:38.12
 -751:35.23
 -767:53.35
  -86:00.46
 -1258:11.6
 -456:05.19
 -943:49.83
 -265:09.01
 -409:27.52
 -177:52.02
 -1005:44.9
 -1290:57.8
 -265:09.15
 -409:27.11
 -177:52.48
 -1005:44.7
 -1290:57.6
 -1350:04.2
 -116:51.59
 -1440:00.0
 -1730:38.1
 -2191:35.2
 -2207:53.3
 -1526:00.5
 -2698:11.6
 -1896:05.2
 -2383:49.8
 -1705:09.0
 -1849:27.5
 -1617:52.0
 -2445:44.9
 -2730:57.8
 -1705:09.2
 -1849:27.1
 -1617:52.5
 -2445:44.7
 -2730:57.6
 -2790:04.2
 -1556:51.6
 -2880:00.0
 -3170:38.1
 -3631:35.2
 -3647:53.3
 -2966:00.5
 -4138:11.6
 -3336:05.2
 -3823:49.8
 -3145:09.0
 -3289:27.5
 -3057:52.0
 -3885:44.9
 -4170:57.8
 -3145:09.2
 -3289:27.1
 -3057:52.5
 -3885:44.7
 -4170:57.6
 -4230:04.2
 -2996:51.6
  -77760:00
  -78050:38
  -78511:35
  -78527:53
  -77846:00
  -79018:11
  -78216:05
  -78703:49
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -79110:04
  -77876:51
 -980640:00
 -980930:38
 -981391:35
 -981407:53
 -980726:00
 -981898:11
 -981096:05
 -981583:49
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -981990:04
 -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:17121"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:17323: cat mtime10.3.out"
at_fn_check_prepare_trace "data-out.at:17323"
( $at_check_trace; cat mtime10.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00.000
 290:38.123
 751:35.235
 767:53.345
  86:00.456
 1258:11.57
 456:05.190
 943:49.831
 265:09.013
 409:27.524
 177:52.016
 1005:44.87
 1290:57.82
 265:09.154
 409:27.105
 177:52.482
 1005:44.66
 1290:57.58
 1350:04.18
 116:51.593
 1440:00.00
 1730:38.12
 2191:35.23
 2207:53.35
 1526:00.46
 2698:11.57
 1896:05.19
 2383:49.83
 1705:09.01
 1849:27.52
 1617:52.02
 2445:44.87
 2730:57.82
 1705:09.15
 1849:27.11
 1617:52.48
 2445:44.66
 2730:57.58
 2790:04.18
 1556:51.59
 2880:00.00
 3170:38.12
 3631:35.23
 3647:53.35
 2966:00.46
 4138:11.57
 3336:05.19
 3823:49.83
 3145:09.01
 3289:27.52
 3057:52.02
 3885:44.87
 4170:57.82
 3145:09.15
 3289:27.11
 3057:52.48
 3885:44.66
 4170:57.58
 4230:04.18
 2996:51.59
 77760:00.0
 78050:38.1
 78511:35.2
 78527:53.3
 77846:00.5
 79018:11.6
 78216:05.2
 78703:49.8
 78025:09.0
 78169:27.5
 77937:52.0
 78765:44.9
 79050:57.8
 78025:09.2
 78169:27.1
 77937:52.5
 78765:44.7
 79050:57.6
 79110:04.2
 77876:51.6
  980640:00
  980930:38
  981391:35
  981407:53
  980726:00
  981898:11
  981096:05
  981583:49
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  981990:04
  980756:51
  00:00.000
 -290:38.12
 -751:35.23
 -767:53.35
 -86:00.456
 -1258:11.6
 -456:05.19
 -943:49.83
 -265:09.01
 -409:27.52
 -177:52.02
 -1005:44.9
 -1290:57.8
 -265:09.15
 -409:27.11
 -177:52.48
 -1005:44.7
 -1290:57.6
 -1350:04.2
 -116:51.59
 -1440:00.0
 -1730:38.1
 -2191:35.2
 -2207:53.3
 -1526:00.5
 -2698:11.6
 -1896:05.2
 -2383:49.8
 -1705:09.0
 -1849:27.5
 -1617:52.0
 -2445:44.9
 -2730:57.8
 -1705:09.2
 -1849:27.1
 -1617:52.5
 -2445:44.7
 -2730:57.6
 -2790:04.2
 -1556:51.6
 -2880:00.0
 -3170:38.1
 -3631:35.2
 -3647:53.3
 -2966:00.5
 -4138:11.6
 -3336:05.2
 -3823:49.8
 -3145:09.0
 -3289:27.5
 -3057:52.0
 -3885:44.9
 -4170:57.8
 -3145:09.2
 -3289:27.1
 -3057:52.5
 -3885:44.7
 -4170:57.6
 -4230:04.2
 -2996:51.6
  -77760:00
  -78050:38
  -78511:35
  -78527:53
  -77846:00
  -79018:11
  -78216:05
  -78703:49
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -79110:04
  -77876:51
 -980640:00
 -980930:38
 -981391:35
 -981407:53
 -980726:00
 -981898:11
 -981096:05
 -981583:49
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -981990:04
 -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:17323"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:17525: cat mtime10.4.out"
at_fn_check_prepare_trace "data-out.at:17525"
( $at_check_trace; cat mtime10.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00.0000
 290:38.123
 751:35.235
 767:53.345
 86:00.4561
 1258:11.57
 456:05.190
 943:49.831
 265:09.013
 409:27.524
 177:52.016
 1005:44.87
 1290:57.82
 265:09.154
 409:27.105
 177:52.482
 1005:44.66
 1290:57.58
 1350:04.18
 116:51.593
 1440:00.00
 1730:38.12
 2191:35.23
 2207:53.35
 1526:00.46
 2698:11.57
 1896:05.19
 2383:49.83
 1705:09.01
 1849:27.52
 1617:52.02
 2445:44.87
 2730:57.82
 1705:09.15
 1849:27.11
 1617:52.48
 2445:44.66
 2730:57.58
 2790:04.18
 1556:51.59
 2880:00.00
 3170:38.12
 3631:35.23
 3647:53.35
 2966:00.46
 4138:11.57
 3336:05.19
 3823:49.83
 3145:09.01
 3289:27.52
 3057:52.02
 3885:44.87
 4170:57.82
 3145:09.15
 3289:27.11
 3057:52.48
 3885:44.66
 4170:57.58
 4230:04.18
 2996:51.59
 77760:00.0
 78050:38.1
 78511:35.2
 78527:53.3
 77846:00.5
 79018:11.6
 78216:05.2
 78703:49.8
 78025:09.0
 78169:27.5
 77937:52.0
 78765:44.9
 79050:57.8
 78025:09.2
 78169:27.1
 77937:52.5
 78765:44.7
 79050:57.6
 79110:04.2
 77876:51.6
  980640:00
  980930:38
  981391:35
  981407:53
  980726:00
  981898:11
  981096:05
  981583:49
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  980905:09
  981049:27
  980817:52
  981645:44
  981930:57
  981990:04
  980756:51
 00:00.0000
 -290:38.12
 -751:35.23
 -767:53.35
 -86:00.456
 -1258:11.6
 -456:05.19
 -943:49.83
 -265:09.01
 -409:27.52
 -177:52.02
 -1005:44.9
 -1290:57.8
 -265:09.15
 -409:27.11
 -177:52.48
 -1005:44.7
 -1290:57.6
 -1350:04.2
 -116:51.59
 -1440:00.0
 -1730:38.1
 -2191:35.2
 -2207:53.3
 -1526:00.5
 -2698:11.6
 -1896:05.2
 -2383:49.8
 -1705:09.0
 -1849:27.5
 -1617:52.0
 -2445:44.9
 -2730:57.8
 -1705:09.2
 -1849:27.1
 -1617:52.5
 -2445:44.7
 -2730:57.6
 -2790:04.2
 -1556:51.6
 -2880:00.0
 -3170:38.1
 -3631:35.2
 -3647:53.3
 -2966:00.5
 -4138:11.6
 -3336:05.2
 -3823:49.8
 -3145:09.0
 -3289:27.5
 -3057:52.0
 -3885:44.9
 -4170:57.8
 -3145:09.2
 -3289:27.1
 -3057:52.5
 -3885:44.7
 -4170:57.6
 -4230:04.2
 -2996:51.6
  -77760:00
  -78050:38
  -78511:35
  -78527:53
  -77846:00
  -79018:11
  -78216:05
  -78703:49
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -78025:09
  -78169:27
  -77937:52
  -78765:44
  -79050:57
  -79110:04
  -77876:51
 -980640:00
 -980930:38
 -981391:35
 -981407:53
 -980726:00
 -981898:11
 -981096:05
 -981583:49
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -980905:09
 -981049:27
 -980817:52
 -981645:44
 -981930:57
 -981990:04
 -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:17525"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:17727: cat mtime11.out"
at_fn_check_prepare_trace "data-out.at:17727"
( $at_check_trace; cat mtime11.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "       00:00
      290:38
      751:35
      767:53
       86:00
     1258:11
      456:05
      943:49
      265:09
      409:27
      177:52
     1005:44
     1290:57
      265:09
      409:27
      177:52
     1005:44
     1290:57
     1350:04
      116:51
     1440:00
     1730:38
     2191:35
     2207:53
     1526:00
     2698:11
     1896:05
     2383:49
     1705:09
     1849:27
     1617:52
     2445:44
     2730:57
     1705:09
     1849:27
     1617:52
     2445:44
     2730:57
     2790:04
     1556:51
     2880:00
     3170:38
     3631:35
     3647:53
     2966:00
     4138:11
     3336:05
     3823:49
     3145:09
     3289:27
     3057:52
     3885:44
     4170:57
     3145:09
     3289:27
     3057:52
     3885:44
     4170:57
     4230:04
     2996:51
    77760:00
    78050:38
    78511:35
    78527:53
    77846:00
    79018:11
    78216:05
    78703:49
    78025:09
    78169:27
    77937:52
    78765:44
    79050:57
    78025:09
    78169:27
    77937:52
    78765:44
    79050:57
    79110:04
    77876:51
   980640:00
   980930:38
   981391:35
   981407:53
   980726:00
   981898:11
   981096:05
   981583:49
   980905:09
   981049:27
   980817:52
   981645:44
   981930:57
   980905:09
   981049:27
   980817:52
   981645:44
   981930:57
   981990:04
   980756:51
       00:00
     -290:38
     -751:35
     -767:53
      -86:00
    -1258:11
     -456:05
     -943:49
     -265:09
     -409:27
     -177:52
    -1005:44
    -1290:57
     -265:09
     -409:27
     -177:52
    -1005:44
    -1290:57
    -1350:04
     -116:51
    -1440:00
    -1730:38
    -2191:35
    -2207:53
    -1526:00
    -2698:11
    -1896:05
    -2383:49
    -1705:09
    -1849:27
    -1617:52
    -2445:44
    -2730:57
    -1705:09
    -1849:27
    -1617:52
    -2445:44
    -2730:57
    -2790:04
    -1556:51
    -2880:00
    -3170:38
    -3631:35
    -3647:53
    -2966:00
    -4138:11
    -3336:05
    -3823:49
    -3145:09
    -3289:27
    -3057:52
    -3885:44
    -4170:57
    -3145:09
    -3289:27
    -3057:52
    -3885:44
    -4170:57
    -4230:04
    -2996:51
   -77760:00
   -78050:38
   -78511:35
   -78527:53
   -77846:00
   -79018:11
   -78216:05
   -78703:49
   -78025:09
   -78169:27
   -77937:52
   -78765:44
   -79050:57
   -78025:09
   -78169:27
   -77937:52
   -78765:44
   -79050:57
   -79110:04
   -77876:51
  -980640:00
  -980930:38
  -981391:35
  -981407:53
  -980726:00
  -981898:11
  -981096:05
  -981583:49
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -981990:04
  -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:17727"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:17929: cat mtime11.1.out"
at_fn_check_prepare_trace "data-out.at:17929"
( $at_check_trace; cat mtime11.1.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     00:00.0
    290:38.1
    751:35.2
    767:53.3
     86:00.5
   1258:11.6
    456:05.2
    943:49.8
    265:09.0
    409:27.5
    177:52.0
   1005:44.9
   1290:57.8
    265:09.2
    409:27.1
    177:52.5
   1005:44.7
   1290:57.6
   1350:04.2
    116:51.6
   1440:00.0
   1730:38.1
   2191:35.2
   2207:53.3
   1526:00.5
   2698:11.6
   1896:05.2
   2383:49.8
   1705:09.0
   1849:27.5
   1617:52.0
   2445:44.9
   2730:57.8
   1705:09.2
   1849:27.1
   1617:52.5
   2445:44.7
   2730:57.6
   2790:04.2
   1556:51.6
   2880:00.0
   3170:38.1
   3631:35.2
   3647:53.3
   2966:00.5
   4138:11.6
   3336:05.2
   3823:49.8
   3145:09.0
   3289:27.5
   3057:52.0
   3885:44.9
   4170:57.8
   3145:09.2
   3289:27.1
   3057:52.5
   3885:44.7
   4170:57.6
   4230:04.2
   2996:51.6
  77760:00.0
  78050:38.1
  78511:35.2
  78527:53.3
  77846:00.5
  79018:11.6
  78216:05.2
  78703:49.8
  78025:09.0
  78169:27.5
  77937:52.0
  78765:44.9
  79050:57.8
  78025:09.2
  78169:27.1
  77937:52.5
  78765:44.7
  79050:57.6
  79110:04.2
  77876:51.6
 980640:00.0
 980930:38.1
 981391:35.2
 981407:53.3
 980726:00.5
 981898:11.6
 981096:05.2
 981583:49.8
 980905:09.0
 981049:27.5
 980817:52.0
 981645:44.9
 981930:57.8
 980905:09.2
 981049:27.1
 980817:52.5
 981645:44.7
 981930:57.6
 981990:04.2
 980756:51.6
     00:00.0
   -290:38.1
   -751:35.2
   -767:53.3
    -86:00.5
  -1258:11.6
   -456:05.2
   -943:49.8
   -265:09.0
   -409:27.5
   -177:52.0
  -1005:44.9
  -1290:57.8
   -265:09.2
   -409:27.1
   -177:52.5
  -1005:44.7
  -1290:57.6
  -1350:04.2
   -116:51.6
  -1440:00.0
  -1730:38.1
  -2191:35.2
  -2207:53.3
  -1526:00.5
  -2698:11.6
  -1896:05.2
  -2383:49.8
  -1705:09.0
  -1849:27.5
  -1617:52.0
  -2445:44.9
  -2730:57.8
  -1705:09.2
  -1849:27.1
  -1617:52.5
  -2445:44.7
  -2730:57.6
  -2790:04.2
  -1556:51.6
  -2880:00.0
  -3170:38.1
  -3631:35.2
  -3647:53.3
  -2966:00.5
  -4138:11.6
  -3336:05.2
  -3823:49.8
  -3145:09.0
  -3289:27.5
  -3057:52.0
  -3885:44.9
  -4170:57.8
  -3145:09.2
  -3289:27.1
  -3057:52.5
  -3885:44.7
  -4170:57.6
  -4230:04.2
  -2996:51.6
 -77760:00.0
 -78050:38.1
 -78511:35.2
 -78527:53.3
 -77846:00.5
 -79018:11.6
 -78216:05.2
 -78703:49.8
 -78025:09.0
 -78169:27.5
 -77937:52.0
 -78765:44.9
 -79050:57.8
 -78025:09.2
 -78169:27.1
 -77937:52.5
 -78765:44.7
 -79050:57.6
 -79110:04.2
 -77876:51.6
  -980640:00
  -980930:38
  -981391:35
  -981407:53
  -980726:00
  -981898:11
  -981096:05
  -981583:49
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -981990:04
  -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:17929"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:18131: cat mtime11.2.out"
at_fn_check_prepare_trace "data-out.at:18131"
( $at_check_trace; cat mtime11.2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    00:00.00
   290:38.12
   751:35.23
   767:53.35
    86:00.46
  1258:11.57
   456:05.19
   943:49.83
   265:09.01
   409:27.52
   177:52.02
  1005:44.87
  1290:57.82
   265:09.15
   409:27.11
   177:52.48
  1005:44.66
  1290:57.58
  1350:04.18
   116:51.59
  1440:00.00
  1730:38.12
  2191:35.23
  2207:53.35
  1526:00.46
  2698:11.57
  1896:05.19
  2383:49.83
  1705:09.01
  1849:27.52
  1617:52.02
  2445:44.87
  2730:57.82
  1705:09.15
  1849:27.11
  1617:52.48
  2445:44.66
  2730:57.58
  2790:04.18
  1556:51.59
  2880:00.00
  3170:38.12
  3631:35.23
  3647:53.35
  2966:00.46
  4138:11.57
  3336:05.19
  3823:49.83
  3145:09.01
  3289:27.52
  3057:52.02
  3885:44.87
  4170:57.82
  3145:09.15
  3289:27.11
  3057:52.48
  3885:44.66
  4170:57.58
  4230:04.18
  2996:51.59
 77760:00.00
 78050:38.12
 78511:35.23
 78527:53.35
 77846:00.46
 79018:11.57
 78216:05.19
 78703:49.83
 78025:09.01
 78169:27.52
 77937:52.02
 78765:44.87
 79050:57.82
 78025:09.15
 78169:27.11
 77937:52.48
 78765:44.66
 79050:57.58
 79110:04.18
 77876:51.59
 980640:00.0
 980930:38.1
 981391:35.2
 981407:53.3
 980726:00.5
 981898:11.6
 981096:05.2
 981583:49.8
 980905:09.0
 981049:27.5
 980817:52.0
 981645:44.9
 981930:57.8
 980905:09.2
 981049:27.1
 980817:52.5
 981645:44.7
 981930:57.6
 981990:04.2
 980756:51.6
    00:00.00
  -290:38.12
  -751:35.23
  -767:53.35
   -86:00.46
 -1258:11.57
  -456:05.19
  -943:49.83
  -265:09.01
  -409:27.52
  -177:52.02
 -1005:44.87
 -1290:57.82
  -265:09.15
  -409:27.11
  -177:52.48
 -1005:44.66
 -1290:57.58
 -1350:04.18
  -116:51.59
 -1440:00.00
 -1730:38.12
 -2191:35.23
 -2207:53.35
 -1526:00.46
 -2698:11.57
 -1896:05.19
 -2383:49.83
 -1705:09.01
 -1849:27.52
 -1617:52.02
 -2445:44.87
 -2730:57.82
 -1705:09.15
 -1849:27.11
 -1617:52.48
 -2445:44.66
 -2730:57.58
 -2790:04.18
 -1556:51.59
 -2880:00.00
 -3170:38.12
 -3631:35.23
 -3647:53.35
 -2966:00.46
 -4138:11.57
 -3336:05.19
 -3823:49.83
 -3145:09.01
 -3289:27.52
 -3057:52.02
 -3885:44.87
 -4170:57.82
 -3145:09.15
 -3289:27.11
 -3057:52.48
 -3885:44.66
 -4170:57.58
 -4230:04.18
 -2996:51.59
 -77760:00.0
 -78050:38.1
 -78511:35.2
 -78527:53.3
 -77846:00.5
 -79018:11.6
 -78216:05.2
 -78703:49.8
 -78025:09.0
 -78169:27.5
 -77937:52.0
 -78765:44.9
 -79050:57.8
 -78025:09.2
 -78169:27.1
 -77937:52.5
 -78765:44.7
 -79050:57.6
 -79110:04.2
 -77876:51.6
  -980640:00
  -980930:38
  -981391:35
  -981407:53
  -980726:00
  -981898:11
  -981096:05
  -981583:49
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -981990:04
  -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:18131"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:18333: cat mtime11.3.out"
at_fn_check_prepare_trace "data-out.at:18333"
( $at_check_trace; cat mtime11.3.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00.000
  290:38.123
  751:35.235
  767:53.345
   86:00.456
 1258:11.567
  456:05.190
  943:49.831
  265:09.013
  409:27.524
  177:52.016
 1005:44.865
 1290:57.820
  265:09.154
  409:27.105
  177:52.482
 1005:44.658
 1290:57.582
 1350:04.183
  116:51.593
 1440:00.000
 1730:38.123
 2191:35.235
 2207:53.345
 1526:00.456
 2698:11.567
 1896:05.190
 2383:49.831
 1705:09.013
 1849:27.524
 1617:52.016
 2445:44.865
 2730:57.820
 1705:09.154
 1849:27.105
 1617:52.482
 2445:44.658
 2730:57.582
 2790:04.183
 1556:51.593
 2880:00.000
 3170:38.123
 3631:35.235
 3647:53.345
 2966:00.456
 4138:11.567
 3336:05.190
 3823:49.831
 3145:09.013
 3289:27.524
 3057:52.016
 3885:44.865
 4170:57.820
 3145:09.154
 3289:27.105
 3057:52.482
 3885:44.658
 4170:57.582
 4230:04.183
 2996:51.593
 77760:00.00
 78050:38.12
 78511:35.23
 78527:53.35
 77846:00.46
 79018:11.57
 78216:05.19
 78703:49.83
 78025:09.01
 78169:27.52
 77937:52.02
 78765:44.87
 79050:57.82
 78025:09.15
 78169:27.11
 77937:52.48
 78765:44.66
 79050:57.58
 79110:04.18
 77876:51.59
 980640:00.0
 980930:38.1
 981391:35.2
 981407:53.3
 980726:00.5
 981898:11.6
 981096:05.2
 981583:49.8
 980905:09.0
 981049:27.5
 980817:52.0
 981645:44.9
 981930:57.8
 980905:09.2
 981049:27.1
 980817:52.5
 981645:44.7
 981930:57.6
 981990:04.2
 980756:51.6
   00:00.000
 -290:38.123
 -751:35.235
 -767:53.345
  -86:00.456
 -1258:11.57
 -456:05.190
 -943:49.831
 -265:09.013
 -409:27.524
 -177:52.016
 -1005:44.87
 -1290:57.82
 -265:09.154
 -409:27.105
 -177:52.482
 -1005:44.66
 -1290:57.58
 -1350:04.18
 -116:51.593
 -1440:00.00
 -1730:38.12
 -2191:35.23
 -2207:53.35
 -1526:00.46
 -2698:11.57
 -1896:05.19
 -2383:49.83
 -1705:09.01
 -1849:27.52
 -1617:52.02
 -2445:44.87
 -2730:57.82
 -1705:09.15
 -1849:27.11
 -1617:52.48
 -2445:44.66
 -2730:57.58
 -2790:04.18
 -1556:51.59
 -2880:00.00
 -3170:38.12
 -3631:35.23
 -3647:53.35
 -2966:00.46
 -4138:11.57
 -3336:05.19
 -3823:49.83
 -3145:09.01
 -3289:27.52
 -3057:52.02
 -3885:44.87
 -4170:57.82
 -3145:09.15
 -3289:27.11
 -3057:52.48
 -3885:44.66
 -4170:57.58
 -4230:04.18
 -2996:51.59
 -77760:00.0
 -78050:38.1
 -78511:35.2
 -78527:53.3
 -77846:00.5
 -79018:11.6
 -78216:05.2
 -78703:49.8
 -78025:09.0
 -78169:27.5
 -77937:52.0
 -78765:44.9
 -79050:57.8
 -78025:09.2
 -78169:27.1
 -77937:52.5
 -78765:44.7
 -79050:57.6
 -79110:04.2
 -77876:51.6
  -980640:00
  -980930:38
  -981391:35
  -981407:53
  -980726:00
  -981898:11
  -981096:05
  -981583:49
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -981990:04
  -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:18333"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:18535: cat mtime11.4.out"
at_fn_check_prepare_trace "data-out.at:18535"
( $at_check_trace; cat mtime11.4.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00.0000
 290:38.1230
 751:35.2345
 767:53.3451
  86:00.4561
 1258:11.567
 456:05.1896
 943:49.8313
 265:09.0129
 409:27.5238
 177:52.0156
 1005:44.865
 1290:57.820
 265:09.1539
 409:27.1053
 177:52.4823
 1005:44.658
 1290:57.582
 1350:04.183
 116:51.5932
 1440:00.000
 1730:38.123
 2191:35.235
 2207:53.345
 1526:00.456
 2698:11.567
 1896:05.190
 2383:49.831
 1705:09.013
 1849:27.524
 1617:52.016
 2445:44.865
 2730:57.820
 1705:09.154
 1849:27.105
 1617:52.482
 2445:44.658
 2730:57.582
 2790:04.183
 1556:51.593
 2880:00.000
 3170:38.123
 3631:35.235
 3647:53.345
 2966:00.456
 4138:11.567
 3336:05.190
 3823:49.831
 3145:09.013
 3289:27.524
 3057:52.016
 3885:44.865
 4170:57.820
 3145:09.154
 3289:27.105
 3057:52.482
 3885:44.658
 4170:57.582
 4230:04.183
 2996:51.593
 77760:00.00
 78050:38.12
 78511:35.23
 78527:53.35
 77846:00.46
 79018:11.57
 78216:05.19
 78703:49.83
 78025:09.01
 78169:27.52
 77937:52.02
 78765:44.87
 79050:57.82
 78025:09.15
 78169:27.11
 77937:52.48
 78765:44.66
 79050:57.58
 79110:04.18
 77876:51.59
 980640:00.0
 980930:38.1
 981391:35.2
 981407:53.3
 980726:00.5
 981898:11.6
 981096:05.2
 981583:49.8
 980905:09.0
 981049:27.5
 980817:52.0
 981645:44.9
 981930:57.8
 980905:09.2
 981049:27.1
 980817:52.5
 981645:44.7
 981930:57.6
 981990:04.2
 980756:51.6
  00:00.0000
 -290:38.123
 -751:35.235
 -767:53.345
 -86:00.4561
 -1258:11.57
 -456:05.190
 -943:49.831
 -265:09.013
 -409:27.524
 -177:52.016
 -1005:44.87
 -1290:57.82
 -265:09.154
 -409:27.105
 -177:52.482
 -1005:44.66
 -1290:57.58
 -1350:04.18
 -116:51.593
 -1440:00.00
 -1730:38.12
 -2191:35.23
 -2207:53.35
 -1526:00.46
 -2698:11.57
 -1896:05.19
 -2383:49.83
 -1705:09.01
 -1849:27.52
 -1617:52.02
 -2445:44.87
 -2730:57.82
 -1705:09.15
 -1849:27.11
 -1617:52.48
 -2445:44.66
 -2730:57.58
 -2790:04.18
 -1556:51.59
 -2880:00.00
 -3170:38.12
 -3631:35.23
 -3647:53.35
 -2966:00.46
 -4138:11.57
 -3336:05.19
 -3823:49.83
 -3145:09.01
 -3289:27.52
 -3057:52.02
 -3885:44.87
 -4170:57.82
 -3145:09.15
 -3289:27.11
 -3057:52.48
 -3885:44.66
 -4170:57.58
 -4230:04.18
 -2996:51.59
 -77760:00.0
 -78050:38.1
 -78511:35.2
 -78527:53.3
 -77846:00.5
 -79018:11.6
 -78216:05.2
 -78703:49.8
 -78025:09.0
 -78169:27.5
 -77937:52.0
 -78765:44.9
 -79050:57.8
 -78025:09.2
 -78169:27.1
 -77937:52.5
 -78765:44.7
 -79050:57.6
 -79110:04.2
 -77876:51.6
  -980640:00
  -980930:38
  -981391:35
  -981407:53
  -980726:00
  -981898:11
  -981096:05
  -981583:49
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -981990:04
  -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:18535"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:18737: cat mtime11.5.out"
at_fn_check_prepare_trace "data-out.at:18737"
( $at_check_trace; cat mtime11.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 00:00.00000
 290:38.1230
 751:35.2345
 767:53.3451
 86:00.45615
 1258:11.567
 456:05.1896
 943:49.8313
 265:09.0129
 409:27.5238
 177:52.0156
 1005:44.865
 1290:57.820
 265:09.1539
 409:27.1053
 177:52.4823
 1005:44.658
 1290:57.582
 1350:04.183
 116:51.5932
 1440:00.000
 1730:38.123
 2191:35.235
 2207:53.345
 1526:00.456
 2698:11.567
 1896:05.190
 2383:49.831
 1705:09.013
 1849:27.524
 1617:52.016
 2445:44.865
 2730:57.820
 1705:09.154
 1849:27.105
 1617:52.482
 2445:44.658
 2730:57.582
 2790:04.183
 1556:51.593
 2880:00.000
 3170:38.123
 3631:35.235
 3647:53.345
 2966:00.456
 4138:11.567
 3336:05.190
 3823:49.831
 3145:09.013
 3289:27.524
 3057:52.016
 3885:44.865
 4170:57.820
 3145:09.154
 3289:27.105
 3057:52.482
 3885:44.658
 4170:57.582
 4230:04.183
 2996:51.593
 77760:00.00
 78050:38.12
 78511:35.23
 78527:53.35
 77846:00.46
 79018:11.57
 78216:05.19
 78703:49.83
 78025:09.01
 78169:27.52
 77937:52.02
 78765:44.87
 79050:57.82
 78025:09.15
 78169:27.11
 77937:52.48
 78765:44.66
 79050:57.58
 79110:04.18
 77876:51.59
 980640:00.0
 980930:38.1
 981391:35.2
 981407:53.3
 980726:00.5
 981898:11.6
 981096:05.2
 981583:49.8
 980905:09.0
 981049:27.5
 980817:52.0
 981645:44.9
 981930:57.8
 980905:09.2
 981049:27.1
 980817:52.5
 981645:44.7
 981930:57.6
 981990:04.2
 980756:51.6
 00:00.00000
 -290:38.123
 -751:35.235
 -767:53.345
 -86:00.4561
 -1258:11.57
 -456:05.190
 -943:49.831
 -265:09.013
 -409:27.524
 -177:52.016
 -1005:44.87
 -1290:57.82
 -265:09.154
 -409:27.105
 -177:52.482
 -1005:44.66
 -1290:57.58
 -1350:04.18
 -116:51.593
 -1440:00.00
 -1730:38.12
 -2191:35.23
 -2207:53.35
 -1526:00.46
 -2698:11.57
 -1896:05.19
 -2383:49.83
 -1705:09.01
 -1849:27.52
 -1617:52.02
 -2445:44.87
 -2730:57.82
 -1705:09.15
 -1849:27.11
 -1617:52.48
 -2445:44.66
 -2730:57.58
 -2790:04.18
 -1556:51.59
 -2880:00.00
 -3170:38.12
 -3631:35.23
 -3647:53.35
 -2966:00.46
 -4138:11.57
 -3336:05.19
 -3823:49.83
 -3145:09.01
 -3289:27.52
 -3057:52.02
 -3885:44.87
 -4170:57.82
 -3145:09.15
 -3289:27.11
 -3057:52.48
 -3885:44.66
 -4170:57.58
 -4230:04.18
 -2996:51.59
 -77760:00.0
 -78050:38.1
 -78511:35.2
 -78527:53.3
 -77846:00.5
 -79018:11.6
 -78216:05.2
 -78703:49.8
 -78025:09.0
 -78169:27.5
 -77937:52.0
 -78765:44.9
 -79050:57.8
 -78025:09.2
 -78169:27.1
 -77937:52.5
 -78765:44.7
 -79050:57.6
 -79110:04.2
 -77876:51.6
  -980640:00
  -980930:38
  -981391:35
  -981407:53
  -980726:00
  -981898:11
  -981096:05
  -981583:49
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -980905:09
  -981049:27
  -980817:52
  -981645:44
  -981930:57
  -981990:04
  -980756:51
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:18737"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:18939: cat mtime12.5.out"
at_fn_check_prepare_trace "data-out.at:18939"
( $at_check_trace; cat mtime12.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  00:00.00000
 290:38.12301
 751:35.23453
 767:53.34505
  86:00.45615
 1258:11.5668
 456:05.18964
 943:49.83132
 265:09.01293
 409:27.52375
 177:52.01565
 1005:44.8653
 1290:57.8205
 265:09.15395
 409:27.10533
 177:52.48229
 1005:44.6583
 1290:57.5822
 1350:04.1835
 116:51.59319
 1440:00.0000
 1730:38.1230
 2191:35.2345
 2207:53.3451
 1526:00.4561
 2698:11.5668
 1896:05.1896
 2383:49.8313
 1705:09.0129
 1849:27.5237
 1617:52.0157
 2445:44.8653
 2730:57.8205
 1705:09.1540
 1849:27.1053
 1617:52.4823
 2445:44.6583
 2730:57.5822
 2790:04.1835
 1556:51.5932
 2880:00.0000
 3170:38.1230
 3631:35.2345
 3647:53.3451
 2966:00.4562
 4138:11.5668
 3336:05.1896
 3823:49.8313
 3145:09.0129
 3289:27.5237
 3057:52.0156
 3885:44.8653
 4170:57.8205
 3145:09.1540
 3289:27.1053
 3057:52.4823
 3885:44.6583
 4170:57.5822
 4230:04.1835
 2996:51.5932
 77760:00.000
 78050:38.123
 78511:35.235
 78527:53.345
 77846:00.456
 79018:11.567
 78216:05.190
 78703:49.831
 78025:09.013
 78169:27.524
 77937:52.016
 78765:44.865
 79050:57.820
 78025:09.154
 78169:27.105
 77937:52.482
 78765:44.658
 79050:57.582
 79110:04.183
 77876:51.593
 980640:00.00
 980930:38.12
 981391:35.23
 981407:53.35
 980726:00.46
 981898:11.57
 981096:05.19
 981583:49.83
 980905:09.01
 981049:27.52
 980817:52.02
 981645:44.87
 981930:57.82
 980905:09.15
 981049:27.11
 980817:52.48
 981645:44.66
 981930:57.58
 981990:04.18
 980756:51.59
  00:00.00000
 -290:38.1230
 -751:35.2345
 -767:53.3451
 -86:00.45615
 -1258:11.567
 -456:05.1896
 -943:49.8313
 -265:09.0129
 -409:27.5238
 -177:52.0156
 -1005:44.865
 -1290:57.820
 -265:09.1539
 -409:27.1053
 -177:52.4823
 -1005:44.658
 -1290:57.582
 -1350:04.183
 -116:51.5932
 -1440:00.000
 -1730:38.123
 -2191:35.235
 -2207:53.345
 -1526:00.456
 -2698:11.567
 -1896:05.190
 -2383:49.831
 -1705:09.013
 -1849:27.524
 -1617:52.016
 -2445:44.865
 -2730:57.820
 -1705:09.154
 -1849:27.105
 -1617:52.482
 -2445:44.658
 -2730:57.582
 -2790:04.183
 -1556:51.593
 -2880:00.000
 -3170:38.123
 -3631:35.235
 -3647:53.345
 -2966:00.456
 -4138:11.567
 -3336:05.190
 -3823:49.831
 -3145:09.013
 -3289:27.524
 -3057:52.016
 -3885:44.865
 -4170:57.820
 -3145:09.154
 -3289:27.105
 -3057:52.482
 -3885:44.658
 -4170:57.582
 -4230:04.183
 -2996:51.593
 -77760:00.00
 -78050:38.12
 -78511:35.23
 -78527:53.35
 -77846:00.46
 -79018:11.57
 -78216:05.19
 -78703:49.83
 -78025:09.01
 -78169:27.52
 -77937:52.02
 -78765:44.87
 -79050:57.82
 -78025:09.15
 -78169:27.11
 -77937:52.48
 -78765:44.66
 -79050:57.58
 -79110:04.18
 -77876:51.59
 -980640:00.0
 -980930:38.1
 -981391:35.2
 -981407:53.3
 -980726:00.5
 -981898:11.6
 -981096:05.2
 -981583:49.8
 -980905:09.0
 -981049:27.5
 -980817:52.0
 -981645:44.9
 -981930:57.8
 -980905:09.2
 -981049:27.1
 -980817:52.5
 -981645:44.7
 -981930:57.6
 -981990:04.2
 -980756:51.6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:18939"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:19141: cat mtime13.5.out"
at_fn_check_prepare_trace "data-out.at:19141"
( $at_check_trace; cat mtime13.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   00:00.00000
  290:38.12301
  751:35.23453
  767:53.34505
   86:00.45615
 1258:11.56677
  456:05.18964
  943:49.83132
  265:09.01293
  409:27.52375
  177:52.01565
 1005:44.86529
 1290:57.82047
  265:09.15395
  409:27.10533
  177:52.48229
 1005:44.65827
 1290:57.58219
 1350:04.18347
  116:51.59319
 1440:00.00000
 1730:38.12301
 2191:35.23453
 2207:53.34505
 1526:00.45615
 2698:11.56677
 1896:05.18964
 2383:49.83132
 1705:09.01293
 1849:27.52375
 1617:52.01565
 2445:44.86529
 2730:57.82047
 1705:09.15395
 1849:27.10533
 1617:52.48229
 2445:44.65827
 2730:57.58219
 2790:04.18347
 1556:51.59319
 2880:00.00000
 3170:38.12301
 3631:35.23453
 3647:53.34505
 2966:00.45615
 4138:11.56677
 3336:05.18964
 3823:49.83132
 3145:09.01293
 3289:27.52375
 3057:52.01565
 3885:44.86529
 4170:57.82047
 3145:09.15395
 3289:27.10533
 3057:52.48229
 3885:44.65827
 4170:57.58219
 4230:04.18347
 2996:51.59319
 77760:00.0000
 78050:38.1230
 78511:35.2345
 78527:53.3450
 77846:00.4561
 79018:11.5668
 78216:05.1896
 78703:49.8313
 78025:09.0129
 78169:27.5237
 77937:52.0157
 78765:44.8653
 79050:57.8205
 78025:09.1540
 78169:27.1053
 77937:52.4823
 78765:44.6583
 79050:57.5822
 79110:04.1835
 77876:51.5932
 980640:00.000
 980930:38.123
 981391:35.235
 981407:53.345
 980726:00.456
 981898:11.567
 981096:05.190
 981583:49.831
 980905:09.013
 981049:27.524
 980817:52.016
 981645:44.865
 981930:57.820
 980905:09.154
 981049:27.105
 980817:52.482
 981645:44.658
 981930:57.582
 981990:04.183
 980756:51.593
   00:00.00000
 -290:38.12301
 -751:35.23453
 -767:53.34505
  -86:00.45615
 -1258:11.5668
 -456:05.18964
 -943:49.83132
 -265:09.01293
 -409:27.52375
 -177:52.01565
 -1005:44.8653
 -1290:57.8205
 -265:09.15395
 -409:27.10533
 -177:52.48229
 -1005:44.6583
 -1290:57.5822
 -1350:04.1835
 -116:51.59319
 -1440:00.0000
 -1730:38.1230
 -2191:35.2345
 -2207:53.3451
 -1526:00.4561
 -2698:11.5668
 -1896:05.1896
 -2383:49.8313
 -1705:09.0129
 -1849:27.5237
 -1617:52.0157
 -2445:44.8653
 -2730:57.8205
 -1705:09.1540
 -1849:27.1053
 -1617:52.4823
 -2445:44.6583
 -2730:57.5822
 -2790:04.1835
 -1556:51.5932
 -2880:00.0000
 -3170:38.1230
 -3631:35.2345
 -3647:53.3451
 -2966:00.4562
 -4138:11.5668
 -3336:05.1896
 -3823:49.8313
 -3145:09.0129
 -3289:27.5237
 -3057:52.0156
 -3885:44.8653
 -4170:57.8205
 -3145:09.1540
 -3289:27.1053
 -3057:52.4823
 -3885:44.6583
 -4170:57.5822
 -4230:04.1835
 -2996:51.5932
 -77760:00.000
 -78050:38.123
 -78511:35.235
 -78527:53.345
 -77846:00.456
 -79018:11.567
 -78216:05.190
 -78703:49.831
 -78025:09.013
 -78169:27.524
 -77937:52.016
 -78765:44.865
 -79050:57.820
 -78025:09.154
 -78169:27.105
 -77937:52.482
 -78765:44.658
 -79050:57.582
 -79110:04.183
 -77876:51.593
 -980640:00.00
 -980930:38.12
 -981391:35.23
 -981407:53.35
 -980726:00.46
 -981898:11.57
 -981096:05.19
 -981583:49.83
 -980905:09.01
 -981049:27.52
 -980817:52.02
 -981645:44.87
 -981930:57.82
 -980905:09.15
 -981049:27.11
 -980817:52.48
 -981645:44.66
 -981930:57.58
 -981990:04.18
 -980756:51.59
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:19141"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:19343: cat mtime14.5.out"
at_fn_check_prepare_trace "data-out.at:19343"
( $at_check_trace; cat mtime14.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    00:00.00000
   290:38.12301
   751:35.23453
   767:53.34505
    86:00.45615
  1258:11.56677
   456:05.18964
   943:49.83132
   265:09.01293
   409:27.52375
   177:52.01565
  1005:44.86529
  1290:57.82047
   265:09.15395
   409:27.10533
   177:52.48229
  1005:44.65827
  1290:57.58219
  1350:04.18347
   116:51.59319
  1440:00.00000
  1730:38.12301
  2191:35.23453
  2207:53.34505
  1526:00.45615
  2698:11.56677
  1896:05.18964
  2383:49.83132
  1705:09.01293
  1849:27.52375
  1617:52.01565
  2445:44.86529
  2730:57.82047
  1705:09.15395
  1849:27.10533
  1617:52.48229
  2445:44.65827
  2730:57.58219
  2790:04.18347
  1556:51.59319
  2880:00.00000
  3170:38.12301
  3631:35.23453
  3647:53.34505
  2966:00.45615
  4138:11.56677
  3336:05.18964
  3823:49.83132
  3145:09.01293
  3289:27.52375
  3057:52.01565
  3885:44.86529
  4170:57.82047
  3145:09.15395
  3289:27.10533
  3057:52.48229
  3885:44.65827
  4170:57.58219
  4230:04.18347
  2996:51.59319
 77760:00.00000
 78050:38.12301
 78511:35.23453
 78527:53.34505
 77846:00.45615
 79018:11.56677
 78216:05.18964
 78703:49.83132
 78025:09.01293
 78169:27.52375
 77937:52.01565
 78765:44.86529
 79050:57.82047
 78025:09.15395
 78169:27.10533
 77937:52.48229
 78765:44.65827
 79050:57.58219
 79110:04.18347
 77876:51.59319
 980640:00.0000
 980930:38.1230
 981391:35.2345
 981407:53.3450
 980726:00.4562
 981898:11.5668
 981096:05.1896
 981583:49.8313
 980905:09.0129
 981049:27.5237
 980817:52.0156
 981645:44.8653
 981930:57.8205
 980905:09.1539
 981049:27.1053
 980817:52.4823
 981645:44.6583
 981930:57.5822
 981990:04.1835
 980756:51.5932
    00:00.00000
  -290:38.12301
  -751:35.23453
  -767:53.34505
   -86:00.45615
 -1258:11.56677
  -456:05.18964
  -943:49.83132
  -265:09.01293
  -409:27.52375
  -177:52.01565
 -1005:44.86529
 -1290:57.82047
  -265:09.15395
  -409:27.10533
  -177:52.48229
 -1005:44.65827
 -1290:57.58219
 -1350:04.18347
  -116:51.59319
 -1440:00.00000
 -1730:38.12301
 -2191:35.23453
 -2207:53.34505
 -1526:00.45615
 -2698:11.56677
 -1896:05.18964
 -2383:49.83132
 -1705:09.01293
 -1849:27.52375
 -1617:52.01565
 -2445:44.86529
 -2730:57.82047
 -1705:09.15395
 -1849:27.10533
 -1617:52.48229
 -2445:44.65827
 -2730:57.58219
 -2790:04.18347
 -1556:51.59319
 -2880:00.00000
 -3170:38.12301
 -3631:35.23453
 -3647:53.34505
 -2966:00.45615
 -4138:11.56677
 -3336:05.18964
 -3823:49.83132
 -3145:09.01293
 -3289:27.52375
 -3057:52.01565
 -3885:44.86529
 -4170:57.82047
 -3145:09.15395
 -3289:27.10533
 -3057:52.48229
 -3885:44.65827
 -4170:57.58219
 -4230:04.18347
 -2996:51.59319
 -77760:00.0000
 -78050:38.1230
 -78511:35.2345
 -78527:53.3450
 -77846:00.4561
 -79018:11.5668
 -78216:05.1896
 -78703:49.8313
 -78025:09.0129
 -78169:27.5237
 -77937:52.0157
 -78765:44.8653
 -79050:57.8205
 -78025:09.1540
 -78169:27.1053
 -77937:52.4823
 -78765:44.6583
 -79050:57.5822
 -79110:04.1835
 -77876:51.5932
 -980640:00.000
 -980930:38.123
 -981391:35.235
 -981407:53.345
 -980726:00.456
 -981898:11.567
 -981096:05.190
 -981583:49.831
 -980905:09.013
 -981049:27.524
 -980817:52.016
 -981645:44.865
 -981930:57.820
 -980905:09.154
 -981049:27.105
 -980817:52.482
 -981645:44.658
 -981930:57.582
 -981990:04.183
 -980756:51.593
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:19343"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:19545: cat mtime15.5.out"
at_fn_check_prepare_trace "data-out.at:19545"
( $at_check_trace; cat mtime15.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     00:00.00000
    290:38.12301
    751:35.23453
    767:53.34505
     86:00.45615
   1258:11.56677
    456:05.18964
    943:49.83132
    265:09.01293
    409:27.52375
    177:52.01565
   1005:44.86529
   1290:57.82047
    265:09.15395
    409:27.10533
    177:52.48229
   1005:44.65827
   1290:57.58219
   1350:04.18347
    116:51.59319
   1440:00.00000
   1730:38.12301
   2191:35.23453
   2207:53.34505
   1526:00.45615
   2698:11.56677
   1896:05.18964
   2383:49.83132
   1705:09.01293
   1849:27.52375
   1617:52.01565
   2445:44.86529
   2730:57.82047
   1705:09.15395
   1849:27.10533
   1617:52.48229
   2445:44.65827
   2730:57.58219
   2790:04.18347
   1556:51.59319
   2880:00.00000
   3170:38.12301
   3631:35.23453
   3647:53.34505
   2966:00.45615
   4138:11.56677
   3336:05.18964
   3823:49.83132
   3145:09.01293
   3289:27.52375
   3057:52.01565
   3885:44.86529
   4170:57.82047
   3145:09.15395
   3289:27.10533
   3057:52.48229
   3885:44.65827
   4170:57.58219
   4230:04.18347
   2996:51.59319
  77760:00.00000
  78050:38.12301
  78511:35.23453
  78527:53.34505
  77846:00.45615
  79018:11.56677
  78216:05.18964
  78703:49.83132
  78025:09.01293
  78169:27.52375
  77937:52.01565
  78765:44.86529
  79050:57.82047
  78025:09.15395
  78169:27.10533
  77937:52.48229
  78765:44.65827
  79050:57.58219
  79110:04.18347
  77876:51.59319
 980640:00.00000
 980930:38.12301
 981391:35.23453
 981407:53.34505
 980726:00.45615
 981898:11.56677
 981096:05.18964
 981583:49.83132
 980905:09.01293
 981049:27.52375
 980817:52.01565
 981645:44.86529
 981930:57.82047
 980905:09.15395
 981049:27.10533
 980817:52.48229
 981645:44.65827
 981930:57.58219
 981990:04.18347
 980756:51.59319
     00:00.00000
   -290:38.12301
   -751:35.23453
   -767:53.34505
    -86:00.45615
  -1258:11.56677
   -456:05.18964
   -943:49.83132
   -265:09.01293
   -409:27.52375
   -177:52.01565
  -1005:44.86529
  -1290:57.82047
   -265:09.15395
   -409:27.10533
   -177:52.48229
  -1005:44.65827
  -1290:57.58219
  -1350:04.18347
   -116:51.59319
  -1440:00.00000
  -1730:38.12301
  -2191:35.23453
  -2207:53.34505
  -1526:00.45615
  -2698:11.56677
  -1896:05.18964
  -2383:49.83132
  -1705:09.01293
  -1849:27.52375
  -1617:52.01565
  -2445:44.86529
  -2730:57.82047
  -1705:09.15395
  -1849:27.10533
  -1617:52.48229
  -2445:44.65827
  -2730:57.58219
  -2790:04.18347
  -1556:51.59319
  -2880:00.00000
  -3170:38.12301
  -3631:35.23453
  -3647:53.34505
  -2966:00.45615
  -4138:11.56677
  -3336:05.18964
  -3823:49.83132
  -3145:09.01293
  -3289:27.52375
  -3057:52.01565
  -3885:44.86529
  -4170:57.82047
  -3145:09.15395
  -3289:27.10533
  -3057:52.48229
  -3885:44.65827
  -4170:57.58219
  -4230:04.18347
  -2996:51.59319
 -77760:00.00000
 -78050:38.12301
 -78511:35.23453
 -78527:53.34505
 -77846:00.45615
 -79018:11.56677
 -78216:05.18964
 -78703:49.83132
 -78025:09.01293
 -78169:27.52375
 -77937:52.01565
 -78765:44.86529
 -79050:57.82047
 -78025:09.15395
 -78169:27.10533
 -77937:52.48229
 -78765:44.65827
 -79050:57.58219
 -79110:04.18347
 -77876:51.59319
 -980640:00.0000
 -980930:38.1230
 -981391:35.2345
 -981407:53.3450
 -980726:00.4562
 -981898:11.5668
 -981096:05.1896
 -981583:49.8313
 -980905:09.0129
 -981049:27.5237
 -980817:52.0156
 -981645:44.8653
 -981930:57.8205
 -980905:09.1539
 -981049:27.1053
 -980817:52.4823
 -981645:44.6583
 -981930:57.5822
 -981990:04.1835
 -980756:51.5932
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:19545"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:19747: cat mtime16.5.out"
at_fn_check_prepare_trace "data-out.at:19747"
( $at_check_trace; cat mtime16.5.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "      00:00.00000
     290:38.12301
     751:35.23453
     767:53.34505
      86:00.45615
    1258:11.56677
     456:05.18964
     943:49.83132
     265:09.01293
     409:27.52375
     177:52.01565
    1005:44.86529
    1290:57.82047
     265:09.15395
     409:27.10533
     177:52.48229
    1005:44.65827
    1290:57.58219
    1350:04.18347
     116:51.59319
    1440:00.00000
    1730:38.12301
    2191:35.23453
    2207:53.34505
    1526:00.45615
    2698:11.56677
    1896:05.18964
    2383:49.83132
    1705:09.01293
    1849:27.52375
    1617:52.01565
    2445:44.86529
    2730:57.82047
    1705:09.15395
    1849:27.10533
    1617:52.48229
    2445:44.65827
    2730:57.58219
    2790:04.18347
    1556:51.59319
    2880:00.00000
    3170:38.12301
    3631:35.23453
    3647:53.34505
    2966:00.45615
    4138:11.56677
    3336:05.18964
    3823:49.83132
    3145:09.01293
    3289:27.52375
    3057:52.01565
    3885:44.86529
    4170:57.82047
    3145:09.15395
    3289:27.10533
    3057:52.48229
    3885:44.65827
    4170:57.58219
    4230:04.18347
    2996:51.59319
   77760:00.00000
   78050:38.12301
   78511:35.23453
   78527:53.34505
   77846:00.45615
   79018:11.56677
   78216:05.18964
   78703:49.83132
   78025:09.01293
   78169:27.52375
   77937:52.01565
   78765:44.86529
   79050:57.82047
   78025:09.15395
   78169:27.10533
   77937:52.48229
   78765:44.65827
   79050:57.58219
   79110:04.18347
   77876:51.59319
  980640:00.00000
  980930:38.12301
  981391:35.23453
  981407:53.34505
  980726:00.45615
  981898:11.56677
  981096:05.18964
  981583:49.83132
  980905:09.01293
  981049:27.52375
  980817:52.01565
  981645:44.86529
  981930:57.82047
  980905:09.15395
  981049:27.10533
  980817:52.48229
  981645:44.65827
  981930:57.58219
  981990:04.18347
  980756:51.59319
      00:00.00000
    -290:38.12301
    -751:35.23453
    -767:53.34505
     -86:00.45615
   -1258:11.56677
    -456:05.18964
    -943:49.83132
    -265:09.01293
    -409:27.52375
    -177:52.01565
   -1005:44.86529
   -1290:57.82047
    -265:09.15395
    -409:27.10533
    -177:52.48229
   -1005:44.65827
   -1290:57.58219
   -1350:04.18347
    -116:51.59319
   -1440:00.00000
   -1730:38.12301
   -2191:35.23453
   -2207:53.34505
   -1526:00.45615
   -2698:11.56677
   -1896:05.18964
   -2383:49.83132
   -1705:09.01293
   -1849:27.52375
   -1617:52.01565
   -2445:44.86529
   -2730:57.82047
   -1705:09.15395
   -1849:27.10533
   -1617:52.48229
   -2445:44.65827
   -2730:57.58219
   -2790:04.18347
   -1556:51.59319
   -2880:00.00000
   -3170:38.12301
   -3631:35.23453
   -3647:53.34505
   -2966:00.45615
   -4138:11.56677
   -3336:05.18964
   -3823:49.83132
   -3145:09.01293
   -3289:27.52375
   -3057:52.01565
   -3885:44.86529
   -4170:57.82047
   -3145:09.15395
   -3289:27.10533
   -3057:52.48229
   -3885:44.65827
   -4170:57.58219
   -4230:04.18347
   -2996:51.59319
  -77760:00.00000
  -78050:38.12301
  -78511:35.23453
  -78527:53.34505
  -77846:00.45615
  -79018:11.56677
  -78216:05.18964
  -78703:49.83132
  -78025:09.01293
  -78169:27.52375
  -77937:52.01565
  -78765:44.86529
  -79050:57.82047
  -78025:09.15395
  -78169:27.10533
  -77937:52.48229
  -78765:44.65827
  -79050:57.58219
  -79110:04.18347
  -77876:51.59319
 -980640:00.00000
 -980930:38.12301
 -981391:35.23453
 -981407:53.34505
 -980726:00.45615
 -981898:11.56677
 -981096:05.18964
 -981583:49.83132
 -980905:09.01293
 -981049:27.52375
 -980817:52.01565
 -981645:44.86529
 -981930:57.82047
 -980905:09.15395
 -981049:27.10533
 -980817:52.48229
 -981645:44.65827
 -981930:57.58219
 -981990:04.18347
 -980756:51.59319
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:19747"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_28
#AT_START_29
at_fn_group_banner 29 'data-out.at:19951' \
  "MONTH output" "                                   " 3
at_xfail=no
(
  printf "%s\n" "29. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >month-out.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:20022: pspp -O format=csv month-out.sps"
at_fn_check_prepare_trace "data-out.at:20022"
( $at_check_trace; pspp -O format=csv month-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/data-out.at:20022"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:20023: sed '/^ *
*\$/d' stdout | sort | uniq -c | sed 's/^[ 	]*//'"
at_fn_check_prepare_notrace 'a shell pipeline' "data-out.at:20023"
( $at_check_trace; sed '/^ *
*$/d' stdout | sort | uniq -c | sed 's/^[ 	]*//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:20023"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:20030: cat month-out.out"
at_fn_check_prepare_trace "data-out.at:20030"
( $at_check_trace; cat month-out.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
 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                                
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:20030"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_29
#AT_START_30
at_fn_group_banner 30 'data-out.at:20908' \
  "WKDAY output" "                                   " 3
at_xfail=no
(
  printf "%s\n" "30. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >wkday-out.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:20939: pspp -O format=csv wkday-out.sps"
at_fn_check_prepare_trace "data-out.at:20939"
( $at_check_trace; pspp -O format=csv wkday-out.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/data-out.at:20939"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:20940: sed '/^ *
*\$/d' stdout | sort | uniq -c | sed 's/^[ 	]*//'"
at_fn_check_prepare_notrace 'a shell pipeline' "data-out.at:20940"
( $at_check_trace; sed '/^ *
*$/d' stdout | sort | uniq -c | sed 's/^[ 	]*//'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:20940"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:20947: cat wkday-out.out"
at_fn_check_prepare_trace "data-out.at:20947"
( $at_check_trace; cat wkday-out.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  .
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
  .
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
  .
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
  .
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
 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                                
  .
   .
    .
     .
      .
       .
        .
         .
          .
           .
            .
             .
              .
               .
                .
                 .
                  .
                   .
                    .
                     .
                      .
                       .
                        .
                         .
                          .
                           .
                            .
                             .
                              .
                               .
                                .
                                 .
                                  .
                                   .
                                    .
                                     .
                                      .
                                       .
                                        .
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:20947"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_30
#AT_START_31
at_fn_group_banner 31 'data-out.at:21656' \
  "AHEX output bug" "                                " 3
at_xfail=no
(
  printf "%s\n" "31. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >ahex.sps <<'_ATEOF'

DATA LIST NOTABLE /s (a8).
BEGIN DATA.
abcdefgh
END DATA.
FORMATS s (AHEX16).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-out.at:21666: pspp -O format=csv ahex.sps"
at_fn_check_prepare_trace "data-out.at:21666"
( $at_check_trace; pspp -O format=csv ahex.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s
6162636465666768
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-out.at:21666"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_31
#AT_START_32
at_fn_group_banner 32 'datasheet-test.at:28' \
  "3x3, 0 backing rows, backing widths " "           " 4
at_xfail=no
(
  printf "%s\n" "32. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/datasheet-test.at:28: datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \\
   			    --backing-rows=0 --backing-widths="
at_fn_check_prepare_notrace 'an embedded newline' "datasheet-test.at:28"
( $at_check_trace; datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \
   			    --backing-rows=0 --backing-widths=
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/datasheet-test.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_32
#AT_START_33
at_fn_group_banner 33 'datasheet-test.at:29' \
  "3x3, 3 backing rows, backing widths 0,0,0" "      " 4
at_xfail=no
(
  printf "%s\n" "33. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/datasheet-test.at:29: datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \\
   			    --backing-rows=3 --backing-widths=0,0,0"
at_fn_check_prepare_notrace 'an embedded newline' "datasheet-test.at:29"
( $at_check_trace; datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \
   			    --backing-rows=3 --backing-widths=0,0,0
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/datasheet-test.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_33
#AT_START_34
at_fn_group_banner 34 'datasheet-test.at:30' \
  "3x3, 3 backing rows, backing widths 0" "          " 4
at_xfail=no
(
  printf "%s\n" "34. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/datasheet-test.at:30: datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \\
   			    --backing-rows=3 --backing-widths=0"
at_fn_check_prepare_notrace 'an embedded newline' "datasheet-test.at:30"
( $at_check_trace; datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \
   			    --backing-rows=3 --backing-widths=0
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/datasheet-test.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_34
#AT_START_35
at_fn_group_banner 35 'datasheet-test.at:31' \
  "3x3, 3 backing rows, backing widths 5" "          " 4
at_xfail=no
(
  printf "%s\n" "35. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/datasheet-test.at:31: datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \\
   			    --backing-rows=3 --backing-widths=5"
at_fn_check_prepare_notrace 'an embedded newline' "datasheet-test.at:31"
( $at_check_trace; datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \
   			    --backing-rows=3 --backing-widths=5
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/datasheet-test.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_35
#AT_START_36
at_fn_group_banner 36 'datasheet-test.at:32' \
  "3x3, 1 backing rows, backing widths 0,9,0" "      " 4
at_xfail=no
(
  printf "%s\n" "36. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/datasheet-test.at:32: datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \\
   			    --backing-rows=1 --backing-widths=0,9,0"
at_fn_check_prepare_notrace 'an embedded newline' "datasheet-test.at:32"
( $at_check_trace; datasheet-test --verbosity=0 --max-rows=3 --max-columns=3 \
   			    --backing-rows=1 --backing-widths=0,9,0
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/datasheet-test.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_36
#AT_START_37
at_fn_group_banner 37 'spreadsheet-test.at:26' \
  "simple --sheet=0" "                               " 5
at_xfail=no
(
  printf "%s\n" "37. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:26: spreadsheet-test --sheet=0 \$top_srcdir/tests/data/simple.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test --sheet=0 $top_srcdir/tests/data/simple.gnumeric" "spreadsheet-test.at:26"
( $at_check_trace; spreadsheet-test --sheet=0 $top_srcdir/tests/data/simple.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 4; Columns 3
one	two	three
four	five	six
seven	eight	nine
ten	eleven	twelve
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:26: spreadsheet-test --sheet=0 \$top_srcdir/tests/data/simple.ods"
at_fn_check_prepare_dynamic "spreadsheet-test --sheet=0 $top_srcdir/tests/data/simple.ods" "spreadsheet-test.at:26"
( $at_check_trace; spreadsheet-test --sheet=0 $top_srcdir/tests/data/simple.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 4; Columns 3
one	two	three
four	five	six
seven	eight	nine
ten	eleven	twelve
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_37
#AT_START_38
at_fn_group_banner 38 'spreadsheet-test.at:34' \
  "simple --sheet=0 --reverse" "                     " 5
at_xfail=no
(
  printf "%s\n" "38. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:34: spreadsheet-test --sheet=0 --reverse \$top_srcdir/tests/data/simple.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test --sheet=0 --reverse $top_srcdir/tests/data/simple.gnumeric" "spreadsheet-test.at:34"
( $at_check_trace; spreadsheet-test --sheet=0 --reverse $top_srcdir/tests/data/simple.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 4; Columns 3
twelve	eleven	ten
nine	eight	seven
six	five	four
three	two	one
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:34: spreadsheet-test --sheet=0 --reverse \$top_srcdir/tests/data/simple.ods"
at_fn_check_prepare_dynamic "spreadsheet-test --sheet=0 --reverse $top_srcdir/tests/data/simple.ods" "spreadsheet-test.at:34"
( $at_check_trace; spreadsheet-test --sheet=0 --reverse $top_srcdir/tests/data/simple.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 4; Columns 3
twelve	eleven	ten
nine	eight	seven
six	five	four
three	two	one
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_38
#AT_START_39
at_fn_group_banner 39 'spreadsheet-test.at:43' \
  "multisheet --sheet=1" "                           " 5
at_xfail=no
(
  printf "%s\n" "39. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:43: spreadsheet-test --sheet=1 \$top_srcdir/tests/data/multisheet.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test --sheet=1 $top_srcdir/tests/data/multisheet.gnumeric" "spreadsheet-test.at:43"
( $at_check_trace; spreadsheet-test --sheet=1 $top_srcdir/tests/data/multisheet.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 4; Columns 3
hi	tweedle	1
ho	dee	2
hum	dum	3
6	5	4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:43: spreadsheet-test --sheet=1 \$top_srcdir/tests/data/multisheet.ods"
at_fn_check_prepare_dynamic "spreadsheet-test --sheet=1 $top_srcdir/tests/data/multisheet.ods" "spreadsheet-test.at:43"
( $at_check_trace; spreadsheet-test --sheet=1 $top_srcdir/tests/data/multisheet.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 4; Columns 3
hi	tweedle	1
ho	dee	2
hum	dum	3
6	5	4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_39
#AT_START_40
at_fn_group_banner 40 'spreadsheet-test.at:52' \
  "repeating " "                                     " 5
at_xfail=no
(
  printf "%s\n" "40. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:52: spreadsheet-test  \$top_srcdir/tests/data/repeating.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test  $top_srcdir/tests/data/repeating.gnumeric" "spreadsheet-test.at:52"
( $at_check_trace; spreadsheet-test  $top_srcdir/tests/data/repeating.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 3; Columns 5
one	one	one	two	two
two	three	three	three	four
four	four	five	five	five
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:52: spreadsheet-test  \$top_srcdir/tests/data/repeating.ods"
at_fn_check_prepare_dynamic "spreadsheet-test  $top_srcdir/tests/data/repeating.ods" "spreadsheet-test.at:52"
( $at_check_trace; spreadsheet-test  $top_srcdir/tests/data/repeating.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 3; Columns 5
one	one	one	two	two
two	three	three	three	four
four	four	five	five	five
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_40
#AT_START_41
at_fn_group_banner 41 'spreadsheet-test.at:59' \
  "sparse " "                                        " 5
at_xfail=no
(
  printf "%s\n" "41. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:59: spreadsheet-test  \$top_srcdir/tests/data/sparse.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test  $top_srcdir/tests/data/sparse.gnumeric" "spreadsheet-test.at:59"
( $at_check_trace; spreadsheet-test  $top_srcdir/tests/data/sparse.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 2; Columns 6
			0	1	2
the	row	above	starts	at	D
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:59: spreadsheet-test  \$top_srcdir/tests/data/sparse.ods"
at_fn_check_prepare_dynamic "spreadsheet-test  $top_srcdir/tests/data/sparse.ods" "spreadsheet-test.at:59"
( $at_check_trace; spreadsheet-test  $top_srcdir/tests/data/sparse.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 2; Columns 6
			0	1	2
the	row	above	starts	at	D
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_41
#AT_START_42
at_fn_group_banner 42 'spreadsheet-test.at:65' \
  "holey " "                                         " 5
at_xfail=no
(
  printf "%s\n" "42. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:65: spreadsheet-test  \$top_srcdir/tests/data/holey.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test  $top_srcdir/tests/data/holey.gnumeric" "spreadsheet-test.at:65"
( $at_check_trace; spreadsheet-test  $top_srcdir/tests/data/holey.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 1; Columns 8
		hi	ho			hum	hee
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:65: spreadsheet-test  \$top_srcdir/tests/data/holey.ods"
at_fn_check_prepare_dynamic "spreadsheet-test  $top_srcdir/tests/data/holey.ods" "spreadsheet-test.at:65"
( $at_check_trace; spreadsheet-test  $top_srcdir/tests/data/holey.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 1; Columns 8
		hi	ho			hum	hee
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_42
#AT_START_43
at_fn_group_banner 43 'spreadsheet-test.at:73' \
  "one-thousand-by-fifty-three --refcheck --reverse" "" 5
at_xfail=no
(
  printf "%s\n" "43. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:73: spreadsheet-test --refcheck --reverse \$top_srcdir/tests/data/one-thousand-by-fifty-three.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test --refcheck --reverse $top_srcdir/tests/data/one-thousand-by-fifty-three.gnumeric" "spreadsheet-test.at:73"
( $at_check_trace; spreadsheet-test --refcheck --reverse $top_srcdir/tests/data/one-thousand-by-fifty-three.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 1000; Columns 53
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:73"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:73: spreadsheet-test --refcheck --reverse \$top_srcdir/tests/data/one-thousand-by-fifty-three.ods"
at_fn_check_prepare_dynamic "spreadsheet-test --refcheck --reverse $top_srcdir/tests/data/one-thousand-by-fifty-three.ods" "spreadsheet-test.at:73"
( $at_check_trace; spreadsheet-test --refcheck --reverse $top_srcdir/tests/data/one-thousand-by-fifty-three.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Rows 1000; Columns 53
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:73"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_43
#AT_START_44
at_fn_group_banner 44 'spreadsheet-test.at:78' \
  "multisheet --metadata" "                          " 5
at_xfail=no
(
  printf "%s\n" "44. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:78: spreadsheet-test --metadata \$top_srcdir/tests/data/multisheet.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test --metadata $top_srcdir/tests/data/multisheet.gnumeric" "spreadsheet-test.at:78"
( $at_check_trace; spreadsheet-test --metadata $top_srcdir/tests/data/multisheet.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Number of sheets: 3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:78: spreadsheet-test --metadata \$top_srcdir/tests/data/multisheet.ods"
at_fn_check_prepare_dynamic "spreadsheet-test --metadata $top_srcdir/tests/data/multisheet.ods" "spreadsheet-test.at:78"
( $at_check_trace; spreadsheet-test --metadata $top_srcdir/tests/data/multisheet.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Number of sheets: 3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_44
#AT_START_45
at_fn_group_banner 45 'spreadsheet-test.at:82' \
  "simple --metadata" "                              " 5
at_xfail=no
(
  printf "%s\n" "45. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:82: spreadsheet-test --metadata \$top_srcdir/tests/data/simple.gnumeric"
at_fn_check_prepare_dynamic "spreadsheet-test --metadata $top_srcdir/tests/data/simple.gnumeric" "spreadsheet-test.at:82"
( $at_check_trace; spreadsheet-test --metadata $top_srcdir/tests/data/simple.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Number of sheets: 1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:82: spreadsheet-test --metadata \$top_srcdir/tests/data/simple.ods"
at_fn_check_prepare_dynamic "spreadsheet-test --metadata $top_srcdir/tests/data/simple.ods" "spreadsheet-test.at:82"
( $at_check_trace; spreadsheet-test --metadata $top_srcdir/tests/data/simple.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "Number of sheets: 1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_45
#AT_START_46
at_fn_group_banner 46 'spreadsheet-test.at:88' \
  "spreadsheet ODS with repeating data" "            " 5
at_xfail=no
(
  printf "%s\n" "46. $at_setup_line: testing $at_desc ..."
  $at_traceon

cp "$top_srcdir/tests/data/repeating-2.ods" .
cat >ods-import.sps <<'_ATEOF'
get data /type=ods
   /file="repeating-2.ods"
   /sheet=index 1
   /cellrange=range "a1:j8"
   /readnames=on.

display variables.
list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/spreadsheet-test.at:102: pspp -O format=csv ods-import.sps"
at_fn_check_prepare_trace "spreadsheet-test.at:102"
( $at_check_trace; pspp -O format=csv ods-import.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
s2,1,F8.2,F8.2
s3,2,F8.2,F8.2
s4,3,F8.2,F8.2
s5,4,F8.2,F8.2
s6,5,F8.2,F8.2
s7,6,F8.2,F8.2
s6_A,7,F8.2,F8.2
s7_A,8,F8.2,F8.2
s8,9,F8.2,F8.2
s9,10,F8.2,F8.2

Table: Data List
s2,s3,s4,s5,s6,s7,s6_A,s7_A,s8,s9
31.00,5.00,1.00,1.00,4.00,5.00,4.00,5.00,5.00,4.00
38.00,1.00,.00,2.00,5.00,5.00,4.00,4.00,5.00,4.00
24.00,1.00,.00,3.00,5.00,5.00,4.00,4.00,5.00,3.00
49.00,5.00,2.00,3.00,4.00,5.00,4.00,5.00,5.00,5.00
30.00,1.00,.00,2.00,5.00,5.00,5.00,5.00,5.00,5.00
33.00,5.00,2.00,2.00,5.00,5.00,5.00,5.00,5.00,5.00
32.00,1.00,23.00,2.00,4.00,5.00,3.00,4.00,4.00,3.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/spreadsheet-test.at:102"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_46
#AT_START_47
at_fn_group_banner 47 'dictionary.at:19' \
  "dictionary case-insensitivity" "                  " 6
at_xfail=no
(
  printf "%s\n" "47. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dictionary.sps <<'_ATEOF'
SET LOCALE='UTF-8'.
DATA LIST LIST /aèiöu aeiou.
BEGIN DATA
1 2
END DATA.
LIST AÈIÖU
RENAME VARIABLE (aèiöu=AÈIÖU).
LIST.
RENAME VARIABLE (aeiou=aèiöu).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/dictionary.at:32: pspp -O format=csv dictionary.sps"
at_fn_check_prepare_trace "dictionary.at:32"
( $at_check_trace; pspp -O format=csv dictionary.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
aèiöu,F8.0
aeiou,F8.0

Table: Data List
aèiöu
1.00

Table: Data List
AÈIÖU,aeiou
1.00,2.00

\"dictionary.sps:9.17-9.29: error: RENAME VARIABLES: Renaming would duplicate variable name aèiöu.
    9 | RENAME VARIABLE (aeiou=aèiöu).
      |                 ^~~~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/dictionary.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_47
#AT_START_48
at_fn_group_banner 48 'file.at:19' \
  "Write error - directory exists" "                 " 7
at_xfail=no
(
  printf "%s\n" "48. $at_setup_line: testing $at_desc ..."
  $at_traceon


mkdir foobar.sav

cat >file.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
SAVE OUTFILE='foobar.sav'.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/file.at:31: pspp -O format=csv file.sps"
at_fn_check_prepare_trace "file.at:31"
( $at_check_trace; pspp -O format=csv file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: Opening foobar.sav for writing: Is a directory.

error: Error opening \`foobar.sav' for writing as a system file: Is a directory.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/file.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_48
#AT_START_49
at_fn_group_banner 49 'file.at:40' \
  "Write error - no permission" "                    " 7
at_xfail=no
(
  printf "%s\n" "49. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/file.at:42:
    mkdir directory
    touch directory/foobar.sav
    chmod 000 directory
"
at_fn_check_prepare_notrace 'an embedded newline' "file.at:42"
( $at_check_trace;
    mkdir directory
    touch directory/foobar.sav
    chmod 000 directory

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/file.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }


# If we can write to the directory, then permissions just don't work
# properly.  (Perhaps we're running as root.)
printf "%s\n" "file.at:50" >"$at_check_line_file"
(: > directory/foo) \
  && at_fn_check_skip 77 "$at_srcdir/file.at:50"

cat >file.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
SAVE OUTFILE='directory/foobar.sav'.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/file.at:60: pspp -O format=csv file.sps"
at_fn_check_prepare_trace "file.at:60"
( $at_check_trace; pspp -O format=csv file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: Creating temporary file to replace directory/foobar.sav: Permission denied.

error: Error opening \`directory/foobar.sav' for writing as a system file: Permission denied.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/file.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }


chmod 700 directory

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_49
#AT_START_50
at_fn_group_banner 50 'file.at:72' \
  "Write error - temp file disappeared" "            " 7
at_xfail=no
(
  printf "%s\n" "50. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >file.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
XSAVE OUTFILE='foobar.sav'.
HOST COMMAND=['rm foobar.savtmp*'].
EXECUTE.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/file.at:84: pspp -O format=csv file.sps"
at_fn_check_prepare_trace "file.at:84"
( $at_check_trace; pspp -O format=csv file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/file.at:84"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_50
#AT_START_51
at_fn_group_banner 51 'file.at:90' \
  "Write fifo" "                                     " 7
at_xfail=no
(
  printf "%s\n" "51. $at_setup_line: testing $at_desc ..."
  $at_traceon


printf "%s\n" "file.at:93" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/file.at:93"

cat >file.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
SAVE OUTFILE='foobar.sav'.
_ATEOF


mkfifo foobar.sav
cat foobar.sav > /dev/null &
pid=$!

{ set +x
printf "%s\n" "$at_srcdir/file.at:107: pspp -O format=csv file.sps"
at_fn_check_prepare_trace "file.at:107"
( $at_check_trace; pspp -O format=csv file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/file.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_51
#AT_START_52
at_fn_group_banner 52 'file.at:113' \
  "Reading from pipe" "                              " 7
at_xfail=no
(
  printf "%s\n" "52. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pipe.sps <<'_ATEOF'
data list file='printf "1 2\n 3 4\n 5 6\n" |' notable list /x * y *.
list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/file.at:120: pspp -O format=csv pipe.sps"
at_fn_check_prepare_trace "file.at:120"
( $at_check_trace; pspp -O format=csv pipe.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,y
1.00,2.00
3.00,4.00
5.00,6.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/file.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_52
#AT_START_53
at_fn_group_banner 53 'file.at:132' \
  "Reusing inline file" "                            " 7
at_xfail=no
(
  printf "%s\n" "53. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >inline-reuse.sps <<'_ATEOF'
get data /type=txt /file=inline  /variables=A f7.2 .

data list notable list /foo.
begin data.
end data.

data list notable list /foo.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/file.at:144: pspp inline-reuse.sps"
at_fn_check_prepare_trace "file.at:144"
( $at_check_trace; pspp inline-reuse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/file.at:144"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_53
#AT_START_54
at_fn_group_banner 54 'format-guesser.at:19' \
  "format guesser" "                                 " 8
at_xfail=no
(
  printf "%s\n" "54. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >format-guesser.txt <<'_ATEOF'
# 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)
# XXX YMDHMS formats
# XXX MTIME formats
"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
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/format-guesser.at:143: (echo \"SET DECIMAL=DOT.\"
           sed -e 's/#.*//
s/[ 	]*\$//
/^\$/d
s,^\\(.*\\)=> \\(.*\\)\$,DEBUG FORMAT GUESSER \\1.,') \\
           < format-guesser.txt > format-guesser.sps"
at_fn_check_prepare_notrace 'an embedded newline' "format-guesser.at:143"
( $at_check_trace; (echo "SET DECIMAL=DOT."
           sed -e 's/#.*//
s/[ 	]*$//
/^$/d
s,^\(.*\)=> \(.*\)$,DEBUG FORMAT GUESSER \1.,') \
           < format-guesser.txt > format-guesser.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/format-guesser.at:143"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/format-guesser.at:149: pspp --testing-mode -O format=csv format-guesser.sps"
at_fn_check_prepare_trace "format-guesser.at:149"
( $at_check_trace; pspp --testing-mode -O format=csv format-guesser.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/format-guesser.at:149"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/format-guesser.at:151: sed -e 's/#.*//
s/[ 	]*\$//
/^\$/d' < format-guesser.txt > expout"
at_fn_check_prepare_notrace 'an embedded newline' "format-guesser.at:151"
( $at_check_trace; sed -e 's/#.*//
s/[ 	]*$//
/^$/d' < format-guesser.txt > expout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/format-guesser.at:151"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/format-guesser.at:154: cat stderr"
at_fn_check_prepare_trace "format-guesser.at:154"
( $at_check_trace; cat stderr
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/format-guesser.at:154"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_54
#AT_START_55
at_fn_group_banner 55 'mdd-file.at:19' \
  "write MDD file" "                                 " 9
at_xfail=no
(
  printf "%s\n" "55. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >test.sps <<'_ATEOF'
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 DATA COLLECTION /OUTFILE='test.sav' /METADATA='test.mdd'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/mdd-file.at:36: pspp -o pspp.csv test.sps"
at_fn_check_prepare_trace "mdd-file.at:36"
( $at_check_trace; pspp -o pspp.csv test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mdd-file.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/mdd-file.at:37: test -e test.sav"
at_fn_check_prepare_trace "mdd-file.at:37"
( $at_check_trace; test -e test.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mdd-file.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/mdd-file.at:38: test -e test.mdd"
at_fn_check_prepare_trace "mdd-file.at:38"
( $at_check_trace; test -e test.mdd
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mdd-file.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }


if test $HAVE_XMLLINT = yes; then
    { set +x
printf "%s\n" "$at_srcdir/mdd-file.at:41: \$XMLLINT --format test.mdd"
at_fn_check_prepare_dynamic "$XMLLINT --format test.mdd" "mdd-file.at:41"
( $at_check_trace; $XMLLINT --format test.mdd
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/mdd-file.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

fi
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_55
#AT_START_56
at_fn_group_banner 56 'pc+-file-reader.at:19' \
  "variable labels and missing values" "             " 10
at_xfail=no
(
  printf "%s\n" "56. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
@LABELS; @LABELS_END - @LABELS;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 15;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;

        0; 0; @NUM2_LABEL - @LABELS_OFS; 0x050800; s8 "NUM2"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM3"; 1.0;

        0; 0; @NUM4_LABEL - @LABELS_OFS; 0x050800; s8 "NUM4"; 2.0;

        0; 0; 0; 0x010800; s8 "STR1"; PCSYSMIS;

        0; 0; @STR2_LABEL - @LABELS_OFS; 0x010400; s8 "STR2"; PCSYSMIS;

        0; 0; 0; 0x010500; s8 "STR3"; s8 "MISS";

        0; 0; @STR4_LABEL - @LABELS_OFS; 0x010100; s8 "STR4"; s8 "OTHR";

        0; 0; 0; 0x010b00; s8 "STR5"; PCSYSMIS;
    0 * 8;

        0; 0; @STR6_LABEL - @LABELS_OFS; 0x010b00; s8 "STR6"; PCSYSMIS;
    0 * 8;
VARS_END:

LABELS:
    3; i8 0 0 0; LABELS_OFS: i8 0;
    NUM2_LABEL: COUNT8("Numeric variable 2's label");
    NUM4_LABEL: COUNT8("Another numeric variable label");
    STR2_LABEL: COUNT8("STR2's variable label");
    STR4_LABEL: COUNT8("STR4's variable label");
    STR6_LABEL: COUNT8("Another string variable's label");
LABELS_END:

DATA:
    0.0; "11/28/14"; 1.0;
    0.0; 1.0; 2.0; PCSYSMIS; s8 "abcdefgh"; s8 "ijkl"; s8 "mnopq"; s8 "r";
    s16 "stuvwxyzAB"; s16 "CDEFGHIJKLM";
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:99: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:99"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:99"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
DISPLAY FILE LABEL.
DISPLAY DICTIONARY.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:106: pspp -o pspp.csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:106"
( $at_check_trace; pspp -o pspp.csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:106"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:107: cat pspp.csv"
at_fn_check_prepare_trace "pc+-file-reader.at:107"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Label
Label,PSPP synthetic test file

Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
NUM1,1,,Unknown,Input,8,Right,F8.0,F8.0,
NUM2,2,Numeric variable 2's label,Unknown,Input,8,Right,F8.0,F8.0,
NUM3,3,,Unknown,Input,8,Right,F8.0,F8.0,1
NUM4,4,Another numeric variable label,Unknown,Input,8,Right,F8.0,F8.0,2
STR1,5,,Nominal,Input,8,Left,A8,A8,
STR2,6,STR2's variable label,Nominal,Input,4,Left,A4,A4,
STR3,7,,Nominal,Input,5,Left,A5,A5,\"\"\"MISS \"\"\"
STR4,8,STR4's variable label,Nominal,Input,1,Left,A1,A1,\"\"\"O\"\"\"
STR5,9,,Nominal,Input,11,Left,A11,A11,
STR6,10,Another string variable's label,Nominal,Input,11,Left,A11,A11,

Table: Data List
NUM1,NUM2,NUM3,NUM4,STR1,STR2,STR3,STR4,STR5,STR6
0,1,2,.,abcdefgh,ijkl,mnopq,r,stuvwxyzAB,CDEFGHIJKLM
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_56
#AT_START_57
at_fn_group_banner 57 'pc+-file-reader.at:130' \
  "value labels" "                                   " 10
at_xfail=no
(
  printf "%s\n" "57. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
@LABELS; @LABELS_END - @LABELS;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 16;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        @N1 - @LOFF; @N1E - @LOFF; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    @N2 - @LOFF; @N2E - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    @N3 - @LOFF; @N3E - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    @N4 - @LOFF; @N4E - @LOFF; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
    @N5 - @LOFF; @N5E - @LOFF; 0; 0x050800; s8 "NUM5"; PCSYSMIS;

        @S1 - @LOFF; @S1E - @LOFF; 0; 0x010100; s8 "STR1"; PCSYSMIS;
    @S2 - @LOFF; @S2E - @LOFF; 0; 0x010200; s8 "STR2"; PCSYSMIS;
    @S3 - @LOFF; @S3E - @LOFF; 0; 0x010300; s8 "STR3"; PCSYSMIS;
    @S4 - @LOFF; @S4E - @LOFF; 0; 0x010400; s8 "STR4"; PCSYSMIS;
    @S5 - @LOFF; @S5E - @LOFF; 0; 0x010500; s8 "STR5"; PCSYSMIS;
    @S6 - @LOFF; @S6E - @LOFF; 0; 0x010600; s8 "STR6"; PCSYSMIS;
    @S7 - @LOFF; @S7E - @LOFF; 0; 0x010700; s8 "STR7"; PCSYSMIS;
    @S8 - @LOFF; @S8E - @LOFF; 0; 0x010800; s8 "STR8"; PCSYSMIS;
VARS_END:

LABELS:
    3; i8 0 0 0; LOFF: i8 0;

    N1: 1.0; COUNT8("one"); N1E:
    N2: 2.0; COUNT8("two"); 3.0; COUNT8("three"); N2E:
    N3:
        3.0; COUNT8("three");
    N4: N5:
        4.0; COUNT8("four");
    N3E: N4E:
	5.0; COUNT8("five");
    N5E:

    S1: s8 "a"; COUNT8("value label for `a'"); S1E:
    S2: s8 "ab"; COUNT8("value label for `ab'"); S2E:
    S3: s8 "abc"; COUNT8("value label for `abc'"); S3E:
    S4: S5: S6: S7:
        s8 "abcdefgh"; COUNT8("value label for abcdefgh"); S4E:
    S8:
        s8 "ijklmnop"; COUNT8("value label for ijklmnop"); S5E:
        s8 "qrstuvwx"; COUNT8("value label for qrstuvwx"); S6E:
        s8 "yzABCDEF"; COUNT8("value label for yzABCDEF"); S7E:
        s8 "GHIJKLMN"; COUNT8("value label for GHIJKLMN"); S8E:
LABELS_END:

DATA:
    1.0; "11/28/14"; 1.0;
    1.0; 2.0; 3.0; 4.0; 5.0;
    s8 "a"; s8 "bc"; s8 "cde"; s8 "fghj"; s8 "klmno"; s8 "pqrstu";
    s8 "vwxyzAB"; s8 "CDEFGHIJ";
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:212: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:212"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:212"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
DISPLAY FILE LABEL.
DISPLAY DICTIONARY.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:219: pspp -o pspp.csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:219"
( $at_check_trace; pspp -o pspp.csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:219"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:220: cat pspp.csv"
at_fn_check_prepare_trace "pc+-file-reader.at:220"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Label
Label,PSPP synthetic test file

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
NUM1,1,Unknown,Input,8,Right,F8.0,F8.0
NUM2,2,Unknown,Input,8,Right,F8.0,F8.0
NUM3,3,Unknown,Input,8,Right,F8.0,F8.0
NUM4,4,Unknown,Input,8,Right,F8.0,F8.0
NUM5,5,Unknown,Input,8,Right,F8.0,F8.0
STR1,6,Nominal,Input,1,Left,A1,A1
STR2,7,Nominal,Input,2,Left,A2,A2
STR3,8,Nominal,Input,3,Left,A3,A3
STR4,9,Nominal,Input,4,Left,A4,A4
STR5,10,Nominal,Input,5,Left,A5,A5
STR6,11,Nominal,Input,6,Left,A6,A6
STR7,12,Nominal,Input,7,Left,A7,A7
STR8,13,Nominal,Input,8,Left,A8,A8

Table: Value Labels
Variable Value,,Label
NUM1,1,one
NUM2,2,two
,3,three
NUM3,3,three
,4,four
NUM4,4,four
NUM5,4,four
,5,five
STR1,a,value label for \`a'
STR2,ab,value label for \`ab'
STR3,abc,value label for \`abc'
STR4,abcd,value label for abcdefgh
STR5,abcde,value label for abcdefgh
,ijklm,value label for ijklmnop
STR6,abcdef,value label for abcdefgh
,ijklmn,value label for ijklmnop
,qrstuv,value label for qrstuvwx
STR7,abcdefg,value label for abcdefgh
,ijklmno,value label for ijklmnop
,qrstuvw,value label for qrstuvwx
,yzABCDE,value label for yzABCDEF
STR8,GHIJKLMN,value label for GHIJKLMN
,ijklmnop,value label for ijklmnop
,qrstuvwx,value label for qrstuvwx
,yzABCDEF,value label for yzABCDEF

Table: Data List
NUM1,NUM2,NUM3,NUM4,NUM5,STR1,STR2,STR3,STR4,STR5,STR6,STR7,STR8
1,2,3,4,5,a,bc,cde,fghj,klmno,pqrstu,vwxyzAB,CDEFGHIJ
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:220"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_57
#AT_START_58
at_fn_group_banner 58 'pc+-file-reader.at:274' \
  "compressed data" "                                " 10
at_xfail=no
(
  printf "%s\n" "58. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 1;
    i16 9;
    2;
    i16 0;             2;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;

        0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
    0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
    0 * 8;
VARS_END:

DATA:
    i8 101 1 101 100 255 1 1 1;
        s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
    i8 1; i8 102 1 101 1 0 1 1;
         s8 "ABCDEFG"; s8 "11/28/14"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
    i8 1 1 0 0 0 0 0 0;
        s16 "bcdefghijklmnop";
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:326: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:326"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:326"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
DISPLAY FILE LABEL.
DISPLAY DICTIONARY.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:333: pspp -o pspp.csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:333"
( $at_check_trace; pspp -o pspp.csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:333"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:334: cat pspp.csv"
at_fn_check_prepare_trace "pc+-file-reader.at:334"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Label
Label,PSPP synthetic test file

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
NUM1,1,Unknown,Input,8,Right,F8.0,F8.0
NUM2,2,Unknown,Input,8,Right,F8.0,F8.0
STR4,3,Nominal,Input,4,Left,A4,A4
STR8,4,Nominal,Input,8,Left,A8,A8
STR15,5,Nominal,Input,15,Left,A15,A15

Table: Data List
NUM1,NUM2,STR4,STR8,STR15
-5,150,abcd,efghj,efghijklABCDEFG
1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:334"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_58
#AT_START_59
at_fn_group_banner 59 'pc+-file-reader.at:353' \
  "weighted" "                                       " 10
at_xfail=no
(
  printf "%s\n" "59. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    i16 1; i16 6;
    i16 0;             i16 1; i16 0;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:396: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:396"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:396"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:400: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:400"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Information
File,pc+-file.sav
Label,PSPP synthetic test file
Created,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
Integer Format,Little Endian
Real Format,IEEE 754 LE.
Variables,4
Cases,1
Type,SPSS/PC+ System File
Weight,NUM3
Compression,None
Encoding,us-ascii

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
NUM1,1,Unknown,Input,8,Right,F8.0,F8.0
NUM2,2,Unknown,Input,8,Right,F8.0,F8.0
NUM3,3,Unknown,Input,8,Right,F8.0,F8.0
NUM4,4,Unknown,Input,8,Right,F8.0,F8.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:400"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_59
#AT_START_60
at_fn_group_banner 60 'pc+-file-reader.at:425' \
  "unspecified character encoding" "                 " 11
at_xfail=no
(
  printf "%s\n" "60. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:468: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:468"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:468"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav'.
DISPLAY FILE LABEL.
DISPLAY DICTIONARY.
LIST.

SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:477: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:477"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:477"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:478: sed 's/default encoding.*For/default encoding.  For/' stdout"
at_fn_check_prepare_trace "pc+-file-reader.at:478"
( $at_check_trace; sed 's/default encoding.*For/default encoding.  For/' stdout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`pc+-file.sav': Using default encoding.  For best results, specify an encoding explicitly.  Use SYSFILE INFO with ENCODING=\"\"DETECT\"\" to analyze the possible encodings.\"

Table: File Label
Label,PSPP synthetic test file

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
NUM1,1,Unknown,Input,8,Right,F8.0,F8.0
NUM2,2,Unknown,Input,8,Right,F8.0,F8.0
NUM3,3,Unknown,Input,8,Right,F8.0,F8.0
NUM4,4,Unknown,Input,8,Right,F8.0,F8.0

Table: Data List
NUM1,NUM2,NUM3,NUM4
2,3,4,5

Table: File Information
File,pc+-file.sav
Label,PSPP synthetic test file
Created,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
Integer Format,Little Endian
Real Format,IEEE 754 LE.
Variables,4
Cases,1
Type,SPSS/PC+ System File
Weight,Not weighted
Compression,None
Encoding,us-ascii

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
NUM1,1,Unknown,Input,8,Right,F8.0,F8.0
NUM2,2,Unknown,Input,8,Right,F8.0,F8.0
NUM3,3,Unknown,Input,8,Right,F8.0,F8.0
NUM4,4,Unknown,Input,8,Right,F8.0,F8.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:478"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_60
#AT_START_61
at_fn_group_banner 61 'pc+-file-reader.at:517' \
  "unexpected fixed values" "                        " 11
at_xfail=no
(
  printf "%s\n" "61. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
>>1; 2;<<
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    >>1.0<<;
    0; >>2<<; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             3;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:560: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:560"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:560"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:564: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:564"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`pc+-file.sav' near offset 0x0: Directory fields have unexpected values (1,2).\"

warning: \`pc+-file.sav' near offset 0x100: Record 0 specifies unexpected system missing value 1 (0x1p+0).

\"warning: \`pc+-file.sav' near offset 0x100: Record 0 reserved fields have unexpected values (1,1,0,2,0,0).\"

warning: \`pc+-file.sav' near offset 0x100: Record 0 case counts differ (1 versus 3).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:564"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_61
#AT_START_62
at_fn_group_banner 62 'pc+-file-reader.at:575' \
  "short main header" "                              " 11
at_xfail=no
(
  printf "%s\n" "62. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:617: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:617"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:617"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:621: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:621"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`pc+-file.sav' near offset 0x100: This is not an SPSS/PC+ system file.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/pc+-file-reader.at:621"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_62
#AT_START_63
at_fn_group_banner 63 'pc+-file-reader.at:626' \
  "long main header" "                               " 11
at_xfail=no
(
  printf "%s\n" "63. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    >>s80 "PSPP synthetic test file"<<;
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:669: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:669"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:669"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:673: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:673"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`pc+-file.sav' near offset 0x100: Record 0 has unexpected length 192.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:673"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_63
#AT_START_64
at_fn_group_banner 64 'pc+-file-reader.at:678' \
  "invalid compression type" "                       " 11
at_xfail=no
(
  printf "%s\n" "64. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 >>2<<;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:721: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:721"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:721"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:725: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:725"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`pc+-file.sav' near offset 0x100: Invalid compression type 2.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/pc+-file-reader.at:725"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_64
#AT_START_65
at_fn_group_banner 65 'pc+-file-reader.at:730' \
  "unrealistic number of cases" "                    " 11
at_xfail=no
(
  printf "%s\n" "65. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1000;
    i16 0;             1000;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:773: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:773"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:773"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:777: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:777"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`pc+-file.sav' near offset 0x100: Record 0 claims 1000 cases with 7 values per case (requiring at least 56000 bytes) but data record is only 56 bytes long.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:777"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_65
#AT_START_66
at_fn_group_banner 66 'pc+-file-reader.at:782' \
  "labels bad offsets" "                             " 11
at_xfail=no
(
  printf "%s\n" "66. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
@LABELS; @LABELS_END - @LABELS;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        @N1L - @LOFF; @N1E - @LOFF; 1000; 0x050800; s8 "NUM1"; PCSYSMIS;
    @N1L - @LOFF - 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    @N1L - @LOFF + 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; @LABELS_END - @LOFF - 1; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

LABELS:
    3; i8 0 0 0; LOFF: i8 0;
    N1L: PCSYSMIS;
LABELS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0; N1E:
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:830: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:830"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:830"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:834: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:834"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`pc+-file.sav' near offset 0x210: Variable label claimed to start at offset 1007 in labels record but labels record is only 16 bytes.

warning: \`pc+-file.sav' near offset 0x210: Value labels claimed to end at offset 72 in labels record but labels record is only 16 bytes.

\"warning: \`pc+-file.sav' near offset 0x2a0: Value labels end with partial label (0 bytes left in record, label length 255).\"

warning: \`pc+-file.sav' near offset 0x299: 7 leftover bytes following value labels.

warning: \`pc+-file.sav' near offset 0x29f: Variable label with length 255 starting at offset 16 in labels record overruns end of 16-byte labels record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:834"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_66
#AT_START_67
at_fn_group_banner 67 'pc+-file-reader.at:847' \
  "record 1 bad length" "                            " 11
at_xfail=no
(
  printf "%s\n" "67. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:889: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:889"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:889"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:893: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:893"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`pc+-file.sav' near offset 0x1b0: Record 1 has length 192 (expected 224).

pc+-file.sps:1: error: GET: \`pc+-file.sav': Data file dictionary has no variables.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/pc+-file-reader.at:893"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_67
#AT_START_68
at_fn_group_banner 68 'pc+-file-reader.at:900' \
  "bad variable format" "                            " 11
at_xfail=no
(
  printf "%s\n" "68. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0xff0000; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:943: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:943"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:943"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:947: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:947"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`pc+-file.sav' near offset 0x210: Variable 3 has invalid type 255.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/pc+-file-reader.at:947"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_68
#AT_START_69
at_fn_group_banner 69 'pc+-file-reader.at:952' \
  "bad variable name" "                              " 11
at_xfail=no
(
  printf "%s\n" "69. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050000; s8 "#NUM"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:995: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:995"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:995"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:999: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:999"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`pc+-file.sav' near offset 0x210: Invalid variable name \`#NUM'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/pc+-file-reader.at:999"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_69
#AT_START_70
at_fn_group_banner 70 'pc+-file-reader.at:1004' \
  "duplicate variable name" "                        " 11
at_xfail=no
(
  printf "%s\n" "70. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    1;
    i16 0;             1;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1047: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:1047"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1047"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1051: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:1051"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`pc+-file.sav' near offset 0x230: Renaming variable with duplicate name \`NUM1' to \`NUM1_A'.

warning: \`pc+-file.sav' near offset 0x250: Renaming variable with duplicate name \`NUM1' to \`NUM1_B'.

warning: \`pc+-file.sav' near offset 0x270: Renaming variable with duplicate name \`NUM1' to \`NUM1_C'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1051"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_70
#AT_START_71
at_fn_group_banner 71 'pc+-file-reader.at:1060' \
  "partial case" "                                   " 11
at_xfail=no
(
  printf "%s\n" "71. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    3;
    i16 0;             3;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
    2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
    3.0; "11/28/14"; 1.0; 10.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1105: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:1105"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1105"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1110: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:1110"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`pc+-file.sav' near offset 0x100: Record 0 claims 3 cases with 7 values per case (requiring at least 168 bytes) but data record is only 144 bytes long.

error: \`pc+-file.sav' near offset 0x320: File ends in partial case.

error: Error reading case from file \`pc+-file.sav'.

Table: Data List
NUM1,NUM2,NUM3,NUM4
2,3,4,5
6,7,8,9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/pc+-file-reader.at:1110"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_71
#AT_START_72
at_fn_group_banner 72 'pc+-file-reader.at:1124' \
  "case extends past end of data record" "           " 11
at_xfail=no
(
  printf "%s\n" "72. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    3;
    i16 0;             3;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
    2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
    3.0; "11/28/14"; 1.0; 10.0;
DATA_END:
    11.0; 12.0; 13.0;
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1170: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:1170"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1170"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1175: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:1175"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`pc+-file.sav' near offset 0x100: Record 0 claims 3 cases with 7 values per case (requiring at least 168 bytes) but data record is only 144 bytes long.

error: \`pc+-file.sav' near offset 0x338: Case beginning at offset 0x00000300 extends past end of data record at offset 0x00000320.

error: Error reading case from file \`pc+-file.sav'.

Table: Data List
NUM1,NUM2,NUM3,NUM4
2,3,4,5
6,7,8,9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/pc+-file-reader.at:1175"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_72
#AT_START_73
at_fn_group_banner 73 'pc+-file-reader.at:1189' \
  "corrupt compressed data" "                        " 11
at_xfail=no
(
  printf "%s\n" "73. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 1;
    i16 9;
    2;
    i16 0;             2;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;

        0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
    0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
    0 * 8;
VARS_END:

DATA:
    i8 101 1 101 100 255 1 1 1;
        s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
    i8 1; i8 102 101 101 1 0 1 1;
         s8 "ABCDEFG"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
    i8 1 1 0 0 0 0 0 0;
        s16 "bcdefghijklmnop";
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1241: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:1241"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1241"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
DISPLAY FILE LABEL.
DISPLAY DICTIONARY.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1248: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:1248"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Label
Label,PSPP synthetic test file

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
NUM1,1,Unknown,Input,8,Right,F8.0,F8.0
NUM2,2,Unknown,Input,8,Right,F8.0,F8.0
STR4,3,Nominal,Input,4,Left,A4,A4
STR8,4,Nominal,Input,8,Left,A8,A8
STR15,5,Nominal,Input,15,Left,A15,A15

warning: \`pc+-file.sav' near offset 0x308: Possible compressed data corruption: string contains compressed integer (opcode 101).

Table: Data List
NUM1,NUM2,STR4,STR8,STR15
-5,150,abcd,efghj,efghijklABCDEFG
1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1248"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_73
#AT_START_74
at_fn_group_banner 74 'pc+-file-reader.at:1269' \
  "invalid weight index" "                           " 11
at_xfail=no
(
  printf "%s\n" "74. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    i16 1; i16 10;
    i16 0;             i16 1; i16 0;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1312: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:1312"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1312"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1316: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:1316"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`pc+-file.sav': Invalid weight index 10.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1316"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_74
#AT_START_75
at_fn_group_banner 75 'pc+-file-reader.at:1321' \
  "string weight" "                                  " 11
at_xfail=no
(
  printf "%s\n" "75. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pc+-file.sack <<'_ATEOF'
2; 0;
@MAIN; @MAIN_END - @MAIN;
@VARS; @VARS_END - @VARS;
0; 0;
@DATA; @DATA_END - @DATA;
(0; 0) * 11;
i8 0 * 128;

MAIN:
    i16 1;             s62 "PCSPSS PSPP synthetic test product";
    PCSYSMIS;
    0; 0; i16 1;       i16 0;
    i16 7;
    i16 1; i16 6;
    i16 0;             i16 1; i16 0;
    s8 "11/28/14";
    s8 "15:11:00";
    s64 "PSPP synthetic test file";
MAIN_END:

VARS:
    0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
    0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;

        0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
    0; 0; 0; 0x010800; s8 "STR1"; PCSYSMIS;
    0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
VARS_END:

DATA:
    0.0; "11/28/14"; 1.0; s8 "acbdefgh"; 3.0; 4.0; 5.0;
DATA_END:
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1364: sack --le pc+-file.sack > pc+-file.sav"
at_fn_check_prepare_trace "pc+-file-reader.at:1364"
( $at_check_trace; sack --le pc+-file.sack > pc+-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1364"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >pc+-file.sps <<'_ATEOF'
GET FILE='pc+-file.sav' ENCODING='us-ascii'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pc+-file-reader.at:1368: pspp -O format=csv pc+-file.sps"
at_fn_check_prepare_trace "pc+-file-reader.at:1368"
( $at_check_trace; pspp -O format=csv pc+-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`pc+-file.sav' near offset 0x250: Cannot weight by string variable \`STR1'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pc+-file-reader.at:1368"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_75
#AT_START_76
at_fn_group_banner 76 'por-file.at:19' \
  "overwriting portable file" "                      " 12
at_xfail=no
(
  printf "%s\n" "76. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >output.por <<'_ATEOF'
abcdef
_ATEOF

cp output.por output.por.backup
cat >porfile.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
EXPORT OUTFILE='output.por'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:30: pspp -O format=csv porfile.sps"
at_fn_check_prepare_trace "por-file.at:30"
( $at_check_trace; pspp -O format=csv porfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:31: cmp output.por output.por.backup"
at_fn_check_prepare_trace "por-file.at:31"
( $at_check_trace; cmp output.por output.por.backup
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/por-file.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_76
#AT_START_77
at_fn_group_banner 77 'por-file.at:34' \
  "overwriting portable file atomically" "           " 12
at_xfail=no
(
  printf "%s\n" "77. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >output.por <<'_ATEOF'
abcdef
_ATEOF

cp output.por output.por.backup
cat >porfile.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
XEXPORT OUTFILE='output.por'.
HOST COMMAND=['kill -TERM $PPID'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:46: pspp -O format=csv porfile.sps"
at_fn_check_prepare_trace "por-file.at:46"
( $at_check_trace; pspp -O format=csv porfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 143 $at_status "$at_srcdir/por-file.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:47: cmp output.por output.por.backup"
at_fn_check_prepare_trace "por-file.at:47"
( $at_check_trace; cmp output.por output.por.backup
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:48: for file in *.tmp*; do if test -e \$file; then echo \$file; exit 1; fi; done"
at_fn_check_prepare_dynamic "for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done" "por-file.at:48"
( $at_check_trace; for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_77
#AT_START_78
at_fn_group_banner 78 'por-file.at:52' \
  "write to same portable file being read" "         " 12
at_xfail=no
(
  printf "%s\n" "78. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >export.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
2
END DATA.
EXPORT OUTFILE='data.por'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:60: pspp -O format=csv export.sps"
at_fn_check_prepare_trace "por-file.at:60"
( $at_check_trace; pspp -O format=csv export.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:61: test -s data.por"
at_fn_check_prepare_trace "por-file.at:61"
( $at_check_trace; test -s data.por
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:61"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:62: for file in *.tmp*; do if test -e \$file; then echo \$file; exit 1; fi; done"
at_fn_check_prepare_dynamic "for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done" "por-file.at:62"
( $at_check_trace; for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:62"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >export2.sps <<'_ATEOF'
IMPORT FILE='data.por'.
COMPUTE y = x * 2.
EXPORT OUTFILE='data.por'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:69: pspp -O format=csv export2.sps"
at_fn_check_prepare_trace "por-file.at:69"
( $at_check_trace; pspp -O format=csv export2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:69"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:70: for file in *.tmp*; do if test -e \$file; then echo \$file; exit 1; fi; done"
at_fn_check_prepare_dynamic "for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done" "por-file.at:70"
( $at_check_trace; for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:70"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >export3.sps <<'_ATEOF'
IMPORT FILE='data.por'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:76: pspp -O format=csv export3.sps"
at_fn_check_prepare_trace "por-file.at:76"
( $at_check_trace; pspp -O format=csv export3.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X,Y
2,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_78
#AT_START_79
at_fn_group_banner 79 'por-file.at:86' \
  "write portable file with value labels" "          " 12
at_xfail=no
(
  printf "%s\n" "79. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >export.sps <<'_ATEOF'
DATA LIST NOTABLE/var1 TO var5 1-5.
VALUE LABELS
	/var1 1 'one'
	/var2 2 'two'
	/var3 3 'three'
	/var4 4 'four'
	/var5 5 'five'.
BEGIN DATA.
12345
END DATA.
EXPORT OUTFILE='data.por'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:100: pspp -O format=csv export.sps"
at_fn_check_prepare_trace "por-file.at:100"
( $at_check_trace; pspp -O format=csv export.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:100"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >import.sps <<'_ATEOF'
IMPORT FILE='data.por'.
EXECUTE.
DISPLAY DICTIONARY.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:107: pspp -O format=csv import.sps"
at_fn_check_prepare_trace "por-file.at:107"
( $at_check_trace; pspp -O format=csv import.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
VAR1,1,Nominal,Input,8,Right,F1.0,F1.0
VAR2,2,Nominal,Input,8,Right,F1.0,F1.0
VAR3,3,Nominal,Input,8,Right,F1.0,F1.0
VAR4,4,Nominal,Input,8,Right,F1.0,F1.0
VAR5,5,Nominal,Input,8,Right,F1.0,F1.0

Table: Value Labels
Variable Value,,Label
VAR1,1,one
VAR2,2,two
VAR3,3,three
VAR4,4,four
VAR5,5,five

Table: Data List
VAR1,VAR2,VAR3,VAR4,VAR5
1,2,3,4,5
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >sys-file-info.sps <<'_ATEOF'
SYSFILE INFO FILE='data.por'
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/por-file.at:130: pspp -O format=csv sys-file-info.sps | sed '/Encoding/d
/Integer Format/d
/Real Format/d
/Created/d
/Product/d
'"
at_fn_check_prepare_notrace 'an embedded newline' "por-file.at:130"
( $at_check_trace; pspp -O format=csv sys-file-info.sps | sed '/Encoding/d
/Integer Format/d
/Real Format/d
/Created/d
/Product/d
'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Information
File,data.por
Variables,5
Cases,Unknown
Type,SPSS Portable File
Weight,Not weighted
Compression,None

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
VAR1,1,Unknown,Input,8,Right,F1.0,F1.0
VAR2,2,Unknown,Input,8,Right,F1.0,F1.0
VAR3,3,Unknown,Input,8,Right,F1.0,F1.0
VAR4,4,Unknown,Input,8,Right,F1.0,F1.0
VAR5,5,Unknown,Input,8,Right,F1.0,F1.0

Table: Value Labels
Variable Value,,Label
VAR1,1,one
VAR2,2,two
VAR3,3,three
VAR4,4,four
VAR5,5,five
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/por-file.at:130"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_79
#AT_START_80
at_fn_group_banner 80 'sys-file-reader.at:19' \
  "variable labels and missing values" "             " 13
at_xfail=no
(
  printf "%s\n" "80. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 28; 0; 0; 1; 100.0; "01 Jan 11"; "20:53:52";
"PSPP synthetic test file: "; i8 244; i8 245; i8 246; i8 248; s34 "";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
32; "Numeric variable 2's label ("; i8 249; i8 250; i8 251; ")";

2; 0; 0; 1; 0x050800 *2; s8 "NUM3";
1.0;

2; 0; 1; 1; 0x050800 *2; s8 "NUM4";
30; "Another numeric variable label"; i8 0 * 2;
1.0;

2; 0; 0; 2; 0x050800 *2; s8 "NUM5"; 1.0; 2.0;

2; 0; 0; 3; 0x050800 *2; s8 "NUM6"; 1.0; 2.0; 3.0;

2; 0; 0; -2; 0x050800 *2; s8 "NUM7"; 1.0; 3.0;

2; 0; 0; -3; 0x050800 *2; s8 "NUM8"; 1.0; 3.0; 5.0;
2; 0; 0; -3; 0x050800 *2; s8 "NUM9"; 1.0; HIGHEST; -5.0;
2; 0; 0; -3; 0x050800 *2; "NUM"; i8 192; i8 200; i8 204; i8 209; i8 210;
LOWEST; 1.0; 5.0;

2; 4; 0; 0; 0x010400 *2; s8 "STR1";

2; 4; 1; 0; 0x010400 *2; s8 "STR2";
25; "String variable 2's label"; i8 0 * 3;

2; 4; 0; 1; 0x010400 *2; s8 "STR3"; s8 "MISS";

2; 4; 1; 1; 0x010400 *2; s8 "STR4";
29; "Another string variable label"; i8 0 * 3;
s8 "OTHR";

2; 4; 0; 2; 0x010400 *2; s8 "STR5"; s8 "MISS"; s8 "OTHR";

2; 4; 0; 3; 0x010400 *2; s8 "STR6"; s8 "MISS"; s8 "OTHR"; s8 "MORE";

2; 11; 0; 1; 0x010b00 *2; s8 "STR7"; "first8by";
2; -1; 0; 0; 0; 0; s8 "";

2; 9; 0; 0; 0x010900 *2; s8 "STR8";
2; -1; 0; 0; 0; 0; s8 "";
2; 10; 0; 0; 0x010a00 *2; s8 "STR9";
2; -1; 0; 0; 0; 0; s8 "";
2; 11; 0; 0; 0x010b00 *2; s8 "STR10";
2; -1; 0; 0; 0; 0; s8 "";

2; 25; 1; 0; 0x011900 *2; s8 "STR11"; 14; "25-byte string"; i8 0 * 2;
( 2; -1; 0; 0; 0; 0; s8 ""; ) * 2;
2; -1; 1; 0; 0; 0; s8 ""; 20; "dummy variable label";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;

7; 4; 8; 3; SYSMIS; HIGHEST; LOWEST;

7; 22; 1; COUNT (
COUNT("STR8"); i8 1; 8; "abcdefgh";

COUNT("STR9"); i8 2; 8; "abcdefgh"; "01234567";

COUNT("STR10"); i8 3; 8; "abcdefgh"; "01234567"; "0       ";
);

7; 20; 1; 12; "windows-1252";

999; 0;

1.0; 2.0; 3.0; 4.0; 5.0; 6.0; 7.0; 8.0; 9.0; 10.0;
s8 "abcd"; s8 "efgh"; s8 "ijkl"; s8 "mnop"; s8 "qrst"; s8 "uvwx";
s16 "yzABCDEFGHI"; s16 "JKLMNOPQR"; s16 "STUVWXYZ01";
s16 "23456789abc"; s32 "defghijklmnopqstuvwxyzABC";
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:141: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:141"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:141"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY FILE LABEL.
DISPLAY DICTIONARY.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:148: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:148"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:148"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:149: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:149"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Label
Label,PSPP synthetic test file: ôõöø

Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
num1,1,,Unknown,Input,8,Right,F8.0,F8.0,
num2,2,Numeric variable 2's label (ùúû),Unknown,Input,8,Right,F8.0,F8.0,
num3,3,,Unknown,Input,8,Right,F8.0,F8.0,1
num4,4,Another numeric variable label,Unknown,Input,8,Right,F8.0,F8.0,1
num5,5,,Unknown,Input,8,Right,F8.0,F8.0,1; 2
num6,6,,Unknown,Input,8,Right,F8.0,F8.0,1; 2; 3
num7,7,,Unknown,Input,8,Right,F8.0,F8.0,1 THRU 3
num8,8,,Unknown,Input,8,Right,F8.0,F8.0,1 THRU 3; 5
num9,9,,Unknown,Input,8,Right,F8.0,F8.0,1 THRU HIGHEST; -5
numàèìñò,10,,Unknown,Input,8,Right,F8.0,F8.0,LOWEST THRU 1; 5
str1,11,,Nominal,Input,4,Left,A4,A4,
str2,12,String variable 2's label,Nominal,Input,4,Left,A4,A4,
str3,13,,Nominal,Input,4,Left,A4,A4,\"\"\"MISS\"\"\"
str4,14,Another string variable label,Nominal,Input,4,Left,A4,A4,\"\"\"OTHR\"\"\"
str5,15,,Nominal,Input,4,Left,A4,A4,\"\"\"MISS\"\"; \"\"OTHR\"\"\"
str6,16,,Nominal,Input,4,Left,A4,A4,\"\"\"MISS\"\"; \"\"OTHR\"\"; \"\"MORE\"\"\"
str7,17,,Nominal,Input,11,Left,A11,A11,\"\"\"first8by\"\"\"
str8,18,,Nominal,Input,9,Left,A9,A9,\"\"\"abcdefgh\"\"\"
str9,19,,Nominal,Input,10,Left,A10,A10,\"\"\"abcdefgh\"\"; \"\"01234567\"\"\"
str10,20,,Nominal,Input,11,Left,A11,A11,\"\"\"abcdefgh\"\"; \"\"01234567\"\"; \"\"0       \"\"\"
str11,21,25-byte string,Nominal,Input,25,Left,A25,A25,

Table: Data List
num1,num2,num3,num4,num5,num6,num7,num8,num9,numàèìñò,str1,str2,str3,str4,str5,str6,str7,str8,str9,str10,str11
1,2,3,4,5,6,7,8,9,10,abcd,efgh,ijkl,mnop,qrst,uvwx,yzABCDEFGHI,JKLMNOPQR,STUVWXYZ01,23456789abc,defghijklmnopqstuvwxyzABC
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:149"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_80
#AT_START_81
at_fn_group_banner 81 'sys-file-reader.at:184' \
  "unspecified number of variable positions" "       " 13
at_xfail=no
(
  printf "%s\n" "81. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; -1; 0; 0; 1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
26; "Numeric variable 2's label"; i8 0 *2;

7; 20; 1; 12; "windows-1252";

999; 0;

1.0; 2.0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:215: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:215"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:215"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:221: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:221"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:221"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:222: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:222"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,,Unknown,Input,8,Right,F8.0,F8.0
num2,2,Numeric variable 2's label,Unknown,Input,8,Right,F8.0,F8.0

Table: Data List
num1,num2
1,2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:222"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_81
#AT_START_82
at_fn_group_banner 82 'sys-file-reader.at:235' \
  "wrong number of variable positions but version 13" "" 13
at_xfail=no
(
  printf "%s\n" "82. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; -1; 0; 0; 1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
26; "Numeric variable 2's label"; i8 0 *2;

7; 3; 4; 8; 13; 2; 3; -1; 1; 1; ENDIAN; 1252;

7; 20; 1; 12; "windows-1252";

999; 0;

1.0; 2.0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:269: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:269"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:269"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:275: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:275"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:275"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:276: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:276"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,,Unknown,Input,8,Right,F8.0,F8.0
num2,2,Numeric variable 2's label,Unknown,Input,8,Right,F8.0,F8.0

Table: Data List
num1,num2
1,2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:276"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_82
#AT_START_83
at_fn_group_banner 83 'sys-file-reader.at:289' \
  "value labels" "                                   " 13
at_xfail=no
(
  printf "%s\n" "83. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 22; 0; 0; 1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
2; 0; 0; 0; 0x050800 *2; s8 "NUM3";
2; 0; 0; 0; 0x050800 *2; s8 "NUM4";
2; 0; 0; 0; 0x050800 *2; s8 "NUM5";

2; 1; 0; 0; 0x010100 *2; s8 "STR1"; 2; 2; 0; 0; 0x010200 *2; s8 "STR2"; 2; 3; 0; 0; 0x010300 *2; s8 "STR3"; 2; 4; 0; 0; 0x010400 *2; s8 "STR4"; 2; 4; 0; 0; 0x010400 *2; s8 "STR5"; 2; 6; 0; 0; 0x010600 *2; s8 "STR6"; 2; 7; 0; 0; 0x010700 *2; s8 "STR7"; 2; 8; 0; 0; 0x010800 *2; s8 "STR8"; 2; 9; 0; 0; 0x010900 *2; "STR9"; i8 230; s3 ""; 2; -1; 0; 0; 0; 0; s8 "";
2; 12; 0; 0; 0x010c00 *2; s8 "STR12"; 2; -1; 0; 0; 0; 0; s8 "";
2; 16; 0; 0; 0x011000 *2; s8 "STR16"; 2; -1; 0; 0; 0; 0; s8 "";
2; 17; 0; 0; 0x011100 *2; s8 "STR17"; ( 2; -1; 0; 0; 0; 0; s8 ""; ) * 2;

3; 1; 1.0; i8 17; i8 238; i8 228; i8 232; i8 237; s19 " (in Russian)"; 4; 1; 1;

3; 2; 1.0; i8 3; s7 "one"; 2.0; i8 3; s7 "two"; 4; 1; 2;

3; 1; 3.0; i8 5; s7 "three"; 4; 1; 3;
3; 1; 4.0; i8 4; s7 "four"; 4; 1; 3;

3; 1; 5.0; i8 4; s7 "five"; 4; 1; 4;
3; 1; 6.0; i8 3; s7 "six"; 4; 1; 5;
3; 2; 7.0; i8 5; s7 "seven"; 8.0; i8 5; s7 "eight"; 4; 2; 4; 5;
3; 1; 9.0; i8 4; s7 "nine"; 4; 1; 4;
3; 1; 10.0; i8 3; s7 "ten"; 4; 1; 5;

3; 1; s8 "a"; i8 19; s23 "value label for `a'"; 4; 1; 6;

3; 2;
s8 "bc"; i8 20; s23 "value label for `bc'";
s8 "de"; i8 20; s23 "value label for `de'";
4; 1; 7;

3; 1; s8 "fgh"; i8 21; s23 "value label for `fgh'"; 4; 1; 8;
3; 1; s8 "ijk"; i8 21; s23 "value label for `ijk'"; 4; 1; 8;

3; 1; s8 "lmno"; i8 22; s23 "value label for `lmno'"; 4; 1; 9;
3; 1; s8 "pqrs"; i8 22; s23 "value label for `pqrs'"; 4; 1; 10;
3; 2;
s8 "tuvw"; i8 22; s23 "value label for `tuvw'";
s8 "xyzA"; i8 22; s23 "value label for `xyzA'";
4; 2; 9; 10;
3; 1; s8 "BCDE"; i8 22; s23 "value label for `BCDE'"; 4; 1; 9;
3; 1; s8 "FGHI"; i8 22; s23 "value label for `FGHI'"; 4; 1; 10;

3; 1; s8 "JKLMNO"; i8 24; s31 "value label for `JKLMNO'"; 4; 1; 11;
3; 1; s8 "JKLMNOP"; i8 25; s31 "value label for `JKLMNOP'"; 4; 1; 12;
3; 1; s8 "JKLMNOPQ"; i8 26; s31 "value label for `JKLMNOPQ'"; 4; 1; 13;

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1251;

7; 20; 1; 12; "windows-1251";

7; 21; 1; COUNT (
COUNT("STR9"; i8 230); 9; 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");

COUNT("STR12"); 12; 2;
COUNT("0123456789ab"); COUNT("value label for `0123456789ab'");
COUNT("cdefghijklmn"); COUNT("value label for `cdefghijklmn'");

COUNT("STR16"); 16; 3;
COUNT("opqrstuvwxyzABCD"); COUNT("value label for `opqrstuvwxyzABCD'");
COUNT("EFGHIJKLMNOPQRST"); COUNT("value label for `EFGHIJKLMNOPQRST'");
COUNT("UVWXYZ0123456789"); COUNT("value label for `UVWXYZ0123456789' with Cyrillic letters: `"; i8 244; i8 245; i8 246; "'");

COUNT("STR17"); 17; 1;
COUNT("abcdefghijklmnopq"); COUNT("value label for `abcdefghijklmnopq'");
);

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:403: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:403"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:403"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:408: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:408"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:408"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:409: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:409"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,Unknown,Input,8,Right,F8.0,F8.0
num2,2,Unknown,Input,8,Right,F8.0,F8.0
num3,3,Unknown,Input,8,Right,F8.0,F8.0
num4,4,Unknown,Input,8,Right,F8.0,F8.0
num5,5,Unknown,Input,8,Right,F8.0,F8.0
str1,6,Nominal,Input,1,Left,A1,A1
str2,7,Nominal,Input,2,Left,A2,A2
str3,8,Nominal,Input,3,Left,A3,A3
str4,9,Nominal,Input,4,Left,A4,A4
str5,10,Nominal,Input,4,Left,A4,A4
str6,11,Nominal,Input,6,Left,A6,A6
str7,12,Nominal,Input,7,Left,A7,A7
str8,13,Nominal,Input,8,Left,A8,A8
str9ж,14,Nominal,Input,9,Left,A9,A9
str12,15,Nominal,Input,12,Left,A12,A12
str16,16,Nominal,Input,16,Left,A16,A16
str17,17,Nominal,Input,17,Left,A17,A17

Table: Value Labels
Variable Value,,Label
num1,1,один (in Russian)
num2,1,one
,2,two
num3,3,three
,4,four
num4,5,five
,7,seven
,8,eight
,9,nine
num5,6,six
,7,seven
,8,eight
,10,ten
str1,a,value label for \`a'
str2,bc,value label for \`bc'
,de,value label for \`de'
str3,fgh,value label for \`fgh'
,ijk,value label for \`ijk'
str4,BCDE,value label for \`BCDE'
,lmno,value label for \`lmno'
,tuvw,value label for \`tuvw'
,xyzA,value label for \`xyzA'
str5,FGHI,value label for \`FGHI'
,pqrs,value label for \`pqrs'
,tuvw,value label for \`tuvw'
,xyzA,value label for \`xyzA'
str6,JKLMNO,value label for \`JKLMNO'
str7,JKLMNOP,value label for \`JKLMNOP'
str8,JKLMNOPQ,value label for \`JKLMNOPQ'
str9ж,RSTUVWXYZ,value label for \`RSTUVWXYZ'
str12,0123456789ab,value label for \`0123456789ab'
,cdefghijklmn,value label for \`cdefghijklmn'
str16,EFGHIJKLMNOPQRST,value label for \`EFGHIJKLMNOPQRST'
,UVWXYZ0123456789,value label for \`UVWXYZ0123456789' with Cyrillic letters: \`фхц'
,opqrstuvwxyzABCD,value label for \`opqrstuvwxyzABCD'
str17,abcdefghijklmnopq,value label for \`abcdefghijklmnopq'
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:409"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_83
#AT_START_84
at_fn_group_banner 84 'sys-file-reader.at:472' \
  "documents" "                                      " 13
at_xfail=no
(
  printf "%s\n" "84. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 0; 0; 1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;

6; 5;
s80 "First line of documents";
s80 "Second line of documents";
"abb"; i8 233; " appliqu"; i8 233; " attach"; i8 233; " blas"; i8 233; " caf"; i8 233; " canap"; i8 233; " clich"; i8 233; " consomm"; i8 233;
s25 "";
s80 "";
s80 "Last line of documents";

7; 20; 1; 12; "windows-1252";

999; 0;

1.0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:511: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:511"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:511"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DOCUMENTS.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:517: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:517"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:517"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:518: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:518"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Documents
\"First line of documents
Second line of documents
abbé appliqué attaché blasé café canapé cliché consommé

Last line of documents\"

Table: Data List
num1
1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:518"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_84
#AT_START_85
at_fn_group_banner 85 'sys-file-reader.at:533' \
  "empty document record" "                          " 13
at_xfail=no
(
  printf "%s\n" "85. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 0; 0; 1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;

6; 0;

7; 20; 1; 12; "windows-1252";

999; 0;

1.0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:566: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:566"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:566"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:571: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:571"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:571"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:572: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:572"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
num1
1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:572"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_85
#AT_START_86
at_fn_group_banner 86 'sys-file-reader.at:580' \
  "variable sets" "                                  " 13
at_xfail=no
(
  printf "%s\n" "86. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 10; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; i8 0x82; i8 0xa0; s6 "";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "C";

2; 0; 0; 0; 0x050800 *2; s8 "D";
2; 0; 0; 0; 0x050800 *2; s8 "E";
2; 0; 0; 0; 0x050800 *2; s8 "F";
2; 0; 0; 0; 0x050800 *2; s8 "G";

2; 4; 0; 0; 0x010400 *2; s8 "H";
2; 4; 0; 0; 0x010400 *2; s8 "I";
2; 4; 0; 0; 0x010400 *2; s8 "J";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 932;

7; 5; 1;
COUNT(
  "Variable Set 1= "; i8 0x82; i8 0xa0; " b c"; i8 10;
  "vs2=d e f g"; i8 10;
  "c=h i j"; i8 13; i8 10;
  "d= e g i b f"; i8 10;
  "Empty Variable Set= "; i8 10);

7; 20; 1; 9; "shift_jis";

999; 0;
_ATEOF

cat >expout <<'_ATEOF'
                Variables
╭────┬────────┬────────────┬────────────╮
│Name│Position│Print Format│Write Format│
├────┼────────┼────────────┼────────────┤
│あ  │       1│F8.0        │F8.0        │
│b   │       2│F8.0        │F8.0        │
│c   │       3│F8.0        │F8.0        │
│d   │       4│F8.0        │F8.0        │
│e   │       5│F8.0        │F8.0        │
│f   │       6│F8.0        │F8.0        │
│g   │       7│F8.0        │F8.0        │
│h   │       8│A4          │A4          │
│i   │       9│A4          │A4          │
│j   │      10│A4          │A4          │
╰────┴────────┴────────────┴────────────╯

            Variable Sets
╭──────────────────────────┬────────╮
│Variable Set and Position │Variable│
├──────────────────────────┼────────┤
│Variable Set 1     1      │あ      │
│                   2      │b       │
│                   3      │c       │
├──────────────────────────┼────────┤
│vs2                1      │d       │
│                   2      │e       │
│                   3      │f       │
│                   4      │g       │
├──────────────────────────┼────────┤
│c                  1      │h       │
│                   2      │i       │
│                   3      │j       │
├──────────────────────────┼────────┤
│d                  1      │e       │
│                   2      │g       │
│                   3      │i       │
│                   4      │b       │
│                   5      │f       │
├──────────────────────────┼────────┤
│Empty Variable Set n/a    │(empty) │
╰──────────────────────────┴────────╯
_ATEOF

cat >sys-file-1.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY VARIABLES.
DISPLAY VARIABLE SETS.
SAVE OUTFILE='sys-file-2.sav'.
_ATEOF

cat >sys-file-2.sps <<'_ATEOF'
GET FILE='sys-file-2.sav'.
DISPLAY VARIABLES.
DISPLAY VARIABLE SETS.
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:682: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:682"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:682"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:683: rm -f sys-file-2.sav"
at_fn_check_prepare_trace "sys-file-reader.at:683"
( $at_check_trace; rm -f sys-file-2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:683"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:684: pspp --testing-mode -O box=unicode sys-file-1.sps"
at_fn_check_prepare_trace "sys-file-reader.at:684"
( $at_check_trace; pspp --testing-mode -O box=unicode sys-file-1.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:684"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:685: pspp --testing-mode -O box=unicode sys-file-2.sps"
at_fn_check_prepare_trace "sys-file-reader.at:685"
( $at_check_trace; pspp --testing-mode -O box=unicode sys-file-2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:685"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_86
#AT_START_87
at_fn_group_banner 87 'sys-file-reader.at:689' \
  "multiple response sets" "                         " 13
at_xfail=no
(
  printf "%s\n" "87. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 16; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; i8 0x82; i8 0xa0; s6 "";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "C";

2; 0; 0; 0; 0x050800 *2; s8 "D";
2; 0; 0; 0; 0x050800 *2; s8 "E";
2; 0; 0; 0; 0x050800 *2; s8 "F";
2; 0; 0; 0; 0x050800 *2; s8 "G";

2; 4; 0; 0; 0x010400 *2; s8 "H";
2; 4; 0; 0; 0x010400 *2; s8 "I";
2; 4; 0; 0; 0x010400 *2; s8 "J";

2; 0; 0; 0; 0x050800 *2; s8 "K";
2; 0; 0; 0; 0x050800 *2; s8 "L";
2; 0; 0; 0; 0x050800 *2; s8 "M";

2; 6; 0; 0; 0x010600 *2; s8 "N";
2; 6; 0; 0; 0x010600 *2; s8 "O";
2; 6; 0; 0; 0x010600 *2; s8 "P";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 932;

7; 7; 1;
COUNT(
  "$a=C 10 my mcgroup "; i8 0x82; i8 0xa0; " b c"; i8 10;
  "$b=D2 55 0  g e f d"; i8 10; i8 10;
  "$c=D4 "; i8 0x82; i8 0xcd; i8 0x82; i8 0xa2; " 10 mdgroup #2 h i j"; i8 10);

7; 19; 1;
COUNT(
  i8 10;
  "$d=E 1 2 34 13 third mdgroup k l m"; i8 10;
  "$e=E 11 6 choice 0  n o p"; i8 10; i8 10; i8 10; i8 10);

7; 20; 1; 9; "shift_jis";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:751: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:751"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:751"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
MRSETS /DISPLAY NAME=ALL.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:756: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:756"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:756"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:757: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:757"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Multiple Response Sets
Name,Label,Encoding,Counted Value,Member Variables
\$a,my mcgroup,Categories,,\"あ
b
c\"
\$b,,Dichotomies,55,\"g
e
f
d\"
\$c,mdgroup #2,Dichotomies,はい,\"h
i
j\"
\$d,third mdgroup,Dichotomies,34,\"k
l
m\"
\$e,,Dichotomies,choice,\"n
o
p\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:757"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_87
#AT_START_88
at_fn_group_banner 88 'sys-file-reader.at:782' \
  "extra product info" "                             " 13
at_xfail=no
(
  printf "%s\n" "88. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 4; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; "PSPP synthetic"; i8 13; s49 "test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "A";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "C";
2; 0; 0; 0; 0x050800 *2; s8 "D";

7; 10; 1; COUNT ("Extra product info"; i8 13; "another line"; i8 13; "blah");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:812: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:812"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:812"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
SYSFILE INFO FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:816: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:816"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:816"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:817: sed 8q pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:817"
( $at_check_trace; sed 8q pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Information
File,sys-file.sav
Label,\"PSPP synthetic
test file\"
Created,01 Jan 11 20:53:52 by \$(#) SPSS DATA FILE PSPP synthetic test file
Product,\"Extra product info
another line
blah\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:817"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_88
#AT_START_89
at_fn_group_banner 89 'sys-file-reader.at:830' \
  "variable display parameters, without width" "     " 13
at_xfail=no
(
  printf "%s\n" "89. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 19; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "A";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "C";
2; 0; 0; 0; 0x050800 *2; s8 "D";

2; 3; 0; 0; 0x010300 *2; s8 "H";
2; 3; 0; 0; 0x010300 *2; s8 "I";
2; 3; 0; 0; 0x010300 *2; s8 "J";
2; 3; 0; 0; 0x010300 *2; s8 "K";

2; 9; 0; 0; 0x010900 *2; s8 "L";
2; -1; 0; 0; 0; 0; s8 "";
2; 10; 0; 0; 0x010a00 *2; s8 "M";
2; -1; 0; 0; 0; 0; s8 "";
2; 17; 0; 0; 0x011100 *2; s8 "N";
( 2; -1; 0; 0; 0; 0; s8 "" ) * 2;
2; 25; 0; 0; 0x011900 *2; s8 "O";
( 2; -1; 0; 0; 0; 0; s8 "" ) * 3;

7; 11; 4; 24;
1; 0;
2; 0;
3; 0;
1; 1;
2; 1;
3; 1;
1; 2;
2; 2;
3; 2;
0; 0;
0; 1;
0; 2;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:888: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:888"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:888"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:893: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:893"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:893"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:894: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:894"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
a,1,Nominal,Input,8,Left,F8.0,F8.0
b,2,Ordinal,Input,8,Left,F8.0,F8.0
c,3,Scale,Input,8,Left,F8.0,F8.0
d,4,Nominal,Input,8,Right,F8.0,F8.0
h,5,Ordinal,Input,3,Right,A3,A3
i,6,Scale,Input,3,Right,A3,A3
j,7,Nominal,Input,3,Center,A3,A3
k,8,Ordinal,Input,3,Center,A3,A3
l,9,Scale,Input,9,Center,A9,A9
m,10,Nominal,Input,10,Left,A10,A10
n,11,Nominal,Input,17,Right,A17,A17
o,12,Nominal,Input,25,Center,A25,A25
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:894"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_89
#AT_START_90
at_fn_group_banner 90 'sys-file-reader.at:913' \
  "variable display parameters, with width" "        " 13
at_xfail=no
(
  printf "%s\n" "90. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 19; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "A";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "C";
2; 0; 0; 0; 0x050800 *2; s8 "D";

2; 3; 0; 0; 0x010300 *2; s8 "H";
2; 3; 0; 0; 0x010300 *2; s8 "I";
2; 3; 0; 0; 0x010300 *2; s8 "J";
2; 3; 0; 0; 0x010300 *2; s8 "K";

2; 9; 0; 0; 0x010900 *2; s8 "L";
2; -1; 0; 0; 0; 0; s8 "";
2; 10; 0; 0; 0x010a00 *2; s8 "M";
2; -1; 0; 0; 0; 0; s8 "";
2; 17; 0; 0; 0x011100 *2; s8 "N";
( 2; -1; 0; 0; 0; 0; s8 "" ) * 2;
2; 25; 0; 0; 0x011900 *2; s8 "O";
( 2; -1; 0; 0; 0; 0; s8 "" ) * 3;

7; 11; 4; 36;
1; 1; 0;
2; 2; 0;
3; 3; 0;
1; 4; 1;
2; 5; 1;
3; 6; 1;
1; 7; 2;
2; 8; 2;
3; 9; 2;
0; 10; 0;
0; 11; 1;
0; 12; 2;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:971: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:971"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:971"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:976: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:976"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:976"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:977: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:977"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
a,1,Nominal,Input,1,Left,F8.0,F8.0
b,2,Ordinal,Input,2,Left,F8.0,F8.0
c,3,Scale,Input,3,Left,F8.0,F8.0
d,4,Nominal,Input,4,Right,F8.0,F8.0
h,5,Ordinal,Input,5,Right,A3,A3
i,6,Scale,Input,6,Right,A3,A3
j,7,Nominal,Input,7,Center,A3,A3
k,8,Ordinal,Input,8,Center,A3,A3
l,9,Scale,Input,9,Center,A9,A9
m,10,Nominal,Input,10,Left,A10,A10
n,11,Nominal,Input,11,Right,A17,A17
o,12,Nominal,Input,12,Center,A25,A25
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:977"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_90
#AT_START_91
at_fn_group_banner 91 'sys-file-reader.at:996' \
  "long variable names" "                            " 13
at_xfail=no
(
  printf "%s\n" "91. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 7; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_A";
2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_B";
2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_C";
2; 0; 0; 0; 0x050800 *2; "CO"; i8 214; "RDINA";
2; 0; 0; 0; 0x050800 *2; "CO"; i8 214; "RDI_A";
2; 0; 0; 0; 0x050800 *2; "CO"; i8 214; "RDI_B";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;

7; 4; 8; 3; SYSMIS; HIGHEST; LOWEST;

7; 13; 1; COUNT (
"LONGVARI=LongVariableName1"; i8 9;
"LONGVA_A=LongVariableName2"; i8 9;
"LONGVA_B=LongVariableName3"; i8 9;
"LONGVA_C=LongVariableName4"; i8 9;
"CO"; i8 214; "RDINA=Co"; i8 246; "rdinate_X"; i8 9;
"CO"; i8 214; "RDI_A=Co"; i8 246; "rdinate_Y"; i8 9;
"CO"; i8 214; "RDI_B=Co"; i8 246; "rdinate_Z";
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1043: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1043"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1043"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1048: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1048"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1048"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1049: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1049"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
LongVariableName1,1,Unknown,Input,8,Right,F8.0,F8.0
LongVariableName2,2,Unknown,Input,8,Right,F8.0,F8.0
LongVariableName3,3,Unknown,Input,8,Right,F8.0,F8.0
LongVariableName4,4,Unknown,Input,8,Right,F8.0,F8.0
Coördinate_X,5,Unknown,Input,8,Right,F8.0,F8.0
Coördinate_Y,6,Unknown,Input,8,Right,F8.0,F8.0
Coördinate_Z,7,Unknown,Input,8,Right,F8.0,F8.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1049"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_91
#AT_START_92
at_fn_group_banner 92 'sys-file-reader.at:1063' \
  "very long strings" "                              " 13
at_xfail=no
(
  printf "%s\n" "92. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 109; 0; 0; 1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 255; 0; 0; 0x01FF00 *2; "S"; i8 201; s6 "Q256";
(2; -1; 0; 0; 0; 0; s8 "") * 31;
2; 4; 0; 0; 0x010400 *2; "S"; i8 201; "Q256_1";

2; 255; 0; 0; 0x01FF00 *2; s8 "STR600";
(2; -1; 0; 0; 0; 0; s8 "") * 31;
2; 255; 0; 0; 0x01FF00 *2; s8 "STR600_1";
(2; -1; 0; 0; 0; 0; s8 "") * 31;
2; 96; 0; 0; 0x016000 *2; s8 "STR600_2";
(2; -1; 0; 0; 0; 0; s8 "") * 11;

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;

7; 14; 1; COUNT (
"S"; i8 201; "Q256=00256"; i8 0; i8 9;
"STR600=00600"; i8 0; i8 9;
);

7; 20; 1; 12; "windows-1252";

999; 0;

"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#" * 4;
"abcdefgh";
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#" * 9;
"abcdefghijklmnopqrstuvwxyzABCDEF";
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1112: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1112"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1112"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1118: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1118"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1118"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1119: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1119"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
séq256,1,Nominal,Input,32,Left,A256,A256
str600,2,Nominal,Input,32,Left,A600,A600

Table: Data List
séq256,str600
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@a,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyz
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1119"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_92
#AT_START_93
at_fn_group_banner 93 'sys-file-reader.at:1132' \
  "data file and variable attributes" "              " 13
at_xfail=no
(
  printf "%s\n" "93. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 3; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
2; 0; 0; 0; 0x050800 *2; s8 "SECONDVA";
2; 0; 0; 0; 0x050800 *2; s8 "THIRDVAR";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;

7; 13; 1; COUNT (
"FIRSTVAR=FirstVariable"; i8 9;
"SECONDVA=S"; i8 233; "condVariable"; i8 9;
"THIRDVAR=ThirdVariable"; i8 9
);

7; 17; 1; COUNT (
"Attr1('Value1'"; i8 10; "''d"; i8 233; "claration''"; i8 10; ")";
"S"; i8 233; "condAttr('123'"; i8 10; "'456'"; i8 10; ")";
);

7; 18; 1; COUNT (
"FirstVariable:";
  "ad"; i8 232; "le('23'"; i8 10; "'34'"; i8 10; ")";
  "bert('123'"; i8 10; ")";
  "$@Role('1'"; i8 10; ")";
"/S"; i8 233; "condVariable:";
  "xyzzy('quux'"; i8 10; ")";
);

7; 18; 1; COUNT ("ThirdVariable:fizz('buzz'"; i8 10; ")";);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1189: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1189"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1189"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY @ATTRIBUTES.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1194: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1194"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1194"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1195: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1195"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variable and Dataset Attributes
Variable and Name,,Value
(dataset),Attr1[1],Value1
,Attr1[2],'déclaration'
,SécondAttr[1],123
,SécondAttr[2],456
FirstVariable,\$@Role,1
,adèle[1],23
,adèle[2],34
,bert,123
SécondVariable,xyzzy,quux
ThirdVariable,fizz,buzz
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1195"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1213: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1213"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1213"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1214: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1214"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
FirstVariable,1,Unknown,Output,8,Right,F8.0,F8.0
SécondVariable,2,Unknown,Input,8,Right,F8.0,F8.0
ThirdVariable,3,Unknown,Input,8,Right,F8.0,F8.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1214"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_93
#AT_START_94
at_fn_group_banner 94 'sys-file-reader.at:1224' \
  "variable roles" "                                 " 13
at_xfail=no
(
  printf "%s\n" "94. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 7; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "I";
2; 0; 0; 0; 0x050800 *2; s8 "O";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "N";
2; 0; 0; 0; 0x050800 *2; s8 "P";
2; 0; 0; 0; 0x050800 *2; s8 "S";
2; 0; 0; 0; 0x050800 *2; s8 "X";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;

7; 18; 1; COUNT (
"I:$@Role('0'"; i8 10; ")";
"/O:$@Role('1'"; i8 10; ")";
"/B:$@Role('2'"; i8 10; ")";
"/N:$@Role('3'"; i8 10; ")";
"/P:$@Role('4'"; i8 10; ")";
"/S:$@Role('5'"; i8 10; ")";
"/X:$@Role('6'"; i8 10; ")";
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1268: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1268"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1268"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1273: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1273"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav': Invalid role for variable x.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1273"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1276: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1276"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav': Invalid role for variable x.

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
i,1,Unknown,Input,8,Right,F8.0,F8.0
o,2,Unknown,Output,8,Right,F8.0,F8.0
b,3,Unknown,Both,8,Right,F8.0,F8.0
n,4,Unknown,None,8,Right,F8.0,F8.0
p,5,Unknown,Partition,8,Right,F8.0,F8.0
s,6,Unknown,Split,8,Right,F8.0,F8.0
x,7,Unknown,Input,8,Right,F8.0,F8.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1276"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_94
#AT_START_95
at_fn_group_banner 95 'sys-file-reader.at:1292' \
  "compressed data" "                                " 13
at_xfail=no
(
  printf "%s\n" "95. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 6; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

2; 4; 0; 0; 0x010400 *2; s8 "STR4";
2; 8; 0; 0; 0x010800 *2; s8 "STR8";
2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
2; -1; 0; 0; 0; 0; s8 "";

7; 20; 1; 12; "windows-1252";

999; 0;

i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";

_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1330: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1330"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1330"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1336: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1336"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1336"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1337: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1337"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,Unknown,Input,8,Right,F8.0,F8.0
num2,2,Unknown,Input,8,Right,F8.0,F8.0
str4,3,Nominal,Input,4,Left,A4,A4
str8,4,Nominal,Input,8,Left,A8,A8
str15,5,Nominal,Input,15,Left,A15,A15

Table: Data List
num1,num2,str4,str8,str15
-99,0,,abcdefgh,0123
.,151,jklm,nopqrstu,vwxyzABC
1,2,DEFG,HIJKLMNO,PQRSTUV
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1337"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_95
#AT_START_96
at_fn_group_banner 96 'sys-file-reader.at:1355' \
  "compressed data, zero bias" "                     " 13
at_xfail=no
(
  printf "%s\n" "96. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 6; 1; 0; -1; 0.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

2; 4; 0; 0; 0x010400 *2; s8 "STR4";
2; 8; 0; 0; 0x010800 *2; s8 "STR8";
2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
2; -1; 0; 0; 0; 0; s8 "";

7; 20; 1; 12; "windows-1252";

999; 0;

i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";

_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1393: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1393"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1393"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1399: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1399"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1399"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1400: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1400"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,Unknown,Input,8,Right,F8.0,F8.0
num2,2,Unknown,Input,8,Right,F8.0,F8.0
str4,3,Nominal,Input,4,Left,A4,A4
str8,4,Nominal,Input,8,Left,A8,A8
str15,5,Nominal,Input,15,Left,A15,A15

Table: Data List
num1,num2,str4,str8,str15
1,100,,abcdefgh,0123
.,251,jklm,nopqrstu,vwxyzABC
101,102,DEFG,HIJKLMNO,PQRSTUV
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1400"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_96
#AT_START_97
at_fn_group_banner 97 'sys-file-reader.at:1418' \
  "compressed data, other bias" "                    " 13
at_xfail=no
(
  printf "%s\n" "97. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 6; 1; 0; -1; 50.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

2; 4; 0; 0; 0x010400 *2; s8 "STR4";
2; 8; 0; 0; 0x010800 *2; s8 "STR8";
2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
2; -1; 0; 0; 0; 0; s8 "";

7; 20; 1; 12; "windows-1252";

999; 0;

i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";

_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1456: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1456"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1456"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1462: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1462"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1462"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1465: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1465"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format.\"

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,Unknown,Input,8,Right,F8.0,F8.0
num2,2,Unknown,Input,8,Right,F8.0,F8.0
str4,3,Nominal,Input,4,Left,A4,A4
str8,4,Nominal,Input,8,Left,A8,A8
str15,5,Nominal,Input,15,Left,A15,A15

Table: Data List
num1,num2,str4,str8,str15
-49,50,,abcdefgh,0123
.,201,jklm,nopqrstu,vwxyzABC
51,52,DEFG,HIJKLMNO,PQRSTUV
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1465"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_97
#AT_START_98
at_fn_group_banner 98 'sys-file-reader.at:1554' \
  "zcompressed data" "                               " 13
at_xfail=no
(
  printf "%s\n" "98. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1558: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1558"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1558"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1564: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1564"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1564"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1565: cat pspp.csv"
at_fn_check_prepare_trace "sys-file-reader.at:1565"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,Unknown,Input,8,Right,F8.0,F8.0
num2,2,Unknown,Input,8,Right,F8.0,F8.0
str4,3,Nominal,Input,4,Left,A4,A4
str8,4,Nominal,Input,8,Left,A8,A8
str15,5,Nominal,Input,15,Left,A15,A15

Table: Data List
num1,num2,str4,str8,str15
-99,0,,abcdefgh,0123
.,151,jklm,nopqrstu,vwxyzABC
1,2,DEFG,HIJKLMNO,PQRSTUV
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1565"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_98
#AT_START_99
at_fn_group_banner 99 'sys-file-reader.at:1585' \
  "no variables" "                                   " 14
at_xfail=no
(
  printf "%s\n" "99. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 0; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1606: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1606"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1606"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1610: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1610"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "sys-file.sps:1: error: GET: \`sys-file.sav': Data file dictionary has no variables.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:1610"
$at_failed && at_fn_log_failure
$at_traceon; }


      { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1616: pspp-convert sys-file.sav sys-file.txt"
at_fn_check_prepare_trace "sys-file-reader.at:1616"
( $at_check_trace; pspp-convert sys-file.sav sys-file.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1616"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1617: cat sys-file.txt"
at_fn_check_prepare_trace "sys-file-reader.at:1617"
( $at_check_trace; cat sys-file.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1617"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_99
#AT_START_100
at_fn_group_banner 100 'sys-file-reader.at:1622' \
  "unspecified character encoding" "                 " 14
at_xfail=no
(
  printf "%s\n" "100. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 4; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52";
"PSPP synthetic test file: "; i8 244; i8 245; i8 246; i8 248; s34 "";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "A";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "C";
2; 0; 0; 0; 0x050800 *2; s8 "D";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1647: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1647"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1647"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET 'sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1651: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1651"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1651"
$at_failed && at_fn_log_failure
$at_traceon; }

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1652: sed 's/default encoding.*For/default encoding.  For/' stdout"
at_fn_check_prepare_trace "sys-file-reader.at:1652"
( $at_check_trace; sed 's/default encoding.*For/default encoding.  For/' stdout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav': This system file does not indicate its own character encoding.  Using default encoding.  For best results, specify an encoding explicitly.  Use SYSFILE INFO with ENCODING=\"\"DETECT\"\" to analyze the possible encodings.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1652"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_100
#AT_START_101
at_fn_group_banner 101 'sys-file-reader.at:1658' \
  "misplaced type 4 record" "                        " 14
at_xfail=no
(
  printf "%s\n" "101. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

>>4<<;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1672: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1672"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1672"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1675: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1675"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xd4: Misplaced type 4 record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:1675"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_101
#AT_START_102
at_fn_group_banner 102 'sys-file-reader.at:1681' \
  "bad record type" "                                " 14
at_xfail=no
(
  printf "%s\n" "102. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

>>8<<;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1695: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1695"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1695"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1698: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1698"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xd4: Unrecognized record type 8.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:1698"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_102
#AT_START_103
at_fn_group_banner 103 'sys-file-reader.at:1704' \
  "wrong number of variable positions" "             " 14
at_xfail=no
(
  printf "%s\n" "103. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; >>2<<; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1721: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1721"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1721"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1724: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1724"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav': File header claims 2 variable positions but 1 were read from file.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1724"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_103
#AT_START_104
at_fn_group_banner 104 'sys-file-reader.at:1730' \
  "variable name may not begin with \`#'" "           " 14
at_xfail=no
(
  printf "%s\n" "104. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 >>"$UM1"<<;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1747: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1747"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1747"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1750: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1750"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xb4: Renaming variable with invalid or duplicate name \`\$UM1' to \`UM1'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1750"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_104
#AT_START_105
at_fn_group_banner 105 'sys-file-reader.at:1756' \
  "variable name may not be reserved word" "         " 14
at_xfail=no
(
  printf "%s\n" "105. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 >>"TO"<<;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1773: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1773"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1773"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1776: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1776"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xb4: Renaming variable with invalid or duplicate name \`TO' to \`TO_A'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1776"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_105
#AT_START_106
at_fn_group_banner 106 'sys-file-reader.at:1782' \
  "variable width must be between 0 and 255" "       " 14
at_xfail=no
(
  printf "%s\n" "106. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 256; 0; 0; 0x050800 *2; s8 "VAR1";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1799: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1799"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1799"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1802: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1802"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xb4: Bad width 256 for variable VAR1.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:1802"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_106
#AT_START_107
at_fn_group_banner 107 'sys-file-reader.at:1810' \
  "duplicate variable name" "                        " 14
at_xfail=no
(
  printf "%s\n" "107. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "VAR1";
2; 0; 0; 0; 0x050800 *2; s8 "VAR1";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1828: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1828"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1828"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1832: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1832"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd4: Renaming variable with invalid or duplicate name \`VAR1' to \`VAR1_A'.

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
var1,1,Unknown,Input,8,Right,F8.0,F8.0
var1_a,2,Unknown,Input,8,Right,F8.0,F8.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1832"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_107
#AT_START_108
at_fn_group_banner 108 'sys-file-reader.at:1843' \
  "variable label indicator not 0 or 1" "            " 14
at_xfail=no
(
  printf "%s\n" "108. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; >>2<<; 0; 0x050800 *2; s8 "VAR1";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1860: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1860"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1860"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1863: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1863"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xb4: Variable label indicator field is not 0 or 1.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:1863"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_108
#AT_START_109
at_fn_group_banner 109 'sys-file-reader.at:1869' \
  "invalid numeric missing value indicator" "        " 14
at_xfail=no
(
  printf "%s\n" "109. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; >>-1<<; 0x050800 *2; s8 "VAR1";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1886: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1886"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1886"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1889: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1889"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"error: \`sys-file.sav' near offset 0xb4: Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:1889"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_109
#AT_START_110
at_fn_group_banner 110 'sys-file-reader.at:1895' \
  "invalid string missing value indicator" "         " 14
at_xfail=no
(
  printf "%s\n" "110. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 8; 0; >>4<<; 0x010800 *2; s8 "VAR1";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1912: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1912"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1912"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1915: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1915"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"error: \`sys-file.sav' near offset 0xb4: String missing value indicator field is not 0, 1, 2, or 3.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:1915"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_110
#AT_START_111
at_fn_group_banner 111 'sys-file-reader.at:1921' \
  "missing string continuation record" "             " 14
at_xfail=no
(
  printf "%s\n" "111. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 10; 0; 0; 0x010a00 *2; s8 "VAR1";
>>2; 0; 0; 0; 0x050800 *2; s8 "VAR2";<<

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1939: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1939"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1939"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1942: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1942"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xb4: Missing string continuation record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:1942"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_111
#AT_START_112
at_fn_group_banner 112 'sys-file-reader.at:1948' \
  "invalid variable format" "                        " 14
at_xfail=no
(
  printf "%s\n" "112. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 4; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; >>0xff0800; 0<<; s8 "NUM1";

2; 0; 0; 0; >>0x010800<<; >>0x021000<<; s8 "VAR1";

2; 4; 0; 0; >>0x050800<<; >>0x110a01<<; s8 "STR1";

2; 4; 0; 0; >>0x010800<<; >>0x020400<<; s8 "STR2";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1976: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:1976"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1976"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:1979: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:1979"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xc0: Variable NUM1 with width 0 has invalid print format 0xff0800.

warning: \`sys-file.sav' near offset 0xe0: Variable VAR1 with width 0 has invalid print format 0x10800.

warning: \`sys-file.sav' near offset 0xe4: Variable VAR1 with width 0 has invalid write format 0x21000.

warning: \`sys-file.sav' near offset 0x100: Variable STR1 with width 4 has invalid print format 0x50800.

warning: \`sys-file.sav' near offset 0x104: Variable STR1 with width 4 has invalid write format 0x110a01.

warning: \`sys-file.sav' near offset 0x120: Variable STR2 with width 4 has invalid print format 0x10800.

warning: \`sys-file.sav' near offset 0x124: Variable STR2 with width 4 has invalid write format 0x20400.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:1979"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_112
#AT_START_113
at_fn_group_banner 113 'sys-file-reader.at:1997' \
  "invalid long string missing values" "             " 14
at_xfail=no
(
  printf "%s\n" "113. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 7; 0; 0; 1; 100.0; "01 Jan 11"; "20:53:52";
"PSPP synthetic test file: "; i8 244; i8 245; i8 246; i8 248; s34 "";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

2; 9; 0; 0; 0x010900 *2; s8 "STR1";
2; -1; 0; 0; 0; 0; s8 "";
2; 10; 0; 0; 0x010a00 *2; s8 "STR2";
2; -1; 0; 0; 0; 0; s8 "";
2; 11; 0; 0; 0x010b00 *2; s8 "STR3";
2; -1; 0; 0; 0; 0; s8 "";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;

7; 4; 8; 3; SYSMIS; HIGHEST; LOWEST;

7; 22; 1; COUNT (
COUNT("STR1"); i8 >>0<<; 8;

COUNT("STR2"); i8 4; 8;
"abcdefgh"; "ijklmnop"; "qrstuvwx"; "yz012345";

COUNT(>>"Nonexistent"<<); i8 1; 8; "abcdefgh";

COUNT(>>"NUM1"<<); i8 1; 8; "abcdefgh";

COUNT("STR3"); i8 1; >>COUNT("abcdefghijkl")<<;

COUNT("STR3"); i8 2; 8; "ABCDEFGH"; >>8<<; "IJKLMNOP";
);

7; 20; 1; 12; "windows-1252";

999; 0;
s8 "abcd"; s8 "efgh"; s8 "ijkl"; s8 "mnop"; s8 "qrst"; s8 "uvwx";
s16 "yzABCDEFGHI"; s16 "JKLMNOPQR"; s16 "STUVWXYZ01";
s16 "23456789abc"; s32 "defghijklmnopqstuvwxyzABC";
_ATEOF


for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2064: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2064"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2064"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2069: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2069"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0x1f8: Long string missing values record says variable STR1 has 0 missing values, but only 1 to 3 missing values are allowed.\"

\"warning: \`sys-file.sav' near offset 0x205: Long string missing values record says variable STR2 has 4 missing values, but only 1 to 3 missing values are allowed.\"

warning: \`sys-file.sav' near offset 0x23a: Ignoring long string missing value record for unknown variable Nonexistent.

warning: \`sys-file.sav' near offset 0x24f: Ignoring long string missing value record for numeric variable NUM1.

\"warning: \`sys-file.sav' near offset 0x268: Ignoring long string missing value 0 for variable str3, with width 11, that has bad value width 12.\"

\"warning: \`sys-file.sav' near offset 0x289: This file has corrupted metadata written by a buggy version of PSPP.  To fix it, save a new copy of the file.\"

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
num1,1,Unknown,Input,8,Right,F8.0,F8.0,
str1,2,Nominal,Input,9,Left,A9,A9,
str2,3,Nominal,Input,10,Left,A10,A10,\"\"\"abcdefgh\"\"; \"\"ijklmnop\"\"; \"\"qrstuvwx\"\"\"
str3,4,Nominal,Input,11,Left,A11,A11,\"\"\"ABCDEFGH\"\"; \"\"IJKLMNOP\"\"\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2069"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_113
#AT_START_114
at_fn_group_banner 114 'sys-file-reader.at:2092' \
  "weighting variable must be numeric" "             " 14
at_xfail=no
(
  printf "%s\n" "114. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; >>2<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

2; 4; 0; 0; 0x010400 *2; s8 "STR1";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2112: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2112"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2112"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2116: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2116"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x4c: Ignoring string variable \`STR1' set as weighting variable.

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,Unknown,Input,8,Right,F8.0,F8.0
str1,2,Nominal,Input,4,Left,A4,A4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2116"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_114
#AT_START_115
at_fn_group_banner 115 'sys-file-reader.at:2127' \
  "bad weighting variable index" "                   " 14
at_xfail=no
(
  printf "%s\n" "115. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; >>3<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

2; 4; 0; 0; 0x010400 *2; s8 "STR1";

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2147: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2147"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2147"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2150: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2150"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x4c: Weight variable index 3 not in valid range 1...2.  Treating file as unweighted.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2150"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_115
#AT_START_116
at_fn_group_banner 116 'sys-file-reader.at:2156' \
  "variable index is long string continuation" "     " 14
at_xfail=no
(
  printf "%s\n" "116. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 3; 1; >>3<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

2; 9; 0; 0; 0x010900 *2; s8 "STR1";
(2; -1; 0; 0; 0; 0; s8 "");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2177: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2177"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2177"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2180: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2180"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x4c: Weight variable index 3 refers to long string continuation.  Treating file as unweighted.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2180"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_116
#AT_START_117
at_fn_group_banner 117 'sys-file-reader.at:2186' \
  "multiple documents records" "                     " 14
at_xfail=no
(
  printf "%s\n" "117. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

(6; 1; s80 "One line of documents") >>* 2<<;

7; 20; 1; 12; "windows-1252";

999; 0;

1.0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2210: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2210"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2210"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2214: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2214"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x14c: Duplicate type 6 (document) record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2214"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_117
#AT_START_118
at_fn_group_banner 118 'sys-file-reader.at:2221' \
  "extension record too large" "                     " 14
at_xfail=no
(
  printf "%s\n" "118. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 3; >>0xfffff000 * 2<<;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2235: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2235"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2235"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2239: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2239"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xd8: Record type 7 subtype 3 too large.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:2239"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_118
#AT_START_119
at_fn_group_banner 119 'sys-file-reader.at:2245' \
  "unknown extension record" "                       " 14
at_xfail=no
(
  printf "%s\n" "119. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 30; 1; 1; i8 0;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2265: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2265"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2265"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2269: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2269"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0xd8: Unrecognized record type 7, subtype 30.  For help, please send this file to ${PACKAGE_BUGREPORT} and mention that you were using ${PACKAGE_STRING}.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2269"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_119
#AT_START_120
at_fn_group_banner 120 'sys-file-reader.at:2275' \
  "bad machine integer info size" "                  " 14
at_xfail=no
(
  printf "%s\n" "120. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 3; 4; >>9<<; 1; 2; 3; -1; 1; 1; ENDIAN; 1252; >>1234<<;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2295: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2295"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2295"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2299: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2299"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0xd8: Record type 7, subtype 3 has bad count 9 (expected 8).\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2299"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_120
#AT_START_121
at_fn_group_banner 121 'sys-file-reader.at:2305' \
  "bad machine integer info float format" "          " 14
at_xfail=no
(
  printf "%s\n" "121. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 3; 4; 8; 1; 2; 3; -1; >>2<<; 1; ENDIAN; 1252;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2325: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2325"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2325"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2329: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2329"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xd8: Floating-point representation indicated by system file (2) differs from expected (1).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:2329"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_121
#AT_START_122
at_fn_group_banner 122 'sys-file-reader.at:2335' \
  "bad machine integer info endianness" "            " 14
at_xfail=no
(
  printf "%s\n" "122. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; >>3<<; 1252;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in "be 1" "le 2"; do
  set $variant
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2356: sack --\$1 sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$1 sys-file.sack > sys-file.sav" "sys-file-reader.at:2356"
( $at_check_trace; sack --$1 sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2356"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY DICTIONARY.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2361: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2361"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Integer format indicated by system file (3) differs from expected ($2).

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
num1,1,Unknown,Input,8,Right,F8.0,F8.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2361"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_122
#AT_START_123
at_fn_group_banner 123 'sys-file-reader.at:2372' \
  "bad machine floating-point info size" "           " 14
at_xfail=no
(
  printf "%s\n" "123. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 4; 8; >>4<<; SYSMIS; HIGHEST; LOWEST; 0.0;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2392: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2392"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2392"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2396: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2396"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0xd8: Record type 7, subtype 4 has bad count 4 (expected 3).\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2396"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_123
#AT_START_124
at_fn_group_banner 124 'sys-file-reader.at:2402' \
  "wrong special floating point values" "            " 14
at_xfail=no
(
  printf "%s\n" "124. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 4; 8; 3; >>0.0<<; >>1.0<<; >>2.0<<;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2422: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2422"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2422"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2425: pspp -O format=csv sys-file.sps | sed 's/ (.*/.../'"
at_fn_check_prepare_notrace 'a shell pipeline' "sys-file-reader.at:2425"
( $at_check_trace; pspp -O format=csv sys-file.sps | sed 's/ (.*/.../'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0xd8: File specifies unexpected value 0...

\"warning: \`sys-file.sav' near offset 0xd8: File specifies unexpected value 1...

\"warning: \`sys-file.sav' near offset 0xd8: File specifies unexpected value 2...
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2425"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_124
#AT_START_125
at_fn_group_banner 125 'sys-file-reader.at:2435' \
  "unknown variables in variable sets" "             " 14
at_xfail=no
(
  printf "%s\n" "125. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 10; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; i8 0x82; i8 0xa0; s6 "";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "C";

2; 0; 0; 0; 0x050800 *2; s8 "D";
2; 0; 0; 0; 0x050800 *2; s8 "E";
2; 0; 0; 0; 0x050800 *2; s8 "F";
2; 0; 0; 0; 0x050800 *2; s8 "G";

2; 4; 0; 0; 0x010400 *2; s8 "H";
2; 4; 0; 0; 0x010400 *2; s8 "I";
2; 4; 0; 0; 0x010400 *2; s8 "J";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 932;

7; 5; 1;
COUNT(
  "Variable Set 1= "; i8 0x82; i8 0xa0; " "; >>"xyzzy"<<; " b c"; i8 10;
  "vs2=d "; >>"foo"<<; " e f g"; i8 10;);

7; 20; 1; 9; "shift_jis";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2480: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2480"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2480"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
DISPLAY VARIABLES.
DISPLAY VARIABLE SETS.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2486: pspp --testing-mode -O box=unicode sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2486"
( $at_check_trace; pspp --testing-mode -O box=unicode sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x228: Variable set Variable Set 1 contains
unknown variable xyzzy.

warning: \`sys-file.sav' near offset 0x228: Variable set vs2 contains unknown
variable foo.

                Variables
╭────┬────────┬────────────┬────────────╮
│Name│Position│Print Format│Write Format│
├────┼────────┼────────────┼────────────┤
│あ  │       1│F8.0        │F8.0        │
│b   │       2│F8.0        │F8.0        │
│c   │       3│F8.0        │F8.0        │
│d   │       4│F8.0        │F8.0        │
│e   │       5│F8.0        │F8.0        │
│f   │       6│F8.0        │F8.0        │
│g   │       7│F8.0        │F8.0        │
│h   │       8│A4          │A4          │
│i   │       9│A4          │A4          │
│j   │      10│A4          │A4          │
╰────┴────────┴────────────┴────────────╯

            Variable Sets
╭──────────────────────────┬────────╮
│Variable Set and Position │Variable│
├──────────────────────────┼────────┤
│Variable Set 1     1      │あ      │
│                   2      │b       │
│                   3      │c       │
├──────────────────────────┼────────┤
│vs2                1      │d       │
│                   2      │e       │
│                   3      │f       │
│                   4      │g       │
╰──────────────────────────┴────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2486"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_125
#AT_START_126
at_fn_group_banner 126 'sys-file-reader.at:2526' \
  "bad mrsets name" "                                " 14
at_xfail=no
(
  printf "%s\n" "126. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 16; 0; 0; 0; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; i8 0x82; i8 0xa0; s6 "";
2; 0; 0; 0; 0x050800 *2; s8 "B";
2; 0; 0; 0; 0x050800 *2; s8 "C";

2; 0; 0; 0; 0x050800 *2; s8 "D";
2; 0; 0; 0; 0x050800 *2; s8 "E";
2; 0; 0; 0; 0x050800 *2; s8 "F";
2; 0; 0; 0; 0x050800 *2; s8 "G";

2; 4; 0; 0; 0x010400 *2; s8 "H";
2; 4; 0; 0; 0x010400 *2; s8 "I";
2; 4; 0; 0; 0x010400 *2; s8 "J";

2; 0; 0; 0; 0x050800 *2; s8 "K";
2; 0; 0; 0; 0x050800 *2; s8 "L";
2; 0; 0; 0; 0x050800 *2; s8 "M";

2; 6; 0; 0; 0x010600 *2; s8 "N";
2; 6; 0; 0; 0x010600 *2; s8 "O";
2; 6; 0; 0; 0x010600 *2; s8 "P";

7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 932;

7; 7; 1;
COUNT(
  "$a=C 10 my mcgroup "; i8 0x82; i8 0xa0; " b c"; i8 10;
  "b=D2 55 0  g e f d"; i8 10;
  "$c=D4 "; i8 0x82; i8 0xcd; i8 0x82; i8 0xa2; " 10 mdgroup #2 h i j"; i8 10);

7; 19; 1;
COUNT(
  "$d=E 1 2 34 13 third mdgroup k l m"; i8 10;
  "e=E 11 6 choice 0  n o p"; i8 10);

7; 20; 1; 9; "shift_jis";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2587: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2587"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2587"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
MRSETS /DISPLAY NAME=ALL.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2591: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2591"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav': Invalid multiple response set name \`b'.

warning: \`sys-file.sav': Invalid multiple response set name \`e'.

Table: Multiple Response Sets
Name,Label,Encoding,Counted Value,Member Variables
\$a,my mcgroup,Categories,,\"あ
b
c\"
\$c,mdgroup #2,Dichotomies,はい,\"h
i
j\"
\$d,third mdgroup,Dichotomies,34,\"k
l
m\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2591"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_126
#AT_START_127
at_fn_group_banner 127 'sys-file-reader.at:2611' \
  "missing space after C in mrsets" "                " 14
at_xfail=no
(
  printf "%s\n" "127. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=Cx");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2630: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2630"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2630"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2633: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2633"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Missing space following \`C' at offset 4 in MRSETS record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2633"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_127
#AT_START_128
at_fn_group_banner 128 'sys-file-reader.at:2639' \
  "missing space after E in mrsets" "                " 14
at_xfail=no
(
  printf "%s\n" "128. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=Ex");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2658: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2658"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2658"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2661: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2661"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Missing space following \`E' at offset 4 in MRSETS record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2661"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_128
#AT_START_129
at_fn_group_banner 129 'sys-file-reader.at:2667' \
  "missing label source in mrsets" "                 " 14
at_xfail=no
(
  printf "%s\n" "129. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=E ");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2686: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2686"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2686"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2689: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2689"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Missing label source value following \`E' at offset 5 in MRSETS record.

warning: \`sys-file.sav' near offset 0xd8: Expecting digit at offset 5 in MRSETS record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2689"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_129
#AT_START_130
at_fn_group_banner 130 'sys-file-reader.at:2697' \
  "unexpected label source in mrsets" "              " 14
at_xfail=no
(
  printf "%s\n" "130. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=E 2");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2716: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2716"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2716"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2719: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2719"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Unexpected label source value following \`E' at offset 7 in MRSETS record.

warning: \`sys-file.sav' near offset 0xd8: Expecting digit at offset 7 in MRSETS record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2719"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_130
#AT_START_131
at_fn_group_banner 131 'sys-file-reader.at:2727' \
  "bad type character in mrsets" "                   " 14
at_xfail=no
(
  printf "%s\n" "131. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2746: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2746"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2746"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2749: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2749"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0xd8: Missing \`C', \`D', or \`E' at offset 3 in MRSETS record.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2749"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_131
#AT_START_132
at_fn_group_banner 132 'sys-file-reader.at:2755' \
  "bad counted string length in mrsets" "            " 14
at_xfail=no
(
  printf "%s\n" "132. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=Dx");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2774: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2774"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2774"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2777: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2777"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Expecting digit at offset 4 in MRSETS record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2777"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_132
#AT_START_133
at_fn_group_banner 133 'sys-file-reader.at:2783' \
  "missing space in counted string in mrsets" "      " 14
at_xfail=no
(
  printf "%s\n" "133. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=D1x");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2802: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2802"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2802"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2805: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2805"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Expecting space at offset 5 in MRSETS record.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2805"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_133
#AT_START_134
at_fn_group_banner 134 'sys-file-reader.at:2811' \
  "counted string too long in mrsets" "              " 14
at_xfail=no
(
  printf "%s\n" "134. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=D4 abc");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2830: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2830"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2830"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2833: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2833"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: 4-byte string starting at offset 6 exceeds record length 9.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2833"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_134
#AT_START_135
at_fn_group_banner 135 'sys-file-reader.at:2839' \
  "missing space after counted string in mrsets" "   " 14
at_xfail=no
(
  printf "%s\n" "135. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=D3 abcx");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2858: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2858"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2858"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2861: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2861"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Expecting space at offset 9 following 3-byte string.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2861"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_135
#AT_START_136
at_fn_group_banner 136 'sys-file-reader.at:2867' \
  "missing newline after variable name in mrsets" "  " 14
at_xfail=no
(
  printf "%s\n" "136. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=C 0  NUM1");

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2886: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2886"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2886"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2889: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2889"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Missing new-line parsing variable names at offset 13 in MRSETS record.

warning: \`sys-file.sav': MRSET \$a has only one variable.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2889"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_136
#AT_START_137
at_fn_group_banner 137 'sys-file-reader.at:2897' \
  "duplicate variable name in mrsets" "              " 14
at_xfail=no
(
  printf "%s\n" "137. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=C 0  NUM1 NUM1"; i8 10);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2916: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2916"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2916"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2919: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2919"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav': MRSET \$a contains duplicate variable name NUM1.

warning: \`sys-file.sav': MRSET \$a has only one variable.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2919"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_137
#AT_START_138
at_fn_group_banner 138 'sys-file-reader.at:2927' \
  "mixed variable types in mrsets" "                 " 14
at_xfail=no
(
  printf "%s\n" "138. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 8; 0; 0; 0x010800 *2; s8 "STR1";

7; 7; 1; COUNT("$a=C 0  NUM1 STR1"; i8 10);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2947: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2947"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2947"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2950: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2950"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav': MRSET \$a contains both string and numeric variables.

warning: \`sys-file.sav': MRSET \$a has only one variable.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2950"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_138
#AT_START_139
at_fn_group_banner 139 'sys-file-reader.at:2958' \
  "missing newline after variable name in mrsets" "  " 14
at_xfail=no
(
  printf "%s\n" "139. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=C 0  NUM1"; i8 10);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2977: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:2977"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2977"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:2980: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:2980"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav': MRSET \$a has only one variable.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:2980"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_139
#AT_START_140
at_fn_group_banner 140 'sys-file-reader.at:2986' \
  "zero or one variable in mrset" "                  " 14
at_xfail=no
(
  printf "%s\n" "140. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 7; 1; COUNT("$a=C 0  NUM1"; i8 10; "$b=C 0  "; i8 10);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3005: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3005"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3005"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3008: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3008"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav': MRSET \$a has only one variable.

warning: \`sys-file.sav': MRSET \$b has no variables.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3008"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_140
#AT_START_141
at_fn_group_banner 141 'sys-file-reader.at:3016' \
  "wrong display parameter size" "                   " 14
at_xfail=no
(
  printf "%s\n" "141. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 11; >>8<<; 2; 1.0; 1.0;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3036: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3036"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3036"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3039: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3039"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0xd8: Record type 7, subtype 11 has bad size 8 (expected 4).\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3039"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_141
#AT_START_142
at_fn_group_banner 142 'sys-file-reader.at:3045' \
  "wrong display parameter count" "                  " 14
at_xfail=no
(
  printf "%s\n" "142. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 11; 4; >>4<<; 1; 1; 2; 2;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3065: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3065"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3065"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3068: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3068"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Extension 11 has bad count 4 (for 1 variables).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3068"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_142
#AT_START_143
at_fn_group_banner 143 'sys-file-reader.at:3074' \
  "wrong display measurement level" "                " 14
at_xfail=no
(
  printf "%s\n" "143. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 11; 4; 2; >>4<<; 0;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3094: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3094"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3094"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3097: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3097"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Invalid variable display parameters for variable 0 (NUM1).  Default parameters substituted.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3097"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_143
#AT_START_144
at_fn_group_banner 144 'sys-file-reader.at:3103' \
  "wrong display alignment" "                        " 14
at_xfail=no
(
  printf "%s\n" "144. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 11; 4; 2; 1; >>-1<<;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3123: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3123"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3123"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3126: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3126"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: Invalid variable display parameters for variable 0 (NUM1).  Default parameters substituted.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3126"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_144
#AT_START_145
at_fn_group_banner 145 'sys-file-reader.at:3132' \
  "bad variable name in variable/value pair" "       " 14
at_xfail=no
(
  printf "%s\n" "145. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";

7; 13; 1; COUNT (>>"xyzzy"<<);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3152: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3152"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3152"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3156: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3156"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xde: Dictionary record refers to unknown variable xyzzy.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3156"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_145
#AT_START_146
at_fn_group_banner 146 'sys-file-reader.at:3162' \
  "duplicate long variable name" "                   " 14
at_xfail=no
(
  printf "%s\n" "146. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 4; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_A";
2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_B";
2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_C";

7; 13; 1; COUNT (
"LONGVARI=_Invalid"; i8 9;
"LONGVARI=$Invalid"; i8 9;
"LONGVARI=#Invalid"; i8 9;
"LONGVA_A=LongVariableName"; i8 9;
"LONGVA_B=LONGVARIABLENAME"; i8 9;
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3191: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3191"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3191"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3195: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3195"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x138: Long variable mapping from LONGVARI to invalid variable name \`_Invalid'.

warning: \`sys-file.sav' near offset 0x138: Long variable mapping from LONGVARI to invalid variable name \`\$Invalid'.

warning: \`sys-file.sav' near offset 0x138: Long variable mapping from LONGVARI to invalid variable name \`#Invalid'.

warning: \`sys-file.sav' near offset 0x138: Duplicate long variable name \`LONGVARIABLENAME'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3195"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_146
#AT_START_147
at_fn_group_banner 147 'sys-file-reader.at:3207' \
  "bad very long string length" "                    " 14
at_xfail=no
(
  printf "%s\n" "147. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

7; 14; 1; COUNT (
"NUM1=00000"; i8 0; i8 9;
"NUM1=00255"; i8 0; i8 9;
"NUM1=00256"; i8 0; i8 9;
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3231: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3231"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3231"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3235: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3235"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xd8: NUM1 listed as string of invalid length 00000 in very long string record.

\"warning: \`sys-file.sav' near offset 0xd8: NUM1 listed in very long string record with width 00255, which requires only one segment.\"

error: \`sys-file.sav' near offset 0xd8: Very long string NUM1 overflows dictionary.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3235"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_147
#AT_START_148
at_fn_group_banner 148 'sys-file-reader.at:3245' \
  "bad very long string segment width" "             " 14
at_xfail=no
(
  printf "%s\n" "148. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 255; 0; 0; 0x01ff00 *2; s8 "STR1";
(2; -1; 0; 0; 0; 0; s8 "") * 31;
2; >>9<<; 0; 0; 0x010900 *2; s8 "STR1_A";
>>2; -1; 0; 0; 0; 0; s8 "";<<

7; 14; 1; COUNT (
"STR1=00256"; i8 0; i8 9;
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3270: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3270"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3270"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3274: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3274"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x4f8: Very long string with width 256 has segment 1 of width 9 (expected 4).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3274"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_148
#AT_START_149
at_fn_group_banner 149 'sys-file-reader.at:3280' \
  "too many value labels" "                          " 14
at_xfail=no
(
  printf "%s\n" "149. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3; >>0x7fffffff<<;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3292: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3292"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3292"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3296: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3296"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xd4: Invalid number of labels 2147483647.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3296"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_149
#AT_START_150
at_fn_group_banner 150 'sys-file-reader.at:3302' \
  "missing type 4 record" "                          " 14
at_xfail=no
(
  printf "%s\n" "150. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

3; 1; 1.0; i8 3; s7 "one";

7; 20; 1; 12; "windows-1252";

>>999; 0<<;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3322: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3322"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3322"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3326: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3326"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xe8: Variable index record (type 4) does not immediately follow value label record (type 3) as it should.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3326"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_150
#AT_START_151
at_fn_group_banner 151 'sys-file-reader.at:3332' \
  "value label with no associated variables" "       " 14
at_xfail=no
(
  printf "%s\n" "151. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

3; 1; 1.0; i8 3; s7 "one"; 4; >>0<<;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3346: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3346"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3346"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3350: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3350"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0xec: Number of variables associated with a value label (0) is not between 1 and the number of variables (1).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3350"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_151
#AT_START_152
at_fn_group_banner 152 'sys-file-reader.at:3356' \
  "type 4 record names long string variable" "       " 14
at_xfail=no
(
  printf "%s\n" "152. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 9; 0; 0; 0x010900 *2; s8 "STR1";
2; -1; 0; 0; 0; 0; s8 "";

3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 1; >>1<<;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3377: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3377"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3377"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3381: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3381"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xf4: Value labels may not be added to long string variables (e.g. STR1) using records types 3 and 4.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3381"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_152
#AT_START_153
at_fn_group_banner 153 'sys-file-reader.at:3387' \
  "value label variable indexes must be in correct range" "" 14
at_xfail=no
(
  printf "%s\n" "153. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 6; 0; 0; 0x010600 *2; s8 "STR1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>3; 4;<<
3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>5; 6;<<
3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>7; 8;<<

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3410: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3410"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3410"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3414: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3414"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xf4: Value label variable index 3 not in valid range 1...2.

warning: \`sys-file.sav' near offset 0xf4: Value label variable index 4 not in valid range 1...2.

warning: \`sys-file.sav' near offset 0x11c: Value label variable index 5 not in valid range 1...2.

warning: \`sys-file.sav' near offset 0x11c: Value label variable index 6 not in valid range 1...2.

warning: \`sys-file.sav' near offset 0x144: Value label variable index 7 not in valid range 1...2.

warning: \`sys-file.sav': Suppressed 1 additional warnings for value labels.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3414"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_153
#AT_START_154
at_fn_group_banner 154 'sys-file-reader.at:3430' \
  "value label variable indexes must not be long string continuation" "" 14
at_xfail=no
(
  printf "%s\n" "154. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 9; 0; 0; 0x010900 *2; s8 "STR1";
(2; -1; 0; 0; 0; 0; s8 "");

3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 1; >>2;<<

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3451: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3451"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3451"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3455: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3455"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xf4: Value label variable index 2 refers to long string continuation.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3455"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_154
#AT_START_155
at_fn_group_banner 155 'sys-file-reader.at:3461' \
  "variables for value label must all be same type" "" 14
at_xfail=no
(
  printf "%s\n" "155. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 6; 0; 0; 0x010600 *2; s8 "STR1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>1; 2<<;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3482: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3482"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3482"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3486: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3486"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warning: \`sys-file.sav' near offset 0xf4: Variables associated with value label are not all of identical type.  Variable STR1 is string, but variable NUM1 is numeric.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3486"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_155
#AT_START_156
at_fn_group_banner 156 'sys-file-reader.at:3492' \
  "duplicate value labels type" "                    " 14
at_xfail=no
(
  printf "%s\n" "156. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 6; 0; 0; 0x010600 *2; s8 "STR1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM1";

3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>1; 1<<;
3; 1; 1.0; i8 3; s7 "one"; 4; 2; >>2; 2<<;

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3514: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3514"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3514"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3518: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3518"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xf4: Duplicate value label for \`xyzzy ' on STR1.

warning: \`sys-file.sav' near offset 0x11c: Duplicate value label for 1 on NUM1.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3518"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_156
#AT_START_157
at_fn_group_banner 157 'sys-file-reader.at:3526' \
  "missing attribute value" "                        " 14
at_xfail=no
(
  printf "%s\n" "157. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";

7; 17; 1; COUNT (
"Attr1("
);

7; 18; 1; COUNT (
"FIRSTVAR:";
  "fred('23'"; i8 10
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3554: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3554"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3554"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3558: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3558"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xde: Error parsing attribute value Attr1[1].

warning: \`sys-file.sav' near offset 0x101: Error parsing attribute value fred[2].
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3558"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_157
#AT_START_158
at_fn_group_banner 158 'sys-file-reader.at:3566' \
  "unquoted attribute value" "                       " 14
at_xfail=no
(
  printf "%s\n" "158. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";

7; 17; 1; COUNT (
"Attr1(value"; i8 10;
")"
);

7; 18; 1; COUNT (
"FIRSTVAR:";
  "fred(23"; i8 10; ")"
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3595: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3595"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3595"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3599: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3599"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xe4: Attribute value Attr1[1] is not quoted: value.

warning: \`sys-file.sav' near offset 0x106: Attribute value fred[1] is not quoted: 23.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3599"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_158
#AT_START_159
at_fn_group_banner 159 'sys-file-reader.at:3607' \
  "duplicate attribute name" "                       " 14
at_xfail=no
(
  printf "%s\n" "159. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";

7; 17; 1; COUNT (
"Attr1('value'"; i8 10; ")";
"Attr1('value'"; i8 10; ")";
);

7; 18; 1; COUNT (
"FIRSTVAR:";
  "fred('23'"; i8 10; ")";
  "fred('23'"; i8 10; ")";
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3637: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3637"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3637"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3641: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3641"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0xf6: Duplicate attribute Attr1.

warning: \`sys-file.sav' near offset 0x125: Duplicate attribute fred.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3641"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_159
#AT_START_160
at_fn_group_banner 160 'sys-file-reader.at:3649' \
  "bad variable name in long string value label" "   " 14
at_xfail=no
(
  printf "%s\n" "160. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 3; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 14; 0; 0; 0x010e00 *2; s8 "STR14";
2; -1; 0; 0; 0; 0; s8 "";

7; 21; 1; COUNT (
COUNT(>>"STR9"<<); 9;
1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");

COUNT(>>"NUM1"<<); 0;
1; COUNT("xyz"); COUNT("value label for 1.0");

COUNT("STR14"); >>9<<;
1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");

COUNT("STR14"); 14;
1; COUNT(>>"RSTUVWXYZ"<<); COUNT("value label for `RSTUVWXYZ'");

COUNT("STR14"); 14; 2;
COUNT("abcdefghijklmn"); COUNT("value label for `abcdefghijklmn'");
>>COUNT("abcdefghijklmn"); COUNT("another value label for `abcdefghijklmn'")<<;
);

7; 20; 1; 12; "windows-1252";

999; 0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3691: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3691"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3691"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3694: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3694"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x128: Ignoring long string value label record for unknown variable STR9.

warning: \`sys-file.sav' near offset 0x164: Ignoring long string value label record for numeric variable NUM1.

warning: \`sys-file.sav' near offset 0x193: Ignoring long string value label record for variable STR14 because the record's width (9) does not match the variable's width (14).

\"warning: \`sys-file.sav' near offset 0x1d4: Ignoring long string value label 0 for variable str14, with width 14, that has bad value width 9.\"

warning: \`sys-file.sav' near offset 0x259: Duplicate value label for \`abcdefghijklmn' on str14.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3694"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_160
#AT_START_161
at_fn_group_banner 161 'sys-file-reader.at:3708' \
  "fewer data records than indicated by file header" "" 14
at_xfail=no
(
  printf "%s\n" "161. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 0; 0; >>5<<; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

7; 20; 1; 12; "windows-1252";

999; 0;
1.0; 2.0;
3.0; 4.0;
5.0; 6.0;
7.0; 8.0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3731: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3731"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3731"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3735: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3735"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: Error reading case from file \`sys-file.sav'.

Table: Data List
num1,num2
1,2
3,4
5,6
7,8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3735"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_161
#AT_START_162
at_fn_group_banner 162 'sys-file-reader.at:3748' \
  "partial data record between variables" "          " 14
at_xfail=no
(
  printf "%s\n" "162. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 0; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

7; 20; 1; 12; "windows-1252";

999; 0;
1.0; 2.0;
3.0;
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3768: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3768"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3768"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3772: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3772"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x12c: File ends in partial case.

Table: Data List
num1,num2
1,2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3772"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_162
#AT_START_163
at_fn_group_banner 163 'sys-file-reader.at:3782' \
  "partial data record within long string" "         " 14
at_xfail=no
(
  printf "%s\n" "163. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 2; 0; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;

2; 14; 0; 0; 0x010e00 *2; s8 "STR14";
2; -1; 0; 0; 0; 0; s8 "";

7; 20; 1; 12; "windows-1252";

999; 0;
s14 "one data item";
s8 "partial";
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3802: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3802"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3802"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3806: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3806"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x12a: Unexpected end of file.

Table: Data List
str14
one data item
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3806"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_163
#AT_START_164
at_fn_group_banner 164 'sys-file-reader.at:3816' \
  "partial compressed data record" "                 " 14
at_xfail=no
(
  printf "%s\n" "164. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 6; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

2; 4; 0; 0; 0x010400 *2; s8 "STR4";
2; 8; 0; 0; 0x010800 *2; s8 "STR8";
2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
2; -1; 0; 0; 0; 0; s8 "";

7; 20; 1; 12; "windows-1252";

999; 0;

i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3850: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3850"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3850"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3854: pspp -O format=csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3854"
( $at_check_trace; pspp -O format=csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x1ac: File ends in partial case.

Table: Data List
num1,num2,str4,str8,str15
-99,0,,abcdefgh,0123
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3854"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_164
#AT_START_165
at_fn_group_banner 165 'sys-file-reader.at:3864' \
  "zcompressed data - bad zheader_ofs" "             " 14
at_xfail=no
(
  printf "%s\n" "165. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*zheader_ofs.*/>>i64 0<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3868: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3868"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3868"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3871: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3871"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x194: Wrong ZLIB data header offset 0 (expected 0x194).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3871"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_165
#AT_START_166
at_fn_group_banner 166 'sys-file-reader.at:3876' \
  "zcompressed data - bad ztrailer_ofs" "            " 14
at_xfail=no
(
  printf "%s\n" "166. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*ztrailer_ofs.*/>>i64 0<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3880: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3880"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3880"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3883: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3883"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x194: Impossible ZLIB trailer offset 0x0.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3883"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_166
#AT_START_167
at_fn_group_banner 167 'sys-file-reader.at:3890' \
  "zcompressed data - invalid ztrailer_len" "        " 14
at_xfail=no
(
  printf "%s\n" "167. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*ztrailer_len.*/>>i64 12<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3894: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3894"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3894"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3897: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3897"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x194: Invalid ZLIB trailer length 12.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3897"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_167
#AT_START_168
at_fn_group_banner 168 'sys-file-reader.at:3903' \
  "zcompressed data - wrong ztrailer_len" "          " 14
at_xfail=no
(
  printf "%s\n" "168. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*ztrailer_len.*/>>i64 72<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3907: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3907"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3907"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3910: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3910"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x1ac: End of ZLIB trailer (0x24d) is not file size (0x235).
error: \`sys-file.sav' near offset 0x21d: 72-byte ZLIB trailer specifies 1 data blocks (expected 2).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3910"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_168
#AT_START_169
at_fn_group_banner 169 'sys-file-reader.at:3916' \
  "zcompressed data - wrong ztrailer_bias" "         " 14
at_xfail=no
(
  printf "%s\n" "169. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*ztrailer_bias.*/>>i64 0<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3920: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3920"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3920"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3923: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3923"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x20d: ZLIB trailer bias (0) differs from file header bias (100.00).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3923"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_169
#AT_START_170
at_fn_group_banner 170 'sys-file-reader.at:3928' \
  "zcompressed data - wrong ztrailer_zero" "         " 14
at_xfail=no
(
  printf "%s\n" "170. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*ztrailer_zero.*/>>i64 100<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3932: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3932"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3932"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3935: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3935"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x215: ZLIB trailer \"zero\" field has nonzero value 100.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3935"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_170
#AT_START_171
at_fn_group_banner 171 'sys-file-reader.at:3940' \
  "zcompressed data - wrong block_size" "            " 14
at_xfail=no
(
  printf "%s\n" "171. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*block_size.*/>>0x1000<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3944: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3944"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3944"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3947: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3947"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x219: ZLIB trailer specifies unexpected 4096-byte block size.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3947"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_171
#AT_START_172
at_fn_group_banner 172 'sys-file-reader.at:3952' \
  "zcompressed data - wrong n_blocks" "              " 14
at_xfail=no
(
  printf "%s\n" "172. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*n_blocks.*/>>2<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3956: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3956"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3956"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3959: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3959"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x21d: 48-byte ZLIB trailer specifies 2 data blocks (expected 1).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3959"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_172
#AT_START_173
at_fn_group_banner 173 'sys-file-reader.at:3964' \
  "zcompressed data - wrong uncompressed_ofs" "      " 14
at_xfail=no
(
  printf "%s\n" "173. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*uncompressed_ofs.*/i64 >>0x177<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3968: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3968"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3968"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3971: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3971"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x21d: ZLIB block descriptor 0 reported uncompressed data offset 0x177, when 0x194 was expected.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3971"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_173
#AT_START_174
at_fn_group_banner 174 'sys-file-reader.at:3976' \
  "zcompressed data - wrong compressed_ofs" "        " 14
at_xfail=no
(
  printf "%s\n" "174. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*# compressed_ofs.*/i64 >>0x191<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3980: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:3980"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:3980"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:3983: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:3983"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x21d: ZLIB block descriptor 0 reported compressed data offset 0x191, when 0x1ac was expected.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:3983"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_174
#AT_START_175
at_fn_group_banner 175 'sys-file-reader.at:3988' \
  "zcompressed data - compressed sizes don't add up" "" 14
at_xfail=no
(
  printf "%s\n" "175. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sys-file.sack <<'_ATEOF'
"$FL3"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2; 6; 2; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
i8 0 *3;

2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2; 0; 0; 0; 0x050800 *2; s8 "NUM2";

2; 4; 0; 0; 0x010400 *2; s8 "STR4";
2; 8; 0; 0; 0x010800 *2; s8 "STR8";
2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
2; -1; 0; 0; 0; 0; s8 "";

7; 20; 1; 12; "windows-1252";

999; 0;

i64 0x194;    # zheader_ofs
i64 0x1ac;    # ztrailer_ofs
i64 72;       # ztrailer_len


i64 -100;     # ztrailer_bias
i64 0;        # ztrailer_zero
0x3ff000;     # block_size
2;            # n_blocks

i64 0x194;    # uncompressed_ofs
i64 0x1ac;    # compressed_ofs
0x100000;     # uncompressed_size
0x12345;      # compressed_size

i64 0x100194; # uncompressed_ofs
i64 0x12421;  # compressed_ofs
0x100000;     # uncompressed_size
0x12345;      # compressed_size
_ATEOF

for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4045: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:4045"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:4045"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4048: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:4048"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x1c4: ZLIB block descriptor 0 reported block size 0x100000, when 0x3ff000 was expected.
error: \`sys-file.sav' near offset 0x1dc: ZLIB block descriptor 1 reported compressed data offset 0x12421, when 0x124f1 was expected.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:4048"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_175
#AT_START_176
at_fn_group_banner 176 'sys-file-reader.at:4054' \
  "zcompressed data - uncompressed_size > block_size" "" 14
at_xfail=no
(
  printf "%s\n" "176. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*uncompressed_size.*/>>0x400000<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4058: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:4058"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:4058"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4061: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:4061"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: \`sys-file.sav' near offset 0x21d: ZLIB block descriptor 0 reported block size 0x400000, when at most 0x3ff000 was expected.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:4061"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_176
#AT_START_177
at_fn_group_banner 177 'sys-file-reader.at:4066' \
  "zcompressed data - compression expands data too much" "" 14
at_xfail=no
(
  printf "%s\n" "177. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*uncompressed_size.*/>>50<<;/
s/.*# compressed_size.*/>>100<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4071: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:4071"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:4071"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4074: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:4074"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x21d: ZLIB block descriptor 0 reports compressed size 100 and uncompressed size 50.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:4074"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_177
#AT_START_178
at_fn_group_banner 178 'sys-file-reader.at:4079' \
  "zcompressed data - compressed sizes don't add up" "" 14
at_xfail=no
(
  printf "%s\n" "178. $at_setup_line: testing $at_desc ..."
  $at_traceon


zcompressed_sack | sed 's/.*# compressed_size.*/>>88<<;/' > sys-file.sack
for variant in be le; do
  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4083: sack --\$variant sys-file.sack > sys-file.sav"
at_fn_check_prepare_dynamic "sack --$variant sys-file.sack > sys-file.sav" "sys-file-reader.at:4083"
( $at_check_trace; sack --$variant sys-file.sack > sys-file.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:4083"
$at_failed && at_fn_log_failure
$at_traceon; }

  cat >sys-file.sps <<'_ATEOF'
GET FILE='sys-file.sav'.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4086: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file-reader.at:4086"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: \`sys-file.sav' near offset 0x235: ZLIB trailer is at offset 0x205 but 0x204 would be expected from block descriptors.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file-reader.at:4086"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_178
#AT_START_179
at_fn_group_banner 179 'sys-file-reader.at:4096' \
  "integer overflows in long string missing values" "" 14
at_xfail=no
(
  printf "%s\n" "179. $at_setup_line: testing $at_desc ..."
  $at_traceon


cp $top_srcdir/tests/data/CVE-2017-10791.sav .
{ set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4099: pspp-convert -O csv -e ASCII CVE-2017-10791.sav -"
at_fn_check_prepare_trace "sys-file-reader.at:4099"
( $at_check_trace; pspp-convert -O csv -e ASCII CVE-2017-10791.sav -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "\`CVE-2017-10791.sav' near offset 0x217: Extension record subtype 21 ends unexpectedly.
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:4099"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_179
#AT_START_180
at_fn_group_banner 180 'sys-file-reader.at:4109' \
  "null dereference skipping bad extension record 18" "" 14
at_xfail=no
(
  printf "%s\n" "180. $at_setup_line: testing $at_desc ..."
  $at_traceon


cp $top_srcdir/tests/data/CVE-2017-10792.sav .
{ set +x
printf "%s\n" "$at_srcdir/sys-file-reader.at:4112: pspp-convert -O csv -e ASCII CVE-2017-10792.sav -"
at_fn_check_prepare_trace "sys-file-reader.at:4112"
( $at_check_trace; pspp-convert -O csv -e ASCII CVE-2017-10792.sav -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "\`CVE-2017-10792.sav' near offset 0x1c0: Record type 7, subtype 18 has bad size 4 (expected 1).
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-reader.at:4112"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_180
#AT_START_181
at_fn_group_banner 181 'sys-file.at:20' \
  "write and read numeric data" "                    " 15
at_xfail=no
(
  printf "%s\n" "181. $at_setup_line: testing $at_desc ..."
  $at_traceon


for variant in 'UNCOMPRESSED $FL2' 'ZCOMPRESSED $FL3'; do
    set $variant
    compression=$1 magic=$2
    cat >sysfile.sps <<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/$compression /OUTFILE='foo.sav'.

GET /FILE='foo.sav'.

LIST.
EOF
    { set +x
printf "%s\n" "$at_srcdir/sys-file.at:44: pspp -o pspp.csv sysfile.sps"
at_fn_check_prepare_trace "sys-file.at:44"
( $at_check_trace; pspp -o pspp.csv sysfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

    { set +x
printf "%s\n" "$at_srcdir/sys-file.at:45: cat pspp.csv"
at_fn_check_prepare_trace "sys-file.at:45"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

    { set +x
printf "%s\n" "$at_srcdir/sys-file.at:57: dd if=foo.sav bs=1 count=4; echo"
at_fn_check_prepare_trace "sys-file.at:57"
( $at_check_trace; dd if=foo.sav bs=1 count=4; echo
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "$magic
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:57"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_181
#AT_START_182
at_fn_group_banner 182 'sys-file.at:62' \
  "write and read long string value labels and missing values" "" 15
at_xfail=no
(
  printf "%s\n" "182. $at_setup_line: testing $at_desc ..."
  $at_traceon


for variant in 'UNCOMPRESSED $FL2' 'ZCOMPRESSED $FL3'; do
    set $variant
    compression=$1 magic=$2
    cat >sysfile.sps <<EOF
DATA LIST LIST NOTABLE/s1 s2 s3 (a9).
BEGIN DATA
a b c
END DATA.

VALUE LABELS
    /s1 'abc' 'First value label'
	'abcdefgh' 'Second value label'
	'abcdefghi' 'Third value label'
    /s2 '0' 'Fourth value label'
	'01234567' 'Fifth value label'
	'012345678' 'Sixth value label'.

MISSING VALUES
     s1 ('0')
    /s2 ('12' '123')
    /s3 ('1234' '12345' '12345678').

SAVE/$compression /OUTFILE='foo.sav'.
GET /FILE='foo.sav'.
DISPLAY DICTIONARY.
EOF
    { set +x
printf "%s\n" "$at_srcdir/sys-file.at:90: pspp -o pspp.csv sysfile.sps"
at_fn_check_prepare_trace "sys-file.at:90"
( $at_check_trace; pspp -o pspp.csv sysfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:90"
$at_failed && at_fn_log_failure
$at_traceon; }

    { set +x
printf "%s\n" "$at_srcdir/sys-file.at:91: cat pspp.csv"
at_fn_check_prepare_trace "sys-file.at:91"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
s1,1,Nominal,Input,9,Left,A9,A9,\"\"\"0       \"\"\"
s2,2,Nominal,Input,9,Left,A9,A9,\"\"\"12      \"\"; \"\"123     \"\"\"
s3,3,Nominal,Input,9,Left,A9,A9,\"\"\"1234    \"\"; \"\"12345   \"\"; \"\"12345678\"\"\"

Table: Value Labels
Variable Value,,Label
s1,abc,First value label
,abcdefgh,Second value label
,abcdefghi,Third value label
s2,0,Fourth value label
,01234567,Fifth value label
,012345678,Sixth value label
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:91"
$at_failed && at_fn_log_failure
$at_traceon; }

    { set +x
printf "%s\n" "$at_srcdir/sys-file.at:107: dd if=foo.sav bs=1 count=4; echo"
at_fn_check_prepare_trace "sys-file.at:107"
( $at_check_trace; dd if=foo.sav bs=1 count=4; echo
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "$magic
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_182
#AT_START_183
at_fn_group_banner 183 'sys-file.at:112' \
  "write and read compressed files" "                " 15
at_xfail=no
(
  printf "%s\n" "183. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sysfile.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:129: pspp -o pspp.csv sysfile.sps"
at_fn_check_prepare_trace "sys-file.at:129"
( $at_check_trace; pspp -o pspp.csv sysfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:129"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:131: dd if=com.sav bs=1 skip=72 count=4 2> /dev/null > com.sav.subset"
at_fn_check_prepare_trace "sys-file.at:131"
( $at_check_trace; dd if=com.sav bs=1 skip=72 count=4 2> /dev/null > com.sav.subset
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:131"
$at_failed && at_fn_log_failure
$at_traceon; }

od com.sav.subset
{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:133: (printf '\\000\\000\\000\\001' | cmp -l com.sav.subset -) ||
   (printf '\\001\\000\\000\\000' | cmp -l com.sav.subset -)"
at_fn_check_prepare_notrace 'an embedded newline' "sys-file.at:133"
( $at_check_trace; (printf '\000\000\000\001' | cmp -l com.sav.subset -) ||
   (printf '\001\000\000\000' | cmp -l com.sav.subset -)
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:133"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_183
#AT_START_184
at_fn_group_banner 184 'sys-file.at:139' \
  "overwriting system file" "                        " 15
at_xfail=no
(
  printf "%s\n" "184. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >output.sav <<'_ATEOF'
abcdef
_ATEOF

cp output.sav output.sav.backup
cat >sysfile.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
SAVE OUTFILE='output.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:150: pspp -O format=csv sysfile.sps"
at_fn_check_prepare_trace "sys-file.at:150"
( $at_check_trace; pspp -O format=csv sysfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:150"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:151: cmp output.sav output.sav.backup"
at_fn_check_prepare_trace "sys-file.at:151"
( $at_check_trace; cmp output.sav output.sav.backup
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/sys-file.at:151"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_184
#AT_START_185
at_fn_group_banner 185 'sys-file.at:154' \
  "overwriting system file atomically" "             " 15
at_xfail=no
(
  printf "%s\n" "185. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >output.sav <<'_ATEOF'
abcdef
_ATEOF

cp output.sav output.sav.backup
cat >sysfile.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
XSAVE OUTFILE='output.sav'.
HOST COMMAND=['kill -TERM $PPID'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:166: pspp -O format=csv sysfile.sps"
at_fn_check_prepare_trace "sys-file.at:166"
( $at_check_trace; pspp -O format=csv sysfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 143 $at_status "$at_srcdir/sys-file.at:166"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:167: cmp output.sav output.sav.backup"
at_fn_check_prepare_trace "sys-file.at:167"
( $at_check_trace; cmp output.sav output.sav.backup
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:167"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:168: for file in *.tmp*; do if test -e \$file; then echo \$file; exit 1; fi; done"
at_fn_check_prepare_dynamic "for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done" "sys-file.at:168"
( $at_check_trace; for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:168"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_185
#AT_START_186
at_fn_group_banner 186 'sys-file.at:173' \
  "write to same system file being read" "           " 15
at_xfail=no
(
  printf "%s\n" "186. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >save.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
3
END DATA.
SAVE OUTFILE='data.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:181: pspp -O format=csv save.sps"
at_fn_check_prepare_trace "sys-file.at:181"
( $at_check_trace; pspp -O format=csv save.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:181"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:182: test -s data.sav"
at_fn_check_prepare_trace "sys-file.at:182"
( $at_check_trace; test -s data.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:182"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:183: for file in *.tmp*; do if test -e \$file; then echo \$file; exit 1; fi; done"
at_fn_check_prepare_dynamic "for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done" "sys-file.at:183"
( $at_check_trace; for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:183"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >save2.sps <<'_ATEOF'
GET FILE='data.sav'.
COMPUTE y = x * 3.
SAVE OUTFILE='data.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:190: pspp -O format=csv save2.sps"
at_fn_check_prepare_trace "sys-file.at:190"
( $at_check_trace; pspp -O format=csv save2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:190"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:191: for file in *.tmp*; do if test -e \$file; then echo \$file; exit 1; fi; done"
at_fn_check_prepare_dynamic "for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done" "sys-file.at:191"
( $at_check_trace; for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:191"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >save3.sps <<'_ATEOF'
GET FILE='data.sav'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:197: pspp -O format=csv save3.sps"
at_fn_check_prepare_trace "sys-file.at:197"
( $at_check_trace; pspp -O format=csv save3.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,y
3,9.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:197"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_186
#AT_START_187
at_fn_group_banner 187 'sys-file.at:204' \
  "nonempty case_map doesn't crash" "                " 15
at_xfail=no
(
  printf "%s\n" "187. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >save.sps <<'_ATEOF'
INPUT PROGRAM.
    COMPUTE #I = 1.
    COMPUTE X = #I + 1.
    END CASE.
    END FILE.
END INPUT PROGRAM.

SAVE OUTFILE='tiny.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:216: pspp -O format=csv save.sps"
at_fn_check_prepare_trace "sys-file.at:216"
( $at_check_trace; pspp -O format=csv save.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:216"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get.sps <<'_ATEOF'
GET FILE='tiny.sav'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:221: pspp -O format=csv get.sps"
at_fn_check_prepare_trace "sys-file.at:221"
( $at_check_trace; pspp -O format=csv get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X
2.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:221"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_187
#AT_START_188
at_fn_group_banner 188 'sys-file.at:230' \
  "system files with -1 case_size" "                 " 15
at_xfail=no
(
  printf "%s\n" "188. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >save.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:250: pspp -O format=csv save.sps"
at_fn_check_prepare_trace "sys-file.at:250"
( $at_check_trace; pspp -O format=csv save.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:250"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:251: test -f cont.sav"
at_fn_check_prepare_trace "sys-file.at:251"
( $at_check_trace; test -f cont.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:251"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:255: (dd if=cont.sav bs=1 count=68;
    printf '\\377\\377\\377\\377';
    dd if=cont.sav bs=1 skip=72) > cont2.sav"
at_fn_check_prepare_notrace 'an embedded newline' "sys-file.at:255"
( $at_check_trace; (dd if=cont.sav bs=1 count=68;
    printf '\377\377\377\377';
    dd if=cont.sav bs=1 skip=72) > cont2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:255"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:259: cmp cont.sav cont2.sav"
at_fn_check_prepare_trace "sys-file.at:259"
( $at_check_trace; cmp cont.sav cont2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "cont.sav cont2.sav differ: char 69, line 1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sys-file.at:259"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >get.sps <<'_ATEOF'
GET FILE='cont2.sav'.
DISPLAY LABELS.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:268: pspp -o pspp.csv get.sps"
at_fn_check_prepare_trace "sys-file.at:268"
( $at_check_trace; pspp -o pspp.csv get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:269: cat pspp.csv"
at_fn_check_prepare_trace "sys-file.at:269"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Label
cont,1,continents of the world
size,2,sq km
pop,3,population
count,4,number of countries

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:269"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_188
#AT_START_189
at_fn_group_banner 189 'sys-file.at:289' \
  "write v2 system file" "                           " 15
at_xfail=no
(
  printf "%s\n" "189. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >sysfile.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:312: pspp -O format=csv sysfile.sps"
at_fn_check_prepare_trace "sys-file.at:312"
( $at_check_trace; pspp -O format=csv sysfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:312"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:325: grep 'X=X' foo.sav"
at_fn_check_prepare_trace "sys-file.at:325"
( $at_check_trace; grep 'X=X' foo.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:

at_fn_check_status 1 $at_status "$at_srcdir/sys-file.at:325"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_189
#AT_START_190
at_fn_group_banner 190 'sys-file.at:330' \
  "read very long strings written by SPSS 13" "      " 16
at_xfail=no
(
  printf "%s\n" "190. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:331: cp \$top_srcdir/tests/data/v13.sav ."
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/data/v13.sav ." "sys-file.at:331"
( $at_check_trace; cp $top_srcdir/tests/data/v13.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:331"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >sys-file.sps <<'_ATEOF'
GET FILE='v13.sav' ENCODING='utf-8'.
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:337: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file.at:337"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:337"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:338: cat pspp.csv"
at_fn_check_prepare_trace "sys-file.at:338"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
N,1,F8.2,F8.2
A255,2,A255,A255
A258,3,A258,A258
A2000,4,A2000,A2000

Table: Data List
N,A255,A258,A2000
1.00,a1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,b1BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,c1CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
2.00,a2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,b2YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,c2ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:338"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_190
#AT_START_191
at_fn_group_banner 191 'sys-file.at:353' \
  "read very long strings written by SPSS 14" "      " 16
at_xfail=no
(
  printf "%s\n" "191. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:354: cp \$top_srcdir/tests/data/v14.sav ."
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/data/v14.sav ." "sys-file.at:354"
( $at_check_trace; cp $top_srcdir/tests/data/v14.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:354"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >sys-file.sps <<'_ATEOF'
GET FILE='v14.sav' ENCODING='utf-8'.
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:360: pspp -o pspp.csv sys-file.sps"
at_fn_check_prepare_trace "sys-file.at:360"
( $at_check_trace; pspp -o pspp.csv sys-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:360"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:361: cat pspp.csv"
at_fn_check_prepare_trace "sys-file.at:361"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
vl255,1,A255,A255
vl256,2,A256,A256
vl1335,3,A1335,A1335
vl2000,4,A2000,A2000

Table: Data List
vl255,vl256,vl1335,vl2000
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:361"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_191
#AT_START_192
at_fn_group_banner 192 'sys-file.at:420' \
  "save very long string -- uncompressed" "          " 16
at_xfail=no
(
  printf "%s\n" "192. $at_setup_line: testing $at_desc ..."
  $at_traceon

   vls_gen_data
   cat >save.sps <<'_ATEOF'
DATA LIST FIXED NOTABLE FILE='data.txt'
    /a 2-11 (a)
     b (a256)
     c (a200)
     d (a32767).

SAVE OUTFILE='foo.sav' /UNCOMPRESSED.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sys-file.at:420: pspp -O format=csv save.sps"
at_fn_check_prepare_trace "sys-file.at:420"
( $at_check_trace; pspp -O format=csv save.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:420"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >get.sps <<'_ATEOF'
GET FILE='foo.sav'.

DISPLAY VARIABLES.

PRINT OUTFILE='out.txt'
	/a (a10) b (a256) c (a200)
	d (a32767)
	.

EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sys-file.at:420: pspp -o pspp.csv get.sps"
at_fn_check_prepare_trace "sys-file.at:420"
( $at_check_trace; pspp -o pspp.csv get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:420"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sys-file.at:420: cat pspp.csv"
at_fn_check_prepare_trace "sys-file.at:420"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
a,1,A10,A10
b,2,A256,A256
c,3,A200,A200
d,4,A32767,A32767
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:420"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_192
#AT_START_193
at_fn_group_banner 193 'sys-file.at:421' \
  "save very long string -- compressed" "            " 16
at_xfail=no
(
  printf "%s\n" "193. $at_setup_line: testing $at_desc ..."
  $at_traceon

   vls_gen_data
   cat >save.sps <<'_ATEOF'
DATA LIST FIXED NOTABLE FILE='data.txt'
    /a 2-11 (a)
     b (a256)
     c (a200)
     d (a32767).

SAVE OUTFILE='foo.sav' /COMPRESSED.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sys-file.at:421: pspp -O format=csv save.sps"
at_fn_check_prepare_trace "sys-file.at:421"
( $at_check_trace; pspp -O format=csv save.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:421"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >get.sps <<'_ATEOF'
GET FILE='foo.sav'.

DISPLAY VARIABLES.

PRINT OUTFILE='out.txt'
	/a (a10) b (a256) c (a200)
	d (a32767)
	.

EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sys-file.at:421: pspp -o pspp.csv get.sps"
at_fn_check_prepare_trace "sys-file.at:421"
( $at_check_trace; pspp -o pspp.csv get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:421"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sys-file.at:421: cat pspp.csv"
at_fn_check_prepare_trace "sys-file.at:421"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
a,1,A10,A10
b,2,A256,A256
c,3,A200,A200
d,4,A32767,A32767
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:421"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_193
#AT_START_194
at_fn_group_banner 194 'sys-file.at:426' \
  "system file character encoding" "                 " 16
at_xfail=no
(
  printf "%s\n" "194. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:427: i18n-test supports_encodings windows-1252"
at_fn_check_prepare_trace "sys-file.at:427"
( $at_check_trace; i18n-test supports_encodings windows-1252
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:427"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >save.sps <<'_ATEOF'
SET LOCALE='windows-1252'.
DATA LIST LIST NOTABLE /àéîöçxyzabc * roué (A9) croûton (A1000).
FILE LABEL 'clientèle confrère cortège crèche'.
DOCUMENT coördinate smörgåsbord
épée séance soufflé soirée
jalapeño vicuña.
VALUE LABEL
      /àéîöçxyzabc 1 'éclair élan'
      /roué 'abcdefghi' 'sauté précis'.
VARIABLE LABEL
      roué 'Provençal soupçon'.
DATAFILE ATTRIBUTE
      ATTRIBUTE=Furtwängler('kindergärtner').
VARIABLE ATTRIBUTE
      VARIABLES=àéîöçxyzabc
      ATTRIBUTE=Atatürk('Düsseldorf Gewürztraminer').
BEGIN DATA.
1 a x
2 b y
3 c z
END DATA.
SAVE OUTFILE='foo.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:452: pspp -O format=csv save.sps"
at_fn_check_prepare_trace "sys-file.at:452"
( $at_check_trace; pspp -O format=csv save.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:452"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get.sps <<'_ATEOF'
GET FILE='foo.sav'.
DISPLAY FILE LABEL.
DISPLAY DOCUMENTS.
DISPLAY DICTIONARY.
DISPLAY ATTRIBUTES.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:460: pspp -o pspp.csv get.sps"
at_fn_check_prepare_trace "sys-file.at:460"
( $at_check_trace; pspp -o pspp.csv get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:460"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file.at:461: sed 's/(Entered [^)]*)/(Entered <date>)/' pspp.csv"
at_fn_check_prepare_trace "sys-file.at:461"
( $at_check_trace; sed 's/(Entered [^)]*)/(Entered <date>)/' pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Label
Label,clientèle confrère cortège crèche

Table: Documents
\"DOCUMENT coördinate smörgåsbord
épée séance soufflé soirée
jalapeño vicuña.
   (Entered <date>)\"

Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format
àéîöçxyzabc,1,,Nominal,Input,8,Right,F8.2,F8.2
roué,2,Provençal soupçon,Nominal,Input,9,Left,A9,A9
croûton,3,,Nominal,Input,32,Left,A1000,A1000

Table: Value Labels
Variable Value,,Label
àéîöçxyzabc,1.00,éclair élan
Provençal soupçon,abcdefghi,sauté précis

Table: Variable and Dataset Attributes
Variable and Name,,Value
(dataset),Furtwängler,kindergärtner
àéîöçxyzabc,Atatürk,Düsseldorf Gewürztraminer
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file.at:461"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_194
#AT_START_195
at_fn_group_banner 195 'encrypted-file.at:19' \
  "decrypt an encrypted system file" "               " 17
at_xfail=no
(
  printf "%s\n" "195. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encrypted-file.at:21: pspp-convert \$srcdir/data/hotel-encrypted.sav hotel.sav -p pspp"
at_fn_check_prepare_dynamic "pspp-convert $srcdir/data/hotel-encrypted.sav hotel.sav -p pspp" "encrypted-file.at:21"
( $at_check_trace; pspp-convert $srcdir/data/hotel-encrypted.sav hotel.sav -p pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encrypted-file.at:21"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encrypted-file.at:22: pspp-convert hotel.sav hotel.csv"
at_fn_check_prepare_trace "encrypted-file.at:22"
( $at_check_trace; pspp-convert hotel.sav hotel.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encrypted-file.at:22"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encrypted-file.at:23: cat hotel.csv"
at_fn_check_prepare_trace "encrypted-file.at:23"
( $at_check_trace; cat hotel.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "v1,v2,v3,v4,v5
4,2,3,4,1
1,1,3,1,1
5,2,2,3,4
3,1,3,1,2
5,3,1,5,3
1,2,5,4,2
3,2,4,3,1
1,4,5,2,1
3,2,3,1,2
2,5,4,2,1
4,2,2,3,5
2,1,4,1,1
1,2,5,5,2
2,3,3,3,1
4,1,1,1,3
1,1,5,1,2
2,5,5,2,2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encrypted-file.at:23"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_195
#AT_START_196
at_fn_group_banner 196 'encrypted-file.at:45' \
  "decrypt an encrypted syntax file" "               " 17
at_xfail=no
(
  printf "%s\n" "196. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encrypted-file.at:47: pspp-convert \$srcdir/data/test-encrypted.sps test.sps -p password"
at_fn_check_prepare_dynamic "pspp-convert $srcdir/data/test-encrypted.sps test.sps -p password" "encrypted-file.at:47"
( $at_check_trace; pspp-convert $srcdir/data/test-encrypted.sps test.sps -p password
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encrypted-file.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }


# The sample file is not ideal: lines end in CRLF and its last line
# lacks a new-line, so "sed" and "echo" make it easier to work with.
{ set +x
printf "%s\n" "$at_srcdir/encrypted-file.at:51: tr -d \"\\r\" < test.sps; echo"
at_fn_check_prepare_trace "encrypted-file.at:51"
( $at_check_trace; tr -d "\r" < test.sps; echo
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "* Encoding: windows-1252.
DATA LIST LIST /name (a25) quantity (f8).
BEGIN DATA.
widgets 10345
oojars 2345
dubreys 98
thingumies 518
END DATA.
 
LIST.
 
DESCRIPTIVES /quantity
 /statistics ALL.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encrypted-file.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_196
#AT_START_197
at_fn_group_banner 197 'encrypted-file.at:68' \
  "decrypt an encrypted viewer file" "               " 17
at_xfail=no
(
  printf "%s\n" "197. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encrypted-file.at:70: pspp-convert \$srcdir/data/test-encrypted.spv test.spv -p Password1"
at_fn_check_prepare_dynamic "pspp-convert $srcdir/data/test-encrypted.spv test.spv -p Password1" "encrypted-file.at:70"
( $at_check_trace; pspp-convert $srcdir/data/test-encrypted.spv test.spv -p Password1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encrypted-file.at:70"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encrypted-file.at:71: cmp \$srcdir/data/test-decrypted.spv test.spv"
at_fn_check_prepare_dynamic "cmp $srcdir/data/test-decrypted.spv test.spv" "encrypted-file.at:71"
( $at_check_trace; cmp $srcdir/data/test-decrypted.spv test.spv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encrypted-file.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_197
#AT_START_198
at_fn_group_banner 198 'command.at:19' \
  "command parser negative tests" "                  " 18
at_xfail=no
(
  printf "%s\n" "198. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >command.sps <<'_ATEOF'
DATA X.
XYZZY.
CLOSE FILE XYZZY.
foo.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/command.at:26: pspp command.sps"
at_fn_check_prepare_trace "command.at:26"
( $at_check_trace; pspp command.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "command.sps:1.1-1.6: error: Unknown command \`DATA X'.
    1 | DATA X.
      | ^~~~~~

command.sps:2.1-2.5: error: Unknown command \`XYZZY'.
    2 | XYZZY.
      | ^~~~~

command.sps:3.1-3.16: error: Unknown command \`CLOSE FILE XYZZY'.
    3 | CLOSE FILE XYZZY.
      | ^~~~~~~~~~~~~~~~

command.sps:4.1-4.3: error: Unknown command \`foo'.
    4 | foo.
      | ^~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/command.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_198
#AT_START_199
at_fn_group_banner 199 'command.at:46' \
  "command parser crash bug" "                       " 18
at_xfail=no
(
  printf "%s\n" "199. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >command.sps <<'_ATEOF'
DATA rubbish.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/command.at:51: pspp -O format=csv command.sps"
at_fn_check_prepare_trace "command.at:51"
( $at_check_trace; pspp -O format=csv command.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"command.sps:1.1-1.12: error: Unknown command \`DATA rubbish'.
    1 | DATA rubbish.
      | ^~~~~~~~~~~~\"

\"command.sps:2.1-2.7: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined.
    2 | EXECUTE.
      | ^~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/command.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_199
#AT_START_200
at_fn_group_banner 200 'command.at:66' \
  "FINISH executes immediately" "                    " 18
at_xfail=no
(
  printf "%s\n" "200. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/command.at:67: (echo \"FINISH.\"; while echo ; do true; done) | pspp"
at_fn_check_prepare_notrace 'a shell pipeline' "command.at:67"
( $at_check_trace; (echo "FINISH."; while echo ; do true; done) | pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/command.at:67"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_200
#AT_START_201
at_fn_group_banner 201 'command.at:72' \
  "ERASE -- safer mode" "                            " 19
at_xfail=no
(
  printf "%s\n" "201. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >foobar <<'_ATEOF'
contents
_ATEOF

cat >erase.sps <<'_ATEOF'
set safer on

erase FILE='foobar'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/command.at:80: pspp -O format=csv erase.sps"
at_fn_check_prepare_trace "command.at:80"
( $at_check_trace; pspp -O format=csv erase.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"erase.sps:3.1-3.5: error: ERASE: This command not allowed when the SAFER option is set.
    3 | erase FILE='foobar'.
      | ^~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/command.at:80"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/command.at:85: cat foobar"
at_fn_check_prepare_trace "command.at:85"
( $at_check_trace; cat foobar
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "contents
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command.at:85"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_201
#AT_START_202
at_fn_group_banner 202 'command.at:89' \
  "ERASE -- not safer mode" "                        " 19
at_xfail=no
(
  printf "%s\n" "202. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >foobar <<'_ATEOF'
contents
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/command.at:92: test -e foobar"
at_fn_check_prepare_trace "command.at:92"
( $at_check_trace; test -e foobar
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command.at:92"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >erase.sps <<'_ATEOF'
erase FILE='foobar'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/command.at:96: pspp -O format=csv erase.sps"
at_fn_check_prepare_trace "command.at:96"
( $at_check_trace; pspp -O format=csv erase.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command.at:96"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/command.at:97: test ! -e foobar"
at_fn_check_prepare_trace "command.at:97"
( $at_check_trace; test ! -e foobar
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command.at:97"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_202
#AT_START_203
at_fn_group_banner 203 'command.at:102' \
  "N OF CASES" "                                     " 20
at_xfail=no
(
  printf "%s\n" "203. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >n-of-cases.sps <<'_ATEOF'
INPUT PROGRAM.
LOOP #i = 1 TO 100.
COMPUTE x=#i.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.

N OF CASES 15.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/command.at:116: pspp -O format=csv n-of-cases.sps"
at_fn_check_prepare_trace "command.at:116"
( $at_check_trace; pspp -O format=csv n-of-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_203
#AT_START_204
at_fn_group_banner 204 'command.at:141' \
  "COMMENT at end of file" "                         " 21
at_xfail=no
(
  printf "%s\n" "204. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >comment.sps <<'_ATEOF'
COMMENT this is a comment at end of file.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/command.at:145: pspp -O format=csv comment.sps"
at_fn_check_prepare_trace "command.at:145"
( $at_check_trace; pspp -O format=csv comment.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command.at:145"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_204
#AT_START_205
at_fn_group_banner 205 'command-name.at:19' \
  "single words" "                                   " 22
at_xfail=no
(
  printf "%s\n" "205. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/command-name.at:21: command-name-test DESCRIPTIVES , DESCRIPTIVESX DESCRIPTIVES descr Des DEX DE '' 'DESCRIPTIVES MORE' 'DESCRIPTIVES++MORE'"
at_fn_check_prepare_trace "command-name.at:21"
( $at_check_trace; command-name-test DESCRIPTIVES , DESCRIPTIVESX DESCRIPTIVES descr Des DEX DE '' 'DESCRIPTIVES MORE' 'DESCRIPTIVES++MORE'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string=\"DESCRIPTIVESX\":
	command=\"DESCRIPTIVES\" match=no
match: none, missing_words=0

string=\"DESCRIPTIVES\":
	command=\"DESCRIPTIVES\" match=yes exact=yes missing_words=0
match: DESCRIPTIVES, missing_words=0

string=\"descr\":
	command=\"DESCRIPTIVES\" match=yes exact=no missing_words=0
match: DESCRIPTIVES, missing_words=0

string=\"Des\":
	command=\"DESCRIPTIVES\" match=yes exact=no missing_words=0
match: DESCRIPTIVES, missing_words=0

string=\"DEX\":
	command=\"DESCRIPTIVES\" match=no
match: none, missing_words=0

string=\"DE\":
	command=\"DESCRIPTIVES\" match=no
match: none, missing_words=0

string=\"\":
	command=\"DESCRIPTIVES\" match=yes exact=yes missing_words=1
match: none, missing_words=1

string=\"DESCRIPTIVES MORE\":
	command=\"DESCRIPTIVES\" match=yes exact=yes missing_words=-1
match: DESCRIPTIVES, missing_words=-1

string=\"DESCRIPTIVES MORE\":
	command=\"DESCRIPTIVES\" match=yes exact=yes missing_words=-1
match: DESCRIPTIVES, missing_words=-1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command-name.at:21"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_205
#AT_START_206
at_fn_group_banner 206 'command-name.at:61' \
  "two words without prefix match" "                 " 22
at_xfail=no
(
  printf "%s\n" "206. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/command-name.at:63: command-name-test 'DO IF' 'DO REPEAT' , 'DO++IF' 'DO REPEAT' 'DO REP' 'DO OTHER' 'D IF' 'DO I' DO"
at_fn_check_prepare_trace "command-name.at:63"
( $at_check_trace; command-name-test 'DO IF' 'DO REPEAT' , 'DO++IF' 'DO REPEAT' 'DO REP' 'DO OTHER' 'D IF' 'DO I' DO
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string=\"DO IF\":
	command=\"DO IF\" match=yes exact=yes missing_words=0
	command=\"DO REPEAT\" match=no
match: DO IF, missing_words=0

string=\"DO REPEAT\":
	command=\"DO IF\" match=no
	command=\"DO REPEAT\" match=yes exact=yes missing_words=0
match: DO REPEAT, missing_words=0

string=\"DO REP\":
	command=\"DO IF\" match=no
	command=\"DO REPEAT\" match=yes exact=no missing_words=0
match: DO REPEAT, missing_words=0

string=\"DO OTHER\":
	command=\"DO IF\" match=no
	command=\"DO REPEAT\" match=no
match: none, missing_words=0

string=\"D IF\":
	command=\"DO IF\" match=no
	command=\"DO REPEAT\" match=no
match: none, missing_words=0

string=\"DO I\":
	command=\"DO IF\" match=no
	command=\"DO REPEAT\" match=no
match: none, missing_words=0

string=\"DO\":
	command=\"DO IF\" match=yes exact=yes missing_words=1
	command=\"DO REPEAT\" match=yes exact=yes missing_words=1
match: none, missing_words=1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command-name.at:63"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_206
#AT_START_207
at_fn_group_banner 207 'command-name.at:102' \
  "two words with prefix match" "                    " 22
at_xfail=no
(
  printf "%s\n" "207. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/command-name.at:104: command-name-test GET 'GET DATA' , GET 'GET TYPE' 'GET DAT' 'GET DATA'"
at_fn_check_prepare_trace "command-name.at:104"
( $at_check_trace; command-name-test GET 'GET DATA' , GET 'GET TYPE' 'GET DAT' 'GET DATA'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string=\"GET\":
	command=\"GET\" match=yes exact=yes missing_words=0
	command=\"GET DATA\" match=yes exact=yes missing_words=1
match: none, missing_words=1

string=\"GET TYPE\":
	command=\"GET\" match=yes exact=yes missing_words=-1
	command=\"GET DATA\" match=no
match: GET, missing_words=-1

string=\"GET DAT\":
	command=\"GET\" match=yes exact=yes missing_words=-1
	command=\"GET DATA\" match=yes exact=no missing_words=0
match: GET DATA, missing_words=0

string=\"GET DATA\":
	command=\"GET\" match=yes exact=yes missing_words=-1
	command=\"GET DATA\" match=yes exact=yes missing_words=0
match: GET DATA, missing_words=0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command-name.at:104"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_207
#AT_START_208
at_fn_group_banner 208 'command-name.at:128' \
  "ambiguous single-word names" "                    " 22
at_xfail=no
(
  printf "%s\n" "208. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/command-name.at:130: command-name-test CASEPLOT CASESTOVARS , CAS Case CaseP CaseS"
at_fn_check_prepare_trace "command-name.at:130"
( $at_check_trace; command-name-test CASEPLOT CASESTOVARS , CAS Case CaseP CaseS
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string=\"CAS\":
	command=\"CASEPLOT\" match=yes exact=no missing_words=0
	command=\"CASESTOVARS\" match=yes exact=no missing_words=0
match: none, missing_words=0

string=\"Case\":
	command=\"CASEPLOT\" match=yes exact=no missing_words=0
	command=\"CASESTOVARS\" match=yes exact=no missing_words=0
match: none, missing_words=0

string=\"CaseP\":
	command=\"CASEPLOT\" match=yes exact=no missing_words=0
	command=\"CASESTOVARS\" match=no
match: CASEPLOT, missing_words=0

string=\"CaseS\":
	command=\"CASEPLOT\" match=no
	command=\"CASESTOVARS\" match=yes exact=no missing_words=0
match: CASESTOVARS, missing_words=0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command-name.at:130"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_208
#AT_START_209
at_fn_group_banner 209 'command-name.at:154' \
  "ambiguous two-word names" "                       " 22
at_xfail=no
(
  printf "%s\n" "209. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/command-name.at:156: command-name-test VARCOMP VARSTOCASES 'VARIABLE ATTRIBUTE' , VAR VARC VARS VARI 'VAR++ATT'"
at_fn_check_prepare_trace "command-name.at:156"
( $at_check_trace; command-name-test VARCOMP VARSTOCASES 'VARIABLE ATTRIBUTE' , VAR VARC VARS VARI 'VAR++ATT'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string=\"VAR\":
	command=\"VARCOMP\" match=yes exact=no missing_words=0
	command=\"VARSTOCASES\" match=yes exact=no missing_words=0
	command=\"VARIABLE ATTRIBUTE\" match=yes exact=no missing_words=1
match: none, missing_words=1

string=\"VARC\":
	command=\"VARCOMP\" match=yes exact=no missing_words=0
	command=\"VARSTOCASES\" match=no
	command=\"VARIABLE ATTRIBUTE\" match=no
match: VARCOMP, missing_words=0

string=\"VARS\":
	command=\"VARCOMP\" match=no
	command=\"VARSTOCASES\" match=yes exact=no missing_words=0
	command=\"VARIABLE ATTRIBUTE\" match=no
match: VARSTOCASES, missing_words=0

string=\"VARI\":
	command=\"VARCOMP\" match=no
	command=\"VARSTOCASES\" match=no
	command=\"VARIABLE ATTRIBUTE\" match=yes exact=no missing_words=1
match: none, missing_words=1

string=\"VAR ATT\":
	command=\"VARCOMP\" match=yes exact=no missing_words=-1
	command=\"VARSTOCASES\" match=yes exact=no missing_words=-1
	command=\"VARIABLE ATTRIBUTE\" match=yes exact=no missing_words=0
match: VARIABLE ATTRIBUTE, missing_words=0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command-name.at:156"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_209
#AT_START_210
at_fn_group_banner 210 'command-name.at:190' \
  "numbers and punctuation" "                        " 22
at_xfail=no
(
  printf "%s\n" "210. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/command-name.at:192: command-name-test T-TEST 2SLS LIST , T-TEST 'T - Test' 2SLS '2 SLS' List"
at_fn_check_prepare_trace "command-name.at:192"
( $at_check_trace; command-name-test T-TEST 2SLS LIST , T-TEST 'T - Test' 2SLS '2 SLS' List
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string=\"T-TEST\":
	command=\"T-TEST\" match=yes exact=yes missing_words=0
	command=\"2SLS\" match=no
	command=\"LIST\" match=no
match: T-TEST, missing_words=0

string=\"T - Test\":
	command=\"T-TEST\" match=yes exact=yes missing_words=0
	command=\"2SLS\" match=no
	command=\"LIST\" match=no
match: T-TEST, missing_words=0

string=\"2SLS\":
	command=\"T-TEST\" match=no
	command=\"2SLS\" match=yes exact=yes missing_words=0
	command=\"LIST\" match=no
match: 2SLS, missing_words=0

string=\"2 SLS\":
	command=\"T-TEST\" match=no
	command=\"2SLS\" match=yes exact=yes missing_words=0
	command=\"LIST\" match=no
match: 2SLS, missing_words=0

string=\"List\":
	command=\"T-TEST\" match=no
	command=\"2SLS\" match=no
	command=\"LIST\" match=yes exact=yes missing_words=0
match: LIST, missing_words=0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command-name.at:192"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_210
#AT_START_211
at_fn_group_banner 211 'command-name.at:226' \
  "off by more than one word" "                      " 22
at_xfail=no
(
  printf "%s\n" "211. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/command-name.at:228: command-name-test 'a++b c' , a 'a b' 'a b c' 'a++b c d' 'a b c++d e'"
at_fn_check_prepare_trace "command-name.at:228"
( $at_check_trace; command-name-test 'a++b c' , a 'a b' 'a b c' 'a++b c d' 'a b c++d e'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string=\"a\":
	command=\"a b c\" match=yes exact=yes missing_words=2
match: none, missing_words=1

string=\"a b\":
	command=\"a b c\" match=yes exact=yes missing_words=1
match: none, missing_words=1

string=\"a b c\":
	command=\"a b c\" match=yes exact=yes missing_words=0
match: a b c, missing_words=0

string=\"a b c d\":
	command=\"a b c\" match=yes exact=yes missing_words=-1
match: a b c, missing_words=-1

string=\"a b c d e\":
	command=\"a b c\" match=yes exact=yes missing_words=-2
match: a b c, missing_words=-2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/command-name.at:228"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_211
#AT_START_212
at_fn_group_banner 212 'lexer.at:19' \
  "lexer ignores initial #! line" "                  " 23
at_xfail=no
(
  printf "%s\n" "212. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lexer.sps <<'_ATEOF'
#! /usr/local/bin/pspp
DATA LIST LIST NOTABLE /a.
BEGIN DATA.
1
2
END DATA.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/lexer.at:29: pspp -o pspp.csv lexer.sps"
at_fn_check_prepare_trace "lexer.at:29"
( $at_check_trace; pspp -o pspp.csv lexer.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lexer.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/lexer.at:30: cat pspp.csv"
at_fn_check_prepare_trace "lexer.at:30"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
a
1.00
2.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lexer.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_212
#AT_START_213
at_fn_group_banner 213 'lexer.at:38' \
  "lexer properly reports scan errors" "             " 23
at_xfail=no
(
  printf "%s\n" "213. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lexer.sps <<'_ATEOF'
x'123'
x'1x'
u''
u'012345678'
u'd800'
u'110000'
'foo
'very long unterminated string that be ellipsized in its error message
1e .x
^
�
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/lexer.at:52: pspp -O format=csv lexer.sps"
at_fn_check_prepare_trace "lexer.at:52"
( $at_check_trace; pspp -O format=csv lexer.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"lexer.sps:1.1-1.6: error: String of hex digits has 3 characters, which is not a multiple of 2.
    1 | x'123'
      | ^~~~~~\"

\"lexer.sps:2.1-2.5: error: \`x' is not a valid hex digit.
    2 | x'1x'
      | ^~~~~\"

\"lexer.sps:3.1-3.3: error: Unicode string contains 0 bytes, which is not in the valid range of 1 to 8 bytes.
    3 | u''
      | ^~~\"

\"lexer.sps:4.1-4.12: error: Unicode string contains 9 bytes, which is not in the valid range of 1 to 8 bytes.
    4 | u'012345678'
      | ^~~~~~~~~~~~\"

\"lexer.sps:5.1-5.7: error: U+D800 is not a valid Unicode code point.
    5 | u'd800'
      | ^~~~~~~\"

\"lexer.sps:6.1-6.9: error: U+110000 is not a valid Unicode code point.
    6 | u'110000'
      | ^~~~~~~~~\"

\"lexer.sps:7.1-7.4: error: Unterminated string constant.
    7 | 'foo
      | ^~~~\"

\"lexer.sps:8.1-8.70: error: Unterminated string constant.
    8 | 'very long unterminated string that be ellipsized in its error message
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"lexer.sps:9.1-9.2: error: Missing exponent following \`1e'.
    9 | 1e .x
      | ^~\"

\"lexer.sps:9.4: error: Syntax error expecting command name.
    9 | 1e .x
      |    ^\"

\"lexer.sps:10.1: error: Bad character \`^' in input.
   10 | ^
      | ^\"

\"lexer.sps:11.1-11.2: error: Bad character U+FFFD in input.
   11 | �
      | ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/lexer.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_213
#AT_START_214
at_fn_group_banner 214 'lexer.at:104' \
  "lexer crash due to null byte" "                   " 23
at_xfail=no
(
  printf "%s\n" "214. $at_setup_line: testing $at_desc ..."
  $at_traceon

# Intentionally leave out the new-line and add a null byte:
printf "datA dist list notable file='input.txt'/a b c.
lis|.\0" > lexer.sps

{ set +x
printf "%s\n" "$at_srcdir/lexer.at:109: pspp -O format=csv lexer.sps"
at_fn_check_prepare_trace "lexer.at:109"
( $at_check_trace; pspp -O format=csv lexer.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"lexer.sps:1.1-1.9: error: Unknown command \`datA dist'.
    1 | datA dist list notable file='input.txt'/a b c.
      | ^~~~~~~~~\"

\"lexer.sps:2.1-2.3: error: LIST: LIST is allowed only after the active dataset has been defined.
    2 | lis|.\"

\"lexer.sps:2.6: error: LIST: Bad character U+0000 in input.
    2 | lis|.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/lexer.at:109"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_214
#AT_START_215
at_fn_group_banner 215 'lexer.at:126' \
  "lexer crash due to overflow" "                    " 23
at_xfail=no
(
  printf "%s\n" "215. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "DATA LIST/5555555555555555." > lexer.sps

{ set +x
printf "%s\n" "$at_srcdir/lexer.at:129: pspp -O format=csv lexer.sps"
at_fn_check_prepare_trace "lexer.at:129"
( $at_check_trace; pspp -O format=csv lexer.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"lexer.sps:1.11-1.26: error: DATA LIST: Syntax error expecting integer between 1 and 2147483647.
    1 | DATA LIST/5555555555555555.
      |           ^~~~~~~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/lexer.at:129"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_215
#AT_START_216
at_fn_group_banner 216 'lexer.at:137' \
  "lexer crash due to reentrancy in error processing" "" 23
at_xfail=no
(
  printf "%s\n" "216. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lexer.sps <<'_ATEOF'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-^
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/lexer.at:150: pspp lexer.sps"
at_fn_check_prepare_trace "lexer.at:150"
( $at_check_trace; pspp lexer.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/lexer.at:150"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_216
#AT_START_217
at_fn_group_banner 217 'scan.at:25' \
  "identifiers" "                                    " 24
at_xfail=no
(
  printf "%s\n" "217. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
a aB i5 $x @efg @@. !abcd !* !*a #.# .x _z.
abcd. abcd.
QRSTUV./* end of line comment */
QrStUv./* end of line comment */ 
WXYZ. /* unterminated end of line comment
�. /* U+FFFD is not valid in an identifier
_ATEOF

cat >expout-base <<'_ATEOF'
ID "a"
ID "aB"
ID "i5"
ID "$x"
ID "@efg"
ID "@@."
MACRO_ID "!abcd"
MACRO_ID "!*"
MACRO_ID "!*"
ID "a"
ID "#.#"
MACRO_PUNCT "."
ID "x"
MACRO_PUNCT "_"
ID "z"
ENDCMD
ID "abcd."
ID "abcd"
ENDCMD
ID "QRSTUV"
ENDCMD
ID "QrStUv"
ENDCMD
ID "WXYZ"
ENDCMD
STOP "Bad character U+FFFD in input."
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:65: scan-test -i input"
at_fn_check_prepare_trace "scan.at:65"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:65: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:65"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_217
#AT_START_218
at_fn_group_banner 218 'scan.at:68' \
  "reserved words" "                                 " 24
at_xfail=no
(
  printf "%s\n" "218. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
and or not eq ge gt le lt ne all by to with
AND OR NOT EQ GE GT LE LT NE ALL BY TO WITH
andx orx notx eqx gex gtx lex ltx nex allx byx tox withx
and. with.
_ATEOF

cat >expout-base <<'_ATEOF'
AND
OR
NOT
EQ
GE
GT
LE
LT
NE
ALL
BY
TO
WITH
AND
OR
NOT
EQ
GE
GT
LE
LT
NE
ALL
BY
TO
WITH
ID "andx"
ID "orx"
ID "notx"
ID "eqx"
ID "gex"
ID "gtx"
ID "lex"
ID "ltx"
ID "nex"
ID "allx"
ID "byx"
ID "tox"
ID "withx"
ID "and."
WITH
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:121: scan-test -i input"
at_fn_check_prepare_trace "scan.at:121"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:121: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:121"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_218
#AT_START_219
at_fn_group_banner 219 'scan.at:124' \
  "punctuation" "                                    " 24
at_xfail=no
(
  printf "%s\n" "219. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
~ & | = >= > <= < ~= <> ( ) , - + * / [ ] **
~&|=>=><=<~=<>(),-+*/[]**
% : ; ? _ ` { } ~
_ATEOF

cat >expout-base <<'_ATEOF'
NOT
AND
OR
EQUALS
GE
GT
LE
LT
NE
NE
LPAREN
RPAREN
COMMA
DASH
PLUS
ASTERISK
SLASH
LBRACK
RBRACK
EXP
NOT
AND
OR
EQUALS
GE
GT
LE
LT
NE
NE
LPAREN
RPAREN
COMMA
DASH
PLUS
ASTERISK
SLASH
LBRACK
RBRACK
EXP
MACRO_PUNCT "%"
COLON
SEMICOLON
MACRO_PUNCT "?"
MACRO_PUNCT "_"
MACRO_PUNCT "`"
LCURLY
RCURLY
NOT
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:183: scan-test -i input"
at_fn_check_prepare_trace "scan.at:183"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:183"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:183: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:183"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:183"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_219
#AT_START_220
at_fn_group_banner 220 'scan.at:186' \
  "positive numbers" "                               " 24
at_xfail=no
(
  printf "%s\n" "220. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
0 1 01 001. 1.
123. /* comment 1 */ /* comment 2 */
.1 0.1 00.1 00.10
5e1 6E-1 7e+1 6E+01 6e-03
.3E1 .4e-1 .5E+1 .6e+01 .7E-03
1.23e1 45.6E-1 78.9e+1 99.9E+01 11.2e-03
. 1e e1 1e+ 1e-
_ATEOF

cat >expout-base <<'_ATEOF'
POS_NUM
POS_NUM 1
POS_NUM 1
POS_NUM 1
POS_NUM 1
ENDCMD
POS_NUM 123
ENDCMD
ENDCMD
POS_NUM 1
POS_NUM 0.1
POS_NUM 0.1
POS_NUM 0.1
POS_NUM 50
POS_NUM 0.6
POS_NUM 70
POS_NUM 60
POS_NUM 0.006
ENDCMD
POS_NUM 30
POS_NUM 0.04
POS_NUM 5
POS_NUM 6
POS_NUM 0.0007
POS_NUM 12.3
POS_NUM 4.56
POS_NUM 789
POS_NUM 999
POS_NUM 0.0112
ENDCMD
STOP "Missing exponent following `1e'."
ID "e1"
STOP "Missing exponent following `1e+'."
STOP "Missing exponent following `1e-'."
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:234: scan-test -i input"
at_fn_check_prepare_trace "scan.at:234"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:234"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:234: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:234"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:234"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_220
#AT_START_221
at_fn_group_banner 221 'scan.at:237' \
  "negative numbers" "                               " 24
at_xfail=no
(
  printf "%s\n" "221. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input-base <<'_ATEOF'
 -0 -1 -01 -001. -1.
 -123. /* comment 1 */ /* comment 2 */
 -.1 -0.1 -00.1 -00.10
 -5e1 -6E-1 -7e+1 -6E+01 -6e-03
 -.3E1 -.4e-1 -.5E+1 -.6e+01 -.7E-03
 -1.23e1 -45.6E-1 -78.9e+1 -99.9E+01 -11.2e-03
 -/**/1
 -. -1e -e1 -1e+ -1e- -1.
_ATEOF

cat >expout-base0 <<'_ATEOF'
NEG_NUM
NEG_NUM -1
NEG_NUM -1
NEG_NUM -1
NEG_NUM -1
ENDCMD
NEG_NUM -123
ENDCMD
NEG_NUM -0.1
NEG_NUM -0.1
NEG_NUM -0.1
NEG_NUM -0.1
NEG_NUM -50
NEG_NUM -0.6
NEG_NUM -70
NEG_NUM -60
NEG_NUM -0.006
NEG_NUM -3
NEG_NUM -0.04
NEG_NUM -5
NEG_NUM -6
NEG_NUM -0.0007
NEG_NUM -12.3
NEG_NUM -4.56
NEG_NUM -789
NEG_NUM -999
NEG_NUM -0.0112
NEG_NUM -1
DASH
MACRO_PUNCT "."
STOP "Missing exponent following `-1e'."
DASH
ID "e1"
STOP "Missing exponent following `-1e+'."
STOP "Missing exponent following `-1e-'."
NEG_NUM -1
ENDCMD
STOP
_ATEOF


cp input-base input
cp expout-base0 expout-base
sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:292: scan-test -i input"
at_fn_check_prepare_trace "scan.at:292"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:292"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:292: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:292"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:292"
$at_failed && at_fn_log_failure
$at_traceon; }


sed 's/ -/ - /g' < input-base > input
sed 's/following `-/following `- /' < expout-base0 > expout-base
sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:296: scan-test -i input"
at_fn_check_prepare_trace "scan.at:296"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:296"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:296: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:296"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:296"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_221
#AT_START_222
at_fn_group_banner 222 'scan.at:299' \
  "strings" "                                        " 24
at_xfail=no
(
  printf "%s\n" "222. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
'x' "y" 'abc'
'Don''t' "Can't" 'Won''t'
"""quoted""" '"quoted"'
'' "" '''' """"
'missing end quote
"missing double quote
'x' + "y"
+ 'z' +
'a' /* abc */ + "b" /*
+ 'c' +/* */"d"/* */+'e'
'foo'
+          /* special case: + in column 0 would ordinarily start a new command
'bar'
'foo'
 +
'bar'
'foo'
+

'bar'

+
x"4142"+'5152'
"4142"+
x'5152'
x"4142"
+u'304a'
"�あいうえお"
"abc"+U"FFFD"+u'3048'+"xyz"
_ATEOF

cat >expout-base <<'_ATEOF'
STRING "x"
STRING "y"
STRING "abc"
STRING "Don't"
STRING "Can't"
STRING "Won't"
STRING ""quoted""
STRING ""quoted""
STRING ""
STRING ""
STRING "'"
STRING """
STOP "Unterminated string constant."
STOP "Unterminated string constant."
STRING "xyzabcde"
STRING "foobar"
STRING "foobar"
STRING "foo"
PLUS
ENDCMD
STRING "bar"
ENDCMD
PLUS
STRING "AB5152"
STRING "4142QR"
STRING "ABお"
STRING "�あいうえお"
STRING "abc�えxyz"
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:363: scan-test -i input"
at_fn_check_prepare_trace "scan.at:363"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:363"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:363: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:363"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:363"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_222
#AT_START_223
at_fn_group_banner 223 'scan.at:366' \
  "#! construct" "                                   " 24
at_xfail=no
(
  printf "%s\n" "223. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
#! /usr/bin/pspp
#! /usr/bin/pspp
_ATEOF

cat >expout-base <<'_ATEOF'
ID "#"
MACRO_ID "!"
SLASH
ID "usr"
SLASH
ID "bin"
SLASH
ID "pspp"
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:383: scan-test -i input"
at_fn_check_prepare_trace "scan.at:383"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:383"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:383: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:383"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:383"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_223
#AT_START_224
at_fn_group_banner 224 'scan.at:386' \
  "* and COMMENT commands" "                         " 24
at_xfail=no
(
  printf "%s\n" "224. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
* Comment commands "don't
have to contain valid tokens.

** Check ambiguity with ** token.
****************.

comment keyword works too.
COMM also.
com is ambiguous with COMPUTE.

   * Comment need not start at left margin.

* Comment ends with blank line

next command.

_ATEOF

cat >expout-base <<'_ATEOF'
ENDCMD
ENDCMD
ENDCMD
ENDCMD
ENDCMD
ENDCMD
ENDCMD
ID "com"
ID "is"
ID "ambiguous"
WITH
ID "COMPUTE"
ENDCMD
ENDCMD
ENDCMD
ENDCMD
ENDCMD
ID "next"
ID "command"
ENDCMD
-ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:430: scan-test -i input"
at_fn_check_prepare_trace "scan.at:430"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:430"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:430: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:430"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:430"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_224
#AT_START_225
at_fn_group_banner 225 'scan.at:433' \
  "DOCUMENT command" "                               " 24
at_xfail=no
(
  printf "%s\n" "225. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
DOCUMENT one line.
DOC more
    than
        one
            line.
docu
first.paragraph
isn't parsed as tokens

second paragraph.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "DOCUMENT"
STRING "DOCUMENT one line."
ENDCMD
ENDCMD
ID "DOCUMENT"
STRING "DOC more"
STRING "    than"
STRING "        one"
STRING "            line."
ENDCMD
ENDCMD
ID "DOCUMENT"
STRING "docu"
STRING "first.paragraph"
STRING "isn't parsed as tokens"
STRING ""
STRING "second paragraph."
-ENDCMD
-ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:469: scan-test -i input"
at_fn_check_prepare_trace "scan.at:469"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:469"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:469: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:469"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:469"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_225
#AT_START_226
at_fn_group_banner 226 'scan.at:472' \
  "FILE LABEL commands" "                            " 24
at_xfail=no
(
  printf "%s\n" "226. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
FIL label isn't quoted.
FILE
  lab 'is quoted'.
FILE /*
/**/  lab not quoted here either

_ATEOF

cat >expout-base <<'_ATEOF'
ID "FIL"
ID "label"
STRING "isn't quoted"
ENDCMD
ID "FILE"
ID "lab"
STRING "is quoted"
ENDCMD
ID "FILE"
ID "lab"
STRING "not quoted here either"
-ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:497: scan-test -i input"
at_fn_check_prepare_trace "scan.at:497"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:497"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:497: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:497"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:497"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_226
#AT_START_227
at_fn_group_banner 227 'scan.at:500' \
  "BEGIN DATA command" "                             " 24
at_xfail=no
(
  printf "%s\n" "227. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
begin data.
123
xxx
end data.

BEG /**/ DAT /*
5 6 7 /* x

end  data
end data
.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "begin"
ID "data"
ENDCMD
STRING "123"
STRING "xxx"
ID "end"
ID "data"
ENDCMD
ENDCMD
ID "BEG"
ID "DAT"
STRING "5 6 7 /* x"
STRING ""
STRING "end  data"
ID "end"
ID "data"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:535: scan-test -i input"
at_fn_check_prepare_trace "scan.at:535"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:535"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:535: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:535"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:535"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_227
#AT_START_228
at_fn_group_banner 228 'scan.at:538' \
  "DO REPEAT command" "                              " 24
at_xfail=no
(
  printf "%s\n" "228. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
do repeat x=a b c
          y=d e f.
  do repeat a=1 thru 5.
another command.
second command
+ third command.
end /* x */ /* y */ repeat print.
end
 repeat.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "do"
ID "repeat"
ID "x"
EQUALS
ID "a"
ID "b"
ID "c"
ID "y"
EQUALS
ID "d"
ID "e"
ID "f"
ENDCMD
STRING "  do repeat a=1 thru 5."
STRING "another command."
STRING "second command"
STRING "+ third command."
STRING "end /* x */ /* y */ repeat print."
ID "end"
ID "repeat"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:575: scan-test -i input"
at_fn_check_prepare_trace "scan.at:575"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:575"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:575: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:575"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:575"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_228
#AT_START_229
at_fn_group_banner 229 'scan.at:578' \
  "DO REPEAT command in batch mode" "                " 24
at_xfail=no
(
  printf "%s\n" "229. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
do repeat x=a b c
          y=d e f
do repeat a=1 thru 5
another command
second command
+ third command
end /* x */ /* y */ repeat print
end
 repeat
do
  repeat #a=1

  inner command
end repeat
_ATEOF

cat >expout-base <<'_ATEOF'
ID "do"
ID "repeat"
ID "x"
EQUALS
ID "a"
ID "b"
ID "c"
ID "y"
EQUALS
ID "d"
ID "e"
ID "f"
ENDCMD
STRING "do repeat a=1 thru 5"
STRING "another command"
STRING "second command"
STRING "+ third command"
STRING "end /* x */ /* y */ repeat print"
ID "end"
ID "repeat"
ENDCMD
ID "do"
ID "repeat"
ID "#a"
EQUALS
POS_NUM 1
ENDCMD
STRING "  inner command"
ID "end"
ID "repeat"
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:629: scan-test -b input"
at_fn_check_prepare_trace "scan.at:629"
( $at_check_trace; scan-test -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:629"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:629: scan-test -s -b input"
at_fn_check_prepare_trace "scan.at:629"
( $at_check_trace; scan-test -s -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:629"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_229
#AT_START_230
at_fn_group_banner 230 'scan.at:632' \
  "DEFINE command - simple" "                        " 24
at_xfail=no
(
  printf "%s\n" "230. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()
var1 var2 var3
!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
RPAREN
STRING "var1 var2 var3"
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:649: scan-test -i input"
at_fn_check_prepare_trace "scan.at:649"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:649"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:649: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:649"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:649"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_230
#AT_START_231
at_fn_group_banner 231 'scan.at:652' \
  "DEFINE command - no newline after parentheses" "  " 24
at_xfail=no
(
  printf "%s\n" "231. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1() var1 var2 var3
!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
RPAREN
STRING " var1 var2 var3"
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:668: scan-test -i input"
at_fn_check_prepare_trace "scan.at:668"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:668"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:668: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:668"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:668"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_231
#AT_START_232
at_fn_group_banner 232 'scan.at:671' \
  "DEFINE command - no newline before !ENDDEFINE" "  " 24
at_xfail=no
(
  printf "%s\n" "232. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()
var1 var2 var3!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
RPAREN
STRING "var1 var2 var3"
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:687: scan-test -i input"
at_fn_check_prepare_trace "scan.at:687"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:687"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:687: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:687"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:687"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_232
#AT_START_233
at_fn_group_banner 233 'scan.at:690' \
  "DEFINE command - all on one line" "               " 24
at_xfail=no
(
  printf "%s\n" "233. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()var1 var2 var3!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
RPAREN
STRING "var1 var2 var3"
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:705: scan-test -i input"
at_fn_check_prepare_trace "scan.at:705"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:705"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:705: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:705"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:705"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_233
#AT_START_234
at_fn_group_banner 234 'scan.at:708' \
  "DEFINE command - empty" "                         " 24
at_xfail=no
(
  printf "%s\n" "234. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()
!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
RPAREN
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:723: scan-test -i input"
at_fn_check_prepare_trace "scan.at:723"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:723"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:723: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:723"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:723"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_234
#AT_START_235
at_fn_group_banner 235 'scan.at:726' \
  "DEFINE command - blank lines" "                   " 24
at_xfail=no
(
  printf "%s\n" "235. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()


!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
RPAREN
STRING ""
STRING ""
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:745: scan-test -i input"
at_fn_check_prepare_trace "scan.at:745"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:745"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:745: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:745"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:745"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_235
#AT_START_236
at_fn_group_banner 236 'scan.at:748' \
  "DEFINE command - arguments" "                     " 24
at_xfail=no
(
  printf "%s\n" "236. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1(a(), b(), c())
!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
ID "a"
LPAREN
RPAREN
COMMA
ID "b"
LPAREN
RPAREN
COMMA
ID "c"
LPAREN
RPAREN
RPAREN
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:774: scan-test -i input"
at_fn_check_prepare_trace "scan.at:774"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:774"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:774: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:774"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:774"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_236
#AT_START_237
at_fn_group_banner 237 'scan.at:777' \
  "DEFINE command - multiline arguments" "           " 24
at_xfail=no
(
  printf "%s\n" "237. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1(
  a(), b(
  ),
  c()
)
!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
ID "a"
LPAREN
RPAREN
COMMA
ID "b"
LPAREN
RPAREN
COMMA
ID "c"
LPAREN
RPAREN
RPAREN
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:807: scan-test -i input"
at_fn_check_prepare_trace "scan.at:807"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:807"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:807: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:807"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:807"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_237
#AT_START_238
at_fn_group_banner 238 'scan.at:810' \
  "DEFINE command - arguments start on second line" "" 24
at_xfail=no
(
  printf "%s\n" "238. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1
(x,y,z
)
content 1
content 2
!enddefine.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
ID "x"
COMMA
ID "y"
COMMA
ID "z"
RPAREN
STRING "content 1"
STRING "content 2"
MACRO_ID "!enddefine"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:836: scan-test -i input"
at_fn_check_prepare_trace "scan.at:836"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:836"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:836: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:836"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:836"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_238
#AT_START_239
at_fn_group_banner 239 'scan.at:839' \
  "DEFINE command - early end of command 1" "        " 24
at_xfail=no
(
  printf "%s\n" "239. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1.
data list /x 1.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
ENDCMD
ID "data"
ID "list"
SLASH
ID "x"
POS_NUM 1
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:857: scan-test -i input"
at_fn_check_prepare_trace "scan.at:857"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:857"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:857: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:857"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:857"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_239
#AT_START_240
at_fn_group_banner 240 'scan.at:860' \
  "DEFINE command - early end of command 2" "        " 24
at_xfail=no
(
  printf "%s\n" "240. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1
x.
data list /x 1.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
ID "x"
ENDCMD
ID "data"
ID "list"
SLASH
ID "x"
POS_NUM 1
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:880: scan-test -i input"
at_fn_check_prepare_trace "scan.at:880"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:880"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:880: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:880"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:880"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_240
#AT_START_241
at_fn_group_banner 241 'scan.at:883' \
  "DEFINE command - early end of command 3" "        " 24
at_xfail=no
(
  printf "%s\n" "241. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1(.
x.
data list /x 1.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
ENDCMD
ID "x"
ENDCMD
ID "data"
ID "list"
SLASH
ID "x"
POS_NUM 1
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:905: scan-test -i input"
at_fn_check_prepare_trace "scan.at:905"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:905"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:905: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:905"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:905"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_241
#AT_START_242
at_fn_group_banner 242 'scan.at:908' \
  "DEFINE command - early end of command 4" "        " 24
at_xfail=no
(
  printf "%s\n" "242. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1.
data list /x 1.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
ENDCMD
ID "data"
ID "list"
SLASH
ID "x"
POS_NUM 1
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:928: scan-test -i input"
at_fn_check_prepare_trace "scan.at:928"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:928"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:928: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:928"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:928"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_242
#AT_START_243
at_fn_group_banner 243 'scan.at:931' \
  "DEFINE command - missing !ENDDEFINE" "            " 24
at_xfail=no
(
  printf "%s\n" "243. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()
content line 1
content line 2
_ATEOF

cat >expout-base <<'_ATEOF'
ID "define"
STRING "!macro1"
LPAREN
RPAREN
STRING "content line 1"
STRING "content line 2"
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:947: scan-test -i input"
at_fn_check_prepare_trace "scan.at:947"
( $at_check_trace; scan-test -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:947"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:947: scan-test -s -i input"
at_fn_check_prepare_trace "scan.at:947"
( $at_check_trace; scan-test -s -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:947"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_243
#AT_START_244
at_fn_group_banner 244 'scan.at:950' \
  "batch mode" "                                     " 24
at_xfail=no
(
  printf "%s\n" "244. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
first command
     another line of first command
+  second command
third command

fourth command.
   fifth command.
_ATEOF

cat >expout-base <<'_ATEOF'
ID "first"
ID "command"
ID "another"
ID "line"
ID "of"
ID "first"
ID "command"
ENDCMD
ID "second"
ID "command"
ENDCMD
ID "third"
ID "command"
ENDCMD
ID "fourth"
ID "command"
ENDCMD
ID "fifth"
ID "command"
ENDCMD
STOP
_ATEOF

sed 's/^-//' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:984: scan-test -b input"
at_fn_check_prepare_trace "scan.at:984"
( $at_check_trace; scan-test -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:984"
$at_failed && at_fn_log_failure
$at_traceon; }


   sed '/^-/d' < expout-base > expout
   { set +x
printf "%s\n" "$at_srcdir/scan.at:984: scan-test -s -b input"
at_fn_check_prepare_trace "scan.at:984"
( $at_check_trace; scan-test -s -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/scan.at:984"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_244
#AT_START_245
at_fn_group_banner 245 'segment.at:31' \
  "identifiers" "                                    " 25
at_xfail=no
(
  printf "%s\n" "245. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
a ab abc abcd !abcd
A AB ABC ABCD !ABCD
aB aBC aBcD !aBcD
$x $y $z !$z
grève Ângstrom poté
#a #b #c ## #d !#d
@efg @ @@. @#@ !@ 
## # #12345 #.#
f@#_.#6
GhIjK
.x 1y _z
_ATEOF

cat >expout-base <<'_ATEOF'
identifier      a    space
identifier      ab    space
identifier      abc    space
identifier      abcd    space
macro_id        !abcd
newline         \n (later)

identifier      A    space
identifier      AB    space
identifier      ABC    space
identifier      ABCD    space
macro_id        !ABCD
newline         \n (later)

identifier      aB    space
identifier      aBC    space
identifier      aBcD    space
macro_id        !aBcD
newline         \n (later)

identifier      $x    space
identifier      $y    space
identifier      $z    space
macro_id        !$z
newline         \n (later)

identifier      grève
spaces          <U+00A0>
identifier      Ângstrom
spaces          <U+00A0>
identifier      poté
newline         \n (later)

identifier      #a    space
identifier      #b    space
identifier      #c    space
identifier      ##    space
identifier      #d    space
macro_id        !#d
newline         \n (later)

identifier      @efg    space
identifier      @    space
identifier      @@.    space
identifier      @#@    space
macro_id        !@    space
newline         \n (later)

identifier      ##    space
identifier      #    space
identifier      #12345    space
identifier      #.#
newline         \n (later)

identifier      f@#\_.#6
newline         \n (later)

identifier      GhIjK
newline         \n (later)

start_command   .
identifier      x    space
number          1
identifier      y    space
punct           \_
identifier      z
-newline         \n (later)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:117: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:117"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:117"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:117: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:117"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:117"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:117: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:117"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:117"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:117: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:117"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:117"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_245
#AT_START_246
at_fn_group_banner 246 'segment.at:120' \
  "identifiers that end in '.'" "                    " 25
at_xfail=no
(
  printf "%s\n" "246. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
abcd. abcd.
ABCD. ABCD.
aBcD. aBcD. 
$y. $z. あいうえお.
#c. #d..
@@. @@....
#.#.
#abcd.
.
. 
LMNOP. 
QRSTUV./* end of line comment */
qrstuv. /* end of line comment */
QrStUv./* end of line comment */ 
wxyz./* unterminated end of line comment
WXYZ. /* unterminated end of line comment
WxYz./* unterminated end of line comment 
_ATEOF

cat >expout-base <<'_ATEOF'
identifier      abcd.    space
identifier      abcd
end_command     .
newline         \n (first)

identifier      ABCD.    space
identifier      ABCD
end_command     .
newline         \n (first)

identifier      aBcD.    space
identifier      aBcD
end_command     .    space
newline         \n (first)

identifier      $y.    space
identifier      $z.    space
identifier      あいうえお
end_command     .
newline         \n (first)

identifier      #c.    space
identifier      #d.
end_command     .
newline         \n (first)

identifier      @@.    space
identifier      @@...
end_command     .
newline         \n (first)

identifier      #.#
end_command     .
newline         \n (first)

identifier      #abcd
end_command     .
newline         \n (first)

end_command     .
newline         \n (first)

end_command     .    space
newline         \n (first)

identifier      LMNOP
end_command     .    space
newline         \n (first)

identifier      QRSTUV
end_command     .
comment         /*_end_of_line_comment_*/
newline         \n (first)

identifier      qrstuv
end_command     .    space
comment         /*_end_of_line_comment_*/
newline         \n (first)

identifier      QrStUv
end_command     .
comment         /*_end_of_line_comment_*/    space
newline         \n (first)

identifier      wxyz
end_command     .
comment         /*_unterminated_end_of_line_comment
newline         \n (first)

identifier      WXYZ
end_command     .    space
comment         /*_unterminated_end_of_line_comment
newline         \n (first)

identifier      WxYz
end_command     .
comment         /*_unterminated_end_of_line_comment_
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:223: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:223"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:223"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:223: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:223"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:223"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:223: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:223"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:223"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:223: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:223"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:223"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_246
#AT_START_247
at_fn_group_banner 247 'segment.at:226' \
  "reserved words" "                                 " 25
at_xfail=no
(
  printf "%s\n" "247. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
and or not eq ge gt le lt ne all by to with
AND OR NOT EQ GE GT LE LT NE ALL BY TO WITH
andx orx notx eqx gex gtx lex ltx nex allx byx tox withx
and. with.
_ATEOF

cat >expout-base <<'_ATEOF'
reserved_word   and    space
reserved_word   or    space
reserved_word   not    space
reserved_word   eq    space
reserved_word   ge    space
reserved_word   gt    space
reserved_word   le    space
reserved_word   lt    space
reserved_word   ne    space
reserved_word   all    space
reserved_word   by    space
reserved_word   to    space
reserved_word   with
newline         \n (later)

reserved_word   AND    space
reserved_word   OR    space
reserved_word   NOT    space
reserved_word   EQ    space
reserved_word   GE    space
reserved_word   GT    space
reserved_word   LE    space
reserved_word   LT    space
reserved_word   NE    space
reserved_word   ALL    space
reserved_word   BY    space
reserved_word   TO    space
reserved_word   WITH
newline         \n (later)

identifier      andx    space
identifier      orx    space
identifier      notx    space
identifier      eqx    space
identifier      gex    space
identifier      gtx    space
identifier      lex    space
identifier      ltx    space
identifier      nex    space
identifier      allx    space
identifier      byx    space
identifier      tox    space
identifier      withx
newline         \n (later)

identifier      and.    space
reserved_word   with
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:287: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:287"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:287"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:287: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:287"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:287"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:287: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:287"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:287"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:287: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:287"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:287"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_247
#AT_START_248
at_fn_group_banner 248 'segment.at:290' \
  "punctuation" "                                    " 25
at_xfail=no
(
  printf "%s\n" "248. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
~ & | = >= > <= < ~= <> ( ) , - + * / [ ] **
~&|=>=><=<~=<>(),-+*/[]**!*
% : ; ? _ ` { } ~ !*
_ATEOF

cat >expout-base <<'_ATEOF'
punct           ~    space
punct           &    space
punct           |    space
punct           =    space
punct           >=    space
punct           >    space
punct           <=    space
punct           <    space
punct           ~=    space
punct           <>    space
punct           (    space
punct           )    space
punct           ,    space
punct           -    space
punct           +    space
punct           *    space
punct           /    space
punct           [    space
punct           ]    space
punct           **
newline         \n (later)

punct           ~
punct           &
punct           |
punct           =
punct           >=
punct           >
punct           <=
punct           <
punct           ~=
punct           <>
punct           (
punct           )
punct           ,
punct           -
punct           +
punct           *
punct           /
punct           [
punct           ]
punct           **
macro_id        !*
newline         \n (later)

punct           %    space
punct           :    space
punct           ;    space
punct           ?    space
punct           \_    space
punct           `    space
punct           {    space
punct           }    space
punct           ~    space
macro_id        !*
-newline         \n (later)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:357: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:357"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:357"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:357: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:357"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:357"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:357: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:357"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:357"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:357: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:357"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:357"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_248
#AT_START_249
at_fn_group_banner 249 'segment.at:360' \
  "positive numbers" "                               " 25
at_xfail=no
(
  printf "%s\n" "249. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
0 1 01 001. 1.
123. /* comment 1 */ /* comment 2 */
.1 0.1 00.1 00.10
5e1 6E-1 7e+1 6E+01 6e-03
.3E1 .4e-1 .5E+1 .6e+01 .7E-03
1.23e1 45.6E-1 78.9e+1 99.9E+01 11.2e-03
. 1e e1 1e+ 1e- 1.
_ATEOF

cat >expout-base <<'_ATEOF'
number          0    space
number          1    space
number          01    space
number          001.    space
number          1
end_command     .
newline         \n (first)

number          123
end_command     .    space
comment         /*_comment_1_*/    space
comment         /*_comment_2_*/
newline         \n (first)

start_command   .
number          1    space
number          0.1    space
number          00.1    space
number          00.10
newline         \n (later)

number          5e1    space
number          6E-1    space
number          7e+1    space
number          6E+01    space
number          6e-03
newline         \n (later)

start_command   .
number          3E1    space
number          .4e-1    space
number          .5E+1    space
number          .6e+01    space
number          .7E-03
newline         \n (later)

number          1.23e1    space
number          45.6E-1    space
number          78.9e+1    space
number          99.9E+01    space
number          11.2e-03
newline         \n (later)

start_command   .    space
expected_exponent 1e    space
identifier      e1    space
expected_exponent 1e+    space
expected_exponent 1e-    space
number          1
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:426: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:426"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:426"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:426: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:426"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:426"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:426: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:426"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:426"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:426: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:426"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:426"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_249
#AT_START_250
at_fn_group_banner 250 'segment.at:429' \
  "negative numbers" "                               " 25
at_xfail=no
(
  printf "%s\n" "250. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
 -0 -1 -01 -001. -1.
 -123. /* comment 1 */ /* comment 2 */
 -.1 -0.1 -00.1 -00.10
 -5e1 -6E-1 -7e+1 -6E+01 -6e-03
 -.3E1 -.4e-1 -.5E+1 -.6e+01 -.7E-03
 -1.23e1 -45.6E-1 -78.9e+1 -99.9E+01 -11.2e-03
 -/**/1
 -. -1e -e1 -1e+ -1e- -1.
_ATEOF

cat >expout-base <<'_ATEOF'
spaces          _
number          -0    space
number          -1    space
number          -01    space
number          -001.    space
number          -1
end_command     .
newline         \n (first)
    space
number          -123
end_command     .    space
comment         /*_comment_1_*/    space
comment         /*_comment_2_*/
newline         \n (first)
    space
number          -.1    space
number          -0.1    space
number          -00.1    space
number          -00.10
newline         \n (later)
    space
number          -5e1    space
number          -6E-1    space
number          -7e+1    space
number          -6E+01    space
number          -6e-03
newline         \n (later)
    space
number          -.3E1    space
number          -.4e-1    space
number          -.5E+1    space
number          -.6e+01    space
number          -.7E-03
newline         \n (later)
    space
number          -1.23e1    space
number          -45.6E-1    space
number          -78.9e+1    space
number          -99.9E+01    space
number          -11.2e-03
newline         \n (later)
    space
punct           -
comment         /**/
number          1
newline         \n (later)
    space
punct           -
punct           .    space
expected_exponent -1e    space
punct           -
identifier      e1    space
expected_exponent -1e+    space
expected_exponent -1e-    space
number          -1
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:502: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:502"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:502"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:502: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:502"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:502"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:502: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:502"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:502"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:502: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:502"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:502"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_250
#AT_START_251
at_fn_group_banner 251 'segment.at:506' \
  "strings" "                                        " 25
at_xfail=no
(
  printf "%s\n" "251. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
'x' "y" 'abc'
'Don''t' "Can't" 'Won''t'
"""quoted""" '"quoted"'
'' ""
'missing end quote
"missing double quote
x"4142" X'5152'
u'fffd' U"041"
+ new command
+ /* comment */ 'string continuation'
+ /* also a punctuator on blank line
- 'new command'
_ATEOF

cat >expout-base <<'_ATEOF'
quoted_string   'x'    space
quoted_string   "y"    space
quoted_string   'abc'
newline         \n (later)

quoted_string   'Don''t'    space
quoted_string   "Can't"    space
quoted_string   'Won''t'
newline         \n (later)

quoted_string   """quoted"""    space
quoted_string   '"quoted"'
newline         \n (later)

quoted_string   ''    space
quoted_string   ""
newline         \n (later)

expected_quote  'missing_end_quote
newline         \n (later)

expected_quote  "missing_double_quote
newline         \n (later)

hex_string      x"4142"    space
hex_string      X'5152'
newline         \n (later)

unicode_string  u'fffd'    space
unicode_string  U"041"
newline         \n (later)

start_command   +    space
identifier      new    space
identifier      command
newline         \n (later)

punct           +    space
comment         /*_comment_*/    space
quoted_string   'string_continuation'
newline         \n (later)

punct           +    space
comment         /*_also_a_punctuator_on_blank_line
newline         \n (later)

start_command   -    space
quoted_string   'new_command'
-newline         \n (later)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:575: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:575"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:575"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:575: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:575"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:575"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:575: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:575"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:575"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:575: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:575"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:575"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_251
#AT_START_252
at_fn_group_banner 252 'segment.at:578' \
  "#! construct" "                                   " 25
at_xfail=no
(
  printf "%s\n" "252. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
#! /usr/bin/pspp
title my title.
#! /usr/bin/pspp
_ATEOF

cat >expout-base <<'_ATEOF'
shbang          #!_/usr/bin/pspp
newline         \n (first)

identifier      title    space
identifier      my    space
identifier      title
end_command     .
newline         \n (first)

identifier      #
macro_id        !    space
punct           /
identifier      usr
punct           /
identifier      bin
punct           /
identifier      pspp
-newline         \n (later)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:607: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:607"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:607"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:607: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:607"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:607"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:607: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:607"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:607"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:607: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:607"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:607"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_252
#AT_START_253
at_fn_group_banner 253 'segment.at:610' \
  "* and COMMENT commands" "                         " 25
at_xfail=no
(
  printf "%s\n" "253. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
* Comment commands "don't
have to contain valid tokens.

** Check ambiguity with ** token.
****************.

comment keyword works too.
COMM also.
com is ambiguous with COMPUTE.

   * Comment need not start at left margin.

* Comment ends with blank line

next command.

_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:631: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:631"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "* Comment commands \"don't
have to contain valid tokens.
-----
** Check ambiguity with ** token.
-----
****************.
-----
comment keyword works too.
-----
COMM also.
-----
com is ambiguous with COMPUTE.
-----
   * Comment need not start at left margin.
-----
* Comment ends with blank line
-----
next command.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:631"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
comment_command *_Comment_commands_"don't
newline         \n (COMMENT)

comment_command have_to_contain_valid_tokens
end_command     .
newline         \n (first)

separate_commands
newline         \n (first)

comment_command **_Check_ambiguity_with_**_token
end_command     .
newline         \n (first)

comment_command ****************
end_command     .
newline         \n (first)

separate_commands
newline         \n (first)

comment_command comment_keyword_works_too
end_command     .
newline         \n (first)

comment_command COMM_also
end_command     .
newline         \n (first)

identifier      com    space
identifier      is    space
identifier      ambiguous    space
reserved_word   with    space
identifier      COMPUTE
end_command     .
newline         \n (first)

separate_commands
newline         \n (first)

spaces          ___
comment_command *_Comment_need_not_start_at_left_margin
end_command     .
newline         \n (first)

separate_commands
newline         \n (first)

comment_command *_Comment_ends_with_blank_line
newline         \n (COMMENT)

separate_commands
newline         \n (first)

identifier      next    space
identifier      command
end_command     .
newline         \n (first)

-separate_commands
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:718: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:718"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:718"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:718: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:718"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:718"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:718: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:718"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:718"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:718: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:718"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:718"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_253
#AT_START_254
at_fn_group_banner 254 'segment.at:721' \
  "DOCUMENT command" "                               " 25
at_xfail=no
(
  printf "%s\n" "254. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
DOCUMENT one line.
DOC more
    than
        one
            line.
docu
first.paragraph
isn't parsed as tokens

second paragraph.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:735: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:735"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "DOCUMENT one line.
-----
DOC more
    than
        one
            line.
-----
docu
first.paragraph
isn't parsed as tokens

second paragraph.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:735"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
start_document
document        DOCUMENT_one_line.
end_command
separate_commands
newline         \n (first)

start_document
document        DOC_more
newline         \n (DOCUMENT)

document        ____than
newline         \n (DOCUMENT)

document        ________one
newline         \n (DOCUMENT)

document        ____________line.
end_command
separate_commands
newline         \n (first)

start_document
document        docu
newline         \n (DOCUMENT)

document        first.paragraph
newline         \n (DOCUMENT)

document        isn't_parsed_as_tokens
newline         \n (DOCUMENT)

document
newline         \n (DOCUMENT)

document        second_paragraph.
-end_command
-separate_commands
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:791: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:791"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:791"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:791: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:791"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:791"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:791: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:791"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:791"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:791: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:791"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:791"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_254
#AT_START_255
at_fn_group_banner 255 'segment.at:794' \
  "FILE LABEL command" "                             " 25
at_xfail=no
(
  printf "%s\n" "255. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
FIL label isn't quoted.
FILE
  lab 'is quoted'.
FILE /*
/**/  lab not quoted here either

_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:804: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:804"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "FIL label isn't quoted.
-----
FILE
  lab 'is quoted'.
-----
FILE /*
/**/  lab not quoted here either
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:804"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      FIL    space
identifier      label    space
unquoted_string isn't_quoted
end_command     .
newline         \n (first)

identifier      FILE
newline         \n (later)

spaces          __
identifier      lab    space
quoted_string   'is_quoted'
end_command     .
newline         \n (first)

identifier      FILE    space
comment         /*
newline         \n (later)

comment         /**/
spaces          __
identifier      lab    space
unquoted_string not_quoted_here_either
newline         \n (later)

-separate_commands
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:844: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:844"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:844"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:844: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:844"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:844"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:844: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:844"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:844"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:844: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:844"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:844"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_255
#AT_START_256
at_fn_group_banner 256 'segment.at:847' \
  "BEGIN DATA command" "                             " 25
at_xfail=no
(
  printf "%s\n" "256. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
begin data.
end data.

begin data. /*
123
xxx
end data.

BEG /**/ DAT /*
5 6 7 /* x

end  data
end data
.

begin
 data.
data
end data.

begin data "xxx".
begin data 123.
not data
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:874: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:874"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "begin data.
end data.
-----
begin data. /*
123
xxx
end data.
-----
BEG /**/ DAT /*
5 6 7 /* x

end  data
end data
.
-----
begin
 data.
data
end data.
-----
begin data \"xxx\".
-----
begin data 123.
-----
not data
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:874"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      begin    space
identifier      data
inner_end_command .
newline         \n (data)

identifier      end    space
identifier      data
end_command     .
newline         \n (first)

separate_commands
newline         \n (first)

identifier      begin    space
identifier      data
inner_end_command .    space
comment         /*
newline         \n (data)

inline_data     123
newline         \n (data)

inline_data     xxx
newline         \n (data)

identifier      end    space
identifier      data
end_command     .
newline         \n (first)

separate_commands
newline         \n (first)

identifier      BEG    space
comment         /**/    space
identifier      DAT    space
comment         /*
newline         \n (data)

inline_data     5_6_7_/*_x
newline         \n (data)

inline_data
newline         \n (data)

inline_data     end__data
newline         \n (data)

identifier      end    space
identifier      data
newline         \n (later)

end_command     .
newline         \n (first)

separate_commands
newline         \n (first)

identifier      begin
newline         \n (later)
    space
identifier      data
inner_end_command .
newline         \n (data)

inline_data     data
newline         \n (data)

identifier      end    space
identifier      data
end_command     .
newline         \n (first)

separate_commands
newline         \n (first)

identifier      begin    space
identifier      data    space
quoted_string   "xxx"
end_command     .
newline         \n (first)

identifier      begin    space
identifier      data    space
number          123
end_command     .
newline         \n (first)

reserved_word   not    space
identifier      data
-newline         \n (later)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:996: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:996"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:996"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:996: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:996"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:996"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:996: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:996"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:996"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:996: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:996"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:996"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_256
#AT_START_257
at_fn_group_banner 257 'segment.at:999' \
  "DO REPEAT command" "                              " 25
at_xfail=no
(
  printf "%s\n" "257. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
do repeat x=a b c
          y=d e f.
  do repeat a=1 thru 5.
another command.
second command
+ third command.
end /* x */ /* y */ repeat print.
end
 repeat.
do
  repeat #a=1.
  inner command.
end repeat.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1016: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1016"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "do repeat x=a b c
          y=d e f.
  do repeat a=1 thru 5.
another command.
second command
+ third command.
end /* x */ /* y */ repeat print.
end
 repeat.
-----
do
  repeat #a=1.
  inner command.
end repeat.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1016"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      do    space
identifier      repeat    space
identifier      x
punct           =
identifier      a    space
identifier      b    space
identifier      c
newline         \n (later)

spaces          __________
identifier      y
punct           =
identifier      d    space
identifier      e    space
identifier      f
inner_end_command .
newline         \n (DO REPEAT)

do_repeat_command __do_repeat_a=1_thru_5.
newline         \n (DO REPEAT)

do_repeat_command another_command.
newline         \n (DO REPEAT)

do_repeat_command second_command
newline         \n (DO REPEAT)

do_repeat_command +_third_command.
newline         \n (DO REPEAT)

do_repeat_command end_/*_x_*/_/*_y_*/_repeat_print.
newline         \n (DO REPEAT)

identifier      end
newline         \n (later)
    space
identifier      repeat
end_command     .
newline         \n (first)

identifier      do
newline         \n (later)

spaces          __
identifier      repeat    space
identifier      #a
punct           =
number          1
inner_end_command .
newline         \n (DO REPEAT)

do_repeat_command __inner_command.
newline         \n (DO REPEAT)

identifier      end    space
identifier      repeat
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1094: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1094"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1094"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1094: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1094"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1094"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1094: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1094"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1094"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1094: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1094"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1094"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_257
#AT_START_258
at_fn_group_banner 258 'segment.at:1097' \
  "DO REPEAT command in batch mode" "                " 25
at_xfail=no
(
  printf "%s\n" "258. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
do repeat x=a b c
          y=d e f
do repeat a=1 thru 5
another command
second command
+ third command
end /* x */ /* y */ repeat print
end
 repeat
do
  repeat #a=1

  inner command
end repeat
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1115: segment-test -c -b input"
at_fn_check_prepare_trace "segment.at:1115"
( $at_check_trace; segment-test -c -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "do repeat x=a b c
          y=d e f
do repeat a=1 thru 5
another command
second command
+ third command
end /* x */ /* y */ repeat print
end
 repeat
-----
do
  repeat #a=1

  inner command
end repeat
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1115"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      do    space
identifier      repeat    space
identifier      x
punct           =
identifier      a    space
identifier      b    space
identifier      c
newline         \n (later)

spaces          __________
identifier      y
punct           =
identifier      d    space
identifier      e    space
identifier      f
newline         \n (later)

inner_start_command
do_repeat_command do_repeat_a=1_thru_5
newline         \n (DO REPEAT)

do_repeat_command another_command
newline         \n (DO REPEAT)

do_repeat_command second_command
newline         \n (DO REPEAT)

do_repeat_command +_third_command
newline         \n (DO REPEAT)

do_repeat_command end_/*_x_*/_/*_y_*/_repeat_print
newline         \n (DO REPEAT)

identifier      end
newline         \n (later)
    space
identifier      repeat
newline         \n (later)

start_command
identifier      do
newline         \n (later)

spaces          __
identifier      repeat    space
identifier      #a
punct           =
number          1
newline         \n (later)

inner_separate_commands
newline         \n (DO REPEAT)

do_repeat_command __inner_command
newline         \n (DO REPEAT)

identifier      end    space
identifier      repeat
-newline         \n (later)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1195: segment-test -b \$strip input"
at_fn_check_prepare_dynamic "segment-test -b $strip input" "segment.at:1195"
( $at_check_trace; segment-test -b $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1195"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1195: segment-test -1 \$strip -b input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -b input" "segment.at:1195"
( $at_check_trace; segment-test -1 $strip -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1195"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1195: segment-test -0 \$strip -b input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -b input" "segment.at:1195"
( $at_check_trace; segment-test -0 $strip -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1195"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1195: segment-test -01 \$strip -b input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -b input" "segment.at:1195"
( $at_check_trace; segment-test -01 $strip -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1195"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_258
#AT_START_259
at_fn_group_banner 259 'segment.at:1198' \
  "DEFINE command - simple" "                        " 25
at_xfail=no
(
  printf "%s\n" "259. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()
var1 var2 var3 "!enddefine"
!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1205: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1205"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1205"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
punct           )
spaces
newline         \n (DEFINE)

macro_body      var1_var2_var3_"!enddefine"
newline         \n (DEFINE)

macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1223: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1223"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1223"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1223: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1223"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1223"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1223: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1223"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1223"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1223: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1223"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1223"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_259
#AT_START_260
at_fn_group_banner 260 'segment.at:1226' \
  "DEFINE command - no newline after parentheses" "  " 25
at_xfail=no
(
  printf "%s\n" "260. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1() var1 var2 var3 /* !enddefine
!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1232: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1232"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1232"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
punct           )
macro_body      _var1_var2_var3_/*_!enddefine
newline         \n (DEFINE)

macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1247: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1247"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1247"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1247: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1247"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1247"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1247: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1247"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1247"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1247: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1247"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1247"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_260
#AT_START_261
at_fn_group_banner 261 'segment.at:1250' \
  "DEFINE command - no newline before !ENDDEFINE" "  " 25
at_xfail=no
(
  printf "%s\n" "261. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()
var1 var2 var3!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1256: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1256"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1256"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
punct           )
spaces
newline         \n (DEFINE)

macro_body      var1_var2_var3
macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1272: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1272"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1272"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1272: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1272"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1272"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1272: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1272"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1272"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1272: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1272"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1272"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_261
#AT_START_262
at_fn_group_banner 262 'segment.at:1275' \
  "DEFINE command - all on one line" "               " 25
at_xfail=no
(
  printf "%s\n" "262. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()var1 var2 var3!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1280: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1280"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1280"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
punct           )
macro_body      var1_var2_var3
macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1293: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1293"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1293"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1293: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1293"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1293"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1293: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1293"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1293"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1293: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1293"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1293"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_262
#AT_START_263
at_fn_group_banner 263 'segment.at:1296' \
  "DEFINE command - empty" "                         " 25
at_xfail=no
(
  printf "%s\n" "263. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()
!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1302: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1302"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1302"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
punct           )
spaces
newline         \n (DEFINE)

macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1317: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1317"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1317"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1317: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1317"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1317"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1317: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1317"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1317"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1317: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1317"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1317"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_263
#AT_START_264
at_fn_group_banner 264 'segment.at:1320' \
  "DEFINE command - blank lines" "                   " 25
at_xfail=no
(
  printf "%s\n" "264. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()


!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1328: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1328"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1328"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
punct           )
spaces
newline         \n (DEFINE)

macro_body
newline         \n (DEFINE)

macro_body
newline         \n (DEFINE)

macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1349: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1349"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1349"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1349: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1349"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1349"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1349: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1349"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1349"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1349: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1349"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1349"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_264
#AT_START_265
at_fn_group_banner 265 'segment.at:1352' \
  "DEFINE command - arguments" "                     " 25
at_xfail=no
(
  printf "%s\n" "265. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1(a(), b(), c())
!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1358: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1358"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1358"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
identifier      a
punct           (
punct           )
punct           ,    space
identifier      b
punct           (
punct           )
punct           ,    space
identifier      c
punct           (
punct           )
punct           )
spaces
newline         \n (DEFINE)

macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1384: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1384"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1384"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1384: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1384"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1384"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1384: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1384"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1384"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1384: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1384"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1384"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_265
#AT_START_266
at_fn_group_banner 266 'segment.at:1387' \
  "DEFINE command - multiline arguments" "           " 25
at_xfail=no
(
  printf "%s\n" "266. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1(
  a(), b(
  ),
  c()
)
!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1397: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1397"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1397"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
newline         \n (later)

spaces          __
identifier      a
punct           (
punct           )
punct           ,    space
identifier      b
punct           (
newline         \n (later)

spaces          __
punct           )
punct           ,
newline         \n (later)

spaces          __
identifier      c
punct           (
punct           )
newline         \n (later)

punct           )
spaces
newline         \n (DEFINE)

macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1434: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1434"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1434"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1434: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1434"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1434"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1434: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1434"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1434"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1434: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1434"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1434"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_266
#AT_START_267
at_fn_group_banner 267 'segment.at:1437' \
  "DEFINE command - arguments start on second line" "" 25
at_xfail=no
(
  printf "%s\n" "267. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1
(x,y,z
)
content 1
content 2
!enddefine.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1447: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1447"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1447"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
newline         \n (later)

punct           (
identifier      x
punct           ,
identifier      y
punct           ,
identifier      z
newline         \n (later)

punct           )
spaces
newline         \n (DEFINE)

macro_body      content_1
newline         \n (DEFINE)

macro_body      content_2
newline         \n (DEFINE)

macro_id        !enddefine
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1477: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1477"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1477"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1477: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1477"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1477"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1477: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1477"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1477"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1477: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1477"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1477"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_267
#AT_START_268
at_fn_group_banner 268 'segment.at:1480' \
  "DEFINE command - early end of command 1" "        " 25
at_xfail=no
(
  printf "%s\n" "268. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1.
data list /x 1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1486: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1486"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define !macro1.
-----
data list /x 1.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1486"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
end_command     .
newline         \n (first)

identifier      data    space
identifier      list    space
punct           /
identifier      x    space
number          1
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1507: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1507"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1507"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1507: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1507"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1507"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1507: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1507"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1507"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1507: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1507"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1507"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_268
#AT_START_269
at_fn_group_banner 269 'segment.at:1510' \
  "DEFINE command - early end of command 2" "        " 25
at_xfail=no
(
  printf "%s\n" "269. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1
x.
data list /x 1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1517: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1517"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define !macro1
x.
-----
data list /x 1.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1517"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
newline         \n (later)

identifier      x
end_command     .
newline         \n (first)

identifier      data    space
identifier      list    space
punct           /
identifier      x    space
number          1
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1542: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1542"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1542"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1542: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1542"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1542"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1542: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1542"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1542"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1542: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1542"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1542"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_269
#AT_START_270
at_fn_group_banner 270 'segment.at:1545' \
  "DEFINE command - early end of command 3" "        " 25
at_xfail=no
(
  printf "%s\n" "270. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1(.
x.
data list /x 1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1552: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1552"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define !macro1(.
-----
x.
-----
data list /x 1.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1552"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
end_command     .
newline         \n (first)

identifier      x
end_command     .
newline         \n (first)

identifier      data    space
identifier      list    space
punct           /
identifier      x    space
number          1
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1580: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1580"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1580"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1580: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1580"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1580"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1580: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1580"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1580"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1580: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1580"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1580"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_270
#AT_START_271
at_fn_group_banner 271 'segment.at:1583' \
  "DEFINE command - early end of command 4" "        " 25
at_xfail=no
(
  printf "%s\n" "271. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1.
data list /x 1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1591: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1591"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define !macro1.
-----
data list /x 1.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1591"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
end_command     .
newline         \n (first)

identifier      data    space
identifier      list    space
punct           /
identifier      x    space
number          1
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1612: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1612"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1612"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1612: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1612"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1612"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1612: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1612"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1612"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1612: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1612"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1612"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_271
#AT_START_272
at_fn_group_banner 272 'segment.at:1615' \
  "DEFINE command - missing !ENDDEFINE" "            " 25
at_xfail=no
(
  printf "%s\n" "272. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
define !macro1()
content line 1
content line 2
_ATEOF

cat >expout-base <<'_ATEOF'
identifier      define    space
macro_name      !macro1
punct           (
punct           )
spaces
newline         \n (DEFINE)

macro_body      content_line_1
newline         \n (DEFINE)

macro_body      content_line_2
-newline         \n (DEFINE)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1638: segment-test -i \$strip input"
at_fn_check_prepare_dynamic "segment-test -i $strip input" "segment.at:1638"
( $at_check_trace; segment-test -i $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1638"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1638: segment-test -1 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -i input" "segment.at:1638"
( $at_check_trace; segment-test -1 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1638"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1638: segment-test -0 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -i input" "segment.at:1638"
( $at_check_trace; segment-test -0 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1638"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1638: segment-test -01 \$strip -i input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -i input" "segment.at:1638"
( $at_check_trace; segment-test -01 $strip -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1638"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_272
#AT_START_273
at_fn_group_banner 273 'segment.at:1641' \
  "batch mode" "                                     " 25
at_xfail=no
(
  printf "%s\n" "273. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
first command
     another line of first command
+  second command
third command

fourth command.
   fifth command.
_ATEOF

cat >expout-base <<'_ATEOF'
identifier      first    space
identifier      command
newline         \n (later)

spaces          _____
identifier      another    space
identifier      line    space
identifier      of    space
identifier      first    space
identifier      command
newline         \n (later)

start_command   +
spaces          __
identifier      second    space
identifier      command
newline         \n (later)

start_command
identifier      third    space
identifier      command
newline         \n (later)

separate_commands
newline         \n (first)

identifier      fourth    space
identifier      command
end_command     .
newline         \n (first)

spaces          ___
identifier      fifth    space
identifier      command
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1692: segment-test -b \$strip input"
at_fn_check_prepare_dynamic "segment-test -b $strip input" "segment.at:1692"
( $at_check_trace; segment-test -b $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1692"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1692: segment-test -1 \$strip -b input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -b input" "segment.at:1692"
( $at_check_trace; segment-test -1 $strip -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1692"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1692: segment-test -0 \$strip -b input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -b input" "segment.at:1692"
( $at_check_trace; segment-test -0 $strip -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1692"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1692: segment-test -01 \$strip -b input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -b input" "segment.at:1692"
( $at_check_trace; segment-test -01 $strip -b input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1692"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_273
#AT_START_274
at_fn_group_banner 274 'segment.at:1695' \
  "auto mode" "                                      " 25
at_xfail=no
(
  printf "%s\n" "274. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
command
     another line of command
2sls
+  another command
another line of second command
data list /x 1
aggregate.
print eject.
twostep cluster


fourth command.
   fifth command.
_ATEOF

cat >expout-base <<'_ATEOF'
identifier      command
newline         \n (later)

spaces          _____
identifier      another    space
identifier      line    space
identifier      of    space
identifier      command
newline         \n (later)

start_command
number          2
identifier      sls
newline         \n (later)

start_command   +
spaces          __
identifier      another    space
identifier      command
newline         \n (later)

identifier      another    space
identifier      line    space
identifier      of    space
identifier      second    space
identifier      command
newline         \n (later)

start_command
identifier      data    space
identifier      list    space
punct           /
identifier      x    space
number          1
newline         \n (later)

start_command
identifier      aggregate
end_command     .
newline         \n (first)

identifier      print    space
identifier      eject
end_command     .
newline         \n (first)

identifier      twostep    space
identifier      cluster
newline         \n (later)

separate_commands
newline         \n (first)

separate_commands
newline         \n (first)

identifier      fourth    space
identifier      command
end_command     .
newline         \n (first)

spaces          ___
identifier      fifth    space
identifier      command
end_command     .
-newline         \n (first)
-
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1782: segment-test -a \$strip input"
at_fn_check_prepare_dynamic "segment-test -a $strip input" "segment.at:1782"
( $at_check_trace; segment-test -a $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1782"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1782: segment-test -1 \$strip -a input"
at_fn_check_prepare_dynamic "segment-test -1 $strip -a input" "segment.at:1782"
( $at_check_trace; segment-test -1 $strip -a input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1782"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1782: segment-test -0 \$strip -a input"
at_fn_check_prepare_dynamic "segment-test -0 $strip -a input" "segment.at:1782"
( $at_check_trace; segment-test -0 $strip -a input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1782"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1782: segment-test -01 \$strip -a input"
at_fn_check_prepare_dynamic "segment-test -01 $strip -a input" "segment.at:1782"
( $at_check_trace; segment-test -01 $strip -a input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1782"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_274
#AT_START_275
at_fn_group_banner 275 'segment.at:1785' \
  "empty input" "                                    " 25
at_xfail=no
(
  printf "%s\n" "275. $at_setup_line: testing $at_desc ..."
  $at_traceon


: > input
cat >expout-base <<'_ATEOF'
end
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1791: cp input expout && segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1791"
( $at_check_trace; cp input expout && segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1791"
$at_failed && at_fn_log_failure
$at_traceon; }


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1792: segment-test  \$strip input"
at_fn_check_prepare_dynamic "segment-test  $strip input" "segment.at:1792"
( $at_check_trace; segment-test  $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1792"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1792: segment-test -1 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -1 $strip  input" "segment.at:1792"
( $at_check_trace; segment-test -1 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1792"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1792: segment-test -0 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -0 $strip  input" "segment.at:1792"
( $at_check_trace; segment-test -0 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1792"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1792: segment-test -01 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -01 $strip  input" "segment.at:1792"
( $at_check_trace; segment-test -01 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1792"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_275
#AT_START_276
at_fn_group_banner 276 'segment.at:1795' \
  "blank lines input" "                              " 25
at_xfail=no
(
  printf "%s\n" "276. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'




_ATEOF

cat >expout-base <<'_ATEOF'
separate_commands
newline         \n (first)

separate_commands
newline         \n (first)

separate_commands
newline         \n (first)

-separate_commands
-newline         \n (first)
-
end
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/segment.at:1818: segment-test -c -i input"
at_fn_check_prepare_trace "segment.at:1818"
( $at_check_trace; segment-test -c -i input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1818"
$at_failed && at_fn_log_failure
$at_traceon; }


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1819: segment-test  \$strip input"
at_fn_check_prepare_dynamic "segment-test  $strip input" "segment.at:1819"
( $at_check_trace; segment-test  $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1819"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1819: segment-test -1 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -1 $strip  input" "segment.at:1819"
( $at_check_trace; segment-test -1 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1819"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1819: segment-test -0 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -0 $strip  input" "segment.at:1819"
( $at_check_trace; segment-test -0 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1819"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1819: segment-test -01 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -01 $strip  input" "segment.at:1819"
( $at_check_trace; segment-test -01 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1819"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_276
#AT_START_277
at_fn_group_banner 277 'segment.at:1825' \
  "input ends in carriage return" "                  " 25
at_xfail=no
(
  printf "%s\n" "277. $at_setup_line: testing $at_desc ..."
  $at_traceon


printf '\r' > input
cat >expout-base <<'_ATEOF'
separate_commands
spaces          \r
end
_ATEOF


   for strip in "" "-s"; do
     case $strip in # (
        '') sed 's/^-//' < expout-base > expout ;; # (
	-s) sed '/^-/d' < expout-base > expout ;;
     esac
     { set +x
printf "%s\n" "$at_srcdir/segment.at:1833: segment-test  \$strip input"
at_fn_check_prepare_dynamic "segment-test  $strip input" "segment.at:1833"
( $at_check_trace; segment-test  $strip input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1833"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1833: segment-test -1 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -1 $strip  input" "segment.at:1833"
( $at_check_trace; segment-test -1 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1833"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1833: segment-test -0 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -0 $strip  input" "segment.at:1833"
( $at_check_trace; segment-test -0 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1833"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

     { set +x
printf "%s\n" "$at_srcdir/segment.at:1833: segment-test -01 \$strip  input"
at_fn_check_prepare_dynamic "segment-test -01 $strip  input" "segment.at:1833"
( $at_check_trace; segment-test -01 $strip  input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/segment.at:1833"
$at_failed && at_fn_log_failure  \
"input"
$at_traceon; }

   done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_277
#AT_START_278
at_fn_group_banner 278 'variable-parser.at:22' \
  "Long variable names" "                            " 26
at_xfail=no
(
  printf "%s\n" "278. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >longvars.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/variable-parser.at:35: pspp -o pspp.csv longvars.sps"
at_fn_check_prepare_trace "variable-parser.at:35"
( $at_check_trace; pspp -o pspp.csv longvars.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-parser.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/variable-parser.at:36: cat pspp.csv"
at_fn_check_prepare_trace "variable-parser.at:36"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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%,1,100.0%

Table: X × Yabbadabbadoo
,,,Yabbadabbadoo,,,,,,,Total
,,,1.00,2.00,3.00,4.00,5.00,6.00,7.00,
X,1.00,Count,0,0,0,0,0,0,0,0
,2.00,Count,0,0,0,0,0,0,0,0
,3.00,Count,0,0,0,0,0,0,0,0
,4.00,Count,0,0,0,0,1,0,0,1
,5.00,Count,0,0,0,0,0,0,0,0
,6.00,Count,0,0,0,0,0,0,0,0
,7.00,Count,0,0,0,0,0,0,0,0
Total,,Count,0,0,0,0,1,0,0,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-parser.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_278
#AT_START_279
at_fn_group_banner 279 'variable-parser.at:69' \
  "variable parser crash" "                          " 26
at_xfail=no
(
  printf "%s\n" "279. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >crash.sps <<'_ATEOF'
INPUT PROGRAM.
FORMATS ALL(F1).$
END FILE.
END INPUT PROGRAM.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/variable-parser.at:78: pspp -O format=txt crash.sps"
at_fn_check_prepare_trace "variable-parser.at:78"
( $at_check_trace; pspp -O format=txt crash.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/variable-parser.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_279
#AT_START_280
at_fn_group_banner 280 'evaluate.at:18' \
  "expressions - numeric syntax" "                   " 27
at_xfail=no
(
  printf "%s\n" "280. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /1e2.
DEBUG EVALUATE /1e+2.
DEBUG EVALUATE /1e-2.
DEBUG EVALUATE /1e-99.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:32: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:32"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1e2 => 100.00

1e+2 => 100.00

1e-2 => 0.01

1e-99 => 0.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_280
#AT_START_281
at_fn_group_banner 281 'evaluate.at:44' \
  "expressions - coercion to and from Boolean" "     " 27
at_xfail=no
(
  printf "%s\n" "281. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE/0 AND 1.
DEBUG EVALUATE/$true AND 1.
DEBUG EVALUATE/1 OR $false.
DEBUG EVALUATE/1 OR $sysmis.
DEBUG EVALUATE/2 OR $sysmis.
DEBUG EVALUATE/1 AND 3.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:60: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:60"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "0 AND 1 => false

\$true AND 1 => true

1 OR \$false => true

1 OR \$sysmis => true

evaluate.sps:7.16-7.27: error: DEBUG EVALUATE: The operands of OR must have
value 0 or 1.
    7 | DEBUG EVALUATE/2 OR \$sysmis.
      |                ^~~~~~~~~~~~

evaluate.sps:7.16: note: DEBUG EVALUATE: This operand with unexpected value 2
will be treated as 0.
    7 | DEBUG EVALUATE/2 OR \$sysmis.
      |                ^

2 OR \$sysmis => sysmis

evaluate.sps:8.16-8.22: error: DEBUG EVALUATE: The operands of AND must have
value 0 or 1.
    8 | DEBUG EVALUATE/1 AND 3.
      |                ^~~~~~~

evaluate.sps:8.22: note: DEBUG EVALUATE: This operand with unexpected value 3
will be treated as 0.
    8 | DEBUG EVALUATE/1 AND 3.
      |                      ^

1 AND 3 => false
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_281
#AT_START_282
at_fn_group_banner 282 'evaluate.at:96' \
  "expressions - addition and subtraction" "         " 27
at_xfail=no
(
  printf "%s\n" "282. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /1 + $true.
DEBUG EVALUATE /$sysmis + 1.
DEBUG EVALUATE /7676 + $sysmis.
DEBUG EVALUATE /1 +3 - 2 +4 - 5.
DEBUG EVALUATE /$true - 4/3.
DEBUG EVALUATE /1 - 2.
DEBUG EVALUATE /52 -23.

DEBUG EVALUATE /('foo') + 5.
DEBUG EVALUATE /('foo') + ('bar').   /* Concatenation requires CONCAT.
DEBUG EVALUATE /'foo' + 'bar'.       /* Lexical concatenation succeeds.

DEBUG EVALUATE /'string' - 1e10.
DEBUG EVALUATE /9.5 - ''.

DEBUG EVALUATE /F2.0 + 3.

/* Bug #62557.
DEBUG EVALUATE (y=3)(x=2) /(1 - y) + (1 - x).
DEBUG EVALUATE (y=3)(x=2) /((1 - y) + (1 - x)).
DEBUG EVALUATE (y=3)(x=2) /(1-y) + (1-x).
DEBUG EVALUATE (y=3)(x=2) /( (1-y) + (1-x) ).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:128: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:128"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1 + \$true => 2.00

\$sysmis + 1 => sysmis

7676 + \$sysmis => sysmis

1 +3 - 2 +4 - 5 => 1.00

\$true - 4/3 => -0.33

1 - 2 => -1.00

52 -23 => 29.00

evaluate.sps:11.18-11.27: error: DEBUG EVALUATE: Both operands of + must be
numeric.
   11 | DEBUG EVALUATE /('foo') + 5.
      |                  ^~~~~~~~~~

evaluate.sps:11.18-11.22: note: DEBUG EVALUATE: This operand has type 'string'.
   11 | DEBUG EVALUATE /('foo') + 5.
      |                  ^~~~~

evaluate.sps:11.27: note: DEBUG EVALUATE: This operand has type 'number'.
   11 | DEBUG EVALUATE /('foo') + 5.
      |                           ^

('foo') + 5 => error

evaluate.sps:12.18-12.32: error: DEBUG EVALUATE: Both operands of + must be
numeric.
   12 | DEBUG EVALUATE /('foo') + ('bar').   /* Concatenation requires CONCAT.
      |                  ^~~~~~~~~~~~~~~

evaluate.sps:12.18-12.22: note: DEBUG EVALUATE: This operand has type 'string'.
   12 | DEBUG EVALUATE /('foo') + ('bar').   /* Concatenation requires CONCAT.
      |                  ^~~~~

evaluate.sps:12.28-12.32: note: DEBUG EVALUATE: This operand has type 'string'.
   12 | DEBUG EVALUATE /('foo') + ('bar').   /* Concatenation requires CONCAT.
      |                            ^~~~~

('foo') + ('bar') => error

'foo' + 'bar' => \"foobar\"

evaluate.sps:15.17-15.31: error: DEBUG EVALUATE: Both operands of - must be
numeric.
   15 | DEBUG EVALUATE /'string' - 1e10.
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:15.17-15.24: note: DEBUG EVALUATE: This operand has type 'string'.
   15 | DEBUG EVALUATE /'string' - 1e10.
      |                 ^~~~~~~~

evaluate.sps:15.26-15.31: note: DEBUG EVALUATE: This operand has type 'number'.
   15 | DEBUG EVALUATE /'string' - 1e10.
      |                          ^~~~~~

'string' - 1e10 => error

evaluate.sps:16.17-16.24: error: DEBUG EVALUATE: Both operands of - must be
numeric.
   16 | DEBUG EVALUATE /9.5 - ''.
      |                 ^~~~~~~~

evaluate.sps:16.17-16.19: note: DEBUG EVALUATE: This operand has type 'number'.
   16 | DEBUG EVALUATE /9.5 - ''.
      |                 ^~~

evaluate.sps:16.23-16.24: note: DEBUG EVALUATE: This operand has type 'string'.
   16 | DEBUG EVALUATE /9.5 - ''.
      |                       ^~

9.5 - '' => error

evaluate.sps:18.17-18.24: error: DEBUG EVALUATE: Both operands of + must be
numeric.
   18 | DEBUG EVALUATE /F2.0 + 3.
      |                 ^~~~~~~~

evaluate.sps:18.17-18.20: note: DEBUG EVALUATE: This operand has type 'format'.
   18 | DEBUG EVALUATE /F2.0 + 3.
      |                 ^~~~

evaluate.sps:18.24: note: DEBUG EVALUATE: This operand has type 'number'.
   18 | DEBUG EVALUATE /F2.0 + 3.
      |                        ^

F2.0 + 3 => error

(1 - y) + (1 - x) => -3.00

((1 - y) + (1 - x)) => -3.00

(1-y) + (1-x) => -3.00

( (1-y) + (1-x) ) => -3.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_282
#AT_START_283
at_fn_group_banner 283 'evaluate.at:231' \
  "expressions - multiplication and division" "      " 27
at_xfail=no
(
  printf "%s\n" "283. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /5 * 10.
DEBUG EVALUATE /10 * $true.
DEBUG EVALUATE /$true * 5.
DEBUG EVALUATE /1.5 * $true.
DEBUG EVALUATE /$sysmis * 15.
DEBUG EVALUATE /8.5 / $sysmis.
DEBUG EVALUATE /2 * 5 / 10.
DEBUG EVALUATE /1 / 2.
DEBUG EVALUATE /2 / 5.
DEBUG EVALUATE /12 / 3 / 2.

DEBUG EVALUATE /'x' * 1.
DEBUG EVALUATE /2 / 'x'.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:254: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:254"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "5 * 10 => 50.00

10 * \$true => 10.00

\$true * 5 => 5.00

1.5 * \$true => 1.50

\$sysmis * 15 => sysmis

8.5 / \$sysmis => sysmis

2 * 5 / 10 => 1.00

1 / 2 => 0.50

2 / 5 => 0.40

12 / 3 / 2 => 2.00

evaluate.sps:14.17-14.23: error: DEBUG EVALUATE: Both operands of * must be
numeric.
   14 | DEBUG EVALUATE /'x' * 1.
      |                 ^~~~~~~

evaluate.sps:14.17-14.19: note: DEBUG EVALUATE: This operand has type 'string'.
   14 | DEBUG EVALUATE /'x' * 1.
      |                 ^~~

evaluate.sps:14.23: note: DEBUG EVALUATE: This operand has type 'number'.
   14 | DEBUG EVALUATE /'x' * 1.
      |                       ^

'x' * 1 => error

evaluate.sps:15.17-15.23: error: DEBUG EVALUATE: Both operands of / must be
numeric.
   15 | DEBUG EVALUATE /2 / 'x'.
      |                 ^~~~~~~

evaluate.sps:15.17: note: DEBUG EVALUATE: This operand has type 'number'.
   15 | DEBUG EVALUATE /2 / 'x'.
      |                 ^

evaluate.sps:15.21-15.23: note: DEBUG EVALUATE: This operand has type 'string'.
   15 | DEBUG EVALUATE /2 / 'x'.
      |                     ^~~

2 / 'x' => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:254"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_283
#AT_START_284
at_fn_group_banner 284 'evaluate.at:308' \
  "expressions - exponentiation" "                   " 27
at_xfail=no
(
  printf "%s\n" "284. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /2**8.
DEBUG EVALUATE /(2**3)**4.
DEBUG EVALUATE /2**3**4.
DEBUG EVALUATE /-2**2.
DEBUG EVALUATE /-2**-3**-4.
DEBUG EVALUATE /-((2**-3)**-4).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:324: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:324"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "2**8 => 256.00

(2**3)**4 => 4096.00

evaluate.sps:5.17-5.23: warning: DEBUG EVALUATE: The exponentiation operator
(\`**') is left-associative: \`a**b**c' equals \`(a**b)**c', not \`a**(b**c)'.  To
disable this warning, insert parentheses.
    5 | DEBUG EVALUATE /2**3**4.
      |                 ^~~~~~~

2**3**4 => 4096.00

-2**2 => -4.00

evaluate.sps:7.17-7.26: warning: DEBUG EVALUATE: The exponentiation operator
(\`**') is left-associative: \`a**b**c' equals \`(a**b)**c', not \`a**(b**c)'.  To
disable this warning, insert parentheses.
    7 | DEBUG EVALUATE /-2**-3**-4.
      |                 ^~~~~~~~~~

-2**-3**-4 => -4096.00

-((2**-3)**-4) => -4096.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:324"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_284
#AT_START_285
at_fn_group_banner 285 'evaluate.at:352' \
  "expressions - unary minus" "                      " 27
at_xfail=no
(
  printf "%s\n" "285. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /2+-3.
DEBUG EVALUATE /2*-3.
DEBUG EVALUATE /-3**2.
DEBUG EVALUATE /(-3)**2.
DEBUG EVALUATE /-(3**2).
DEBUG EVALUATE /2**-1.
DEBUG EVALUATE /0**0.
DEBUG EVALUATE /0**-1.
DEBUG EVALUATE /(-3)**1.5.
_ATEOF


for opt in OPT NOOPT; do
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:370: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:370"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "2+-3 => -1.00

2*-3 => -6.00

-3**2 => -9.00

(-3)**2 => 9.00

-(3**2) => -9.00

2**-1 => 0.50

0**0 => sysmis

0**-1 => sysmis

(-3)**1.5 => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:370"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_285
#AT_START_286
at_fn_group_banner 286 'evaluate.at:392' \
  "expressions - AND truth table" "                  " 27
at_xfail=no
(
  printf "%s\n" "286. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /$false AND $false.
DEBUG EVALUATE /$false AND $true.
DEBUG EVALUATE /$false AND $sysmis.
DEBUG EVALUATE /$true AND $false.
DEBUG EVALUATE /$true AND $true.
DEBUG EVALUATE /$true AND $sysmis.
DEBUG EVALUATE /$sysmis AND $false.
DEBUG EVALUATE /$sysmis AND $true.
DEBUG EVALUATE /$sysmis AND $sysmis.
DEBUG EVALUATE /$false & $false.
DEBUG EVALUATE /$false & $true.
DEBUG EVALUATE /$false & $sysmis.
DEBUG EVALUATE /$true & $false.
DEBUG EVALUATE /$true & $true.
DEBUG EVALUATE /$true & $sysmis.
DEBUG EVALUATE /$sysmis & $false.
DEBUG EVALUATE /$sysmis & $true.
DEBUG EVALUATE /$sysmis & $sysmis.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:420: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:420"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\$false AND \$false => false

\$false AND \$true => false

\$false AND \$sysmis => false

\$true AND \$false => false

\$true AND \$true => true

\$true AND \$sysmis => sysmis

\$sysmis AND \$false => false

\$sysmis AND \$true => sysmis

\$sysmis AND \$sysmis => sysmis

\$false & \$false => false

\$false & \$true => false

\$false & \$sysmis => false

\$true & \$false => false

\$true & \$true => true

\$true & \$sysmis => sysmis

\$sysmis & \$false => false

\$sysmis & \$true => sysmis

\$sysmis & \$sysmis => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:420"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_286
#AT_START_287
at_fn_group_banner 287 'evaluate.at:460' \
  "expressions - OR truth table" "                   " 27
at_xfail=no
(
  printf "%s\n" "287. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /$false OR $false.
DEBUG EVALUATE /$false OR $true.
DEBUG EVALUATE /$false OR $sysmis.
DEBUG EVALUATE /$true OR $false.
DEBUG EVALUATE /$true OR $true.
DEBUG EVALUATE /$true OR $sysmis.
DEBUG EVALUATE /$sysmis OR $false.
DEBUG EVALUATE /$sysmis OR $true.
DEBUG EVALUATE /$sysmis OR $sysmis.
DEBUG EVALUATE /$false | $false.
DEBUG EVALUATE /$false | $true.
DEBUG EVALUATE /$false | $sysmis.
DEBUG EVALUATE /$true | $false.
DEBUG EVALUATE /$true | $true.
DEBUG EVALUATE /$true | $sysmis.
DEBUG EVALUATE /$sysmis | $false.
DEBUG EVALUATE /$sysmis | $true.
DEBUG EVALUATE /$sysmis | $sysmis.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:488: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:488"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\$false OR \$false => false

\$false OR \$true => true

\$false OR \$sysmis => sysmis

\$true OR \$false => true

\$true OR \$true => true

\$true OR \$sysmis => true

\$sysmis OR \$false => sysmis

\$sysmis OR \$true => true

\$sysmis OR \$sysmis => sysmis

\$false | \$false => false

\$false | \$true => true

\$false | \$sysmis => sysmis

\$true | \$false => true

\$true | \$true => true

\$true | \$sysmis => true

\$sysmis | \$false => sysmis

\$sysmis | \$true => true

\$sysmis | \$sysmis => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:488"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_287
#AT_START_288
at_fn_group_banner 288 'evaluate.at:528' \
  "expressions - NOT truth table" "                  " 27
at_xfail=no
(
  printf "%s\n" "288. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /not $false.
DEBUG EVALUATE /not 0.
DEBUG EVALUATE /not 2.5.
DEBUG EVALUATE /not $true.
DEBUG EVALUATE /not 1.
DEBUG EVALUATE /not $sysmis.
DEBUG EVALUATE /~ $false.
DEBUG EVALUATE /~ 0.
DEBUG EVALUATE /~ 2.5.
DEBUG EVALUATE /~ $true.
DEBUG EVALUATE /~ 1.
DEBUG EVALUATE /~ $sysmis.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:550: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:550"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "not \$false => true

not 0 => true

evaluate.sps:5.17-5.23: error: DEBUG EVALUATE: The operand of NOT must have
value 0 or 1.
    5 | DEBUG EVALUATE /not 2.5.
      |                 ^~~~~~~

evaluate.sps:5.21-5.23: note: DEBUG EVALUATE: This operand with unexpected
value 2.5 will be treated as 0.
    5 | DEBUG EVALUATE /not 2.5.
      |                     ^~~

not 2.5 => true

not \$true => false

not 1 => false

not \$sysmis => sysmis

~ \$false => true

~ 0 => true

evaluate.sps:11.17-11.21: error: DEBUG EVALUATE: The operand of NOT must have
value 0 or 1.
   11 | DEBUG EVALUATE /~ 2.5.
      |                 ^~~~~

evaluate.sps:11.19-11.21: note: DEBUG EVALUATE: This operand with unexpected
value 2.5 will be treated as 0.
   11 | DEBUG EVALUATE /~ 2.5.
      |                   ^~~

~ 2.5 => true

~ \$true => false

~ 1 => false

~ \$sysmis => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:550"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_288
#AT_START_289
at_fn_group_banner 289 'evaluate.at:598' \
  "expressions - = <= <" "                           " 27
at_xfail=no
(
  printf "%s\n" "289. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /1 eq 1.
DEBUG EVALUATE /1 = 1.
DEBUG EVALUATE /1 eq 2.
DEBUG EVALUATE /2 = 3.
DEBUG EVALUATE /1 eq 'foobar'.
DEBUG EVALUATE /'baz' = 10.
DEBUG EVALUATE /'baz' = f8.2.
DEBUG EVALUATE /'baz' = 'baz'.
DEBUG EVALUATE /'quux' = 'bar'.
DEBUG EVALUATE /'bar  ' = 'bar'.
DEBUG EVALUATE /'asdf     ' = 'asdf  '.
DEBUG EVALUATE /'asdfj     ' = 'asdf'.
DEBUG EVALUATE /1 + 2 = 3.
DEBUG EVALUATE /1 >= 2 = 2 ge 3.
DEBUG EVALUATE /3 ne 2 != 1.
DEBUG EVALUATE /3 > 2 > 1.

DEBUG EVALUATE /1 <= 2.
DEBUG EVALUATE /2.5 <= 1.5.
DEBUG EVALUATE /1 le 2.
DEBUG EVALUATE /2 <= 2.
DEBUG EVALUATE /2 le 2.
DEBUG EVALUATE /2 < = 2.
DEBUG EVALUATE /1 <= 'foobar'.
DEBUG EVALUATE /'baz' <= 10.
DEBUG EVALUATE /'quux' <= 5.55.
DEBUG EVALUATE /'0123' <= '0123'.
DEBUG EVALUATE /'0123' <= '0124'.
DEBUG EVALUATE /'0124' le '0123'.
DEBUG EVALUATE /'0123  ' <= '0123'.
DEBUG EVALUATE /'0123' le '0123  '.

DEBUG EVALUATE /1 < 2.
DEBUG EVALUATE /2.5 < 1.5.
DEBUG EVALUATE /3.5 lt 4.
DEBUG EVALUATE /4 lt 3.5
DEBUG EVALUATE /1 lt 'foobar'.
DEBUG EVALUATE /5 lt 'foobar'.
DEBUG EVALUATE /'baz' < 10.
DEBUG EVALUATE /'quux' < 5.55.
DEBUG EVALUATE /'0123' lt '0123'.
DEBUG EVALUATE /'0123' < '0124'.
DEBUG EVALUATE /'0124' lt '0123'.
DEBUG EVALUATE /'0123  ' < '0123'.
DEBUG EVALUATE /'0123' lt '0123  '.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:653: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:653"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1 eq 1 => true

1 = 1 => true

1 eq 2 => false

2 = 3 => false

evaluate.sps:7.17-7.29: error: DEBUG EVALUATE: Both operands of EQ must have
the same type.
    7 | DEBUG EVALUATE /1 eq 'foobar'.
      |                 ^~~~~~~~~~~~~

evaluate.sps:7.17: note: DEBUG EVALUATE: This operand has type 'number'.
    7 | DEBUG EVALUATE /1 eq 'foobar'.
      |                 ^

evaluate.sps:7.22-7.29: note: DEBUG EVALUATE: This operand has type 'string'.
    7 | DEBUG EVALUATE /1 eq 'foobar'.
      |                      ^~~~~~~~

1 eq 'foobar' => error

evaluate.sps:8.17-8.26: error: DEBUG EVALUATE: Both operands of = must have the
same type.
    8 | DEBUG EVALUATE /'baz' = 10.
      |                 ^~~~~~~~~~

evaluate.sps:8.17-8.21: note: DEBUG EVALUATE: This operand has type 'string'.
    8 | DEBUG EVALUATE /'baz' = 10.
      |                 ^~~~~

evaluate.sps:8.25-8.26: note: DEBUG EVALUATE: This operand has type 'number'.
    8 | DEBUG EVALUATE /'baz' = 10.
      |                         ^~

'baz' = 10 => error

evaluate.sps:9.17-9.28: error: DEBUG EVALUATE: Both operands of = must have the
same type.
    9 | DEBUG EVALUATE /'baz' = f8.2.
      |                 ^~~~~~~~~~~~

evaluate.sps:9.17-9.21: note: DEBUG EVALUATE: This operand has type 'string'.
    9 | DEBUG EVALUATE /'baz' = f8.2.
      |                 ^~~~~

evaluate.sps:9.25-9.28: note: DEBUG EVALUATE: This operand has type 'format'.
    9 | DEBUG EVALUATE /'baz' = f8.2.
      |                         ^~~~

'baz' = f8.2 => error

'baz' = 'baz' => true

'quux' = 'bar' => false

'bar  ' = 'bar' => true

'asdf     ' = 'asdf  ' => true

'asdfj     ' = 'asdf' => false

1 + 2 = 3 => true

evaluate.sps:16.17-16.31: 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').  To disable this warning, insert parentheses.
   16 | DEBUG EVALUATE /1 >= 2 = 2 ge 3.
      |                 ^~~~~~~~~~~~~~~

1 >= 2 = 2 ge 3 => false

evaluate.sps:17.24: error: DEBUG EVALUATE: Syntax error expecting end of
command.
   17 | DEBUG EVALUATE /3 ne 2 != 1.
      |                        ^

3 ne 2 != 1 => error

evaluate.sps:18.17-18.25: 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').  To disable this warning, insert parentheses.
   18 | DEBUG EVALUATE /3 > 2 > 1.
      |                 ^~~~~~~~~

3 > 2 > 1 => false

1 <= 2 => true

2.5 <= 1.5 => false

1 le 2 => true

2 <= 2 => true

2 le 2 => true

evaluate.sps:25.21: error: DEBUG EVALUATE: Syntax error parsing expression.
   25 | DEBUG EVALUATE /2 < = 2.
      |                     ^

2 < = 2 => error

evaluate.sps:26.17-26.29: error: DEBUG EVALUATE: Both operands of <= must have
the same type.
   26 | DEBUG EVALUATE /1 <= 'foobar'.
      |                 ^~~~~~~~~~~~~

evaluate.sps:26.17: note: DEBUG EVALUATE: This operand has type 'number'.
   26 | DEBUG EVALUATE /1 <= 'foobar'.
      |                 ^

evaluate.sps:26.22-26.29: note: DEBUG EVALUATE: This operand has type 'string'.
   26 | DEBUG EVALUATE /1 <= 'foobar'.
      |                      ^~~~~~~~

1 <= 'foobar' => error

evaluate.sps:27.17-27.27: error: DEBUG EVALUATE: Both operands of <= must have
the same type.
   27 | DEBUG EVALUATE /'baz' <= 10.
      |                 ^~~~~~~~~~~

evaluate.sps:27.17-27.21: note: DEBUG EVALUATE: This operand has type 'string'.
   27 | DEBUG EVALUATE /'baz' <= 10.
      |                 ^~~~~

evaluate.sps:27.26-27.27: note: DEBUG EVALUATE: This operand has type 'number'.
   27 | DEBUG EVALUATE /'baz' <= 10.
      |                          ^~

'baz' <= 10 => error

evaluate.sps:28.17-28.30: error: DEBUG EVALUATE: Both operands of <= must have
the same type.
   28 | DEBUG EVALUATE /'quux' <= 5.55.
      |                 ^~~~~~~~~~~~~~

evaluate.sps:28.17-28.22: note: DEBUG EVALUATE: This operand has type 'string'.
   28 | DEBUG EVALUATE /'quux' <= 5.55.
      |                 ^~~~~~

evaluate.sps:28.27-28.30: note: DEBUG EVALUATE: This operand has type 'number'.
   28 | DEBUG EVALUATE /'quux' <= 5.55.
      |                           ^~~~

'quux' <= 5.55 => error

'0123' <= '0123' => true

'0123' <= '0124' => true

'0124' le '0123' => false

'0123  ' <= '0123' => true

'0123' le '0123  ' => true

1 < 2 => true

2.5 < 1.5 => false

3.5 lt 4 => true

4 lt 3.5 => false

evaluate.sps:39.17-39.29: error: DEBUG EVALUATE: Both operands of < must have
the same type.
   39 | DEBUG EVALUATE /1 lt 'foobar'.
      |                 ^~~~~~~~~~~~~

evaluate.sps:39.17: note: DEBUG EVALUATE: This operand has type 'number'.
   39 | DEBUG EVALUATE /1 lt 'foobar'.
      |                 ^

evaluate.sps:39.22-39.29: note: DEBUG EVALUATE: This operand has type 'string'.
   39 | DEBUG EVALUATE /1 lt 'foobar'.
      |                      ^~~~~~~~

1 lt 'foobar' => error

evaluate.sps:40.17-40.29: error: DEBUG EVALUATE: Both operands of < must have
the same type.
   40 | DEBUG EVALUATE /5 lt 'foobar'.
      |                 ^~~~~~~~~~~~~

evaluate.sps:40.17: note: DEBUG EVALUATE: This operand has type 'number'.
   40 | DEBUG EVALUATE /5 lt 'foobar'.
      |                 ^

evaluate.sps:40.22-40.29: note: DEBUG EVALUATE: This operand has type 'string'.
   40 | DEBUG EVALUATE /5 lt 'foobar'.
      |                      ^~~~~~~~

5 lt 'foobar' => error

evaluate.sps:41.17-41.26: error: DEBUG EVALUATE: Both operands of < must have
the same type.
   41 | DEBUG EVALUATE /'baz' < 10.
      |                 ^~~~~~~~~~

evaluate.sps:41.17-41.21: note: DEBUG EVALUATE: This operand has type 'string'.
   41 | DEBUG EVALUATE /'baz' < 10.
      |                 ^~~~~

evaluate.sps:41.25-41.26: note: DEBUG EVALUATE: This operand has type 'number'.
   41 | DEBUG EVALUATE /'baz' < 10.
      |                         ^~

'baz' < 10 => error

evaluate.sps:42.17-42.29: error: DEBUG EVALUATE: Both operands of < must have
the same type.
   42 | DEBUG EVALUATE /'quux' < 5.55.
      |                 ^~~~~~~~~~~~~

evaluate.sps:42.17-42.22: note: DEBUG EVALUATE: This operand has type 'string'.
   42 | DEBUG EVALUATE /'quux' < 5.55.
      |                 ^~~~~~

evaluate.sps:42.26-42.29: note: DEBUG EVALUATE: This operand has type 'number'.
   42 | DEBUG EVALUATE /'quux' < 5.55.
      |                          ^~~~

'quux' < 5.55 => error

'0123' lt '0123' => false

'0123' < '0124' => true

'0124' lt '0123' => false

'0123  ' < '0123' => false

'0123' lt '0123  ' => false
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:653"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_289
#AT_START_290
at_fn_group_banner 290 'evaluate.at:896' \
  "expressions - >= > <>" "                          " 27
at_xfail=no
(
  printf "%s\n" "290. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /1 >= 2.
DEBUG EVALUATE /2.5 >= 1.5
DEBUG EVALUATE /1 ge 2.
DEBUG EVALUATE /2 >= 2.
DEBUG EVALUATE /2 ge 2.
DEBUG EVALUATE /2 > = 2.
DEBUG EVALUATE /1 >= 'foobar'.
DEBUG EVALUATE /5 ge 'foobar'.
DEBUG EVALUATE /'baz' ge 10.
DEBUG EVALUATE /'0123' ge '0123'.
DEBUG EVALUATE /'0123' >= '0124'.
DEBUG EVALUATE /'0124' >= '0123'.
DEBUG EVALUATE /'0123  ' ge '0123'.
DEBUG EVALUATE /'0123' >= '0123 '.

DEBUG EVALUATE /1 > 2.
DEBUG EVALUATE /2.5 > 1.5
DEBUG EVALUATE /3.5 gt 4.
DEBUG EVALUATE /4 gt 3.5
DEBUG EVALUATE /1 gt 'foobar'.
DEBUG EVALUATE /'baz' > 10.
DEBUG EVALUATE /'0123' > '0123'.
DEBUG EVALUATE /'0123' > '0124'.
DEBUG EVALUATE /'0124' > '0123'.
DEBUG EVALUATE /'0123   ' > '0123'.
DEBUG EVALUATE /'0123    ' > '0123 '.

DEBUG EVALUATE /1 ne 1.
DEBUG EVALUATE /1 ~= 1.
DEBUG EVALUATE /1 <> 2.
DEBUG EVALUATE /2 ne 3.
DEBUG EVALUATE /1 ~= 'foobar'.
DEBUG EVALUATE /'baz' ne 10.
DEBUG EVALUATE /'quux' ~= 5.55.
DEBUG EVALUATE /'foobar' <> 'foobar'.
DEBUG EVALUATE /'quux' ne 'bar'.
DEBUG EVALUATE /'bar   ' <> 'bar'.
DEBUG EVALUATE /'asdf       ' ~= "asdf   ".
DEBUG EVALUATE /1 < > 1.
DEBUG EVALUATE /1 ~ = 1.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:946: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:946"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1 >= 2 => false

2.5 >= 1.5 => true

1 ge 2 => false

2 >= 2 => true

2 ge 2 => true

evaluate.sps:8.21: error: DEBUG EVALUATE: Syntax error parsing expression.
    8 | DEBUG EVALUATE /2 > = 2.
      |                     ^

2 > = 2 => error

evaluate.sps:9.17-9.29: error: DEBUG EVALUATE: Both operands of >= must have
the same type.
    9 | DEBUG EVALUATE /1 >= 'foobar'.
      |                 ^~~~~~~~~~~~~

evaluate.sps:9.17: note: DEBUG EVALUATE: This operand has type 'number'.
    9 | DEBUG EVALUATE /1 >= 'foobar'.
      |                 ^

evaluate.sps:9.22-9.29: note: DEBUG EVALUATE: This operand has type 'string'.
    9 | DEBUG EVALUATE /1 >= 'foobar'.
      |                      ^~~~~~~~

1 >= 'foobar' => error

evaluate.sps:10.17-10.29: error: DEBUG EVALUATE: Both operands of >= must have
the same type.
   10 | DEBUG EVALUATE /5 ge 'foobar'.
      |                 ^~~~~~~~~~~~~

evaluate.sps:10.17: note: DEBUG EVALUATE: This operand has type 'number'.
   10 | DEBUG EVALUATE /5 ge 'foobar'.
      |                 ^

evaluate.sps:10.22-10.29: note: DEBUG EVALUATE: This operand has type 'string'.
   10 | DEBUG EVALUATE /5 ge 'foobar'.
      |                      ^~~~~~~~

5 ge 'foobar' => error

evaluate.sps:11.17-11.27: error: DEBUG EVALUATE: Both operands of >= must have
the same type.
   11 | DEBUG EVALUATE /'baz' ge 10.
      |                 ^~~~~~~~~~~

evaluate.sps:11.17-11.21: note: DEBUG EVALUATE: This operand has type 'string'.
   11 | DEBUG EVALUATE /'baz' ge 10.
      |                 ^~~~~

evaluate.sps:11.26-11.27: note: DEBUG EVALUATE: This operand has type 'number'.
   11 | DEBUG EVALUATE /'baz' ge 10.
      |                          ^~

'baz' ge 10 => error

'0123' ge '0123' => true

'0123' >= '0124' => false

'0124' >= '0123' => true

'0123  ' ge '0123' => true

'0123' >= '0123 ' => true

1 > 2 => false

2.5 > 1.5 => true

3.5 gt 4 => false

4 gt 3.5 => true

evaluate.sps:22.17-22.29: error: DEBUG EVALUATE: Both operands of > must have
the same type.
   22 | DEBUG EVALUATE /1 gt 'foobar'.
      |                 ^~~~~~~~~~~~~

evaluate.sps:22.17: note: DEBUG EVALUATE: This operand has type 'number'.
   22 | DEBUG EVALUATE /1 gt 'foobar'.
      |                 ^

evaluate.sps:22.22-22.29: note: DEBUG EVALUATE: This operand has type 'string'.
   22 | DEBUG EVALUATE /1 gt 'foobar'.
      |                      ^~~~~~~~

1 gt 'foobar' => error

evaluate.sps:23.17-23.26: error: DEBUG EVALUATE: Both operands of > must have
the same type.
   23 | DEBUG EVALUATE /'baz' > 10.
      |                 ^~~~~~~~~~

evaluate.sps:23.17-23.21: note: DEBUG EVALUATE: This operand has type 'string'.
   23 | DEBUG EVALUATE /'baz' > 10.
      |                 ^~~~~

evaluate.sps:23.25-23.26: note: DEBUG EVALUATE: This operand has type 'number'.
   23 | DEBUG EVALUATE /'baz' > 10.
      |                         ^~

'baz' > 10 => error

'0123' > '0123' => false

'0123' > '0124' => false

'0124' > '0123' => true

'0123   ' > '0123' => false

'0123    ' > '0123 ' => false

1 ne 1 => false

1 ~= 1 => false

1 <> 2 => true

2 ne 3 => true

evaluate.sps:34.17-34.29: error: DEBUG EVALUATE: Both operands of ~= must have
the same type.
   34 | DEBUG EVALUATE /1 ~= 'foobar'.
      |                 ^~~~~~~~~~~~~

evaluate.sps:34.17: note: DEBUG EVALUATE: This operand has type 'number'.
   34 | DEBUG EVALUATE /1 ~= 'foobar'.
      |                 ^

evaluate.sps:34.22-34.29: note: DEBUG EVALUATE: This operand has type 'string'.
   34 | DEBUG EVALUATE /1 ~= 'foobar'.
      |                      ^~~~~~~~

1 ~= 'foobar' => error

evaluate.sps:35.17-35.27: error: DEBUG EVALUATE: Both operands of ~= must have
the same type.
   35 | DEBUG EVALUATE /'baz' ne 10.
      |                 ^~~~~~~~~~~

evaluate.sps:35.17-35.21: note: DEBUG EVALUATE: This operand has type 'string'.
   35 | DEBUG EVALUATE /'baz' ne 10.
      |                 ^~~~~

evaluate.sps:35.26-35.27: note: DEBUG EVALUATE: This operand has type 'number'.
   35 | DEBUG EVALUATE /'baz' ne 10.
      |                          ^~

'baz' ne 10 => error

evaluate.sps:36.17-36.30: error: DEBUG EVALUATE: Both operands of ~= must have
the same type.
   36 | DEBUG EVALUATE /'quux' ~= 5.55.
      |                 ^~~~~~~~~~~~~~

evaluate.sps:36.17-36.22: note: DEBUG EVALUATE: This operand has type 'string'.
   36 | DEBUG EVALUATE /'quux' ~= 5.55.
      |                 ^~~~~~

evaluate.sps:36.27-36.30: note: DEBUG EVALUATE: This operand has type 'number'.
   36 | DEBUG EVALUATE /'quux' ~= 5.55.
      |                           ^~~~

'quux' ~= 5.55 => error

'foobar' <> 'foobar' => false

'quux' ne 'bar' => true

'bar   ' <> 'bar' => false

'asdf       ' ~= \"asdf   \" => false

evaluate.sps:41.21: error: DEBUG EVALUATE: Syntax error parsing expression.
   41 | DEBUG EVALUATE /1 < > 1.
      |                     ^

1 < > 1 => error

evaluate.sps:42.19: error: DEBUG EVALUATE: Syntax error expecting end of
command.
   42 | DEBUG EVALUATE /1 ~ = 1.
      |                   ^

1 ~ = 1 => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:946"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_290
#AT_START_291
at_fn_group_banner 291 'evaluate.at:1143' \
  "expressions - EXP LG10 LN SQRT ABS MOD MOD10 RND TRUNC" "" 27
at_xfail=no
(
  printf "%s\n" "291. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /EXP(10).
DEBUG EVALUATE /EXP('x').

DEBUG EVALUATE /LG10(500).
DEBUG EVALUATE /LG10('x').

DEBUG EVALUATE /SQRT(500).
DEBUG EVALUATE /SQRT(-1).

DEBUG EVALUATE /ABS(-10.5).
DEBUG EVALUATE /ABS(55.79).
DEBUG EVALUATE /ABS(0).
DEBUG EVALUATE /ABS(-0).

DEBUG EVALUATE /MOD(55.5, 2).
DEBUG EVALUATE /MOD(-55.5, 2).
DEBUG EVALUATE /MOD(55.5, -2).
DEBUG EVALUATE /MOD(-55.5, -2).
DEBUG EVALUATE /MOD('a', 2).
DEBUG EVALUATE /MOD(2, 'a').
DEBUG EVALUATE /MOD('a', 'b').

DEBUG EVALUATE /MOD10(55.5).
DEBUG EVALUATE /MOD10(-55.5).

DEBUG EVALUATE /RND(5.4).
DEBUG EVALUATE /RND(5.6).
DEBUG EVALUATE /RND(-5.4).
DEBUG EVALUATE /RND(-5.6).
DEBUG EVALUATE /RND(5.56, .1).
DEBUG EVALUATE /RND(-5.56, .1)
DEBUG EVALUATE /RND(.5).
DEBUG EVALUATE /RND(.5 - 2**-53).
DEBUG EVALUATE /RND(.5 - 2**-52).
DEBUG EVALUATE /RND(.5 - 2**-51).
DEBUG EVALUATE /RND(.5 - 2**-45).
DEBUG EVALUATE /RND(.5 - 2**-45, 1, 10).
DEBUG EVALUATE /RND('x').

DEBUG EVALUATE /TRUNC(1.2).
DEBUG EVALUATE /TRUNC(1.9).
DEBUG EVALUATE /TRUNC(-1.2).
DEBUG EVALUATE /TRUNC(-1.9).
DEBUG EVALUATE /TRUNC(5.06, .1).
DEBUG EVALUATE /TRUNC(-5.06, .1).
DEBUG EVALUATE /TRUNC(1).
DEBUG EVALUATE /TRUNC(1 - 2**-53).
DEBUG EVALUATE /TRUNC(1 - 2**-52).
DEBUG EVALUATE /TRUNC(1 - 2**-51).
DEBUG EVALUATE /TRUNC(1 - 2**-45).
DEBUG EVALUATE /TRUNC(1 - 2**-45, 1, 10).
DEBUG EVALUATE /TRUNC('x').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:1205: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:1205"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "EXP(10) => 22026.47

evaluate.sps:4.17-4.24: error: DEBUG EVALUATE: Type mismatch invoking
EXP(number) as EXP(string).
    4 | DEBUG EVALUATE /EXP('x').
      |                 ^~~~~~~~

evaluate.sps:4.21-4.23: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
    4 | DEBUG EVALUATE /EXP('x').
      |                     ^~~

EXP('x') => error

LG10(500) => 2.70

evaluate.sps:7.17-7.25: error: DEBUG EVALUATE: Type mismatch invoking
LG10(number) as LG10(string).
    7 | DEBUG EVALUATE /LG10('x').
      |                 ^~~~~~~~~

evaluate.sps:7.22-7.24: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
    7 | DEBUG EVALUATE /LG10('x').
      |                      ^~~

LG10('x') => error

SQRT(500) => 22.36

SQRT(-1) => sysmis

ABS(-10.5) => 10.50

ABS(55.79) => 55.79

ABS(0) => 0.00

ABS(-0) => 0.00

MOD(55.5, 2) => 1.50

MOD(-55.5, 2) => -1.50

MOD(55.5, -2) => 1.50

MOD(-55.5, -2) => -1.50

evaluate.sps:21.17-21.27: error: DEBUG EVALUATE: Type mismatch invoking
MOD(number, number) as MOD(string, number).
   21 | DEBUG EVALUATE /MOD('a', 2).
      |                 ^~~~~~~~~~~

evaluate.sps:21.21-21.23: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   21 | DEBUG EVALUATE /MOD('a', 2).
      |                     ^~~

MOD('a', 2) => error

evaluate.sps:22.17-22.27: error: DEBUG EVALUATE: Type mismatch invoking
MOD(number, number) as MOD(number, string).
   22 | DEBUG EVALUATE /MOD(2, 'a').
      |                 ^~~~~~~~~~~

evaluate.sps:22.24-22.26: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   22 | DEBUG EVALUATE /MOD(2, 'a').
      |                        ^~~

MOD(2, 'a') => error

evaluate.sps:23.17-23.29: error: DEBUG EVALUATE: Type mismatch invoking
MOD(number, number) as MOD(string, string).
   23 | DEBUG EVALUATE /MOD('a', 'b').
      |                 ^~~~~~~~~~~~~

evaluate.sps:23.21-23.23: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   23 | DEBUG EVALUATE /MOD('a', 'b').
      |                     ^~~

evaluate.sps:23.26-23.28: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   23 | DEBUG EVALUATE /MOD('a', 'b').
      |                          ^~~

MOD('a', 'b') => error

MOD10(55.5) => 5.50

MOD10(-55.5) => -5.50

RND(5.4) => 5.00

RND(5.6) => 6.00

RND(-5.4) => -5.00

RND(-5.6) => -6.00

RND(5.56, .1) => 5.60

RND(-5.56, .1) => -5.60

RND(.5) => 1.00

RND(.5 - 2**-53) => 1.00

RND(.5 - 2**-52) => 1.00

RND(.5 - 2**-51) => 1.00

RND(.5 - 2**-45) => 0.00

RND(.5 - 2**-45, 1, 10) => 1.00

evaluate.sps:40.17-40.24: error: DEBUG EVALUATE: Function invocation
RND(string) does not match any known function.  Candidates are:
RND(number)
RND(number, number)
RND(number, number, number).
   40 | DEBUG EVALUATE /RND('x').
      |                 ^~~~~~~~

RND('x') => error

TRUNC(1.2) => 1.00

TRUNC(1.9) => 1.00

TRUNC(-1.2) => -1.00

TRUNC(-1.9) => -1.00

TRUNC(5.06, .1) => 5.00

TRUNC(-5.06, .1) => -5.00

TRUNC(1) => 1.00

TRUNC(1 - 2**-53) => 1.00

TRUNC(1 - 2**-52) => 1.00

TRUNC(1 - 2**-51) => 1.00

TRUNC(1 - 2**-45) => 0.00

TRUNC(1 - 2**-45, 1, 10) => 1.00

evaluate.sps:54.17-54.26: error: DEBUG EVALUATE: Function invocation
TRUNC(string) does not match any known function.  Candidates are:
TRUNC(number)
TRUNC(number, number)
TRUNC(number, number, number).
   54 | DEBUG EVALUATE /TRUNC('x').
      |                 ^~~~~~~~~~

TRUNC('x') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:1205"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_291
#AT_START_292
at_fn_group_banner 292 'evaluate.at:1370' \
  "expressions - ACOS ARSIN ARTAN COS SIN TAN" "     " 27
at_xfail=no
(
  printf "%s\n" "292. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ACOS(.5) / 3.14159 * 180.
DEBUG EVALUATE /ARCOS(.75) / 3.14159 * 180.
DEBUG EVALUATE /ARCOS(-.5) / 3.14159 * 180.
DEBUG EVALUATE /ACOS(-.75) / 3.14159 * 180.
DEBUG EVALUATE /ACOS(-1) / 3.14159 * 180.
DEBUG EVALUATE /ARCOS(1) / 3.14159 * 180.
DEBUG EVALUATE /ACOS(-1.01) / 3.14159 * 180.
DEBUG EVALUATE /ARCOS(1.01) / 3.14159 * 180.
DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.

DEBUG EVALUATE /ASIN(.5) / 3.14159 * 180.
DEBUG EVALUATE /ARSIN(.25) / 3.14159 * 180.
DEBUG EVALUATE /ARSIN(-.5) / 3.14159 * 180.
DEBUG EVALUATE /ASIN(-.25) / 3.14159 * 180.
DEBUG EVALUATE /ASIN(-1.01) / 3.14159 * 180.
DEBUG EVALUATE /ARSIN(1.01) / 3.14159 * 180.
DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.

DEBUG EVALUATE /ATAN(1) / 3.14159 * 180.
DEBUG EVALUATE /ARTAN(10) / 3.14159 * 180.
DEBUG EVALUATE /ARTAN(-1) / 3.14159 * 180.
DEBUG EVALUATE /ATAN(-10) / 3.14159 * 180.
DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.

DEBUG EVALUATE /COS(60 / 180 * 3.14159).
DEBUG EVALUATE /COS(45 / 180 * 3.14159).
DEBUG EVALUATE /COS(30 / 180 * 3.14159).
DEBUG EVALUATE /COS(15 / 180 * 3.14159).
DEBUG EVALUATE /COS(-60 / 180 * 3.14159).
DEBUG EVALUATE /COS(-45 / 180 * 3.14159).
DEBUG EVALUATE /COS(-30 / 180 * 3.14159).
DEBUG EVALUATE /COS(-15 / 180 * 3.14159).
DEBUG EVALUATE /COS(123 / 180 * 3.14159).
DEBUG EVALUATE /COS(321 / 180 * 3.14159).
DEBUG EVALUATE /COS('x').

DEBUG EVALUATE /SIN(60 / 180 * 3.14159).
DEBUG EVALUATE /SIN(45 / 180 * 3.14159).
DEBUG EVALUATE /SIN(30 / 180 * 3.14159).
DEBUG EVALUATE /SIN(15 / 180 * 3.14159).
DEBUG EVALUATE /SIN(-60 / 180 * 3.14159).
DEBUG EVALUATE /SIN(-45 / 180 * 3.14159).
DEBUG EVALUATE /SIN(-30 / 180 * 3.14159).
DEBUG EVALUATE /SIN(-15 / 180 * 3.14159).
DEBUG EVALUATE /SIN(123 / 180 * 3.14159).
DEBUG EVALUATE /SIN(321 / 180 * 3.14159).
DEBUG EVALUATE /SIN('x').

DEBUG EVALUATE /TAN(60 / 180 * 3.14159).
DEBUG EVALUATE /TAN(45 / 180 * 3.14159).
DEBUG EVALUATE /TAN(30 / 180 * 3.14159).
DEBUG EVALUATE /TAN(15 / 180 * 3.14159).
DEBUG EVALUATE /TAN(-60 / 180 * 3.14159).
DEBUG EVALUATE /TAN(-45 / 180 * 3.14159).
DEBUG EVALUATE /TAN(-30 / 180 * 3.14159).
DEBUG EVALUATE /TAN(-15 / 180 * 3.14159).
DEBUG EVALUATE /TAN(123 / 180 * 3.14159).
DEBUG EVALUATE /TAN(321 / 180 * 3.14159).
DEBUG EVALUATE /TAN('x').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:1439: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:1439"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ACOS(.5) / 3.14159 * 180 => 60.00

ARCOS(.75) / 3.14159 * 180 => 41.41

ARCOS(-.5) / 3.14159 * 180 => 120.00

ACOS(-.75) / 3.14159 * 180 => 138.59

ACOS(-1) / 3.14159 * 180 => 180.00

ARCOS(1) / 3.14159 * 180 => 0.00

ACOS(-1.01) / 3.14159 * 180 => sysmis

ARCOS(1.01) / 3.14159 * 180 => sysmis

evaluate.sps:11.17-11.25: error: DEBUG EVALUATE: Type mismatch invoking
ACOS(number) as ACOS(string).
   11 | DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
      |                 ^~~~~~~~~

evaluate.sps:11.22-11.24: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   11 | DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
      |                      ^~~

ACOS('x') / 3.14159 * 180 => error

ASIN(.5) / 3.14159 * 180 => 30.00

ARSIN(.25) / 3.14159 * 180 => 14.48

ARSIN(-.5) / 3.14159 * 180 => -30.00

ASIN(-.25) / 3.14159 * 180 => -14.48

ASIN(-1.01) / 3.14159 * 180 => sysmis

ARSIN(1.01) / 3.14159 * 180 => sysmis

evaluate.sps:19.17-19.25: error: DEBUG EVALUATE: Type mismatch invoking
ASIN(number) as ASIN(string).
   19 | DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
      |                 ^~~~~~~~~

evaluate.sps:19.22-19.24: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   19 | DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
      |                      ^~~

ASIN('x') / 3.14159 * 180 => error

ATAN(1) / 3.14159 * 180 => 45.00

ARTAN(10) / 3.14159 * 180 => 84.29

ARTAN(-1) / 3.14159 * 180 => -45.00

ATAN(-10) / 3.14159 * 180 => -84.29

evaluate.sps:25.17-25.25: error: DEBUG EVALUATE: Type mismatch invoking
ATAN(number) as ATAN(string).
   25 | DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
      |                 ^~~~~~~~~

evaluate.sps:25.22-25.24: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   25 | DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
      |                      ^~~

ATAN('x') / 3.14159 * 180 => error

COS(60 / 180 * 3.14159) => 0.50

COS(45 / 180 * 3.14159) => 0.71

COS(30 / 180 * 3.14159) => 0.87

COS(15 / 180 * 3.14159) => 0.97

COS(-60 / 180 * 3.14159) => 0.50

COS(-45 / 180 * 3.14159) => 0.71

COS(-30 / 180 * 3.14159) => 0.87

COS(-15 / 180 * 3.14159) => 0.97

COS(123 / 180 * 3.14159) => -0.54

COS(321 / 180 * 3.14159) => 0.78

evaluate.sps:37.17-37.24: error: DEBUG EVALUATE: Type mismatch invoking
COS(number) as COS(string).
   37 | DEBUG EVALUATE /COS('x').
      |                 ^~~~~~~~

evaluate.sps:37.21-37.23: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   37 | DEBUG EVALUATE /COS('x').
      |                     ^~~

COS('x') => error

SIN(60 / 180 * 3.14159) => 0.87

SIN(45 / 180 * 3.14159) => 0.71

SIN(30 / 180 * 3.14159) => 0.50

SIN(15 / 180 * 3.14159) => 0.26

SIN(-60 / 180 * 3.14159) => -0.87

SIN(-45 / 180 * 3.14159) => -0.71

SIN(-30 / 180 * 3.14159) => -0.50

SIN(-15 / 180 * 3.14159) => -0.26

SIN(123 / 180 * 3.14159) => 0.84

SIN(321 / 180 * 3.14159) => -0.63

evaluate.sps:49.17-49.24: error: DEBUG EVALUATE: Type mismatch invoking
SIN(number) as SIN(string).
   49 | DEBUG EVALUATE /SIN('x').
      |                 ^~~~~~~~

evaluate.sps:49.21-49.23: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   49 | DEBUG EVALUATE /SIN('x').
      |                     ^~~

SIN('x') => error

TAN(60 / 180 * 3.14159) => 1.73

TAN(45 / 180 * 3.14159) => 1.00

TAN(30 / 180 * 3.14159) => 0.58

TAN(15 / 180 * 3.14159) => 0.27

TAN(-60 / 180 * 3.14159) => -1.73

TAN(-45 / 180 * 3.14159) => -1.00

TAN(-30 / 180 * 3.14159) => -0.58

TAN(-15 / 180 * 3.14159) => -0.27

TAN(123 / 180 * 3.14159) => -1.54

TAN(321 / 180 * 3.14159) => -0.81

evaluate.sps:61.17-61.24: error: DEBUG EVALUATE: Type mismatch invoking
TAN(number) as TAN(string).
   61 | DEBUG EVALUATE /TAN('x').
      |                 ^~~~~~~~

evaluate.sps:61.21-61.23: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   61 | DEBUG EVALUATE /TAN('x').
      |                     ^~~

TAN('x') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:1439"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_292
#AT_START_293
at_fn_group_banner 293 'evaluate.at:1611' \
  "expressions - vector indexing" "                  " 27
at_xfail=no
(
  printf "%s\n" "293. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(1).
DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(2).
DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(3).
DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).

DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(1).
DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(2).
DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(3).
DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).

_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:1636: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:1636"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "v(1) => 11.00

v(2) => 22.00

v(3) => 33.00

evaluate.sps:7.42-7.51: error: DEBUG EVALUATE: Index outside valid range 1 to
3, inclusive, for vector V.  The value will be treated as system-missing.
    7 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(\$sysmis).
      |                                          ^~~~~~~~~~

evaluate.sps:7.44-7.50: note: DEBUG EVALUATE: The index is system-missing.
    7 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(\$sysmis).
      |                                            ^~~~~~~

v(\$sysmis) => sysmis

evaluate.sps:8.42-8.45: error: DEBUG EVALUATE: Index outside valid range 1 to
3, inclusive, for vector V.  The value will be treated as system-missing.
    8 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
      |                                          ^~~~

evaluate.sps:8.44: note: DEBUG EVALUATE: The index has value 0.
    8 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
      |                                            ^

v(0) => sysmis

evaluate.sps:9.42-9.45: error: DEBUG EVALUATE: Index outside valid range 1 to
3, inclusive, for vector V.  The value will be treated as system-missing.
    9 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
      |                                          ^~~~

evaluate.sps:9.44: note: DEBUG EVALUATE: The index has value 4.
    9 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
      |                                            ^

v(4) => sysmis

v(1) => \"abc\"

v(2) => \"def\"

v(3) => \"ghi\"

evaluate.sps:14.51-14.60: error: DEBUG EVALUATE: Index outside valid range 1 to
3, inclusive, for vector V.  The value will be treated as system-missing.
   14 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(\$sysmis).
      |                                                   ^~~~~~~~~~

evaluate.sps:14.53-14.59: note: DEBUG EVALUATE: The index is system-missing.
   14 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(\$sysmis).
      |                                                     ^~~~~~~

v(\$sysmis) => \"\"

evaluate.sps:15.51-15.54: error: DEBUG EVALUATE: Index outside valid range 1 to
3, inclusive, for vector V.  The value will be treated as system-missing.
   15 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
      |                                                   ^~~~

evaluate.sps:15.53: note: DEBUG EVALUATE: The index has value 0.
   15 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
      |                                                     ^

v(0) => \"\"

evaluate.sps:16.51-16.54: error: DEBUG EVALUATE: Index outside valid range 1 to
3, inclusive, for vector V.  The value will be treated as system-missing.
   16 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
      |                                                   ^~~~

evaluate.sps:16.53: note: DEBUG EVALUATE: The index has value 4.
   16 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
      |                                                     ^

v(4) => \"\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:1636"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_293
#AT_START_294
at_fn_group_banner 294 'evaluate.at:1718' \
  "expressions - MISSING NMISS NVALID SYSMIS" "      " 27
at_xfail=no
(
  printf "%s\n" "294. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /MISSING(10).
DEBUG EVALUATE /MISSING($SYSMIS).
DEBUG EVALUATE /MISSING(ASIN(1.01)).
DEBUG EVALUATE /MISSING(ASIN(.5)).
DEBUG EVALUATE /MISSING('    ').

DEBUG EVALUATE (x=5)/x.
DEBUG EVALUATE (x=5 MISSING)/x.
DEBUG EVALUATE (x=5 MISSING)/x + 1.
DEBUG EVALUATE (x=SYSMIS)/x.

DEBUG EVALUATE (x=5) VECTOR/v(1).
DEBUG EVALUATE (x=5 MISSING) VECTOR/v(1).
DEBUG EVALUATE (x=5 MISSING) VECTOR/v(1) + 1.
DEBUG EVALUATE (x=SYSMIS) VECTOR/v(1).

DEBUG EVALUATE (x=5)/VALUE(x).
DEBUG EVALUATE (x=5 MISSING)/VALUE(x).
DEBUG EVALUATE (x=SYSMIS)/VALUE(x).

DEBUG EVALUATE (x=5) VECTOR/VALUE(v(1)).
DEBUG EVALUATE (x=5 MISSING) VECTOR/VALUE(v(1)).
DEBUG EVALUATE (x=SYSMIS) VECTOR/VALUE(v(1)).

DEBUG EVALUATE (x=5)/MISSING(x).
DEBUG EVALUATE (x=5 MISSING)/MISSING(x).
DEBUG EVALUATE (x=SYSMIS)/MISSING(x).

DEBUG EVALUATE (x=5)/SYSMIS(x).
DEBUG EVALUATE (x=5 MISSING)/SYSMIS(x).
DEBUG EVALUATE (x=SYSMIS)/SYSMIS(x).

DEBUG EVALUATE /NMISS($sysmis).
DEBUG EVALUATE /NMISS(0).
DEBUG EVALUATE /NMISS($sysmis, $sysmis, $sysmis).
DEBUG EVALUATE /NMISS(1, 2, 3, 4).
DEBUG EVALUATE /NMISS(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4).
DEBUG EVALUATE (a=1 MISSING) (b=2) (c=3 MISSING) (d=4)/NMISS(a, b, c, d).

DEBUG EVALUATE /NVALID($sysmis).
DEBUG EVALUATE /NVALID(0).
DEBUG EVALUATE /NVALID($sysmis, $sysmis, $sysmis).
DEBUG EVALUATE /NVALID(1, 2, 3, 4).
DEBUG EVALUATE /NVALID(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4).
DEBUG EVALUATE (a=1 MISSING) (b=2) (c=3 MISSING) (d=4)/NVALID(a, b, c, d).

DEBUG EVALUATE /SYSMIS(1).
DEBUG EVALUATE /SYSMIS($SYSMIS).
DEBUG EVALUATE /SYSMIS(1 + $SYSMIS).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:1777: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:1777"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "MISSING(10) => false

MISSING(\$SYSMIS) => true

MISSING(ASIN(1.01)) => true

MISSING(ASIN(.5)) => false

evaluate.sps:7.17-7.31: error: DEBUG EVALUATE: Type mismatch invoking
MISSING(number) as MISSING(string).
    7 | DEBUG EVALUATE /MISSING('    ').
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:7.25-7.30: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
    7 | DEBUG EVALUATE /MISSING('    ').
      |                         ^~~~~~

MISSING('    ') => error

x => 5.00

x => sysmis

x + 1 => sysmis

x => sysmis

v(1) => 5.00

v(1) => sysmis

v(1) + 1 => sysmis

v(1) => sysmis

VALUE(x) => 5.00

VALUE(x) => 5.00

VALUE(x) => sysmis

VALUE(v(1)) => 5.00

VALUE(v(1)) => 5.00

VALUE(v(1)) => sysmis

MISSING(x) => false

MISSING(x) => true

MISSING(x) => true

SYSMIS(x) => false

SYSMIS(x) => false

SYSMIS(x) => true

NMISS(\$sysmis) => 1.00

NMISS(0) => 0.00

NMISS(\$sysmis, \$sysmis, \$sysmis) => 3.00

NMISS(1, 2, 3, 4) => 0.00

NMISS(1, \$sysmis, \$sysmis, 2, 2, \$sysmis, \$sysmis, 3, 4) => 4.00

NMISS(a, b, c, d) => 2.00

NVALID(\$sysmis) => 0.00

NVALID(0) => 1.00

NVALID(\$sysmis, \$sysmis, \$sysmis) => 0.00

NVALID(1, 2, 3, 4) => 4.00

NVALID(1, \$sysmis, \$sysmis, 2, 2, \$sysmis, \$sysmis, 3, 4) => 5.00

NVALID(a, b, c, d) => 2.00

SYSMIS(1) => false

SYSMIS(\$SYSMIS) => true

SYSMIS(1 + \$SYSMIS) => true
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:1777"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_294
#AT_START_295
at_fn_group_banner 295 'evaluate.at:1871' \
  "expressions - ANY" "                              " 27
at_xfail=no
(
  printf "%s\n" "295. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /any(1, 1, 2, 3).
DEBUG EVALUATE /any(1, $true, 2, 3).
DEBUG EVALUATE /any(1, $false, 2, 3).
DEBUG EVALUATE /any(2, 1, 2, 3).
DEBUG EVALUATE /any(3, 1, 2, 3).
DEBUG EVALUATE /any(5, 1, 2, 3).
DEBUG EVALUATE /any(1, 1, 1, 1).
DEBUG EVALUATE /any($sysmis, 1, 1, 1).
DEBUG EVALUATE /any($sysmis, 1, $sysmis, 3).
DEBUG EVALUATE /any(1, 1, $sysmis, $sysmis).
DEBUG EVALUATE /any(1, $sysmis, $sysmis, $sysmis).
DEBUG EVALUATE /any($sysmis, $sysmis, $sysmis, $sysmis).

DEBUG EVALUATE /any(1).
DEBUG EVALUATE /any('1', 2, 3, 4).
DEBUG EVALUATE /any(1, '2', 3, 4).
DEBUG EVALUATE /any(1, 2, '3', 4).
DEBUG EVALUATE /any(1, 2, 3, '4').

DEBUG EVALUATE /any('', 'a', '', 'c').
DEBUG EVALUATE /any('a', 'a', 'b', 'c').
DEBUG EVALUATE /any('b', 'a', 'b', 'c').
DEBUG EVALUATE /any('c', 'a', 'b', 'c').
DEBUG EVALUATE /any('e', 'a', 'b', 'c').
DEBUG EVALUATE /any('a', 'a', 'a', 'a').
DEBUG EVALUATE /any('', 'a', 'a', 'a').
DEBUG EVALUATE /any('a', '', '', '').
DEBUG EVALUATE /any('a').

DEBUG EVALUATE /any('a', 'a  ', 'b', 'c').
DEBUG EVALUATE /any('b   ', 'a', 'b', 'c').
DEBUG EVALUATE /any('c   ', 'a', 'b', 'c     ').
DEBUG EVALUATE /any(a10, 'b', 'c', 'd').
DEBUG EVALUATE /any('a', b, 'c', 'd').
DEBUG EVALUATE /any('a', 'b', c, 'd').
DEBUG EVALUATE /any('a', 'b', 'c', d).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:1918: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:1918"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "any(1, 1, 2, 3) => true

any(1, \$true, 2, 3) => true

any(1, \$false, 2, 3) => false

any(2, 1, 2, 3) => true

any(3, 1, 2, 3) => true

any(5, 1, 2, 3) => false

any(1, 1, 1, 1) => true

any(\$sysmis, 1, 1, 1) => sysmis

any(\$sysmis, 1, \$sysmis, 3) => sysmis

any(1, 1, \$sysmis, \$sysmis) => true

any(1, \$sysmis, \$sysmis, \$sysmis) => sysmis

any(\$sysmis, \$sysmis, \$sysmis, \$sysmis) => sysmis

evaluate.sps:17.17-17.22: error: DEBUG EVALUATE: Function invocation
any(number) does not match any known function.  Candidates are:
ANY(number, number[, number]...)
ANY(string, string[, string]...).
   17 | DEBUG EVALUATE /any(1).
      |                 ^~~~~~

any(1) => error

evaluate.sps:18.17-18.33: error: DEBUG EVALUATE: Function invocation
any(string, number, number, number) does not match any known function.
Candidates are:
ANY(number, number[, number]...)
ANY(string, string[, string]...).
   18 | DEBUG EVALUATE /any('1', 2, 3, 4).
      |                 ^~~~~~~~~~~~~~~~~

any('1', 2, 3, 4) => error

evaluate.sps:19.17-19.33: error: DEBUG EVALUATE: Function invocation
any(number, string, number, number) does not match any known function.
Candidates are:
ANY(number, number[, number]...)
ANY(string, string[, string]...).
   19 | DEBUG EVALUATE /any(1, '2', 3, 4).
      |                 ^~~~~~~~~~~~~~~~~

any(1, '2', 3, 4) => error

evaluate.sps:20.17-20.33: error: DEBUG EVALUATE: Function invocation
any(number, number, string, number) does not match any known function.
Candidates are:
ANY(number, number[, number]...)
ANY(string, string[, string]...).
   20 | DEBUG EVALUATE /any(1, 2, '3', 4).
      |                 ^~~~~~~~~~~~~~~~~

any(1, 2, '3', 4) => error

evaluate.sps:21.17-21.33: error: DEBUG EVALUATE: Function invocation
any(number, number, number, string) does not match any known function.
Candidates are:
ANY(number, number[, number]...)
ANY(string, string[, string]...).
   21 | DEBUG EVALUATE /any(1, 2, 3, '4').
      |                 ^~~~~~~~~~~~~~~~~

any(1, 2, 3, '4') => error

any('', 'a', '', 'c') => true

any('a', 'a', 'b', 'c') => true

any('b', 'a', 'b', 'c') => true

any('c', 'a', 'b', 'c') => true

any('e', 'a', 'b', 'c') => false

any('a', 'a', 'a', 'a') => true

any('', 'a', 'a', 'a') => false

any('a', '', '', '') => false

evaluate.sps:31.17-31.24: error: DEBUG EVALUATE: Function invocation
any(string) does not match any known function.  Candidates are:
ANY(number, number[, number]...)
ANY(string, string[, string]...).
   31 | DEBUG EVALUATE /any('a').
      |                 ^~~~~~~~

any('a') => error

any('a', 'a  ', 'b', 'c') => true

any('b   ', 'a', 'b', 'c') => true

any('c   ', 'a', 'b', 'c     ') => true

evaluate.sps:36.17-36.39: error: DEBUG EVALUATE: Function invocation
any(format, string, string, string) does not match any known function.
Candidates are:
ANY(number, number[, number]...)
ANY(string, string[, string]...).
   36 | DEBUG EVALUATE /any(a10, 'b', 'c', 'd').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~

any(a10, 'b', 'c', 'd') => error

evaluate.sps:37.26: error: DEBUG EVALUATE: Unknown identifier b.
   37 | DEBUG EVALUATE /any('a', b, 'c', 'd').
      |                          ^

any('a', b, 'c', 'd') => error

evaluate.sps:38.31: error: DEBUG EVALUATE: Unknown identifier c.
   38 | DEBUG EVALUATE /any('a', 'b', c, 'd').
      |                               ^

any('a', 'b', c, 'd') => error

evaluate.sps:39.36: error: DEBUG EVALUATE: Unknown identifier d.
   39 | DEBUG EVALUATE /any('a', 'b', 'c', d).
      |                                    ^

any('a', 'b', 'c', d) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:1918"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_295
#AT_START_296
at_fn_group_banner 296 'evaluate.at:2054' \
  "expressions - RANGE" "                            " 27
at_xfail=no
(
  printf "%s\n" "296. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /range(5, 1, 10).
DEBUG EVALUATE /range(1, 1, 10).
DEBUG EVALUATE /range(10, 1, 10).
DEBUG EVALUATE /range(-1, 1, 10).
DEBUG EVALUATE /range(12, 1, 10).

DEBUG EVALUATE /range(5, $sysmis, 6, 1, 10).
DEBUG EVALUATE /range(5, $sysmis, $sysmis, 1, 10).
DEBUG EVALUATE /range(1, 1, 10, 6, $sysmis).
DEBUG EVALUATE /range(1, 1, 10, $sysmis, $sysmis).

DEBUG EVALUATE /range(5, 5, 10, 3, 7).
DEBUG EVALUATE /range(5, 10, 5, 3, 7).
DEBUG EVALUATE /range(5, 3, 7, 5, 10).
DEBUG EVALUATE /range(5, 3, 7, 10, 5).

DEBUG EVALUATE /range($sysmis, 1, 10).
DEBUG EVALUATE /range(5, 1, $sysmis).
DEBUG EVALUATE /range(5, $sysmis, 10).
DEBUG EVALUATE /range(1, 1, $sysmis).
DEBUG EVALUATE /range(10, $sysmis, 10).
DEBUG EVALUATE /range(5, 10, 5).
DEBUG EVALUATE /range($sysmis, $sysmis, 10).
DEBUG EVALUATE /range($sysmis, 1, $sysmis).
DEBUG EVALUATE /range($sysmis, $sysmis, $sysmis).

DEBUG EVALUATE /range(0, 1, 8, 10, 18).
DEBUG EVALUATE /range(1, 1, 8, 10, 18).
DEBUG EVALUATE /range(6, 1, 8, 10, 18).
DEBUG EVALUATE /range(8, 1, 8, 10, 18).
DEBUG EVALUATE /range(9, 1, 8, 10, 18).
DEBUG EVALUATE /range(10, 1, 8, 10, 18).
DEBUG EVALUATE /range(13, 1, 8, 10, 18).
DEBUG EVALUATE /range(16, 1, 8, 10, 18).
DEBUG EVALUATE /range(18, 1, 8, 10, 18).
DEBUG EVALUATE /range(20, 1, 8, 10, 18).
DEBUG EVALUATE /range(1).
DEBUG EVALUATE /range(1, 2).
DEBUG EVALUATE /range(1, 2, 3, 4).
DEBUG EVALUATE /range(1, 2, 3, 4, 5, 6).
DEBUG EVALUATE /range('1', 2, 3).
DEBUG EVALUATE /range(1, '2', 3).
DEBUG EVALUATE /range(1, 2, '3').

DEBUG EVALUATE /range('123', '111', '888').
DEBUG EVALUATE /range('111', '111', '888').
DEBUG EVALUATE /range('888', '111', '888').
DEBUG EVALUATE /range('110', '111', '888').
DEBUG EVALUATE /range('889', '111', '888').
DEBUG EVALUATE /range('000', '111', '888').
DEBUG EVALUATE /range('999', '111', '888').

DEBUG EVALUATE /range('123   ', '111', '888').
DEBUG EVALUATE /range('123', '111   ', '888').
DEBUG EVALUATE /range('123', '111', '888   ').
DEBUG EVALUATE /range('123', '111    ', '888   ').

DEBUG EVALUATE /range('00', '01', '08', '10', '18').
DEBUG EVALUATE /range('01', '01', '08', '10', '18').
DEBUG EVALUATE /range('06', '01', '08', '10', '18').
DEBUG EVALUATE /range('08', '01', '08', '10', '18').
DEBUG EVALUATE /range('09', '01', '08', '10', '18').
DEBUG EVALUATE /range('10', '01', '08', '10', '18').
DEBUG EVALUATE /range('15', '01', '08', '10', '18').
DEBUG EVALUATE /range('18', '01', '08', '10', '18').
DEBUG EVALUATE /range('19', '01', '08', '10', '18').

DEBUG EVALUATE /range('07', '01', '08', '18', '10').
DEBUG EVALUATE /range('12', '08', '01', '10', '18').

DEBUG EVALUATE /range('1').
DEBUG EVALUATE /range('1', '2').
DEBUG EVALUATE /range('1', '2', '3', '4').
DEBUG EVALUATE /range('1', '2', '3', '4', '5', '6').
DEBUG EVALUATE /range(1, '2', '3').
DEBUG EVALUATE /range('1', 2, '3').
DEBUG EVALUATE /range('1', '2', 3).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:2142: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:2142"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "range(5, 1, 10) => true

range(1, 1, 10) => true

range(10, 1, 10) => true

range(-1, 1, 10) => false

range(12, 1, 10) => false

range(5, \$sysmis, 6, 1, 10) => true

range(5, \$sysmis, \$sysmis, 1, 10) => true

range(1, 1, 10, 6, \$sysmis) => true

range(1, 1, 10, \$sysmis, \$sysmis) => true

range(5, 5, 10, 3, 7) => true

range(5, 10, 5, 3, 7) => sysmis

range(5, 3, 7, 5, 10) => true

range(5, 3, 7, 10, 5) => sysmis

range(\$sysmis, 1, 10) => sysmis

range(5, 1, \$sysmis) => sysmis

range(5, \$sysmis, 10) => sysmis

range(1, 1, \$sysmis) => sysmis

range(10, \$sysmis, 10) => sysmis

range(5, 10, 5) => sysmis

range(\$sysmis, \$sysmis, 10) => sysmis

range(\$sysmis, 1, \$sysmis) => sysmis

range(\$sysmis, \$sysmis, \$sysmis) => sysmis

range(0, 1, 8, 10, 18) => false

range(1, 1, 8, 10, 18) => true

range(6, 1, 8, 10, 18) => true

range(8, 1, 8, 10, 18) => true

range(9, 1, 8, 10, 18) => false

range(10, 1, 8, 10, 18) => true

range(13, 1, 8, 10, 18) => true

range(16, 1, 8, 10, 18) => true

range(18, 1, 8, 10, 18) => true

range(20, 1, 8, 10, 18) => false

evaluate.sps:40.17-40.24: error: DEBUG EVALUATE: Function invocation
range(number) does not match any known function.  Candidates are:
RANGE(number, number, number[, number, number]...)
RANGE(string, string, string[, string, string]...).
   40 | DEBUG EVALUATE /range(1).
      |                 ^~~~~~~~

range(1) => error

evaluate.sps:41.17-41.27: error: DEBUG EVALUATE: RANGE(number, number, number[,
number, number]...) must have an odd number of arguments.
   41 | DEBUG EVALUATE /range(1, 2).
      |                 ^~~~~~~~~~~

range(1, 2) => error

evaluate.sps:42.17-42.33: error: DEBUG EVALUATE: RANGE(number, number, number[,
number, number]...) must have an odd number of arguments.
   42 | DEBUG EVALUATE /range(1, 2, 3, 4).
      |                 ^~~~~~~~~~~~~~~~~

range(1, 2, 3, 4) => error

evaluate.sps:43.17-43.39: error: DEBUG EVALUATE: RANGE(number, number, number[,
number, number]...) must have an odd number of arguments.
   43 | DEBUG EVALUATE /range(1, 2, 3, 4, 5, 6).
      |                 ^~~~~~~~~~~~~~~~~~~~~~~

range(1, 2, 3, 4, 5, 6) => error

evaluate.sps:44.17-44.32: error: DEBUG EVALUATE: Function invocation
range(string, number, number) does not match any known function.  Candidates
are:
RANGE(number, number, number[, number, number]...)
RANGE(string, string, string[, string, string]...).
   44 | DEBUG EVALUATE /range('1', 2, 3).
      |                 ^~~~~~~~~~~~~~~~

range('1', 2, 3) => error

evaluate.sps:45.17-45.32: error: DEBUG EVALUATE: Function invocation
range(number, string, number) does not match any known function.  Candidates
are:
RANGE(number, number, number[, number, number]...)
RANGE(string, string, string[, string, string]...).
   45 | DEBUG EVALUATE /range(1, '2', 3).
      |                 ^~~~~~~~~~~~~~~~

range(1, '2', 3) => error

evaluate.sps:46.17-46.32: error: DEBUG EVALUATE: Function invocation
range(number, number, string) does not match any known function.  Candidates
are:
RANGE(number, number, number[, number, number]...)
RANGE(string, string, string[, string, string]...).
   46 | DEBUG EVALUATE /range(1, 2, '3').
      |                 ^~~~~~~~~~~~~~~~

range(1, 2, '3') => error

range('123', '111', '888') => true

range('111', '111', '888') => true

range('888', '111', '888') => true

range('110', '111', '888') => false

range('889', '111', '888') => false

range('000', '111', '888') => false

range('999', '111', '888') => false

range('123   ', '111', '888') => true

range('123', '111   ', '888') => true

range('123', '111', '888   ') => true

range('123', '111    ', '888   ') => true

range('00', '01', '08', '10', '18') => false

range('01', '01', '08', '10', '18') => true

range('06', '01', '08', '10', '18') => true

range('08', '01', '08', '10', '18') => true

range('09', '01', '08', '10', '18') => false

range('10', '01', '08', '10', '18') => true

range('15', '01', '08', '10', '18') => true

range('18', '01', '08', '10', '18') => true

range('19', '01', '08', '10', '18') => false

range('07', '01', '08', '18', '10') => sysmis

range('12', '08', '01', '10', '18') => sysmis

evaluate.sps:74.17-74.26: error: DEBUG EVALUATE: Function invocation
range(string) does not match any known function.  Candidates are:
RANGE(number, number, number[, number, number]...)
RANGE(string, string, string[, string, string]...).
   74 | DEBUG EVALUATE /range('1').
      |                 ^~~~~~~~~~

range('1') => error

evaluate.sps:75.17-75.31: error: DEBUG EVALUATE: RANGE(string, string, string[,
string, string]...) must have an odd number of arguments.
   75 | DEBUG EVALUATE /range('1', '2').
      |                 ^~~~~~~~~~~~~~~

range('1', '2') => error

evaluate.sps:76.17-76.41: error: DEBUG EVALUATE: RANGE(string, string, string[,
string, string]...) must have an odd number of arguments.
   76 | DEBUG EVALUATE /range('1', '2', '3', '4').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~

range('1', '2', '3', '4') => error

evaluate.sps:77.17-77.51: error: DEBUG EVALUATE: RANGE(string, string, string[,
string, string]...) must have an odd number of arguments.
   77 | DEBUG EVALUATE /range('1', '2', '3', '4', '5', '6').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

range('1', '2', '3', '4', '5', '6') => error

evaluate.sps:78.17-78.34: error: DEBUG EVALUATE: Function invocation
range(number, string, string) does not match any known function.  Candidates
are:
RANGE(number, number, number[, number, number]...)
RANGE(string, string, string[, string, string]...).
   78 | DEBUG EVALUATE /range(1, '2', '3').
      |                 ^~~~~~~~~~~~~~~~~~

range(1, '2', '3') => error

evaluate.sps:79.17-79.34: error: DEBUG EVALUATE: Function invocation
range(string, number, string) does not match any known function.  Candidates
are:
RANGE(number, number, number[, number, number]...)
RANGE(string, string, string[, string, string]...).
   79 | DEBUG EVALUATE /range('1', 2, '3').
      |                 ^~~~~~~~~~~~~~~~~~

range('1', 2, '3') => error

evaluate.sps:80.17-80.34: error: DEBUG EVALUATE: Function invocation
range(string, string, number) does not match any known function.  Candidates
are:
RANGE(number, number, number[, number, number]...)
RANGE(string, string, string[, string, string]...).
   80 | DEBUG EVALUATE /range('1', '2', 3).
      |                 ^~~~~~~~~~~~~~~~~~

range('1', '2', 3) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:2142"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_296
#AT_START_297
at_fn_group_banner 297 'evaluate.at:2374' \
  "expressions - MAX MIN" "                          " 27
at_xfail=no
(
  printf "%s\n" "297. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /max(1, 2, 3, 4, 5).
DEBUG EVALUATE /max(1, $sysmis, 2, 3, $sysmis, 4, 5).
DEBUG EVALUATE /max(1, 2).
DEBUG EVALUATE /max().
DEBUG EVALUATE /max(1).
DEBUG EVALUATE /max(1, $sysmis).
DEBUG EVALUATE /max(1, 2, 3, $sysmis).
DEBUG EVALUATE /max.4(1, 2, 3, $sysmis).
DEBUG EVALUATE /max.4(1, 2, 3).

DEBUG EVALUATE /max("2", "3", "5", "1", "4").
DEBUG EVALUATE /max("1", "2").
DEBUG EVALUATE /max("1").

DEBUG EVALUATE /min(1, 2, 3, 4, 5).
DEBUG EVALUATE /min(1, $sysmis, 2, 3, $sysmis, 4, 5).
DEBUG EVALUATE /min(1, 2).
DEBUG EVALUATE /min().
DEBUG EVALUATE /min(1).
DEBUG EVALUATE /min(1, $sysmis).
DEBUG EVALUATE /min(1, 2, 3, $sysmis).
DEBUG EVALUATE /min.4(1, 2, 3, $sysmis).
DEBUG EVALUATE /min.4(1, 2, 3).

DEBUG EVALUATE /min("2", "3", "5", "1", "4").
DEBUG EVALUATE /min("1", "2").
DEBUG EVALUATE /min("1").
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:2411: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:2411"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "max(1, 2, 3, 4, 5) => 5.00

max(1, \$sysmis, 2, 3, \$sysmis, 4, 5) => 5.00

max(1, 2) => 2.00

evaluate.sps:6.17-6.20: error: DEBUG EVALUATE: Function invocation max() does
not match any known function.  Candidates are:
MAX(number[, number]...)
MAX(string[, string]...).
    6 | DEBUG EVALUATE /max().
      |                 ^~~~

max() => error

max(1) => 1.00

max(1, \$sysmis) => 1.00

max(1, 2, 3, \$sysmis) => 3.00

max.4(1, 2, 3, \$sysmis) => sysmis

evaluate.sps:11.17-11.30: error: DEBUG EVALUATE: For MAX(number[, number]...)
with 3 arguments, at most 3 (not 4) may be required to be valid.
   11 | DEBUG EVALUATE /max.4(1, 2, 3).
      |                 ^~~~~~~~~~~~~~

max.4(1, 2, 3) => error

max(\"2\", \"3\", \"5\", \"1\", \"4\") => \"5\"

max(\"1\", \"2\") => \"2\"

max(\"1\") => \"1\"

min(1, 2, 3, 4, 5) => 1.00

min(1, \$sysmis, 2, 3, \$sysmis, 4, 5) => 1.00

min(1, 2) => 1.00

evaluate.sps:20.17-20.20: error: DEBUG EVALUATE: Function invocation min() does
not match any known function.  Candidates are:
MIN(number[, number]...)
MIN(string[, string]...).
   20 | DEBUG EVALUATE /min().
      |                 ^~~~

min() => error

min(1) => 1.00

min(1, \$sysmis) => 1.00

min(1, 2, 3, \$sysmis) => 1.00

min.4(1, 2, 3, \$sysmis) => sysmis

evaluate.sps:25.17-25.30: error: DEBUG EVALUATE: For MIN(number[, number]...)
with 3 arguments, at most 3 (not 4) may be required to be valid.
   25 | DEBUG EVALUATE /min.4(1, 2, 3).
      |                 ^~~~~~~~~~~~~~

min.4(1, 2, 3) => error

min(\"2\", \"3\", \"5\", \"1\", \"4\") => \"1\"

min(\"1\", \"2\") => \"1\"

min(\"1\") => \"1\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:2411"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_297
#AT_START_298
at_fn_group_banner 298 'evaluate.at:2487' \
  "expressions - CFVAR MEAN MEDIAN" "                " 27
at_xfail=no
(
  printf "%s\n" "298. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /cfvar(1, 2, 3, 4, 5).
DEBUG EVALUATE /cfvar(1, $sysmis, 2, 3, $sysmis, 4, 5).
DEBUG EVALUATE /cfvar(1, 2).
DEBUG EVALUATE /cfvar(1).
DEBUG EVALUATE /cfvar(1, $sysmis).
DEBUG EVALUATE /cfvar(1, 2, 3, $sysmis).
DEBUG EVALUATE /cfvar.4(1, 2, 3, $sysmis).
DEBUG EVALUATE /cfvar.4(1, 2, 3).
DEBUG EVALUATE /cfvar('x').
DEBUG EVALUATE /cfvar('x', 1, 2, 3).

DEBUG EVALUATE /mean(1, 2, 3, 4, 5).
DEBUG EVALUATE /mean(1, $sysmis, 2, 3, $sysmis, 4, 5).
DEBUG EVALUATE /mean(1, 2).
DEBUG EVALUATE /mean().
DEBUG EVALUATE /mean(1).
DEBUG EVALUATE /mean(1, $sysmis).
DEBUG EVALUATE /mean(1, 2, 3, $sysmis).
DEBUG EVALUATE /mean.4(1, 2, 3, $sysmis).
DEBUG EVALUATE /mean.4(1, 2, 3).

DEBUG EVALUATE /median(1, 2, 3, 4, 5).
DEBUG EVALUATE /median(2, 3, 4, 5, 1).
DEBUG EVALUATE /median(2, 3, 4, 1, 5).
DEBUG EVALUATE /median(2, 1, 4, 5, 3).
DEBUG EVALUATE /median(1, 2, 3, 4).
DEBUG EVALUATE /median(2, 3, 1, 4).
DEBUG EVALUATE /median(2, 3, 4, 1).
DEBUG EVALUATE /median(2, 1, 4, 3).
DEBUG EVALUATE /median(1, $sysmis, 3, 4, 5).
DEBUG EVALUATE /median(2, 3, 4, 5, $sysmis, 1).
DEBUG EVALUATE /median($sysmis, $sysmis, $sysmis, 2, 3, 4, 1, 5).
DEBUG EVALUATE /median(1, 2, 3).
DEBUG EVALUATE /median(1).
DEBUG EVALUATE /median(1, 2).
DEBUG EVALUATE /median(1, 2, $sysmis).
DEBUG EVALUATE /median(1, $sysmis, $sysmis).
DEBUG EVALUATE /median($sysmis, $sysmis, $sysmis).
DEBUG EVALUATE /median.3(1, 2, $sysmis).
DEBUG EVALUATE /median.2(1, $sysmis).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:2538: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:2538"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "cfvar(1, 2, 3, 4, 5) => 0.53

cfvar(1, \$sysmis, 2, 3, \$sysmis, 4, 5) => 0.53

cfvar(1, 2) => 0.47

evaluate.sps:7.17-7.24: error: DEBUG EVALUATE: Type mismatch invoking
CFVAR(number, number[, number]...) as cfvar(number).
    7 | DEBUG EVALUATE /cfvar(1).
      |                 ^~~~~~~~

cfvar(1) => error

cfvar(1, \$sysmis) => sysmis

cfvar(1, 2, 3, \$sysmis) => 0.50

cfvar.4(1, 2, 3, \$sysmis) => sysmis

evaluate.sps:11.17-11.32: error: DEBUG EVALUATE: For CFVAR(number, number[,
number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
   11 | DEBUG EVALUATE /cfvar.4(1, 2, 3).
      |                 ^~~~~~~~~~~~~~~~

cfvar.4(1, 2, 3) => error

evaluate.sps:12.17-12.26: error: DEBUG EVALUATE: Type mismatch invoking
CFVAR(number, number[, number]...) as cfvar(string).
   12 | DEBUG EVALUATE /cfvar('x').
      |                 ^~~~~~~~~~

evaluate.sps:12.23-12.25: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   12 | DEBUG EVALUATE /cfvar('x').
      |                       ^~~

cfvar('x') => error

evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking
CFVAR(number, number[, number]...) as cfvar(string, number, number, number).
   13 | DEBUG EVALUATE /cfvar('x', 1, 2, 3).
      |                 ^~~~~~~~~~~~~~~~~~~

cfvar('x', 1, 2, 3) => error

mean(1, 2, 3, 4, 5) => 3.00

mean(1, \$sysmis, 2, 3, \$sysmis, 4, 5) => 3.00

mean(1, 2) => 1.50

evaluate.sps:18.17-18.21: error: DEBUG EVALUATE: Type mismatch invoking
MEAN(number[, number]...) as mean().
   18 | DEBUG EVALUATE /mean().
      |                 ^~~~~

mean() => error

mean(1) => 1.00

mean(1, \$sysmis) => 1.00

mean(1, 2, 3, \$sysmis) => 2.00

mean.4(1, 2, 3, \$sysmis) => sysmis

evaluate.sps:23.17-23.31: error: DEBUG EVALUATE: For MEAN(number[, number]...)
with 3 arguments, at most 3 (not 4) may be required to be valid.
   23 | DEBUG EVALUATE /mean.4(1, 2, 3).
      |                 ^~~~~~~~~~~~~~~

mean.4(1, 2, 3) => error

median(1, 2, 3, 4, 5) => 3.00

median(2, 3, 4, 5, 1) => 3.00

median(2, 3, 4, 1, 5) => 3.00

median(2, 1, 4, 5, 3) => 3.00

median(1, 2, 3, 4) => 2.50

median(2, 3, 1, 4) => 2.50

median(2, 3, 4, 1) => 2.50

median(2, 1, 4, 3) => 2.50

median(1, \$sysmis, 3, 4, 5) => 3.50

median(2, 3, 4, 5, \$sysmis, 1) => 3.00

median(\$sysmis, \$sysmis, \$sysmis, 2, 3, 4, 1, 5) => 3.00

median(1, 2, 3) => 2.00

median(1) => 1.00

median(1, 2) => 1.50

median(1, 2, \$sysmis) => 1.50

median(1, \$sysmis, \$sysmis) => 1.00

median(\$sysmis, \$sysmis, \$sysmis) => sysmis

median.3(1, 2, \$sysmis) => sysmis

median.2(1, \$sysmis) => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:2538"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_298
#AT_START_299
at_fn_group_banner 299 'evaluate.at:2653' \
  "expressions - SD SUM VARIANCE" "                  " 27
at_xfail=no
(
  printf "%s\n" "299. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /sd(1, 2, 3, 4, 5).
DEBUG EVALUATE /sd(1, $sysmis, 2, 3, $sysmis, 4, 5).
DEBUG EVALUATE /sd(1, 2).
DEBUG EVALUATE /sd(1).
DEBUG EVALUATE /sd(1, $sysmis).
DEBUG EVALUATE /sd(1, 2, 3, $sysmis).
DEBUG EVALUATE /sd.4(1, 2, 3, $sysmis).
DEBUG EVALUATE /sd.4(1, 2, 3).
DEBUG EVALUATE /sd('x').
DEBUG EVALUATE /sd('x', 1, 2, 3).
DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/sd(a TO c).

DEBUG EVALUATE /sum(1, 2, 3, 4, 5).
DEBUG EVALUATE /sum(1, $sysmis, 2, 3, $sysmis, 4, 5).
DEBUG EVALUATE /sum(1, 2).
DEBUG EVALUATE /sum().
DEBUG EVALUATE /sum(1).
DEBUG EVALUATE /sum(1, $sysmis).
DEBUG EVALUATE /sum(1, 2, 3, $sysmis).
DEBUG EVALUATE /sum.4(1, 2, 3, $sysmis).
DEBUG EVALUATE /sum.4(1, 2, 3).
DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/sum(b TO F).

DEBUG EVALUATE /variance(1, 2, 3, 4, 5).
DEBUG EVALUATE /variance(1, $sysmis, 2, 3, $sysmis, 4, 5).
DEBUG EVALUATE /variance(1, 2).
DEBUG EVALUATE /variance(1).
DEBUG EVALUATE /variance(1, $sysmis).
DEBUG EVALUATE /variance(1, 2, 3, $sysmis).
DEBUG EVALUATE /variance.4(1, 2, 3, $sysmis).
DEBUG EVALUATE /variance.4(1, 2, 3).
DEBUG EVALUATE /variance('x').
DEBUG EVALUATE /variance('x', 1, 2, 3).
DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/variance(a TO e).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:2698: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:2698"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "sd(1, 2, 3, 4, 5) => 1.58

sd(1, \$sysmis, 2, 3, \$sysmis, 4, 5) => 1.58

sd(1, 2) => 0.71

evaluate.sps:7.17-7.21: error: DEBUG EVALUATE: Type mismatch invoking
SD(number, number[, number]...) as sd(number).
    7 | DEBUG EVALUATE /sd(1).
      |                 ^~~~~

sd(1) => error

sd(1, \$sysmis) => sysmis

sd(1, 2, 3, \$sysmis) => 1.00

sd.4(1, 2, 3, \$sysmis) => sysmis

evaluate.sps:11.17-11.29: error: DEBUG EVALUATE: For SD(number, number[,
number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
   11 | DEBUG EVALUATE /sd.4(1, 2, 3).
      |                 ^~~~~~~~~~~~~

sd.4(1, 2, 3) => error

evaluate.sps:12.17-12.23: error: DEBUG EVALUATE: Type mismatch invoking
SD(number, number[, number]...) as sd(string).
   12 | DEBUG EVALUATE /sd('x').
      |                 ^~~~~~~

evaluate.sps:12.20-12.22: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   12 | DEBUG EVALUATE /sd('x').
      |                    ^~~

sd('x') => error

evaluate.sps:13.17-13.32: error: DEBUG EVALUATE: Type mismatch invoking
SD(number, number[, number]...) as sd(string, number, number, number).
   13 | DEBUG EVALUATE /sd('x', 1, 2, 3).
      |                 ^~~~~~~~~~~~~~~~

sd('x', 1, 2, 3) => error

sd(a TO c) => 1.00

sum(1, 2, 3, 4, 5) => 15.00

sum(1, \$sysmis, 2, 3, \$sysmis, 4, 5) => 15.00

sum(1, 2) => 3.00

evaluate.sps:19.17-19.20: error: DEBUG EVALUATE: Type mismatch invoking
SUM(number[, number]...) as sum().
   19 | DEBUG EVALUATE /sum().
      |                 ^~~~

sum() => error

sum(1) => 1.00

sum(1, \$sysmis) => 1.00

sum(1, 2, 3, \$sysmis) => 6.00

sum.4(1, 2, 3, \$sysmis) => sysmis

evaluate.sps:24.17-24.30: error: DEBUG EVALUATE: For SUM(number[, number]...)
with 3 arguments, at most 3 (not 4) may be required to be valid.
   24 | DEBUG EVALUATE /sum.4(1, 2, 3).
      |                 ^~~~~~~~~~~~~~

sum.4(1, 2, 3) => error

sum(b TO F) => 20.00

variance(1, 2, 3, 4, 5) => 2.50

variance(1, \$sysmis, 2, 3, \$sysmis, 4, 5) => 2.50

variance(1, 2) => 0.50

evaluate.sps:30.17-30.27: error: DEBUG EVALUATE: Type mismatch invoking
VARIANCE(number, number[, number]...) as variance(number).
   30 | DEBUG EVALUATE /variance(1).
      |                 ^~~~~~~~~~~

variance(1) => error

variance(1, \$sysmis) => sysmis

variance(1, 2, 3, \$sysmis) => 1.00

variance.4(1, 2, 3, \$sysmis) => sysmis

evaluate.sps:34.17-34.35: error: DEBUG EVALUATE: For VARIANCE(number, number[,
number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
   34 | DEBUG EVALUATE /variance.4(1, 2, 3).
      |                 ^~~~~~~~~~~~~~~~~~~

variance.4(1, 2, 3) => error

evaluate.sps:35.17-35.29: error: DEBUG EVALUATE: Type mismatch invoking
VARIANCE(number, number[, number]...) as variance(string).
   35 | DEBUG EVALUATE /variance('x').
      |                 ^~~~~~~~~~~~~

evaluate.sps:35.26-35.28: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   35 | DEBUG EVALUATE /variance('x').
      |                          ^~~

variance('x') => error

evaluate.sps:36.17-36.38: error: DEBUG EVALUATE: Type mismatch invoking
VARIANCE(number, number[, number]...) as variance(string, number, number,
number).
   36 | DEBUG EVALUATE /variance('x', 1, 2, 3).
      |                 ^~~~~~~~~~~~~~~~~~~~~~

variance('x', 1, 2, 3) => error

variance(a TO e) => 2.50
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:2698"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_299
#AT_START_300
at_fn_group_banner 300 'evaluate.at:2827' \
  "expressions - CONCAT" "                           " 27
at_xfail=no
(
  printf "%s\n" "300. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /concat('').
DEBUG EVALUATE /concat('a', 'b').
DEBUG EVALUATE /concat('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h').
DEBUG EVALUATE /concat('abcdefgh', 'ijklmnopq').
DEBUG EVALUATE /concat('a', 1).
DEBUG EVALUATE /concat(1, 2).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:2844: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:2844"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "concat('') => \"\"

concat('a', 'b') => \"ab\"

concat('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') => \"abcdefgh\"

concat('abcdefgh', 'ijklmnopq') => \"abcdefghijklmnopq\"

evaluate.sps:8.17-8.30: error: DEBUG EVALUATE: Type mismatch invoking
CONCAT(string[, string]...) as concat(string, number).
    8 | DEBUG EVALUATE /concat('a', 1).
      |                 ^~~~~~~~~~~~~~

concat('a', 1) => error

evaluate.sps:9.17-9.28: error: DEBUG EVALUATE: Type mismatch invoking
CONCAT(string[, string]...) as concat(number, number).
    9 | DEBUG EVALUATE /concat(1, 2).
      |                 ^~~~~~~~~~~~

concat(1, 2) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:2844"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_300
#AT_START_301
at_fn_group_banner 301 'evaluate.at:2870' \
  "expressions - INDEX" "                            " 27
at_xfail=no
(
  printf "%s\n" "301. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /index('abcbcde', 'bc').
DEBUG EVALUATE /index('abcbcde', 'bcd').
DEBUG EVALUATE /index('abcbcde', 'bcbc').
DEBUG EVALUATE /index('abcdefgh', 'abc').
DEBUG EVALUATE /index('abcdefgh', 'bcd').
DEBUG EVALUATE /index('abcdefgh', 'cde').
DEBUG EVALUATE /index('abcdefgh', 'def').
DEBUG EVALUATE /index('abcdefgh', 'efg').
DEBUG EVALUATE /index('abcdefgh', 'fgh').
DEBUG EVALUATE /index('abcdefgh', 'fghi').
DEBUG EVALUATE /index('abcdefgh', 'x').
DEBUG EVALUATE /index('abcdefgh', 'abch').
DEBUG EVALUATE /index('banana', 'na').
DEBUG EVALUATE /index('banana', 'ana').
DEBUG EVALUATE /index('', 'x').
DEBUG EVALUATE /index('x', '').
DEBUG EVALUATE /index('', '').
DEBUG EVALUATE /index('abcdefgh', '').
DEBUG EVALUATE /index('abcdefgh', 'alkjsfdjlskalkjfa').

DEBUG EVALUATE /index('abcbcde', 'bc', 1).
DEBUG EVALUATE /index('abcbcde', 'dc', 1).
DEBUG EVALUATE /index('abcbcde', 'abc', 1).
DEBUG EVALUATE /index('abcbcde', 'bc', 2).
DEBUG EVALUATE /index('abcbcde', 'dc', 2).
DEBUG EVALUATE /index('abcbcde', 'abc', 1).
DEBUG EVALUATE /index('abcbcde', 'bccb', 2).
DEBUG EVALUATE /index('abcbcde', 'bcbc', 2).
DEBUG EVALUATE /index('abcbcde', 'bcbc', $sysmis).
DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
DEBUG EVALUATE /index('abcbcde', '', 1).
DEBUG EVALUATE /index('', '', 1).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:2913: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:2913"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "index('abcbcde', 'bc') => 2.00

index('abcbcde', 'bcd') => 4.00

index('abcbcde', 'bcbc') => 2.00

index('abcdefgh', 'abc') => 1.00

index('abcdefgh', 'bcd') => 2.00

index('abcdefgh', 'cde') => 3.00

index('abcdefgh', 'def') => 4.00

index('abcdefgh', 'efg') => 5.00

index('abcdefgh', 'fgh') => 6.00

index('abcdefgh', 'fghi') => 0.00

index('abcdefgh', 'x') => 0.00

index('abcdefgh', 'abch') => 0.00

index('banana', 'na') => 3.00

index('banana', 'ana') => 2.00

index('', 'x') => 0.00

index('x', '') => 1.00

index('', '') => 1.00

index('abcdefgh', '') => 1.00

index('abcdefgh', 'alkjsfdjlskalkjfa') => 0.00

index('abcbcde', 'bc', 1) => 2.00

index('abcbcde', 'dc', 1) => 3.00

index('abcbcde', 'abc', 1) => 1.00

index('abcbcde', 'bc', 2) => 2.00

index('abcbcde', 'dc', 2) => 0.00

index('abcbcde', 'abc', 1) => 1.00

index('abcbcde', 'bccb', 2) => 2.00

index('abcbcde', 'bcbc', 2) => 2.00

index('abcbcde', 'bcbc', \$sysmis) => sysmis

evaluate.sps:33.17-33.43: error: DEBUG EVALUATE: INDEX needle length argument
must evenly divide the length of the needles argument.
   33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~

evaluate.sps:33.34-33.39: note: DEBUG EVALUATE: The needles argument has length
4.
   33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
      |                                  ^~~~~~

evaluate.sps:33.42: note: DEBUG EVALUATE: The needle length argument has value
3.
   33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
      |                                          ^

index('abcbcde', 'bcbc', 3) => sysmis

index('abcbcde', '', 1) => 0.00

index('', '', 1) => 0.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:2913"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_301
#AT_START_302
at_fn_group_banner 302 'evaluate.at:2994' \
  "expressions - RINDEX" "                           " 27
at_xfail=no
(
  printf "%s\n" "302. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /rindex('abcbcde', 'bc').
DEBUG EVALUATE /rindex('abcbcde', 'bcd').
DEBUG EVALUATE /rindex('abcbcde', 'bcbc').
DEBUG EVALUATE /rindex('abcdefgh', 'abc').
DEBUG EVALUATE /rindex('abcdefgh', 'bcd').
DEBUG EVALUATE /rindex('abcdefgh', 'cde').
DEBUG EVALUATE /rindex('abcdefgh', 'def').
DEBUG EVALUATE /rindex('abcdefgh', 'efg').
DEBUG EVALUATE /rindex('abcdefgh', 'fgh').
DEBUG EVALUATE /rindex('abcdefgh', 'fghi').
DEBUG EVALUATE /rindex('abcdefgh', 'x').
DEBUG EVALUATE /rindex('abcdefgh', 'abch').
DEBUG EVALUATE /rindex('banana', 'na').
DEBUG EVALUATE /rindex('banana', 'ana').
DEBUG EVALUATE /rindex('', 'x').
DEBUG EVALUATE /rindex('x', '').
DEBUG EVALUATE /rindex('', '').
DEBUG EVALUATE /rindex('abcdefgh', '').
DEBUG EVALUATE /rindex('abcdefgh', 'alkjsfdjlskalkjfa').

DEBUG EVALUATE /rindex('abcbcde', 'bc', 1).
DEBUG EVALUATE /rindex('abcbcde', 'dc', 1).
DEBUG EVALUATE /rindex('abcbcde', 'abc', 1).
DEBUG EVALUATE /rindex('abcbcde', 'bc', 2).
DEBUG EVALUATE /rindex('abcbcde', 'dc', 2).
DEBUG EVALUATE /rindex('abcbcde', 'abc', 1).
DEBUG EVALUATE /rindex('abcbcde', 'bccb', 2).
DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 2).
DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
DEBUG EVALUATE /rindex('abcbcde', 'bcbc', $sysmis).
DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', $sysmis).
DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 'x').
DEBUG EVALUATE /rindex(1, 'bcdfkjl', 2).
DEBUG EVALUATE /rindex('aksj', 2, 2).
DEBUG EVALUATE /rindex(1, 2, 3).
DEBUG EVALUATE /rindex(1, 2, '3').
DEBUG EVALUATE /rindex('abcbcde', '', 1).
DEBUG EVALUATE /rindex('', '', 1).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3044: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3044"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "rindex('abcbcde', 'bc') => 4.00

rindex('abcbcde', 'bcd') => 4.00

rindex('abcbcde', 'bcbc') => 2.00

rindex('abcdefgh', 'abc') => 1.00

rindex('abcdefgh', 'bcd') => 2.00

rindex('abcdefgh', 'cde') => 3.00

rindex('abcdefgh', 'def') => 4.00

rindex('abcdefgh', 'efg') => 5.00

rindex('abcdefgh', 'fgh') => 6.00

rindex('abcdefgh', 'fghi') => 0.00

rindex('abcdefgh', 'x') => 0.00

rindex('abcdefgh', 'abch') => 0.00

rindex('banana', 'na') => 5.00

rindex('banana', 'ana') => 4.00

rindex('', 'x') => 0.00

rindex('x', '') => 2.00

rindex('', '') => 1.00

rindex('abcdefgh', '') => 9.00

rindex('abcdefgh', 'alkjsfdjlskalkjfa') => 0.00

rindex('abcbcde', 'bc', 1) => 5.00

rindex('abcbcde', 'dc', 1) => 6.00

rindex('abcbcde', 'abc', 1) => 5.00

rindex('abcbcde', 'bc', 2) => 4.00

rindex('abcbcde', 'dc', 2) => 0.00

rindex('abcbcde', 'abc', 1) => 5.00

rindex('abcbcde', 'bccb', 2) => 4.00

rindex('abcbcde', 'bcbc', 2) => 4.00

evaluate.sps:32.17-32.44: error: DEBUG EVALUATE: RINDEX needle length argument
must evenly divide the length of the needles argument.
   32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

evaluate.sps:32.35-32.40: note: DEBUG EVALUATE: The needles argument has length
4.
   32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
      |                                   ^~~~~~

evaluate.sps:32.43: note: DEBUG EVALUATE: The needle length argument has value
0.
   32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
      |                                           ^

rindex('abcbcde', 'bcbc', 0) => sysmis

rindex('abcbcde', 'bcbc', \$sysmis) => sysmis

evaluate.sps:34.17-34.45: error: DEBUG EVALUATE: RINDEX needle length argument
must evenly divide the length of the needles argument.
   34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

evaluate.sps:34.35-34.41: note: DEBUG EVALUATE: The needles argument has length
5.
   34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
      |                                   ^~~~~~~

evaluate.sps:34.44: note: DEBUG EVALUATE: The needle length argument has value
2.
   34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
      |                                            ^

rindex('abcbcde', 'bcbcg', 2) => sysmis

rindex('abcbcde', 'bcbcg', \$sysmis) => sysmis

evaluate.sps:36.17-36.47: error: DEBUG EVALUATE: Function invocation
rindex(string, string, string) does not match any known function.  Candidates
are:
RINDEX(string, string)
RINDEX(string, string, integer).
   36 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 'x').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rindex('abcbcde', 'bcbcg', 'x') => error

evaluate.sps:37.17-37.39: error: DEBUG EVALUATE: Function invocation
rindex(number, string, number) does not match any known function.  Candidates
are:
RINDEX(string, string)
RINDEX(string, string, integer).
   37 | DEBUG EVALUATE /rindex(1, 'bcdfkjl', 2).
      |                 ^~~~~~~~~~~~~~~~~~~~~~~

rindex(1, 'bcdfkjl', 2) => error

evaluate.sps:38.17-38.36: error: DEBUG EVALUATE: Function invocation
rindex(string, number, number) does not match any known function.  Candidates
are:
RINDEX(string, string)
RINDEX(string, string, integer).
   38 | DEBUG EVALUATE /rindex('aksj', 2, 2).
      |                 ^~~~~~~~~~~~~~~~~~~~

rindex('aksj', 2, 2) => error

evaluate.sps:39.17-39.31: error: DEBUG EVALUATE: Function invocation
rindex(number, number, number) does not match any known function.  Candidates
are:
RINDEX(string, string)
RINDEX(string, string, integer).
   39 | DEBUG EVALUATE /rindex(1, 2, 3).
      |                 ^~~~~~~~~~~~~~~

rindex(1, 2, 3) => error

evaluate.sps:40.17-40.33: error: DEBUG EVALUATE: Function invocation
rindex(number, number, string) does not match any known function.  Candidates
are:
RINDEX(string, string)
RINDEX(string, string, integer).
   40 | DEBUG EVALUATE /rindex(1, 2, '3').
      |                 ^~~~~~~~~~~~~~~~~

rindex(1, 2, '3') => error

rindex('abcbcde', '', 1) => 0.00

rindex('', '', 1) => 0.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3044"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_302
#AT_START_303
at_fn_group_banner 303 'evaluate.at:3194' \
  "expressions - LENGTH" "                           " 27
at_xfail=no
(
  printf "%s\n" "303. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /length('').
DEBUG EVALUATE /length('a').
DEBUG EVALUATE /length('xy').
DEBUG EVALUATE /length('adsf    ').
DEBUG EVALUATE /length('abcdefghijkl').
DEBUG EVALUATE /length(0).
DEBUG EVALUATE /length($sysmis).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3212: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3212"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "length('') => 0.00

length('a') => 1.00

length('xy') => 2.00

length('adsf    ') => 8.00

length('abcdefghijkl') => 12.00

evaluate.sps:9.17-9.25: error: DEBUG EVALUATE: Type mismatch invoking
LENGTH(string) as length(number).
    9 | DEBUG EVALUATE /length(0).
      |                 ^~~~~~~~~

evaluate.sps:9.24: note: DEBUG EVALUATE: This argument has type 'number' but
'string' is required.
    9 | DEBUG EVALUATE /length(0).
      |                        ^

length(0) => error

evaluate.sps:10.17-10.31: error: DEBUG EVALUATE: Type mismatch invoking
LENGTH(string) as length(number).
   10 | DEBUG EVALUATE /length(\$sysmis).
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:10.24-10.30: note: DEBUG EVALUATE: This argument has type 'number'
but 'string' is required.
   10 | DEBUG EVALUATE /length(\$sysmis).
      |                        ^~~~~~~

length(\$sysmis) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3212"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_303
#AT_START_304
at_fn_group_banner 304 'evaluate.at:3250' \
  "expressions - LOWER" "                            " 27
at_xfail=no
(
  printf "%s\n" "304. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /lower('ABCDEFGHIJKLMNOPQRSTUVWXYZ!@%&*089').
DEBUG EVALUATE /lower('').
DEBUG EVALUATE /lower(1).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3264: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3264"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "lower('ABCDEFGHIJKLMNOPQRSTUVWXYZ!@%&*089') => \"abcdefghijklmnopqrstuvwxyz!
@%&*089\"

lower('') => \"\"

evaluate.sps:6.17-6.24: error: DEBUG EVALUATE: Type mismatch invoking
LOWER(string) as lower(number).
    6 | DEBUG EVALUATE /lower(1).
      |                 ^~~~~~~~

evaluate.sps:6.23: note: DEBUG EVALUATE: This argument has type 'number' but
'string' is required.
    6 | DEBUG EVALUATE /lower(1).
      |                       ^

lower(1) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3264"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_304
#AT_START_305
at_fn_group_banner 305 'evaluate.at:3285' \
  "expressions - REPLACE" "                          " 27
at_xfail=no
(
  printf "%s\n" "305. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /replace('banana', 'an', 'AN').
DEBUG EVALUATE /replace('banana', 'an', 'a').
DEBUG EVALUATE /replace('banana', 'an', '').
DEBUG EVALUATE /replace('banana', 'na', '').
DEBUG EVALUATE /replace('banana', 'ba', 'BA').
DEBUG EVALUATE /replace('banana', 'na', 'xyzzy').
DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1).
DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1.5).
DEBUG EVALUATE /replace('banana', 'bananana', 'xyzzy').
DEBUG EVALUATE /replace('banana', '', 'xyzzy').
DEBUG EVALUATE /replace('banana', 'ba', '', 0).
DEBUG EVALUATE /replace('banana', 'ba', '', -1).
DEBUG EVALUATE /replace('banana', 'ba', '', $sysmis).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3308: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3308"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "replace('banana', 'an', 'AN') => \"bANANa\"

replace('banana', 'an', 'a') => \"baaa\"

replace('banana', 'an', '') => \"ba\"

replace('banana', 'na', '') => \"ba\"

replace('banana', 'ba', 'BA') => \"BAnana\"

replace('banana', 'na', 'xyzzy') => \"baxyzzyxyzzy\"

replace('banana', 'an', 'xyzzy', 1) => \"bxyzzyana\"

evaluate.sps:10.50-10.52: error: DEBUG EVALUATE: Treating unexpected non-
integer value 1.5 as missing.
   10 | DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1.5).
      |                                                  ^~~

replace('banana', 'an', 'xyzzy', 1.5) => \"banana\"

replace('banana', 'bananana', 'xyzzy') => \"banana\"

replace('banana', '', 'xyzzy') => \"banana\"

replace('banana', 'ba', '', 0) => \"banana\"

replace('banana', 'ba', '', -1) => \"banana\"

replace('banana', 'ba', '', \$sysmis) => \"banana\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3308"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_305
#AT_START_306
at_fn_group_banner 306 'evaluate.at:3343' \
  "expressions - LPAD" "                             " 27
at_xfail=no
(
  printf "%s\n" "306. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /lpad('abc', 0).
DEBUG EVALUATE /lpad('abc', 2).
DEBUG EVALUATE /lpad('abc', 3).
DEBUG EVALUATE /lpad('abc', 10).

DEBUG EVALUATE /lpad('abc', -1).
DEBUG EVALUATE /lpad('abc', 32768).
DEBUG EVALUATE /lpad('abc', $sysmis).

DEBUG EVALUATE /lpad('abc', -1, '*').
DEBUG EVALUATE /lpad('abc', 0, '*').
DEBUG EVALUATE /lpad('abc', 2, '*').
DEBUG EVALUATE /lpad('abc', 3, '*').
DEBUG EVALUATE /lpad('abc', 10, '*').

DEBUG EVALUATE /lpad('abc', 5, 'de').
DEBUG EVALUATE /lpad('abc', 6, 'de').
DEBUG EVALUATE /lpad('abc', 7, 'de').
DEBUG EVALUATE /lpad('abc', 8, 'de').
DEBUG EVALUATE /lpad('abc', 9, 'de').

DEBUG EVALUATE /lpad('abc', 32768, '*').
DEBUG EVALUATE /lpad('abc', $sysmis, '*').
DEBUG EVALUATE /lpad('abc', $sysmis, '').
DEBUG EVALUATE /lpad('abc', $sysmis, 'xy').
DEBUG EVALUATE /lpad(0, 10).
DEBUG EVALUATE /lpad('abc', 'def').
DEBUG EVALUATE /lpad(0, 10, ' ').
DEBUG EVALUATE /lpad('abc', 'def', ' ').
DEBUG EVALUATE /lpad('x', 5, 0).
DEBUG EVALUATE /lpad('x', 5, 2).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3385: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3385"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "lpad('abc', 0) => \"abc\"

lpad('abc', 2) => \"abc\"

lpad('abc', 3) => \"abc\"

lpad('abc', 10) => \"       abc\"

evaluate.sps:9.17-9.31: error: DEBUG EVALUATE: The length argument to LPAD must
be between 0 and 32767.
    9 | DEBUG EVALUATE /lpad('abc', -1).
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:9.29-9.30: note: DEBUG EVALUATE: The length argument is -1.
    9 | DEBUG EVALUATE /lpad('abc', -1).
      |                             ^~

lpad('abc', -1) => \"abc\"

evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: The length argument to LPAD
must be between 0 and 32767.
   10 | DEBUG EVALUATE /lpad('abc', 32768).
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:10.29-10.33: note: DEBUG EVALUATE: The length argument is 32768.
   10 | DEBUG EVALUATE /lpad('abc', 32768).
      |                             ^~~~~

lpad('abc', 32768) => \"abc\"

lpad('abc', \$sysmis) => \"abc\"

evaluate.sps:13.17-13.36: error: DEBUG EVALUATE: The length argument to LPAD
must be between 0 and 32767.
   13 | DEBUG EVALUATE /lpad('abc', -1, '*').
      |                 ^~~~~~~~~~~~~~~~~~~~

evaluate.sps:13.29-13.30: note: DEBUG EVALUATE: The length argument is -1.
   13 | DEBUG EVALUATE /lpad('abc', -1, '*').
      |                             ^~

lpad('abc', -1, '*') => \"abc\"

lpad('abc', 0, '*') => \"abc\"

lpad('abc', 2, '*') => \"abc\"

lpad('abc', 3, '*') => \"abc\"

lpad('abc', 10, '*') => \"*******abc\"

lpad('abc', 5, 'de') => \"deabc\"

lpad('abc', 6, 'de') => \"deabc\"

lpad('abc', 7, 'de') => \"dedeabc\"

lpad('abc', 8, 'de') => \"dedeabc\"

lpad('abc', 9, 'de') => \"dededeabc\"

evaluate.sps:25.17-25.39: error: DEBUG EVALUATE: The length argument to LPAD
must be between 0 and 32767.
   25 | DEBUG EVALUATE /lpad('abc', 32768, '*').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~

evaluate.sps:25.29-25.33: note: DEBUG EVALUATE: The length argument is 32768.
   25 | DEBUG EVALUATE /lpad('abc', 32768, '*').
      |                             ^~~~~

lpad('abc', 32768, '*') => \"abc\"

lpad('abc', \$sysmis, '*') => \"abc\"

lpad('abc', \$sysmis, '') => \"abc\"

lpad('abc', \$sysmis, 'xy') => \"abc\"

evaluate.sps:29.17-29.27: error: DEBUG EVALUATE: Function invocation
lpad(number, number) does not match any known function.  Candidates are:
LPAD(string, integer)
LPAD(string, integer, string).
   29 | DEBUG EVALUATE /lpad(0, 10).
      |                 ^~~~~~~~~~~

lpad(0, 10) => error

evaluate.sps:30.17-30.34: error: DEBUG EVALUATE: Function invocation
lpad(string, string) does not match any known function.  Candidates are:
LPAD(string, integer)
LPAD(string, integer, string).
   30 | DEBUG EVALUATE /lpad('abc', 'def').
      |                 ^~~~~~~~~~~~~~~~~~

lpad('abc', 'def') => error

evaluate.sps:31.17-31.32: error: DEBUG EVALUATE: Function invocation
lpad(number, number, string) does not match any known function.  Candidates
are:
LPAD(string, integer)
LPAD(string, integer, string).
   31 | DEBUG EVALUATE /lpad(0, 10, ' ').
      |                 ^~~~~~~~~~~~~~~~

lpad(0, 10, ' ') => error

evaluate.sps:32.17-32.39: error: DEBUG EVALUATE: Function invocation
lpad(string, string, string) does not match any known function.  Candidates
are:
LPAD(string, integer)
LPAD(string, integer, string).
   32 | DEBUG EVALUATE /lpad('abc', 'def', ' ').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~

lpad('abc', 'def', ' ') => error

evaluate.sps:33.17-33.31: error: DEBUG EVALUATE: Function invocation
lpad(string, number, number) does not match any known function.  Candidates
are:
LPAD(string, integer)
LPAD(string, integer, string).
   33 | DEBUG EVALUATE /lpad('x', 5, 0).
      |                 ^~~~~~~~~~~~~~~

lpad('x', 5, 0) => error

evaluate.sps:34.17-34.31: error: DEBUG EVALUATE: Function invocation
lpad(string, number, number) does not match any known function.  Candidates
are:
LPAD(string, integer)
LPAD(string, integer, string).
   34 | DEBUG EVALUATE /lpad('x', 5, 2).
      |                 ^~~~~~~~~~~~~~~

lpad('x', 5, 2) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3385"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_306
#AT_START_307
at_fn_group_banner 307 'evaluate.at:3525' \
  "expressions - NUMBER" "                           " 27
at_xfail=no
(
  printf "%s\n" "307. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /number("123", f3.0).
DEBUG EVALUATE /number(" 123", f3.0).
DEBUG EVALUATE /number("123", f3.1).
DEBUG EVALUATE /number("   ", f3.1).
DEBUG EVALUATE /number("123", a8).
DEBUG EVALUATE /number("123", cca1.2).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3542: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3542"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "number(\"123\", f3.0) => 123.00

number(\" 123\", f3.0) => 12.00

number(\"123\", f3.1) => 12.30

number(\"   \", f3.1) => sysmis

evaluate.sps:7.17-7.33: error: DEBUG EVALUATE: Type mismatch invoking
NUMBER(string, num_input_format) as number(string, format).
    7 | DEBUG EVALUATE /number(\"123\", a8).
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:7.31-7.32: note: DEBUG EVALUATE: Numeric variables are not
compatible with string format A8.
    7 | DEBUG EVALUATE /number(\"123\", a8).
      |                               ^~

number(\"123\", a8) => error

evaluate.sps:8.17-8.37: error: DEBUG EVALUATE: Type mismatch invoking
NUMBER(string, num_input_format) as number(string, format).
    8 | DEBUG EVALUATE /number(\"123\", cca1.2).
      |                 ^~~~~~~~~~~~~~~~~~~~~

evaluate.sps:8.31-8.36: note: DEBUG EVALUATE: Format CCA1.2 may not be used for
input.
    8 | DEBUG EVALUATE /number(\"123\", cca1.2).
      |                               ^~~~~~

number(\"123\", cca1.2) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3542"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_307
#AT_START_308
at_fn_group_banner 308 'evaluate.at:3578' \
  "expressions - LTRIM" "                            " 27
at_xfail=no
(
  printf "%s\n" "308. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ltrim('   abc').
DEBUG EVALUATE /rtrim('   abc   ').
DEBUG EVALUATE /ltrim('abc').
* The following string contains a tab.
DEBUG EVALUATE /ltrim('	abc').
DEBUG EVALUATE /ltrim('    ').
DEBUG EVALUATE /ltrim('').
DEBUG EVALUATE /ltrim(8).

DEBUG EVALUATE /ltrim('***abc', '*').
DEBUG EVALUATE /ltrim('abc', '*').
DEBUG EVALUATE /ltrim('*abc', '*').
DEBUG EVALUATE /ltrim('', '*').

DEBUG EVALUATE /ltrim('abc', 'xy').
DEBUG EVALUATE /ltrim('xyabc', 'xy').
DEBUG EVALUATE /ltrim('xyxyabc', 'xy').

DEBUG EVALUATE /ltrim(8, '*').
DEBUG EVALUATE /ltrim(' x', 8).
DEBUG EVALUATE /ltrim(8, 9).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3609: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3609"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ltrim('   abc') => \"abc\"

rtrim('   abc   ') => \"   abc\"

ltrim('abc') => \"abc\"

ltrim('	abc') => \"	abc\"

ltrim('    ') => \"\"

ltrim('') => \"\"

evaluate.sps:10.17-10.24: error: DEBUG EVALUATE: Function invocation
ltrim(number) does not match any known function.  Candidates are:
LTRIM(string)
LTRIM(string, string).
   10 | DEBUG EVALUATE /ltrim(8).
      |                 ^~~~~~~~

ltrim(8) => error

ltrim('***abc', '*') => \"abc\"

ltrim('abc', '*') => \"abc\"

ltrim('*abc', '*') => \"abc\"

ltrim('', '*') => \"\"

ltrim('abc', 'xy') => \"abc\"

ltrim('xyabc', 'xy') => \"abc\"

ltrim('xyxyabc', 'xy') => \"abc\"

evaluate.sps:21.17-21.29: error: DEBUG EVALUATE: Function invocation
ltrim(number, string) does not match any known function.  Candidates are:
LTRIM(string)
LTRIM(string, string).
   21 | DEBUG EVALUATE /ltrim(8, '*').
      |                 ^~~~~~~~~~~~~

ltrim(8, '*') => error

evaluate.sps:22.17-22.30: error: DEBUG EVALUATE: Function invocation
ltrim(string, number) does not match any known function.  Candidates are:
LTRIM(string)
LTRIM(string, string).
   22 | DEBUG EVALUATE /ltrim(' x', 8).
      |                 ^~~~~~~~~~~~~~

ltrim(' x', 8) => error

evaluate.sps:23.17-23.27: error: DEBUG EVALUATE: Function invocation
ltrim(number, number) does not match any known function.  Candidates are:
LTRIM(string)
LTRIM(string, string).
   23 | DEBUG EVALUATE /ltrim(8, 9).
      |                 ^~~~~~~~~~~

ltrim(8, 9) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3609"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_308
#AT_START_309
at_fn_group_banner 309 'evaluate.at:3675' \
  "expressions - RPAD" "                             " 27
at_xfail=no
(
  printf "%s\n" "309. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /rpad('abc', 0).
DEBUG EVALUATE /rpad('abc', 2).
DEBUG EVALUATE /rpad('abc', 3).
DEBUG EVALUATE /rpad('abc', 10).

DEBUG EVALUATE /rpad('abc', -1).
DEBUG EVALUATE /rpad('abc', 32768).
DEBUG EVALUATE /rpad('abc', $sysmis).

DEBUG EVALUATE /rpad('abc', -1, '*').
DEBUG EVALUATE /rpad('abc', 0, '*').
DEBUG EVALUATE /rpad('abc', 2, '*').
DEBUG EVALUATE /rpad('abc', 3, '*').
DEBUG EVALUATE /rpad('abc', 10, '*').

DEBUG EVALUATE /rpad('abc', 5, 'de').
DEBUG EVALUATE /rpad('abc', 6, 'de').
DEBUG EVALUATE /rpad('abc', 7, 'de').
DEBUG EVALUATE /rpad('abc', 8, 'de').
DEBUG EVALUATE /rpad('abc', 9, 'de').

DEBUG EVALUATE /rpad('abc', 32768, '*').
DEBUG EVALUATE /rpad('abc', $sysmis, '*').
DEBUG EVALUATE /rpad('abc', $sysmis, '').
DEBUG EVALUATE /rpad('abc', $sysmis, 'xy').
DEBUG EVALUATE /rpad(0, 10).
DEBUG EVALUATE /rpad('abc', 'def').
DEBUG EVALUATE /rpad(0, 10, ' ').
DEBUG EVALUATE /rpad('abc', 'def', ' ').
DEBUG EVALUATE /rpad('x', 5, 0).
DEBUG EVALUATE /rpad('x', 5, 2).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3717: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3717"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "rpad('abc', 0) => \"abc\"

rpad('abc', 2) => \"abc\"

rpad('abc', 3) => \"abc\"

rpad('abc', 10) => \"abc       \"

evaluate.sps:9.17-9.31: error: DEBUG EVALUATE: The length argument to RPAD must
be between 0 and 32767.
    9 | DEBUG EVALUATE /rpad('abc', -1).
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:9.29-9.30: note: DEBUG EVALUATE: The length argument is -1.
    9 | DEBUG EVALUATE /rpad('abc', -1).
      |                             ^~

rpad('abc', -1) => \"abc\"

evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: The length argument to RPAD
must be between 0 and 32767.
   10 | DEBUG EVALUATE /rpad('abc', 32768).
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:10.29-10.33: note: DEBUG EVALUATE: The length argument is 32768.
   10 | DEBUG EVALUATE /rpad('abc', 32768).
      |                             ^~~~~

rpad('abc', 32768) => \"abc\"

rpad('abc', \$sysmis) => \"abc\"

evaluate.sps:13.17-13.36: error: DEBUG EVALUATE: The length argument to RPAD
must be between 0 and 32767.
   13 | DEBUG EVALUATE /rpad('abc', -1, '*').
      |                 ^~~~~~~~~~~~~~~~~~~~

evaluate.sps:13.29-13.30: note: DEBUG EVALUATE: The length argument is -1.
   13 | DEBUG EVALUATE /rpad('abc', -1, '*').
      |                             ^~

rpad('abc', -1, '*') => \"abc\"

rpad('abc', 0, '*') => \"abc\"

rpad('abc', 2, '*') => \"abc\"

rpad('abc', 3, '*') => \"abc\"

rpad('abc', 10, '*') => \"abc*******\"

rpad('abc', 5, 'de') => \"abcde\"

rpad('abc', 6, 'de') => \"abcde\"

rpad('abc', 7, 'de') => \"abcdede\"

rpad('abc', 8, 'de') => \"abcdede\"

rpad('abc', 9, 'de') => \"abcdedede\"

evaluate.sps:25.17-25.39: error: DEBUG EVALUATE: The length argument to RPAD
must be between 0 and 32767.
   25 | DEBUG EVALUATE /rpad('abc', 32768, '*').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~

evaluate.sps:25.29-25.33: note: DEBUG EVALUATE: The length argument is 32768.
   25 | DEBUG EVALUATE /rpad('abc', 32768, '*').
      |                             ^~~~~

rpad('abc', 32768, '*') => \"abc\"

rpad('abc', \$sysmis, '*') => \"abc\"

rpad('abc', \$sysmis, '') => \"abc\"

rpad('abc', \$sysmis, 'xy') => \"abc\"

evaluate.sps:29.17-29.27: error: DEBUG EVALUATE: Function invocation
rpad(number, number) does not match any known function.  Candidates are:
RPAD(string, integer)
RPAD(string, integer, string).
   29 | DEBUG EVALUATE /rpad(0, 10).
      |                 ^~~~~~~~~~~

rpad(0, 10) => error

evaluate.sps:30.17-30.34: error: DEBUG EVALUATE: Function invocation
rpad(string, string) does not match any known function.  Candidates are:
RPAD(string, integer)
RPAD(string, integer, string).
   30 | DEBUG EVALUATE /rpad('abc', 'def').
      |                 ^~~~~~~~~~~~~~~~~~

rpad('abc', 'def') => error

evaluate.sps:31.17-31.32: error: DEBUG EVALUATE: Function invocation
rpad(number, number, string) does not match any known function.  Candidates
are:
RPAD(string, integer)
RPAD(string, integer, string).
   31 | DEBUG EVALUATE /rpad(0, 10, ' ').
      |                 ^~~~~~~~~~~~~~~~

rpad(0, 10, ' ') => error

evaluate.sps:32.17-32.39: error: DEBUG EVALUATE: Function invocation
rpad(string, string, string) does not match any known function.  Candidates
are:
RPAD(string, integer)
RPAD(string, integer, string).
   32 | DEBUG EVALUATE /rpad('abc', 'def', ' ').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~

rpad('abc', 'def', ' ') => error

evaluate.sps:33.17-33.31: error: DEBUG EVALUATE: Function invocation
rpad(string, number, number) does not match any known function.  Candidates
are:
RPAD(string, integer)
RPAD(string, integer, string).
   33 | DEBUG EVALUATE /rpad('x', 5, 0).
      |                 ^~~~~~~~~~~~~~~

rpad('x', 5, 0) => error

evaluate.sps:34.17-34.31: error: DEBUG EVALUATE: Function invocation
rpad(string, number, number) does not match any known function.  Candidates
are:
RPAD(string, integer)
RPAD(string, integer, string).
   34 | DEBUG EVALUATE /rpad('x', 5, 2).
      |                 ^~~~~~~~~~~~~~~

rpad('x', 5, 2) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3717"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_309
#AT_START_310
at_fn_group_banner 310 'evaluate.at:3857' \
  "expressions - RTRIM" "                            " 27
at_xfail=no
(
  printf "%s\n" "310. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /rtrim('abc   ').
DEBUG EVALUATE /rtrim('   abc   ').
DEBUG EVALUATE /rtrim('abc').
* The following string contains a tab.
DEBUG EVALUATE /rtrim('abc	').
DEBUG EVALUATE /rtrim('    ').
DEBUG EVALUATE /rtrim('').
DEBUG EVALUATE /rtrim(8).

DEBUG EVALUATE /rtrim('abc***', '*').
DEBUG EVALUATE /rtrim('abc', '*').
DEBUG EVALUATE /rtrim('abc*', '*').
DEBUG EVALUATE /rtrim('', '*').

DEBUG EVALUATE /rtrim('abc', 'xy').
DEBUG EVALUATE /rtrim('abcxy', 'xy').
DEBUG EVALUATE /rtrim('abcxyxy', 'xy').

DEBUG EVALUATE /rtrim(8, '*').
DEBUG EVALUATE /rtrim('x ', 8).
DEBUG EVALUATE /rtrim(8, 9).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3888: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3888"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "rtrim('abc   ') => \"abc\"

rtrim('   abc   ') => \"   abc\"

rtrim('abc') => \"abc\"

rtrim('abc	') => \"abc	\"

rtrim('    ') => \"\"

rtrim('') => \"\"

evaluate.sps:10.17-10.24: error: DEBUG EVALUATE: Function invocation
rtrim(number) does not match any known function.  Candidates are:
RTRIM(string)
RTRIM(string, string).
   10 | DEBUG EVALUATE /rtrim(8).
      |                 ^~~~~~~~

rtrim(8) => error

rtrim('abc***', '*') => \"abc\"

rtrim('abc', '*') => \"abc\"

rtrim('abc*', '*') => \"abc\"

rtrim('', '*') => \"\"

rtrim('abc', 'xy') => \"abc\"

rtrim('abcxy', 'xy') => \"abc\"

rtrim('abcxyxy', 'xy') => \"abc\"

evaluate.sps:21.17-21.29: error: DEBUG EVALUATE: Function invocation
rtrim(number, string) does not match any known function.  Candidates are:
RTRIM(string)
RTRIM(string, string).
   21 | DEBUG EVALUATE /rtrim(8, '*').
      |                 ^~~~~~~~~~~~~

rtrim(8, '*') => error

evaluate.sps:22.17-22.30: error: DEBUG EVALUATE: Function invocation
rtrim(string, number) does not match any known function.  Candidates are:
RTRIM(string)
RTRIM(string, string).
   22 | DEBUG EVALUATE /rtrim('x ', 8).
      |                 ^~~~~~~~~~~~~~

rtrim('x ', 8) => error

evaluate.sps:23.17-23.27: error: DEBUG EVALUATE: Function invocation
rtrim(number, number) does not match any known function.  Candidates are:
RTRIM(string)
RTRIM(string, string).
   23 | DEBUG EVALUATE /rtrim(8, 9).
      |                 ^~~~~~~~~~~

rtrim(8, 9) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3888"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_310
#AT_START_311
at_fn_group_banner 311 'evaluate.at:3954' \
  "expressions - STRING" "                           " 27
at_xfail=no
(
  printf "%s\n" "311. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /string(123.56, f5.1).
DEBUG EVALUATE /string($sysmis, f5.1).
DEBUG EVALUATE /string("abc", A5).
DEBUG EVALUATE /string(123, e1).
DEBUG EVALUATE /string(123, e6.0).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:3970: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:3970"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string(123.56, f5.1) => \"123.6\"

string(\$sysmis, f5.1) => \"   . \"

evaluate.sps:5.17-5.33: error: DEBUG EVALUATE: Type mismatch invoking
STRING(number, num_output_format) as string(string, format).
    5 | DEBUG EVALUATE /string(\"abc\", A5).
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:5.24-5.28: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
    5 | DEBUG EVALUATE /string(\"abc\", A5).
      |                        ^~~~~

evaluate.sps:5.31-5.32: note: DEBUG EVALUATE: Numeric variables are not
compatible with string format A5.
    5 | DEBUG EVALUATE /string(\"abc\", A5).
      |                               ^~

string(\"abc\", A5) => error

evaluate.sps:6.17-6.31: error: DEBUG EVALUATE: Type mismatch invoking
STRING(number, num_output_format) as string(number, format).
    6 | DEBUG EVALUATE /string(123, e1).
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:6.29-6.30: note: DEBUG EVALUATE: Output format E1.0 specifies
width 1, but E requires a width between 6 and 40.
    6 | DEBUG EVALUATE /string(123, e1).
      |                             ^~

string(123, e1) => error

string(123, e6.0) => \"1E+002\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:3970"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_311
#AT_START_312
at_fn_group_banner 312 'evaluate.at:4009' \
  "expressions - STRUNC" "                           " 27
at_xfail=no
(
  printf "%s\n" "312. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /strunc('a c   ', 9).
DEBUG EVALUATE /strunc('a c   ', 7).
DEBUG EVALUATE /strunc('a c   ', 6).
DEBUG EVALUATE /strunc('a c   ', 5).
DEBUG EVALUATE /strunc('a c   ', 4).
DEBUG EVALUATE /strunc('a c   ', 3).
DEBUG EVALUATE /strunc('a c   ', 2).
DEBUG EVALUATE /strunc('a c   ', 1).
DEBUG EVALUATE /strunc('a c   ', 0).

DEBUG EVALUATE /strunc('a c   ', 0.75).
DEBUG EVALUATE /strunc('a c   ', -1).
DEBUG EVALUATE /strunc('a c   ', $sysmis).

DEBUG EVALUATE /strunc('  abc  ', 9).
DEBUG EVALUATE /strunc('  abc  ', 8).
DEBUG EVALUATE /strunc('  abc  ', 7).
DEBUG EVALUATE /strunc('  abc  ', 6).
DEBUG EVALUATE /strunc('  abc  ', 5).
DEBUG EVALUATE /strunc('  abc  ', 4).
DEBUG EVALUATE /strunc('  abc  ', 3).
DEBUG EVALUATE /strunc('  abc  ', 2).
DEBUG EVALUATE /strunc('  abc  ', 1).

DEBUG EVALUATE /strunc('  abc  ', 1.5).
DEBUG EVALUATE /strunc('  abc  ', -1).
DEBUG EVALUATE /strunc('  abc  ', $sysmis).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4046: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4046"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "strunc('a c   ', 9) => \"a c\"

strunc('a c   ', 7) => \"a c\"

strunc('a c   ', 6) => \"a c\"

strunc('a c   ', 5) => \"a c\"

strunc('a c   ', 4) => \"a c\"

strunc('a c   ', 3) => \"a c\"

strunc('a c   ', 2) => \"a\"

strunc('a c   ', 1) => \"a\"

strunc('a c   ', 0) => \"\"

evaluate.sps:13.34-13.37: error: DEBUG EVALUATE: Treating unexpected non-
integer value 0.75 as missing.
   13 | DEBUG EVALUATE /strunc('a c   ', 0.75).
      |                                  ^~~~

strunc('a c   ', 0.75) => \"a c   \"

strunc('a c   ', -1) => \"\"

strunc('a c   ', \$sysmis) => \"a c   \"

strunc('  abc  ', 9) => \"  abc\"

strunc('  abc  ', 8) => \"  abc\"

strunc('  abc  ', 7) => \"  abc\"

strunc('  abc  ', 6) => \"  abc\"

strunc('  abc  ', 5) => \"  abc\"

strunc('  abc  ', 4) => \"  ab\"

strunc('  abc  ', 3) => \"  a\"

strunc('  abc  ', 2) => \"\"

strunc('  abc  ', 1) => \"\"

evaluate.sps:27.35-27.37: error: DEBUG EVALUATE: Treating unexpected non-
integer value 1.5 as missing.
   27 | DEBUG EVALUATE /strunc('  abc  ', 1.5).
      |                                   ^~~

strunc('  abc  ', 1.5) => \"  abc  \"

strunc('  abc  ', -1) => \"\"

strunc('  abc  ', \$sysmis) => \"  abc  \"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:4046"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_312
#AT_START_313
at_fn_group_banner 313 'evaluate.at:4108' \
  "expressions - SUBSTR" "                           " 27
at_xfail=no
(
  printf "%s\n" "313. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /substr('abcdefgh', 1).
DEBUG EVALUATE /substr('abcdefgh', 3).
DEBUG EVALUATE /substr('abcdefgh', 5).
DEBUG EVALUATE /substr('abcdefgh', 6).
DEBUG EVALUATE /substr('abcdefgh', 7).
DEBUG EVALUATE /substr('abcdefgh', 8).
DEBUG EVALUATE /substr('abcdefgh', 9).
DEBUG EVALUATE /substr('abcdefgh', 10).
DEBUG EVALUATE /substr('abcdefgh', 20).
DEBUG EVALUATE /substr('abcdefgh', $sysmis).
DEBUG EVALUATE /substr('abcdefgh', -5).
DEBUG EVALUATE /substr('abcdefgh', 0).
DEBUG EVALUATE /substr(0, 10).
DEBUG EVALUATE /substr('abcd', 'abc').
DEBUG EVALUATE /substr(0, 'abc').

DEBUG EVALUATE /substr('abcdefgh', 0, 0).
DEBUG EVALUATE /substr('abcdefgh', 3, 0).
DEBUG EVALUATE /substr('abcdefgh', 5, 0).
DEBUG EVALUATE /substr('abcdefgh', 9, 0).
DEBUG EVALUATE /substr('abcdefgh', 0, 1).
DEBUG EVALUATE /substr('abcdefgh', 0, 5).
DEBUG EVALUATE /substr('abcdefgh', 1, 8).
DEBUG EVALUATE /substr('abcdefgh', 1, 10).
DEBUG EVALUATE /substr('abcdefgh', 1, 20).
DEBUG EVALUATE /substr('abcdefgh', 3, 4).
DEBUG EVALUATE /substr('abcdefgh', 5, 2).
DEBUG EVALUATE /substr('abcdefgh', 6, 1).
DEBUG EVALUATE /substr('abcdefgh', 7, 10).
DEBUG EVALUATE /substr('abcdefgh', 8, 1).
DEBUG EVALUATE /substr('abcdefgh', 8, 2).
DEBUG EVALUATE /substr('abcdefgh', 9, 11).
DEBUG EVALUATE /substr('abcdefgh', 10, 52).
DEBUG EVALUATE /substr('abcdefgh', 20, 1).
DEBUG EVALUATE /substr('abcdefgh', $sysmis, 2).
DEBUG EVALUATE /substr('abcdefgh', 9, $sysmis).
DEBUG EVALUATE /substr('abcdefgh', $sysmis, $sysmis).
DEBUG EVALUATE /substr('abc', 1, 'x').
DEBUG EVALUATE /substr(0, 10, 1).
DEBUG EVALUATE /substr(0, 10, 'x').
DEBUG EVALUATE /substr('abcd', 'abc', 0).
DEBUG EVALUATE /substr('abcd', 'abc', 'j').
DEBUG EVALUATE /substr(0, 'abc', 4).
DEBUG EVALUATE /substr(0, 'abc', 'k').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4161: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4161"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "substr('abcdefgh', 1) => \"abcdefgh\"

substr('abcdefgh', 3) => \"cdefgh\"

substr('abcdefgh', 5) => \"efgh\"

substr('abcdefgh', 6) => \"fgh\"

substr('abcdefgh', 7) => \"gh\"

substr('abcdefgh', 8) => \"h\"

substr('abcdefgh', 9) => \"\"

substr('abcdefgh', 10) => \"\"

substr('abcdefgh', 20) => \"\"

substr('abcdefgh', \$sysmis) => \"\"

substr('abcdefgh', -5) => \"\"

substr('abcdefgh', 0) => \"\"

evaluate.sps:14.17-14.29: error: DEBUG EVALUATE: Function invocation
substr(number, number) does not match any known function.  Candidates are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   14 | DEBUG EVALUATE /substr(0, 10).
      |                 ^~~~~~~~~~~~~

substr(0, 10) => error

evaluate.sps:15.17-15.37: error: DEBUG EVALUATE: Function invocation
substr(string, string) does not match any known function.  Candidates are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   15 | DEBUG EVALUATE /substr('abcd', 'abc').
      |                 ^~~~~~~~~~~~~~~~~~~~~

substr('abcd', 'abc') => error

evaluate.sps:16.17-16.32: error: DEBUG EVALUATE: Function invocation
substr(number, string) does not match any known function.  Candidates are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   16 | DEBUG EVALUATE /substr(0, 'abc').
      |                 ^~~~~~~~~~~~~~~~

substr(0, 'abc') => error

substr('abcdefgh', 0, 0) => \"\"

substr('abcdefgh', 3, 0) => \"\"

substr('abcdefgh', 5, 0) => \"\"

substr('abcdefgh', 9, 0) => \"\"

substr('abcdefgh', 0, 1) => \"\"

substr('abcdefgh', 0, 5) => \"\"

substr('abcdefgh', 1, 8) => \"abcdefgh\"

substr('abcdefgh', 1, 10) => \"abcdefgh\"

substr('abcdefgh', 1, 20) => \"abcdefgh\"

substr('abcdefgh', 3, 4) => \"cdef\"

substr('abcdefgh', 5, 2) => \"ef\"

substr('abcdefgh', 6, 1) => \"f\"

substr('abcdefgh', 7, 10) => \"gh\"

substr('abcdefgh', 8, 1) => \"h\"

substr('abcdefgh', 8, 2) => \"h\"

substr('abcdefgh', 9, 11) => \"\"

substr('abcdefgh', 10, 52) => \"\"

substr('abcdefgh', 20, 1) => \"\"

substr('abcdefgh', \$sysmis, 2) => \"\"

substr('abcdefgh', 9, \$sysmis) => \"\"

substr('abcdefgh', \$sysmis, \$sysmis) => \"\"

evaluate.sps:39.17-39.37: error: DEBUG EVALUATE: Function invocation
substr(string, number, string) does not match any known function.  Candidates
are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   39 | DEBUG EVALUATE /substr('abc', 1, 'x').
      |                 ^~~~~~~~~~~~~~~~~~~~~

substr('abc', 1, 'x') => error

evaluate.sps:40.17-40.32: error: DEBUG EVALUATE: Function invocation
substr(number, number, number) does not match any known function.  Candidates
are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   40 | DEBUG EVALUATE /substr(0, 10, 1).
      |                 ^~~~~~~~~~~~~~~~

substr(0, 10, 1) => error

evaluate.sps:41.17-41.34: error: DEBUG EVALUATE: Function invocation
substr(number, number, string) does not match any known function.  Candidates
are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   41 | DEBUG EVALUATE /substr(0, 10, 'x').
      |                 ^~~~~~~~~~~~~~~~~~

substr(0, 10, 'x') => error

evaluate.sps:42.17-42.40: error: DEBUG EVALUATE: Function invocation
substr(string, string, number) does not match any known function.  Candidates
are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   42 | DEBUG EVALUATE /substr('abcd', 'abc', 0).
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~

substr('abcd', 'abc', 0) => error

evaluate.sps:43.17-43.42: error: DEBUG EVALUATE: Function invocation
substr(string, string, string) does not match any known function.  Candidates
are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   43 | DEBUG EVALUATE /substr('abcd', 'abc', 'j').
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~

substr('abcd', 'abc', 'j') => error

evaluate.sps:44.17-44.35: error: DEBUG EVALUATE: Function invocation
substr(number, string, number) does not match any known function.  Candidates
are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   44 | DEBUG EVALUATE /substr(0, 'abc', 4).
      |                 ^~~~~~~~~~~~~~~~~~~

substr(0, 'abc', 4) => error

evaluate.sps:45.17-45.37: error: DEBUG EVALUATE: Function invocation
substr(number, string, string) does not match any known function.  Candidates
are:
SUBSTR(string, integer)
SUBSTR(string, integer, integer).
   45 | DEBUG EVALUATE /substr(0, 'abc', 'k').
      |                 ^~~~~~~~~~~~~~~~~~~~~

substr(0, 'abc', 'k') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:4161"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_313
#AT_START_314
at_fn_group_banner 314 'evaluate.at:4328' \
  "expressions - UPCASE" "                           " 27
at_xfail=no
(
  printf "%s\n" "314. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /upcase('abcdefghijklmnopqrstuvwxyz!@%&*089').
DEBUG EVALUATE /upcase('').
DEBUG EVALUATE /upcase(1).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4340: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4340"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "upcase('abcdefghijklmnopqrstuvwxyz!@%&*089') => \"ABCDEFGHIJKLMNOPQRSTUVWXYZ!
@%&*089\"

upcase('') => \"\"

evaluate.sps:4.17-4.25: error: DEBUG EVALUATE: Type mismatch invoking
UPCASE(string) as upcase(number).
    4 | DEBUG EVALUATE /upcase(1).
      |                 ^~~~~~~~~

evaluate.sps:4.24: note: DEBUG EVALUATE: This argument has type 'number' but
'string' is required.
    4 | DEBUG EVALUATE /upcase(1).
      |                        ^

upcase(1) => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:4340"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_314
#AT_START_315
at_fn_group_banner 315 'evaluate.at:4361' \
  "expressions - TIME.DAYS" "                        " 27
at_xfail=no
(
  printf "%s\n" "315. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /time.days(1).
DEBUG EVALUATE /time.days(-1).
DEBUG EVALUATE /time.days(0.5).
DEBUG EVALUATE /time.days('x').
DEBUG EVALUATE /time.days($sysmis).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4376: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4376"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "time.days(1) => 86400.00

time.days(-1) => -86400.00

time.days(0.5) => 43200.00

evaluate.sps:6.17-6.30: error: DEBUG EVALUATE: Type mismatch invoking TIME.
DAYS(number) as time.days(string).
    6 | DEBUG EVALUATE /time.days('x').
      |                 ^~~~~~~~~~~~~~

evaluate.sps:6.27-6.29: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
    6 | DEBUG EVALUATE /time.days('x').
      |                           ^~~

time.days('x') => error

time.days(\$sysmis) => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:4376"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_315
#AT_START_316
at_fn_group_banner 316 'evaluate.at:4400' \
  "expressions - TIME.HMS" "                         " 27
at_xfail=no
(
  printf "%s\n" "316. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /time.hms(4,50,38).
DEBUG EVALUATE /time.hms(12,31,35).
DEBUG EVALUATE /time.hms(12,47,53).
DEBUG EVALUATE /time.hms(1,26,0).
DEBUG EVALUATE /time.hms(20,58,11).
DEBUG EVALUATE /time.hms(7,36,5).
DEBUG EVALUATE /time.hms(15,43,49).
DEBUG EVALUATE /time.hms(4,25,9).
DEBUG EVALUATE /time.hms(6,49,27).
DEBUG EVALUATE /time.hms(2,57,52).
DEBUG EVALUATE /time.hms(16,45,44).
DEBUG EVALUATE /time.hms(21,30,57).
DEBUG EVALUATE /time.hms(22,30,4).
DEBUG EVALUATE /time.hms(1,56,51).
DEBUG EVALUATE /time.hms(5, 6, 7).
DEBUG EVALUATE /time.hms(5, 6, 0).
DEBUG EVALUATE /time.hms(5, 0, 7).
DEBUG EVALUATE /time.hms(0, 6, 7).
DEBUG EVALUATE /time.hms(-5, 6, -7).
DEBUG EVALUATE /time.hms(-5, 5, -7).
DEBUG EVALUATE /time.hms($sysmis, 6, 7).
DEBUG EVALUATE /time.hms(5, $sysmis, 7).
DEBUG EVALUATE /time.hms(5, $sysmis, 7).
DEBUG EVALUATE /time.hms($sysmis, $sysmis, 7).
DEBUG EVALUATE /time.hms(5, $sysmis, $sysmis).
DEBUG EVALUATE /time.hms($sysmis, $sysmis, 7).
DEBUG EVALUATE /time.hms($sysmis, $sysmis, $sysmis).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4437: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4437"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "time.hms(4,50,38) => 17438.00

time.hms(12,31,35) => 45095.00

time.hms(12,47,53) => 46073.00

time.hms(1,26,0) => 5160.00

time.hms(20,58,11) => 75491.00

time.hms(7,36,5) => 27365.00

time.hms(15,43,49) => 56629.00

time.hms(4,25,9) => 15909.00

time.hms(6,49,27) => 24567.00

time.hms(2,57,52) => 10672.00

time.hms(16,45,44) => 60344.00

time.hms(21,30,57) => 77457.00

time.hms(22,30,4) => 81004.00

time.hms(1,56,51) => 7011.00

time.hms(5, 6, 7) => 18367.00

time.hms(5, 6, 0) => 18360.00

time.hms(5, 0, 7) => 18007.00

time.hms(0, 6, 7) => 367.00

evaluate.sps:21.17-21.35: warning: DEBUG EVALUATE: TIME.HMS cannot accept a mix
of positive and negative arguments.
   21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
      |                 ^~~~~~~~~~~~~~~~~~~

evaluate.sps:21.26-21.27: note: DEBUG EVALUATE: This argument has negative
value -5.
   21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
      |                          ^~

evaluate.sps:21.30: note: DEBUG EVALUATE: This argument has positive value 6.
   21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
      |                              ^

evaluate.sps:21.33-21.34: note: DEBUG EVALUATE: This argument has negative
value -7.
   21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
      |                                 ^~

time.hms(-5, 6, -7) => sysmis

evaluate.sps:22.17-22.35: warning: DEBUG EVALUATE: TIME.HMS cannot accept a mix
of positive and negative arguments.
   22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
      |                 ^~~~~~~~~~~~~~~~~~~

evaluate.sps:22.26-22.27: note: DEBUG EVALUATE: This argument has negative
value -5.
   22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
      |                          ^~

evaluate.sps:22.30: note: DEBUG EVALUATE: This argument has positive value 5.
   22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
      |                              ^

evaluate.sps:22.33-22.34: note: DEBUG EVALUATE: This argument has negative
value -7.
   22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
      |                                 ^~

time.hms(-5, 5, -7) => sysmis

time.hms(\$sysmis, 6, 7) => sysmis

time.hms(5, \$sysmis, 7) => sysmis

time.hms(5, \$sysmis, 7) => sysmis

time.hms(\$sysmis, \$sysmis, 7) => sysmis

time.hms(5, \$sysmis, \$sysmis) => sysmis

time.hms(\$sysmis, \$sysmis, 7) => sysmis

time.hms(\$sysmis, \$sysmis, \$sysmis) => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:4437"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_316
#AT_START_317
at_fn_group_banner 317 'evaluate.at:4533' \
  "expressions - CTIME.*" "                          " 27
at_xfail=no
(
  printf "%s\n" "317. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(106272).
DEBUG EVALUATE /ctime.hours(106272).
DEBUG EVALUATE /ctime.minutes(106272).
DEBUG EVALUATE /ctime.seconds(106272).
DEBUG EVALUATE /ctime.days(-106272).
DEBUG EVALUATE /ctime.hours(-106272).
DEBUG EVALUATE /ctime.minutes(-106272).
DEBUG EVALUATE /ctime.seconds(-106272).
DEBUG EVALUATE /ctime.days($sysmis).
DEBUG EVALUATE /ctime.hours($sysmis).
DEBUG EVALUATE /ctime.minutes($sysmis).
DEBUG EVALUATE /ctime.seconds($sysmis).
DEBUG EVALUATE /ctime.days('a').
DEBUG EVALUATE /ctime.hours('b').
DEBUG EVALUATE /ctime.minutes('c').
DEBUG EVALUATE /ctime.seconds('d').

DEBUG EVALUATE /ctime.days(date.dmy(15,10,1582)).
DEBUG EVALUATE /ctime.days(date.dmy(6,9,1719)).
DEBUG EVALUATE /ctime.days(date.dmy(24,1,1583)).
DEBUG EVALUATE /ctime.days(date.dmy(14,12,1585)).
DEBUG EVALUATE /ctime.days(date.dmy(26,11,1621)).
DEBUG EVALUATE /ctime.days(date.dmy(25,12,1821)).
DEBUG EVALUATE /ctime.days(date.dmy(3,12,1882)).
DEBUG EVALUATE /ctime.days(date.dmy(6,4,2002)).
DEBUG EVALUATE /ctime.days(date.dmy(19,12,1999)).
DEBUG EVALUATE /ctime.days(date.dmy(1,10,1978)).
DEBUG EVALUATE /ctime.days(date.dmy(0,10,1978)).
DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
DEBUG EVALUATE /ctime.days(date.dmy(31,0,1978)).
DEBUG EVALUATE /ctime.days(date.dmy(31,13,1978)).
DEBUG EVALUATE /ctime.days(date.dmy($sysmis,10,1978)).
DEBUG EVALUATE /ctime.days(date.dmy(31,$sysmis,1978)).
DEBUG EVALUATE /ctime.days(date.dmy(31,10,$sysmis)).
DEBUG EVALUATE /ctime.days(date.dmy($sysmis,$sysmis,1978)).
DEBUG EVALUATE /ctime.days(date.dmy(31,$sysmis,$sysmis)).
DEBUG EVALUATE /ctime.days(date.dmy($sysmis,10,$sysmis)).
DEBUG EVALUATE /ctime.days(date.dmy($sysmis,$sysmis,$sysmis)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4581: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4581"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(106272) => 1.23

ctime.hours(106272) => 29.52

ctime.minutes(106272) => 1771.20

ctime.seconds(106272) => 106272.00

ctime.days(-106272) => -1.23

ctime.hours(-106272) => -29.52

ctime.minutes(-106272) => -1771.20

ctime.seconds(-106272) => -106272.00

ctime.days(\$sysmis) => sysmis

ctime.hours(\$sysmis) => sysmis

ctime.minutes(\$sysmis) => sysmis

ctime.seconds(\$sysmis) => sysmis

evaluate.sps:15.17-15.31: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
DAYS(number) as ctime.days(string).
   15 | DEBUG EVALUATE /ctime.days('a').
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:15.28-15.30: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   15 | DEBUG EVALUATE /ctime.days('a').
      |                            ^~~

ctime.days('a') => error

evaluate.sps:16.17-16.32: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
HOURS(number) as ctime.hours(string).
   16 | DEBUG EVALUATE /ctime.hours('b').
      |                 ^~~~~~~~~~~~~~~~

evaluate.sps:16.29-16.31: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   16 | DEBUG EVALUATE /ctime.hours('b').
      |                             ^~~

ctime.hours('b') => error

evaluate.sps:17.17-17.34: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
MINUTES(number) as ctime.minutes(string).
   17 | DEBUG EVALUATE /ctime.minutes('c').
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:17.31-17.33: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   17 | DEBUG EVALUATE /ctime.minutes('c').
      |                               ^~~

ctime.minutes('c') => error

evaluate.sps:18.17-18.34: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
SECONDS(number) as ctime.seconds(string).
   18 | DEBUG EVALUATE /ctime.seconds('d').
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:18.31-18.33: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   18 | DEBUG EVALUATE /ctime.seconds('d').
      |                               ^~~

ctime.seconds('d') => error

ctime.days(date.dmy(15,10,1582)) => 1.00

ctime.days(date.dmy(6,9,1719)) => 50000.00

ctime.days(date.dmy(24,1,1583)) => 102.00

ctime.days(date.dmy(14,12,1585)) => 1157.00

ctime.days(date.dmy(26,11,1621)) => 14288.00

ctime.days(date.dmy(25,12,1821)) => 87365.00

ctime.days(date.dmy(3,12,1882)) => 109623.00

ctime.days(date.dmy(6,4,2002)) => 153211.00

ctime.days(date.dmy(19,12,1999)) => 152372.00

ctime.days(date.dmy(1,10,1978)) => 144623.00

ctime.days(date.dmy(0,10,1978)) => 144622.00

evaluate.sps:31.28-31.47: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
function.
   31 | DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
      |                            ^~~~~~~~~~~~~~~~~~~~

evaluate.sps:31.37-31.38: note: DEBUG EVALUATE: Day 32 is not in the acceptable
range of 0 to 31.
   31 | DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
      |                                     ^~

ctime.days(date.dmy(32,10,1978)) => sysmis

ctime.days(date.dmy(31,0,1978)) => 144349.00

ctime.days(date.dmy(31,13,1978)) => 144745.00

ctime.days(date.dmy(\$sysmis,10,1978)) => sysmis

ctime.days(date.dmy(31,\$sysmis,1978)) => sysmis

ctime.days(date.dmy(31,10,\$sysmis)) => sysmis

ctime.days(date.dmy(\$sysmis,\$sysmis,1978)) => sysmis

ctime.days(date.dmy(31,\$sysmis,\$sysmis)) => sysmis

ctime.days(date.dmy(\$sysmis,10,\$sysmis)) => sysmis

ctime.days(date.dmy(\$sysmis,\$sysmis,\$sysmis)) => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:4581"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_317
#AT_START_318
at_fn_group_banner 318 'evaluate.at:4709' \
  "expressions - DATE.DMY" "                         " 27
at_xfail=no
(
  printf "%s\n" "318. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /date.dmy('a',1,2).
DEBUG EVALUATE /date.dmy(1,'a',2).
DEBUG EVALUATE /date.dmy(1,2,'a').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4722: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4722"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "evaluate.sps:3.17-3.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
DMY(integer, integer, integer) as date.dmy(string, number, number).
    3 | DEBUG EVALUATE /date.dmy('a',1,2).
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:3.26-3.28: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
    3 | DEBUG EVALUATE /date.dmy('a',1,2).
      |                          ^~~

date.dmy('a',1,2) => error

evaluate.sps:4.17-4.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
DMY(integer, integer, integer) as date.dmy(number, string, number).
    4 | DEBUG EVALUATE /date.dmy(1,'a',2).
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:4.28-4.30: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
    4 | DEBUG EVALUATE /date.dmy(1,'a',2).
      |                            ^~~

date.dmy(1,'a',2) => error

evaluate.sps:5.17-5.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
DMY(integer, integer, integer) as date.dmy(number, number, string).
    5 | DEBUG EVALUATE /date.dmy(1,2,'a').
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:5.30-5.32: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
    5 | DEBUG EVALUATE /date.dmy(1,2,'a').
      |                              ^~~

date.dmy(1,2,'a') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:4722"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_318
#AT_START_319
at_fn_group_banner 319 'evaluate.at:4762' \
  "expressions - YRMODA" "                           " 27
at_xfail=no
(
  printf "%s\n" "319. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /yrmoda(1582,10,15).
DEBUG EVALUATE /yrmoda(1719,9,6).
DEBUG EVALUATE /yrmoda(1583,1,24).
DEBUG EVALUATE /yrmoda(1585,12,14).
DEBUG EVALUATE /yrmoda(1621,11,26).
DEBUG EVALUATE /yrmoda(1821,12,25).
DEBUG EVALUATE /yrmoda(1882,12,3).
DEBUG EVALUATE /yrmoda(2002,4,6).
DEBUG EVALUATE /yrmoda(1999,12,19).
DEBUG EVALUATE /yrmoda(1978,10,1).
DEBUG EVALUATE /yrmoda(1978,10,0).
DEBUG EVALUATE /yrmoda(1978,10,32).
DEBUG EVALUATE /yrmoda(1978,0,31).
DEBUG EVALUATE /yrmoda(1978,13,31).
DEBUG EVALUATE /yrmoda(1978,10,$sysmis).
DEBUG EVALUATE /yrmoda(1978,$sysmis,31).
DEBUG EVALUATE /yrmoda($sysmis,10,31).
DEBUG EVALUATE /yrmoda(1978,$sysmis,$sysmis).
DEBUG EVALUATE /yrmoda($sysmis,$sysmis,31).
DEBUG EVALUATE /yrmoda($sysmis,10,$sysmis).
DEBUG EVALUATE /yrmoda($sysmis,$sysmis,$sysmis).
DEBUG EVALUATE /yrmoda('a',1,2).
DEBUG EVALUATE /yrmoda(1,'a',2).
DEBUG EVALUATE /yrmoda(1,2,'a').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4797: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4797"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "yrmoda(1582,10,15) => 1.00

yrmoda(1719,9,6) => 50000.00

yrmoda(1583,1,24) => 102.00

yrmoda(1585,12,14) => 1157.00

yrmoda(1621,11,26) => 14288.00

yrmoda(1821,12,25) => 87365.00

yrmoda(1882,12,3) => 109623.00

yrmoda(2002,4,6) => 153211.00

yrmoda(1999,12,19) => 152372.00

yrmoda(1978,10,1) => 144623.00

yrmoda(1978,10,0) => 144622.00

evaluate.sps:14.17-14.34: error: DEBUG EVALUATE: Invalid arguments to YRMODA
function.
   14 | DEBUG EVALUATE /yrmoda(1978,10,32).
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:14.32-14.33: note: DEBUG EVALUATE: Day 32 is not in the acceptable
range of 0 to 31.
   14 | DEBUG EVALUATE /yrmoda(1978,10,32).
      |                                ^~

yrmoda(1978,10,32) => sysmis

yrmoda(1978,0,31) => 144349.00

yrmoda(1978,13,31) => 144745.00

yrmoda(1978,10,\$sysmis) => sysmis

yrmoda(1978,\$sysmis,31) => sysmis

yrmoda(\$sysmis,10,31) => sysmis

yrmoda(1978,\$sysmis,\$sysmis) => sysmis

yrmoda(\$sysmis,\$sysmis,31) => sysmis

yrmoda(\$sysmis,10,\$sysmis) => sysmis

yrmoda(\$sysmis,\$sysmis,\$sysmis) => sysmis

evaluate.sps:24.17-24.31: error: DEBUG EVALUATE: Type mismatch invoking
YRMODA(integer, integer, integer) as yrmoda(string, number, number).
   24 | DEBUG EVALUATE /yrmoda('a',1,2).
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:24.24-24.26: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   24 | DEBUG EVALUATE /yrmoda('a',1,2).
      |                        ^~~

yrmoda('a',1,2) => error

evaluate.sps:25.17-25.31: error: DEBUG EVALUATE: Type mismatch invoking
YRMODA(integer, integer, integer) as yrmoda(number, string, number).
   25 | DEBUG EVALUATE /yrmoda(1,'a',2).
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:25.26-25.28: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   25 | DEBUG EVALUATE /yrmoda(1,'a',2).
      |                          ^~~

yrmoda(1,'a',2) => error

evaluate.sps:26.17-26.31: error: DEBUG EVALUATE: Type mismatch invoking
YRMODA(integer, integer, integer) as yrmoda(number, number, string).
   26 | DEBUG EVALUATE /yrmoda(1,2,'a').
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:26.28-26.30: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   26 | DEBUG EVALUATE /yrmoda(1,2,'a').
      |                            ^~~

yrmoda(1,2,'a') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:4797"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_319
#AT_START_320
at_fn_group_banner 320 'evaluate.at:4889' \
  "expressions - DATE.MDY" "                         " 27
at_xfail=no
(
  printf "%s\n" "320. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /ctime.days(date.mdy(6,10,1648)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(6,30,1680)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(7,24,1716)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(6,19,1768)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(8,2,1819)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(3,27,1839)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(4,19,1903)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(8,25,1929)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(9,29,1941)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(4,19,1943)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(10,7,1943)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(3,17,1992)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(2,25,1996)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(11,10,2038)) + 577735.
DEBUG EVALUATE /ctime.days(date.mdy(7,18,2094)) + 577735.

DEBUG EVALUATE /ctime.days(date.mdy(10,15,1582)).
DEBUG EVALUATE /ctime.days(date.mdy(9,6,1719)).
DEBUG EVALUATE /ctime.days(date.mdy(1,24,1583)).
DEBUG EVALUATE /ctime.days(date.mdy(12,14,1585)).
DEBUG EVALUATE /ctime.days(date.mdy(11,26,1621)).
DEBUG EVALUATE /ctime.days(date.mdy(12,25,1821)).
DEBUG EVALUATE /ctime.days(date.mdy(12,3,1882)).
DEBUG EVALUATE /ctime.days(date.mdy(4,6,2002)).
DEBUG EVALUATE /ctime.days(date.mdy(12,19,1999)).
DEBUG EVALUATE /ctime.days(date.mdy(10,1,1978)).
DEBUG EVALUATE /ctime.days(date.mdy(10,0,1978)).
DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
DEBUG EVALUATE /ctime.days(date.mdy(0,31,1978)).
DEBUG EVALUATE /ctime.days(date.mdy(13,31,1978)).
DEBUG EVALUATE /ctime.days(date.mdy(10,$sysmis,1978)).
DEBUG EVALUATE /ctime.days(date.mdy($sysmis,31,1978)).
DEBUG EVALUATE /ctime.days(date.mdy(10,31,$sysmis)).
DEBUG EVALUATE /ctime.days(date.mdy($sysmis,$sysmis,1978)).
DEBUG EVALUATE /ctime.days(date.mdy($sysmis,31,$sysmis)).
DEBUG EVALUATE /ctime.days(date.mdy(10,$sysmis,$sysmis)).
DEBUG EVALUATE /ctime.days(date.mdy($sysmis,$sysmis,$sysmis)).
DEBUG EVALUATE /date.mdy('a',1,2).
DEBUG EVALUATE /date.mdy(1,'a',2).
DEBUG EVALUATE /date.mdy(1,2,'a').
DEBUG EVALUATE /ctime.days(date.mdy(0,0,0)).
DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
DEBUG EVALUATE /date.mdy(1,1,1582).
DEBUG EVALUATE /date.mdy(10,14,1582).
DEBUG EVALUATE /date.mdy(10,15,1582).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:4947: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:4947"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(date.mdy(6,10,1648)) + 577735 => 601716.00

ctime.days(date.mdy(6,30,1680)) + 577735 => 613424.00

ctime.days(date.mdy(7,24,1716)) + 577735 => 626596.00

ctime.days(date.mdy(6,19,1768)) + 577735 => 645554.00

ctime.days(date.mdy(8,2,1819)) + 577735 => 664224.00

ctime.days(date.mdy(3,27,1839)) + 577735 => 671401.00

ctime.days(date.mdy(4,19,1903)) + 577735 => 694799.00

ctime.days(date.mdy(8,25,1929)) + 577735 => 704424.00

ctime.days(date.mdy(9,29,1941)) + 577735 => 708842.00

ctime.days(date.mdy(4,19,1943)) + 577735 => 709409.00

ctime.days(date.mdy(10,7,1943)) + 577735 => 709580.00

ctime.days(date.mdy(3,17,1992)) + 577735 => 727274.00

ctime.days(date.mdy(2,25,1996)) + 577735 => 728714.00

ctime.days(date.mdy(11,10,2038)) + 577735 => 744313.00

ctime.days(date.mdy(7,18,2094)) + 577735 => 764652.00

ctime.days(date.mdy(10,15,1582)) => 1.00

ctime.days(date.mdy(9,6,1719)) => 50000.00

ctime.days(date.mdy(1,24,1583)) => 102.00

ctime.days(date.mdy(12,14,1585)) => 1157.00

ctime.days(date.mdy(11,26,1621)) => 14288.00

ctime.days(date.mdy(12,25,1821)) => 87365.00

ctime.days(date.mdy(12,3,1882)) => 109623.00

ctime.days(date.mdy(4,6,2002)) => 153211.00

ctime.days(date.mdy(12,19,1999)) => 152372.00

ctime.days(date.mdy(10,1,1978)) => 144623.00

ctime.days(date.mdy(10,0,1978)) => 144622.00

evaluate.sps:31.28-31.47: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
function.
   31 | DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
      |                            ^~~~~~~~~~~~~~~~~~~~

evaluate.sps:31.40-31.41: note: DEBUG EVALUATE: Day 32 is not in the acceptable
range of 0 to 31.
   31 | DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
      |                                        ^~

ctime.days(date.mdy(10,32,1978)) => sysmis

ctime.days(date.mdy(0,31,1978)) => 144349.00

ctime.days(date.mdy(13,31,1978)) => 144745.00

ctime.days(date.mdy(10,\$sysmis,1978)) => sysmis

ctime.days(date.mdy(\$sysmis,31,1978)) => sysmis

ctime.days(date.mdy(10,31,\$sysmis)) => sysmis

ctime.days(date.mdy(\$sysmis,\$sysmis,1978)) => sysmis

ctime.days(date.mdy(\$sysmis,31,\$sysmis)) => sysmis

ctime.days(date.mdy(10,\$sysmis,\$sysmis)) => sysmis

ctime.days(date.mdy(\$sysmis,\$sysmis,\$sysmis)) => sysmis

evaluate.sps:41.17-41.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
MDY(integer, integer, integer) as date.mdy(string, number, number).
   41 | DEBUG EVALUATE /date.mdy('a',1,2).
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:41.26-41.28: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   41 | DEBUG EVALUATE /date.mdy('a',1,2).
      |                          ^~~

date.mdy('a',1,2) => error

evaluate.sps:42.17-42.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
MDY(integer, integer, integer) as date.mdy(number, string, number).
   42 | DEBUG EVALUATE /date.mdy(1,'a',2).
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:42.28-42.30: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   42 | DEBUG EVALUATE /date.mdy(1,'a',2).
      |                            ^~~

date.mdy(1,'a',2) => error

evaluate.sps:43.17-43.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
MDY(integer, integer, integer) as date.mdy(number, number, string).
   43 | DEBUG EVALUATE /date.mdy(1,2,'a').
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:43.30-43.32: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   43 | DEBUG EVALUATE /date.mdy(1,2,'a').
      |                              ^~~

date.mdy(1,2,'a') => error

ctime.days(date.mdy(0,0,0)) => 152353.00

evaluate.sps:45.28-45.44: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
function.
   45 | DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
      |                            ^~~~~~~~~~~~~~~~~

evaluate.sps:45.41-45.43: note: DEBUG EVALUATE: Date 0998-12-0 is before the
earliest supported date 1582-10-15.
   45 | DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
      |                                         ^~~

ctime.days(date.mdy(0,0,999)) => sysmis

evaluate.sps:46.17-46.34: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
function.
   46 | DEBUG EVALUATE /date.mdy(1,1,1582).
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:46.17-46.34: note: DEBUG EVALUATE: Date 1582-1-1 is before the
earliest supported date 1582-10-15.
   46 | DEBUG EVALUATE /date.mdy(1,1,1582).
      |                 ^~~~~~~~~~~~~~~~~~

date.mdy(1,1,1582) => sysmis

evaluate.sps:47.17-47.36: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
function.
   47 | DEBUG EVALUATE /date.mdy(10,14,1582).
      |                 ^~~~~~~~~~~~~~~~~~~~

evaluate.sps:47.17-47.36: note: DEBUG EVALUATE: Date 1582-10-14 is before the
earliest supported date 1582-10-15.
   47 | DEBUG EVALUATE /date.mdy(10,14,1582).
      |                 ^~~~~~~~~~~~~~~~~~~~

date.mdy(10,14,1582) => sysmis

date.mdy(10,15,1582) => 86400.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:4947"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_320
#AT_START_321
at_fn_group_banner 321 'evaluate.at:5109' \
  "expressions - DATE.MOYR" "                        " 27
at_xfail=no
(
  printf "%s\n" "321. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(date.moyr(1,2000)).
DEBUG EVALUATE /ctime.days(date.moyr(2,2000)).
DEBUG EVALUATE /ctime.days(date.moyr(3,2000)).
DEBUG EVALUATE /ctime.days(date.moyr(4,2000)).
DEBUG EVALUATE /ctime.days(date.moyr(5,2000)).
DEBUG EVALUATE /ctime.days(date.moyr(13,2000)).
DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
DEBUG EVALUATE /ctime.days(date.moyr($sysmis,2000)).
DEBUG EVALUATE /ctime.days(date.moyr(1,$sysmis)).
DEBUG EVALUATE /ctime.days(date.moyr($sysmis,$sysmis)).
DEBUG EVALUATE /date.moyr('a',2000).
DEBUG EVALUATE /date.moyr(5,'a').
DEBUG EVALUATE /date.moyr('a','b').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5132: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5132"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(date.moyr(1,2000)) => 152385.00

ctime.days(date.moyr(2,2000)) => 152416.00

ctime.days(date.moyr(3,2000)) => 152445.00

ctime.days(date.moyr(4,2000)) => 152476.00

ctime.days(date.moyr(5,2000)) => 152506.00

ctime.days(date.moyr(13,2000)) => 152751.00

evaluate.sps:9.28-9.45: error: DEBUG EVALUATE: Invalid arguments to DATE.MOYR
function.
    9 | DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
      |                            ^~~~~~~~~~~~~~~~~~

evaluate.sps:9.38-9.39: note: DEBUG EVALUATE: Month 14 is not in the acceptable
range of 0 to 13.
    9 | DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
      |                                      ^~

ctime.days(date.moyr(14,2000)) => sysmis

ctime.days(date.moyr(\$sysmis,2000)) => sysmis

ctime.days(date.moyr(1,\$sysmis)) => sysmis

ctime.days(date.moyr(\$sysmis,\$sysmis)) => sysmis

evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
MOYR(integer, integer) as date.moyr(string, number).
   13 | DEBUG EVALUATE /date.moyr('a',2000).
      |                 ^~~~~~~~~~~~~~~~~~~

evaluate.sps:13.27-13.29: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   13 | DEBUG EVALUATE /date.moyr('a',2000).
      |                           ^~~

date.moyr('a',2000) => error

evaluate.sps:14.17-14.32: error: DEBUG EVALUATE: Type mismatch invoking DATE.
MOYR(integer, integer) as date.moyr(number, string).
   14 | DEBUG EVALUATE /date.moyr(5,'a').
      |                 ^~~~~~~~~~~~~~~~

evaluate.sps:14.29-14.31: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   14 | DEBUG EVALUATE /date.moyr(5,'a').
      |                             ^~~

date.moyr(5,'a') => error

evaluate.sps:15.17-15.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
MOYR(integer, integer) as date.moyr(string, string).
   15 | DEBUG EVALUATE /date.moyr('a','b').
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:15.27-15.29: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   15 | DEBUG EVALUATE /date.moyr('a','b').
      |                           ^~~

evaluate.sps:15.31-15.33: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   15 | DEBUG EVALUATE /date.moyr('a','b').
      |                               ^~~

date.moyr('a','b') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:5132"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_321
#AT_START_322
at_fn_group_banner 322 'evaluate.at:5207' \
  "expressions - DATE.QYR" "                         " 27
at_xfail=no
(
  printf "%s\n" "322. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(date.qyr(1,2000)).
DEBUG EVALUATE /ctime.days(date.qyr(2,2000)).
DEBUG EVALUATE /ctime.days(date.qyr(5,2000)).
DEBUG EVALUATE /ctime.days(date.qyr(6,2000)).
DEBUG EVALUATE /ctime.days(date.qyr($sysmis,2000)).
DEBUG EVALUATE /ctime.days(date.qyr(1,$sysmis)).
DEBUG EVALUATE /ctime.days(date.qyr($sysmis,$sysmis)).
DEBUG EVALUATE /date.qyr('a',2000).
DEBUG EVALUATE /date.qyr(5,'a').
DEBUG EVALUATE /date.qyr('a','b').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5227: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5227"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(date.qyr(1,2000)) => 152385.00

ctime.days(date.qyr(2,2000)) => 152476.00

evaluate.sps:5.37: warning: DEBUG EVALUATE: Argument 1 to DATE.QYR must be 1,
2, 3, or 4 (not 5).
    5 | DEBUG EVALUATE /ctime.days(date.qyr(5,2000)).
      |                                     ^

ctime.days(date.qyr(5,2000)) => sysmis

evaluate.sps:6.37: warning: DEBUG EVALUATE: Argument 1 to DATE.QYR must be 1,
2, 3, or 4 (not 6).
    6 | DEBUG EVALUATE /ctime.days(date.qyr(6,2000)).
      |                                     ^

ctime.days(date.qyr(6,2000)) => sysmis

ctime.days(date.qyr(\$sysmis,2000)) => sysmis

ctime.days(date.qyr(1,\$sysmis)) => sysmis

ctime.days(date.qyr(\$sysmis,\$sysmis)) => sysmis

evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
QYR(integer, integer) as date.qyr(string, number).
   10 | DEBUG EVALUATE /date.qyr('a',2000).
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:10.26-10.28: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   10 | DEBUG EVALUATE /date.qyr('a',2000).
      |                          ^~~

date.qyr('a',2000) => error

evaluate.sps:11.17-11.31: error: DEBUG EVALUATE: Type mismatch invoking DATE.
QYR(integer, integer) as date.qyr(number, string).
   11 | DEBUG EVALUATE /date.qyr(5,'a').
      |                 ^~~~~~~~~~~~~~~

evaluate.sps:11.28-11.30: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   11 | DEBUG EVALUATE /date.qyr(5,'a').
      |                            ^~~

date.qyr(5,'a') => error

evaluate.sps:12.17-12.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
QYR(integer, integer) as date.qyr(string, string).
   12 | DEBUG EVALUATE /date.qyr('a','b').
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:12.26-12.28: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   12 | DEBUG EVALUATE /date.qyr('a','b').
      |                          ^~~

evaluate.sps:12.30-12.32: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   12 | DEBUG EVALUATE /date.qyr('a','b').
      |                              ^~~

date.qyr('a','b') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:5227"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_322
#AT_START_323
at_fn_group_banner 323 'evaluate.at:5296' \
  "expressions - DATE.WKYR" "                        " 27
at_xfail=no
(
  printf "%s\n" "323. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(date.wkyr(1,2000)).
DEBUG EVALUATE /ctime.days(date.wkyr(15,1999)).
DEBUG EVALUATE /ctime.days(date.wkyr(36,1999)).
DEBUG EVALUATE /ctime.days(date.wkyr(54,1999)).
DEBUG EVALUATE /ctime.days(date.wkyr($sysmis,1999)).
DEBUG EVALUATE /ctime.days(date.wkyr(1,$sysmis)).
DEBUG EVALUATE /ctime.days(date.wkyr($sysmis,$sysmis)).
DEBUG EVALUATE /date.wkyr('a',1999).
DEBUG EVALUATE /date.wkyr(5,'a').
DEBUG EVALUATE /date.wkyr('a','b').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5316: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5316"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(date.wkyr(1,2000)) => 152385.00

ctime.days(date.wkyr(15,1999)) => 152118.00

ctime.days(date.wkyr(36,1999)) => 152265.00

evaluate.sps:6.38-6.39: error: DEBUG EVALUATE: The week argument to DATE.WKYR
is outside the acceptable range of 1 to 53.  The result will be system-missing.
    6 | DEBUG EVALUATE /ctime.days(date.wkyr(54,1999)).
      |                                      ^~

ctime.days(date.wkyr(54,1999)) => sysmis

ctime.days(date.wkyr(\$sysmis,1999)) => sysmis

ctime.days(date.wkyr(1,\$sysmis)) => sysmis

ctime.days(date.wkyr(\$sysmis,\$sysmis)) => sysmis

evaluate.sps:10.17-10.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
WKYR(integer, integer) as date.wkyr(string, number).
   10 | DEBUG EVALUATE /date.wkyr('a',1999).
      |                 ^~~~~~~~~~~~~~~~~~~

evaluate.sps:10.27-10.29: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   10 | DEBUG EVALUATE /date.wkyr('a',1999).
      |                           ^~~

date.wkyr('a',1999) => error

evaluate.sps:11.17-11.32: error: DEBUG EVALUATE: Type mismatch invoking DATE.
WKYR(integer, integer) as date.wkyr(number, string).
   11 | DEBUG EVALUATE /date.wkyr(5,'a').
      |                 ^~~~~~~~~~~~~~~~

evaluate.sps:11.29-11.31: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   11 | DEBUG EVALUATE /date.wkyr(5,'a').
      |                             ^~~

date.wkyr(5,'a') => error

evaluate.sps:12.17-12.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
WKYR(integer, integer) as date.wkyr(string, string).
   12 | DEBUG EVALUATE /date.wkyr('a','b').
      |                 ^~~~~~~~~~~~~~~~~~

evaluate.sps:12.27-12.29: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   12 | DEBUG EVALUATE /date.wkyr('a','b').
      |                           ^~~

evaluate.sps:12.31-12.33: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   12 | DEBUG EVALUATE /date.wkyr('a','b').
      |                               ^~~

date.wkyr('a','b') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:5316"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_323
#AT_START_324
at_fn_group_banner 324 'evaluate.at:5380' \
  "expressions - DATE.YRDAY" "                       " 27
at_xfail=no
(
  printf "%s\n" "324. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(date.yrday(2000,1)).
DEBUG EVALUATE /ctime.days(date.yrday(2000,100)).
DEBUG EVALUATE /ctime.days(date.yrday(2000,253)).
DEBUG EVALUATE /ctime.days(date.yrday(2000,500)).
DEBUG EVALUATE /ctime.days(date.yrday(2000,-100)).
DEBUG EVALUATE /ctime.days(date.yrday(1999,$sysmis)).
DEBUG EVALUATE /ctime.days(date.yrday($sysmis,1)).
DEBUG EVALUATE /ctime.days(date.yrday($sysmis,$sysmis)).
DEBUG EVALUATE /date.yrday(1999,'a').
DEBUG EVALUATE /date.yrday('a',5).
DEBUG EVALUATE /date.yrday('a','b').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5401: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5401"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(date.yrday(2000,1)) => 152385.00

ctime.days(date.yrday(2000,100)) => 152484.00

ctime.days(date.yrday(2000,253)) => 152637.00

evaluate.sps:6.44-6.46: error: DEBUG EVALUATE: The value 500 as day argument to
DATE.YRDAY is outside the acceptable range of 1 to 366.  The result will be
system-missing.
    6 | DEBUG EVALUATE /ctime.days(date.yrday(2000,500)).
      |                                            ^~~

ctime.days(date.yrday(2000,500)) => sysmis

evaluate.sps:7.44-7.47: error: DEBUG EVALUATE: The value -100 as day argument
to DATE.YRDAY is outside the acceptable range of 1 to 366.  The result will be
system-missing.
    7 | DEBUG EVALUATE /ctime.days(date.yrday(2000,-100)).
      |                                            ^~~~

ctime.days(date.yrday(2000,-100)) => sysmis

ctime.days(date.yrday(1999,\$sysmis)) => sysmis

ctime.days(date.yrday(\$sysmis,1)) => sysmis

ctime.days(date.yrday(\$sysmis,\$sysmis)) => sysmis

evaluate.sps:11.17-11.36: error: DEBUG EVALUATE: Type mismatch invoking DATE.
YRDAY(integer, integer) as date.yrday(number, string).
   11 | DEBUG EVALUATE /date.yrday(1999,'a').
      |                 ^~~~~~~~~~~~~~~~~~~~

evaluate.sps:11.33-11.35: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   11 | DEBUG EVALUATE /date.yrday(1999,'a').
      |                                 ^~~

date.yrday(1999,'a') => error

evaluate.sps:12.17-12.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
YRDAY(integer, integer) as date.yrday(string, number).
   12 | DEBUG EVALUATE /date.yrday('a',5).
      |                 ^~~~~~~~~~~~~~~~~

evaluate.sps:12.28-12.30: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   12 | DEBUG EVALUATE /date.yrday('a',5).
      |                            ^~~

date.yrday('a',5) => error

evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
YRDAY(integer, integer) as date.yrday(string, string).
   13 | DEBUG EVALUATE /date.yrday('a','b').
      |                 ^~~~~~~~~~~~~~~~~~~

evaluate.sps:13.28-13.30: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   13 | DEBUG EVALUATE /date.yrday('a','b').
      |                            ^~~

evaluate.sps:13.32-13.34: note: DEBUG EVALUATE: This argument has type 'string'
but 'integer' is required.
   13 | DEBUG EVALUATE /date.yrday('a','b').
      |                                ^~~

date.yrday('a','b') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:5401"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_324
#AT_START_325
at_fn_group_banner 325 'evaluate.at:5474' \
  "expressions - XDATE.DATE" "                       " 27
at_xfail=no
(
  printf "%s\n" "325. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.date(date.mdy(6,10,1648) + time.hms(0,0,0)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(6,30,1680) + time.hms(4,50,38)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(7,24,1716) + time.hms(12,31,35)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(6,19,1768) + time.hms(12,47,53)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(8,2,1819) + time.hms(1,26,0)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(3,27,1839) + time.hms(20,58,11)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(4,19,1903) + time.hms(7,36,5)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(8,25,1929) + time.hms(15,43,49)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(4,19,1943) + time.hms(6,49,27)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(2,25,96) + time.hms(21,30,57)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(11,10,2038) + time.hms(22,30,4)) / 86400.
DEBUG EVALUATE /xdate.date(date.mdy(7,18,2094) + time.hms(1,56,51)) / 86400.
DEBUG EVALUATE /xdate.date(123.4).
DEBUG EVALUATE /xdate.date('').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5506: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5506"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.date(date.mdy(6,10,1648) + time.hms(0,0,0)) / 86400 => 23981.00

xdate.date(date.mdy(6,30,1680) + time.hms(4,50,38)) / 86400 => 35689.00

xdate.date(date.mdy(7,24,1716) + time.hms(12,31,35)) / 86400 => 48861.00

xdate.date(date.mdy(6,19,1768) + time.hms(12,47,53)) / 86400 => 67819.00

xdate.date(date.mdy(8,2,1819) + time.hms(1,26,0)) / 86400 => 86489.00

xdate.date(date.mdy(3,27,1839) + time.hms(20,58,11)) / 86400 => 93666.00

xdate.date(date.mdy(4,19,1903) + time.hms(7,36,5)) / 86400 => 117064.00

xdate.date(date.mdy(8,25,1929) + time.hms(15,43,49)) / 86400 => 126689.00

xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400 => 131107.00

xdate.date(date.mdy(4,19,1943) + time.hms(6,49,27)) / 86400 => 131674.00

xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400 => 131845.00

xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400 => 149539.00

xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400 => 150979.00

xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400 => 131107.00

xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400 => 131674.00

xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400 => 131845.00

xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400 => 149539.00

xdate.date(date.mdy(2,25,96) + time.hms(21,30,57)) / 86400 => 150979.00

xdate.date(date.mdy(11,10,2038) + time.hms(22,30,4)) / 86400 => 166578.00

xdate.date(date.mdy(7,18,2094) + time.hms(1,56,51)) / 86400 => 186917.00

xdate.date(123.4) => 0.00

evaluate.sps:24.17-24.30: error: DEBUG EVALUATE: Type mismatch invoking XDATE.
DATE(number) as xdate.date(string).
   24 | DEBUG EVALUATE /xdate.date('').
      |                 ^~~~~~~~~~~~~~

evaluate.sps:24.28-24.29: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   24 | DEBUG EVALUATE /xdate.date('').
      |                            ^~

xdate.date('') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:5506"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_325
#AT_START_326
at_fn_group_banner 326 'evaluate.at:5564' \
  "expressions - XDATE.HOUR" "                       " 27
at_xfail=no
(
  printf "%s\n" "326. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.hour(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.hour(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.hour(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.hour(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.hour(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.hour(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.hour(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.hour(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.hour(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.hour(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.hour(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.hour(date.mdy(7,18,2094) + time.hms(1,56,51)).
DEBUG EVALUATE /xdate.hour(-1).
DEBUG EVALUATE /xdate.hour(1).
DEBUG EVALUATE /xdate.hour($sysmis).
DEBUG EVALUATE /xdate.hour('').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5598: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5598"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.hour(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00

xdate.hour(date.mdy(6,30,1680) + time.hms(4,50,38)) => 4.00

xdate.hour(date.mdy(7,24,1716) + time.hms(12,31,35)) => 12.00

xdate.hour(date.mdy(6,19,1768) + time.hms(12,47,53)) => 12.00

xdate.hour(date.mdy(8,2,1819) + time.hms(1,26,0)) => 1.00

xdate.hour(date.mdy(3,27,1839) + time.hms(20,58,11)) => 20.00

xdate.hour(date.mdy(4,19,1903) + time.hms(7,36,5)) => 7.00

xdate.hour(date.mdy(8,25,1929) + time.hms(15,43,49)) => 15.00

xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)) => 4.00

xdate.hour(date.mdy(4,19,1943) + time.hms(6,49,27)) => 6.00

xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52)) => 2.00

xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44)) => 16.00

xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57)) => 21.00

xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)) => 4.00

xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27)) => 6.00

xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52)) => 2.00

xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44)) => 16.00

xdate.hour(date.mdy(2,25,96) + time.hms(21,30,57)) => 21.00

xdate.hour(date.mdy(11,10,2038) + time.hms(22,30,4)) => 22.00

xdate.hour(date.mdy(7,18,2094) + time.hms(1,56,51)) => 1.00

xdate.hour(-1) => -1.00

xdate.hour(1) => 0.00

xdate.hour(\$sysmis) => sysmis

evaluate.sps:26.17-26.30: error: DEBUG EVALUATE: Type mismatch invoking XDATE.
HOUR(number) as xdate.hour(string).
   26 | DEBUG EVALUATE /xdate.hour('').
      |                 ^~~~~~~~~~~~~~

evaluate.sps:26.28-26.29: note: DEBUG EVALUATE: This argument has type 'string'
but 'number' is required.
   26 | DEBUG EVALUATE /xdate.hour('').
      |                            ^~

xdate.hour('') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/evaluate.at:5598"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_326
#AT_START_327
at_fn_group_banner 327 'evaluate.at:5660' \
  "expressions - XDATE.JDAY" "                       " 27
at_xfail=no
(
  printf "%s\n" "327. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.jday(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.jday(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.jday(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.jday(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.jday(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.jday(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.jday(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.jday(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.jday(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.jday(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.jday(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.jday(date.mdy(7,18,2094) + time.hms(1,56,51)).
DEBUG EVALUATE /xdate.jday(0).
DEBUG EVALUATE /xdate.jday(1).
DEBUG EVALUATE /xdate.jday(86400).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5693: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5693"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.jday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 162.00

xdate.jday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 182.00

xdate.jday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 206.00

xdate.jday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 171.00

xdate.jday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 214.00

xdate.jday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 86.00

xdate.jday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 109.00

xdate.jday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 237.00

xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 272.00

xdate.jday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 109.00

xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 280.00

xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 77.00

xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 56.00

xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 272.00

xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27)) => 109.00

xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52)) => 280.00

xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44)) => 77.00

xdate.jday(date.mdy(2,25,96) + time.hms(21,30,57)) => 56.00

xdate.jday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 314.00

xdate.jday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 199.00

xdate.jday(0) => sysmis

xdate.jday(1) => sysmis

xdate.jday(86400) => 288.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:5693"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_327
#AT_START_328
at_fn_group_banner 328 'evaluate.at:5743' \
  "expressions - XDATE.MDAY" "                       " 27
at_xfail=no
(
  printf "%s\n" "328. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.mday(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.mday(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.mday(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.mday(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.mday(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.mday(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.mday(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.mday(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.mday(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.mday(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.mday(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.mday(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5773: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5773"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.mday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 10.00

xdate.mday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 30.00

xdate.mday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 24.00

xdate.mday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 19.00

xdate.mday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 2.00

xdate.mday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 27.00

xdate.mday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 19.00

xdate.mday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 25.00

xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 29.00

xdate.mday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 19.00

xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 7.00

xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 17.00

xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 25.00

xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 29.00

xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27)) => 19.00

xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52)) => 7.00

xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44)) => 17.00

xdate.mday(date.mdy(2,25,96) + time.hms(21,30,57)) => 25.00

xdate.mday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 10.00

xdate.mday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 18.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:5773"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_328
#AT_START_329
at_fn_group_banner 329 'evaluate.at:5817' \
  "expressions - XDATE.MINUTE" "                     " 27
at_xfail=no
(
  printf "%s\n" "329. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.minute(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.minute(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.minute(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.minute(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.minute(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.minute(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.minute(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.minute(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.minute(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.minute(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.minute(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.minute(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5847: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5847"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.minute(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00

xdate.minute(date.mdy(6,30,1680) + time.hms(4,50,38)) => 50.00

xdate.minute(date.mdy(7,24,1716) + time.hms(12,31,35)) => 31.00

xdate.minute(date.mdy(6,19,1768) + time.hms(12,47,53)) => 47.00

xdate.minute(date.mdy(8,2,1819) + time.hms(1,26,0)) => 26.00

xdate.minute(date.mdy(3,27,1839) + time.hms(20,58,11)) => 58.00

xdate.minute(date.mdy(4,19,1903) + time.hms(7,36,5)) => 36.00

xdate.minute(date.mdy(8,25,1929) + time.hms(15,43,49)) => 43.00

xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)) => 25.00

xdate.minute(date.mdy(4,19,1943) + time.hms(6,49,27)) => 49.00

xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52)) => 57.00

xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44)) => 45.00

xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57)) => 30.00

xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)) => 25.00

xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27)) => 49.00

xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52)) => 57.00

xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44)) => 45.00

xdate.minute(date.mdy(2,25,96) + time.hms(21,30,57)) => 30.00

xdate.minute(date.mdy(11,10,2038) + time.hms(22,30,4)) => 30.00

xdate.minute(date.mdy(7,18,2094) + time.hms(1,56,51)) => 56.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:5847"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_329
#AT_START_330
at_fn_group_banner 330 'evaluate.at:5891' \
  "expressions - XDATE.MONTH" "                      " 27
at_xfail=no
(
  printf "%s\n" "330. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.month(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.month(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.month(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.month(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.month(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.month(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.month(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.month(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.month(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.month(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.month(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.month(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.month(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.month(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.month(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5921: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5921"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.month(date.mdy(6,10,1648) + time.hms(0,0,0)) => 6.00

xdate.month(date.mdy(6,30,1680) + time.hms(4,50,38)) => 6.00

xdate.month(date.mdy(7,24,1716) + time.hms(12,31,35)) => 7.00

xdate.month(date.mdy(6,19,1768) + time.hms(12,47,53)) => 6.00

xdate.month(date.mdy(8,2,1819) + time.hms(1,26,0)) => 8.00

xdate.month(date.mdy(3,27,1839) + time.hms(20,58,11)) => 3.00

xdate.month(date.mdy(4,19,1903) + time.hms(7,36,5)) => 4.00

xdate.month(date.mdy(8,25,1929) + time.hms(15,43,49)) => 8.00

xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00

xdate.month(date.mdy(4,19,1943) + time.hms(6,49,27)) => 4.00

xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52)) => 10.00

xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44)) => 3.00

xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57)) => 2.00

xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00

xdate.month(date.mdy(4,19,43) + time.hms(6,49,27)) => 4.00

xdate.month(date.mdy(10,7,43) + time.hms(2,57,52)) => 10.00

xdate.month(date.mdy(3,17,92) + time.hms(16,45,44)) => 3.00

xdate.month(date.mdy(2,25,96) + time.hms(21,30,57)) => 2.00

xdate.month(date.mdy(11,10,2038) + time.hms(22,30,4)) => 11.00

xdate.month(date.mdy(7,18,2094) + time.hms(1,56,51)) => 7.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:5921"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_330
#AT_START_331
at_fn_group_banner 331 'evaluate.at:5965' \
  "expressions - XDATE.QUARTER" "                    " 27
at_xfail=no
(
  printf "%s\n" "331. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.quarter(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.quarter(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.quarter(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.quarter(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.quarter(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.quarter(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.quarter(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.quarter(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.quarter(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.quarter(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:5995: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:5995"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.quarter(date.mdy(6,10,1648) + time.hms(0,0,0)) => 2.00

xdate.quarter(date.mdy(6,30,1680) + time.hms(4,50,38)) => 2.00

xdate.quarter(date.mdy(7,24,1716) + time.hms(12,31,35)) => 3.00

xdate.quarter(date.mdy(6,19,1768) + time.hms(12,47,53)) => 2.00

xdate.quarter(date.mdy(8,2,1819) + time.hms(1,26,0)) => 3.00

xdate.quarter(date.mdy(3,27,1839) + time.hms(20,58,11)) => 1.00

xdate.quarter(date.mdy(4,19,1903) + time.hms(7,36,5)) => 2.00

xdate.quarter(date.mdy(8,25,1929) + time.hms(15,43,49)) => 3.00

xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)) => 3.00

xdate.quarter(date.mdy(4,19,1943) + time.hms(6,49,27)) => 2.00

xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52)) => 4.00

xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44)) => 1.00

xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57)) => 1.00

xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)) => 3.00

xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27)) => 2.00

xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52)) => 4.00

xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44)) => 1.00

xdate.quarter(date.mdy(2,25,96) + time.hms(21,30,57)) => 1.00

xdate.quarter(date.mdy(11,10,2038) + time.hms(22,30,4)) => 4.00

xdate.quarter(date.mdy(7,18,2094) + time.hms(1,56,51)) => 3.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:5995"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_331
#AT_START_332
at_fn_group_banner 332 'evaluate.at:6039' \
  "expressions - XDATE.SECOND" "                     " 27
at_xfail=no
(
  printf "%s\n" "332. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.second(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.second(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.second(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.second(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.second(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.second(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.second(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.second(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.second(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.second(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.second(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.second(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.second(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.second(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.second(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6069: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6069"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.second(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00

xdate.second(date.mdy(6,30,1680) + time.hms(4,50,38)) => 38.00

xdate.second(date.mdy(7,24,1716) + time.hms(12,31,35)) => 35.00

xdate.second(date.mdy(6,19,1768) + time.hms(12,47,53)) => 53.00

xdate.second(date.mdy(8,2,1819) + time.hms(1,26,0)) => 0.00

xdate.second(date.mdy(3,27,1839) + time.hms(20,58,11)) => 11.00

xdate.second(date.mdy(4,19,1903) + time.hms(7,36,5)) => 5.00

xdate.second(date.mdy(8,25,1929) + time.hms(15,43,49)) => 49.00

xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00

xdate.second(date.mdy(4,19,1943) + time.hms(6,49,27)) => 27.00

xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52)) => 52.00

xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44)) => 44.00

xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57)) => 57.00

xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00

xdate.second(date.mdy(4,19,43) + time.hms(6,49,27)) => 27.00

xdate.second(date.mdy(10,7,43) + time.hms(2,57,52)) => 52.00

xdate.second(date.mdy(3,17,92) + time.hms(16,45,44)) => 44.00

xdate.second(date.mdy(2,25,96) + time.hms(21,30,57)) => 57.00

xdate.second(date.mdy(11,10,2038) + time.hms(22,30,4)) => 4.00

xdate.second(date.mdy(7,18,2094) + time.hms(1,56,51)) => 51.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6069"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_332
#AT_START_333
at_fn_group_banner 333 'evaluate.at:6113' \
  "expressions - XDATE.TDAY" "                       " 27
at_xfail=no
(
  printf "%s\n" "333. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.tday(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.tday(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.tday(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.tday(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.tday(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.tday(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.tday(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.tday(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.tday(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.tday(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.tday(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.tday(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6143: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6143"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.tday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 23981.00

xdate.tday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 35689.00

xdate.tday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 48861.00

xdate.tday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 67819.00

xdate.tday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 86489.00

xdate.tday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 93666.00

xdate.tday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 117064.00

xdate.tday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 126689.00

xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 131107.00

xdate.tday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 131674.00

xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 131845.00

xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 149539.00

xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 150979.00

xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 131107.00

xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27)) => 131674.00

xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52)) => 131845.00

xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44)) => 149539.00

xdate.tday(date.mdy(2,25,96) + time.hms(21,30,57)) => 150979.00

xdate.tday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 166578.00

xdate.tday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 186917.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6143"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_333
#AT_START_334
at_fn_group_banner 334 'evaluate.at:6187' \
  "expressions - XDATE.TIME" "                       " 27
at_xfail=no
(
  printf "%s\n" "334. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.time(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.time(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.time(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.time(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.time(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.time(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.time(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.time(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.time(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.time(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.time(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.time(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.time(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.time(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.time(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6217: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6217"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.time(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00

xdate.time(date.mdy(6,30,1680) + time.hms(4,50,38)) => 17438.00

xdate.time(date.mdy(7,24,1716) + time.hms(12,31,35)) => 45095.00

xdate.time(date.mdy(6,19,1768) + time.hms(12,47,53)) => 46073.00

xdate.time(date.mdy(8,2,1819) + time.hms(1,26,0)) => 5160.00

xdate.time(date.mdy(3,27,1839) + time.hms(20,58,11)) => 75491.00

xdate.time(date.mdy(4,19,1903) + time.hms(7,36,5)) => 27365.00

xdate.time(date.mdy(8,25,1929) + time.hms(15,43,49)) => 56629.00

xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)) => 15909.00

xdate.time(date.mdy(4,19,1943) + time.hms(6,49,27)) => 24567.00

xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52)) => 10672.00

xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44)) => 60344.00

xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57)) => 77457.00

xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)) => 15909.00

xdate.time(date.mdy(4,19,43) + time.hms(6,49,27)) => 24567.00

xdate.time(date.mdy(10,7,43) + time.hms(2,57,52)) => 10672.00

xdate.time(date.mdy(3,17,92) + time.hms(16,45,44)) => 60344.00

xdate.time(date.mdy(2,25,96) + time.hms(21,30,57)) => 77457.00

xdate.time(date.mdy(11,10,2038) + time.hms(22,30,4)) => 81004.00

xdate.time(date.mdy(7,18,2094) + time.hms(1,56,51)) => 7011.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6217"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_334
#AT_START_335
at_fn_group_banner 335 'evaluate.at:6261' \
  "expressions - XDATE.WEEK" "                       " 27
at_xfail=no
(
  printf "%s\n" "335. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.week(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.week(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.week(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.week(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.week(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.week(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.week(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.week(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.week(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.week(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.week(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.week(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.week(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.week(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.week(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6291: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6291"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.week(date.mdy(6,10,1648) + time.hms(0,0,0)) => 24.00

xdate.week(date.mdy(6,30,1680) + time.hms(4,50,38)) => 26.00

xdate.week(date.mdy(7,24,1716) + time.hms(12,31,35)) => 30.00

xdate.week(date.mdy(6,19,1768) + time.hms(12,47,53)) => 25.00

xdate.week(date.mdy(8,2,1819) + time.hms(1,26,0)) => 31.00

xdate.week(date.mdy(3,27,1839) + time.hms(20,58,11)) => 13.00

xdate.week(date.mdy(4,19,1903) + time.hms(7,36,5)) => 16.00

xdate.week(date.mdy(8,25,1929) + time.hms(15,43,49)) => 34.00

xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)) => 39.00

xdate.week(date.mdy(4,19,1943) + time.hms(6,49,27)) => 16.00

xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52)) => 40.00

xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44)) => 11.00

xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57)) => 8.00

xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)) => 39.00

xdate.week(date.mdy(4,19,43) + time.hms(6,49,27)) => 16.00

xdate.week(date.mdy(10,7,43) + time.hms(2,57,52)) => 40.00

xdate.week(date.mdy(3,17,92) + time.hms(16,45,44)) => 11.00

xdate.week(date.mdy(2,25,96) + time.hms(21,30,57)) => 8.00

xdate.week(date.mdy(11,10,2038) + time.hms(22,30,4)) => 45.00

xdate.week(date.mdy(7,18,2094) + time.hms(1,56,51)) => 29.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6291"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_335
#AT_START_336
at_fn_group_banner 336 'evaluate.at:6335' \
  "expressions - XDATE.WKDAY" "                      " 27
at_xfail=no
(
  printf "%s\n" "336. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.wkday(date.mdy(6,10,1648)).
DEBUG EVALUATE /xdate.wkday(date.mdy(6,30,1680)).
DEBUG EVALUATE /xdate.wkday(date.mdy(7,24,1716)).
DEBUG EVALUATE /xdate.wkday(date.mdy(6,19,1768)).
DEBUG EVALUATE /xdate.wkday(date.mdy(8,2,1819)).
DEBUG EVALUATE /xdate.wkday(date.mdy(3,27,1839)).
DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,1903)).
DEBUG EVALUATE /xdate.wkday(date.mdy(8,25,1929)).
DEBUG EVALUATE /xdate.wkday(date.mdy(9,29,1941)).
DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,1943)).
DEBUG EVALUATE /xdate.wkday(date.mdy(10,7,1943)).
DEBUG EVALUATE /xdate.wkday(date.mdy(3,17,1992)).
DEBUG EVALUATE /xdate.wkday(date.mdy(2,25,1996)).
DEBUG EVALUATE /xdate.wkday(date.mdy(9,29,1941)).
DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,43)).
DEBUG EVALUATE /xdate.wkday(date.mdy(10,7,43)).
DEBUG EVALUATE /xdate.wkday(date.mdy(3,17,92)).
DEBUG EVALUATE /xdate.wkday(date.mdy(2,25,96)).
DEBUG EVALUATE /xdate.wkday(date.mdy(11,10,2038)).
DEBUG EVALUATE /xdate.wkday(date.mdy(7,18,2094)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6365: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6365"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.wkday(date.mdy(6,10,1648)) => 4.00

xdate.wkday(date.mdy(6,30,1680)) => 1.00

xdate.wkday(date.mdy(7,24,1716)) => 6.00

xdate.wkday(date.mdy(6,19,1768)) => 1.00

xdate.wkday(date.mdy(8,2,1819)) => 2.00

xdate.wkday(date.mdy(3,27,1839)) => 4.00

xdate.wkday(date.mdy(4,19,1903)) => 1.00

xdate.wkday(date.mdy(8,25,1929)) => 1.00

xdate.wkday(date.mdy(9,29,1941)) => 2.00

xdate.wkday(date.mdy(4,19,1943)) => 2.00

xdate.wkday(date.mdy(10,7,1943)) => 5.00

xdate.wkday(date.mdy(3,17,1992)) => 3.00

xdate.wkday(date.mdy(2,25,1996)) => 1.00

xdate.wkday(date.mdy(9,29,1941)) => 2.00

xdate.wkday(date.mdy(4,19,43)) => 2.00

xdate.wkday(date.mdy(10,7,43)) => 5.00

xdate.wkday(date.mdy(3,17,92)) => 3.00

xdate.wkday(date.mdy(2,25,96)) => 1.00

xdate.wkday(date.mdy(11,10,2038)) => 4.00

xdate.wkday(date.mdy(7,18,2094)) => 1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6365"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_336
#AT_START_337
at_fn_group_banner 337 'evaluate.at:6409' \
  "expressions - XDATE.YEAR" "                       " 27
at_xfail=no
(
  printf "%s\n" "337. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /xdate.year(date.mdy(6,10,1648) + time.hms(0,0,0)).
DEBUG EVALUATE /xdate.year(date.mdy(6,30,1680) + time.hms(4,50,38)).
DEBUG EVALUATE /xdate.year(date.mdy(7,24,1716) + time.hms(12,31,35)).
DEBUG EVALUATE /xdate.year(date.mdy(6,19,1768) + time.hms(12,47,53)).
DEBUG EVALUATE /xdate.year(date.mdy(8,2,1819) + time.hms(1,26,0)).
DEBUG EVALUATE /xdate.year(date.mdy(3,27,1839) + time.hms(20,58,11)).
DEBUG EVALUATE /xdate.year(date.mdy(4,19,1903) + time.hms(7,36,5)).
DEBUG EVALUATE /xdate.year(date.mdy(8,25,1929) + time.hms(15,43,49)).
DEBUG EVALUATE /xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.year(date.mdy(4,19,1943) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)).
DEBUG EVALUATE /xdate.year(date.mdy(4,19,43) + time.hms(6,49,27)).
DEBUG EVALUATE /xdate.year(date.mdy(10,7,43) + time.hms(2,57,52)).
DEBUG EVALUATE /xdate.year(date.mdy(3,17,92) + time.hms(16,45,44)).
DEBUG EVALUATE /xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)).
DEBUG EVALUATE /xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)).
DEBUG EVALUATE /xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6439: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6439"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xdate.year(date.mdy(6,10,1648) + time.hms(0,0,0)) => 1648.00

xdate.year(date.mdy(6,30,1680) + time.hms(4,50,38)) => 1680.00

xdate.year(date.mdy(7,24,1716) + time.hms(12,31,35)) => 1716.00

xdate.year(date.mdy(6,19,1768) + time.hms(12,47,53)) => 1768.00

xdate.year(date.mdy(8,2,1819) + time.hms(1,26,0)) => 1819.00

xdate.year(date.mdy(3,27,1839) + time.hms(20,58,11)) => 1839.00

xdate.year(date.mdy(4,19,1903) + time.hms(7,36,5)) => 1903.00

xdate.year(date.mdy(8,25,1929) + time.hms(15,43,49)) => 1929.00

xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)) => 1941.00

xdate.year(date.mdy(4,19,1943) + time.hms(6,49,27)) => 1943.00

xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52)) => 1943.00

xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44)) => 1992.00

xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57)) => 1996.00

xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)) => 1941.00

xdate.year(date.mdy(4,19,43) + time.hms(6,49,27)) => 1943.00

xdate.year(date.mdy(10,7,43) + time.hms(2,57,52)) => 1943.00

xdate.year(date.mdy(3,17,92) + time.hms(16,45,44)) => 1992.00

xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)) => 1996.00

xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)) => 2038.00

xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)) => 2094.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6439"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_337
#AT_START_338
at_fn_group_banner 338 'evaluate.at:6483' \
  "expressions - DATEDIFF years" "                   " 27
at_xfail=no
(
  printf "%s\n" "338. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.

DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years').
DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years').
DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years').
DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years').
DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years').
DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years').
DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years').
DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years').
DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years').
DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years').
DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years').
DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years').
DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years').
DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years').
DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years').

DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years').
DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years').
DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years').
DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years').
DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years').
DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years').
DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years').
DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years').
DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years').
DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years').
DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years').
DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years').
DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years').
DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years').
DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years').
DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6539: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6539"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years') => -32.00

datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years') => -36.00

datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years') => -51.00

datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years') => -51.00

datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years') => -19.00

datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years') => -64.00

datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years') => -26.00

datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years') => -12.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years') => -1.00

datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years') => 0.00

datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years') => -48.00

datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years') => -3.00

datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years') => -54.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years') => -1.00

datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years') => 0.00

datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years') => -48.00

datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years') => -3.00

datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years') => -42.00

datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years') => -55.00

datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years') => -3.00

datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years') => -4.00

datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years') => -2.00

datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years') => 32.00

datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years') => 36.00

datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years') => 51.00

datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years') => 51.00

datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years') => 19.00

datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years') => 64.00

datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years') => 26.00

datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years') => 12.00

datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years') => 1.00

datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years') => 0.00

datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years') => 48.00

datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years') => 3.00

datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years') => 54.00

datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years') => 1.00

datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years') => 0.00

datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years') => 48.00

datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years') => 3.00

datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years') => 42.00

datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years') => 55.00

datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years') => 3.00

datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years') => 4.00

datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years') => 2.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6539"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_338
#AT_START_339
at_fn_group_banner 339 'evaluate.at:6631' \
  "expressions - DATEDIFF quarters" "                " 27
at_xfail=no
(
  printf "%s\n" "339. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters').

DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters').
DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6686: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6686"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters') => -128.00

datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters') => -144.00

datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters') => -207.00

datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters') => -204.00

datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters') => -78.00

datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters') => -256.00

datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters') => -105.00

datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters') => -48.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters') => -6.00

datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters') => -1.00

datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters') => -193.00

datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters') => -15.00

datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters') => -217.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters') => -6.00

datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters') => -1.00

datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters') => -193.00

datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters') => -15.00

datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters') => -170.00

datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters') => -222.00

datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters') => -15.00

datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters') => -16.00

datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters') => -11.00

datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters') => 128.00

datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters') => 144.00

datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters') => 207.00

datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters') => 204.00

datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters') => 78.00

datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters') => 256.00

datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters') => 105.00

datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters') => 48.00

datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters') => 6.00

datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters') => 1.00

datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters') => 193.00

datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters') => 15.00

datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters') => 217.00

datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters') => 6.00

datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters') => 1.00

datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters') => 193.00

datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters') => 15.00

datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters') => 170.00

datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters') => 222.00

datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters') => 15.00

datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters') => 16.00

datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters') => 11.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6686"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_339
#AT_START_340
at_fn_group_banner 340 'evaluate.at:6778' \
  "expressions - DATEDIFF months" "                  " 27
at_xfail=no
(
  printf "%s\n" "340. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months').
DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months').
DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months').
DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months').
DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months').
DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months').
DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months').
DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months').
DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months').
DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months').
DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months').
DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months').
DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months').
DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months').
DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months').

DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months').
DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months').
DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months').
DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months').
DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months').
DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months').
DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months').
DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months').
DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months').
DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months').
DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months').
DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months').
DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months').
DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months').
DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months').
DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6833: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6833"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months') => -384.00

datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months') => -432.00

datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months') => -622.00

datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months') => -613.00

datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months') => -235.00

datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months') => -768.00

datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months') => -316.00

datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months') => -145.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months') => -18.00

datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months') => -5.00

datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months') => -581.00

datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months') => -47.00

datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months') => -652.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months') => -18.00

datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months') => -5.00

datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months') => -581.00

datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months') => -47.00

datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months') => -512.00

datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months') => -668.00

datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months') => -47.00

datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months') => -48.00

datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months') => -35.00

datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months') => 384.00

datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months') => 432.00

datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months') => 622.00

datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months') => 613.00

datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months') => 235.00

datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months') => 768.00

datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months') => 316.00

datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months') => 145.00

datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months') => 18.00

datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months') => 5.00

datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months') => 581.00

datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months') => 47.00

datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months') => 652.00

datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months') => 18.00

datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months') => 5.00

datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months') => 581.00

datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months') => 47.00

datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months') => 512.00

datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months') => 668.00

datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months') => 47.00

datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months') => 48.00

datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months') => 35.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6833"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_340
#AT_START_341
at_fn_group_banner 341 'evaluate.at:6925' \
  "expressions - DATEDIFF weeks" "                   " 27
at_xfail=no
(
  printf "%s\n" "341. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:6957: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:6957"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks') => -1672.00

datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks') => -1881.00

datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks') => -2708.00

datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks') => -2667.00

datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks') => -1025.00

datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks') => -3342.00

datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks') => -1375.00

datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks') => -631.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks') => -81.00

datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks') => -24.00

datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks') => -2527.00

datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks') => -205.00

datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks') => -2838.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks') => -81.00

datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks') => -24.00

datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks') => -2527.00

datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks') => -205.00

datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks') => -2228.00

datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks') => -2905.00

datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks') => -208.00

datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks') => -208.00

datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks') => -156.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:6957"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_341
#AT_START_342
at_fn_group_banner 342 'evaluate.at:7005' \
  "expressions - DATEDIFF days" "                    " 27
at_xfail=no
(
  printf "%s\n" "342. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days').
DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days').
DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days').
DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days').
DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days').
DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days').
DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days').
DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days').
DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days').
DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days').
DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days').
DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days').
DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days').
DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days').
DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days').
DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days').
DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days').
DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days').
DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:7037: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:7037"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days') => -11708.00

datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days') => -13172.00

datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days') => -18958.00

datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days') => -18670.00

datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days') => -7177.00

datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days') => -23398.00

datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days') => -9625.00

datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days') => -4418.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days') => -567.00

datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days') => -171.00

datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days') => -17694.00

datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days') => -1440.00

datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days') => -19872.00

datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days') => -567.00

datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days') => -171.00

datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days') => -17694.00

datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days') => -1440.00

datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days') => -15599.00

datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days') => -20339.00

datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days') => -1460.00

datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days') => -1461.00

datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days') => -1094.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7037"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_342
#AT_START_343
at_fn_group_banner 343 'evaluate.at:7086' \
  "expressions - DATEDIFF time of day" "             " 27
at_xfail=no
(
  printf "%s\n" "343. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /datediff(date.mdy(10,15,1910) + 234, date.mdy(10,10,1910) + 123, 'days').
DEBUG EVALUATE /datediff(date.mdy(10,15,1910) + 123, date.mdy(10,10,1910) + 234, 'days').
DEBUG EVALUATE /datediff(date.mdy(10,24,1910) + 234, date.mdy(10,10,1910) + 123, 'weeks').
DEBUG EVALUATE /datediff(date.mdy(10,24,1910) + 123, date.mdy(10,10,1910) + 234, 'weeks').
DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(5,10,1910) + 123, 'months').
DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(5,10,1910) + 234, 'months').
DEBUG EVALUATE /datediff(date.mdy(5,10,1919) + 234, date.mdy(5,10,1910) + 123, 'years').
DEBUG EVALUATE /datediff(date.mdy(5,10,1919) + 123, date.mdy(5,10,1910) + 234, 'years').

DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(10,15,1910) + 234, 'days').
DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(10,15,1910) + 123, 'days').
DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(10,24,1910) + 234, 'weeks').
DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(10,24,1910) + 123, 'weeks').
DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 123, date.mdy(10,10,1910) + 234, 'months').
DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 234, date.mdy(10,10,1910) + 123, 'months').
DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 123, date.mdy(5,10,1919) + 234, 'years').
DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 234, date.mdy(5,10,1919) + 123, 'years').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:7113: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:7113"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "datediff(date.mdy(10,15,1910) + 234, date.mdy(10,10,1910) + 123, 'days') =>
5.00

datediff(date.mdy(10,15,1910) + 123, date.mdy(10,10,1910) + 234, 'days') =>
4.00

datediff(date.mdy(10,24,1910) + 234, date.mdy(10,10,1910) + 123, 'weeks') =>
2.00

datediff(date.mdy(10,24,1910) + 123, date.mdy(10,10,1910) + 234, 'weeks') =>
1.00

datediff(date.mdy(10,10,1910) + 234, date.mdy(5,10,1910) + 123, 'months') =>
5.00

datediff(date.mdy(10,10,1910) + 123, date.mdy(5,10,1910) + 234, 'months') =>
4.00

datediff(date.mdy(5,10,1919) + 234, date.mdy(5,10,1910) + 123, 'years') => 9.00

datediff(date.mdy(5,10,1919) + 123, date.mdy(5,10,1910) + 234, 'years') => 8.00

datediff(date.mdy(10,10,1910) + 123, date.mdy(10,15,1910) + 234, 'days') =>
-5.00

datediff(date.mdy(10,10,1910) + 234, date.mdy(10,15,1910) + 123, 'days') =>
-4.00

datediff(date.mdy(10,10,1910) + 123, date.mdy(10,24,1910) + 234, 'weeks') =>
-2.00

datediff(date.mdy(10,10,1910) + 234, date.mdy(10,24,1910) + 123, 'weeks') =>
-1.00

datediff(date.mdy(5,10,1910) + 123, date.mdy(10,10,1910) + 234, 'months') =>
-5.00

datediff(date.mdy(5,10,1910) + 234, date.mdy(10,10,1910) + 123, 'months') =>
-4.00

datediff(date.mdy(5,10,1910) + 123, date.mdy(5,10,1919) + 234, 'years') =>
-9.00

datediff(date.mdy(5,10,1910) + 234, date.mdy(5,10,1919) + 123, 'years') =>
-8.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7113"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_343
#AT_START_344
at_fn_group_banner 344 'evaluate.at:7163' \
  "expressions - DATESUM with non-leap year" "       " 27
at_xfail=no
(
  printf "%s\n" "344. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.mdy(1,1,1900)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.mdy(1,1,1900)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:7199: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:7199"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)) =>
58.00

ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)) =>
89.00

ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)) =>
119.00

ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)) =>
150.00

ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)) =>
180.00

ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)) =>
211.00

ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)) =>
242.00

ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)) =>
272.00

ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)) =>
303.00

ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)) =>
333.00

ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)) =>
364.00

ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)) =>
395.00

ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900))
=> 423.00

ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.
mdy(1,1,1900)) => 61.00

ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.
mdy(1,1,1900)) => 89.00

ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.
mdy(1,1,1900)) => 120.00

ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.
mdy(1,1,1900)) => 150.00

ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.
mdy(1,1,1900)) => 181.00

ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.
mdy(1,1,1900)) => 211.00

ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.
mdy(1,1,1900)) => 242.00

ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.
mdy(1,1,1900)) => 273.00

ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.
mdy(1,1,1900)) => 303.00

ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.
mdy(1,1,1900)) => 334.00

ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.
mdy(1,1,1900)) => 364.00

ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.
mdy(1,1,1900)) => 395.00

ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.
mdy(1,1,1900)) => 426.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7199"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_344
#AT_START_345
at_fn_group_banner 345 'evaluate.at:7281' \
  "expressions - DATESUM with leap year" "           " 27
at_xfail=no
(
  printf "%s\n" "345. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.mdy(1,1,1904)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.mdy(1,1,1904)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:7317: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:7317"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)) =>
59.00

ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)) =>
90.00

ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)) =>
120.00

ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)) =>
151.00

ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)) =>
181.00

ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)) =>
212.00

ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)) =>
243.00

ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)) =>
273.00

ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)) =>
304.00

ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)) =>
334.00

ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)) =>
365.00

ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)) =>
396.00

ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)) =>
424.00

ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.
mdy(1,1,1904)) => 61.00

ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.
mdy(1,1,1904)) => 90.00

ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.
mdy(1,1,1904)) => 121.00

ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.
mdy(1,1,1904)) => 151.00

ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.
mdy(1,1,1904)) => 182.00

ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.
mdy(1,1,1904)) => 212.00

ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.
mdy(1,1,1904)) => 243.00

ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.
mdy(1,1,1904)) => 274.00

ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.
mdy(1,1,1904)) => 304.00

ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.
mdy(1,1,1904)) => 335.00

ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.
mdy(1,1,1904)) => 365.00

ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.
mdy(1,1,1904)) => 396.00

ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.
mdy(1,1,1904)) => 427.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7317"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_345
#AT_START_346
at_fn_group_banner 346 'evaluate.at:7399' \
  "expressions - DATESUM" "                          " 27
at_xfail=no
(
  printf "%s\n" "346. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)).

DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:7424: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:7424"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)) =>
7.00

ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)) =>
17.50

ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)) =>
-21.00

ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)) =>
28.00

ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)) =>
35.00

ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)) =>
1.00

ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)) =>
2.50

ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)) =>
-3.00

ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)) =>
4.00

ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)) => 5.00

ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)) =>
0.04

ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)) =>
0.10

ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)) =>
-0.17

ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)) =>
0.21
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7424"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_346
#AT_START_347
at_fn_group_banner 347 'evaluate.at:7469' \
  "expressions - DATESUM preserves time of day for units of days and longer" "" 27
at_xfail=no
(
  printf "%s\n" "347. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'days') - (date.mdy(8,2,1819) + time.hms(1,2,3))).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'weeks') - (date.mdy(8,2,1819) + time.hms(1,2,3))).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'months') - (date.mdy(8,2,1819) + time.hms(1,2,3))).
DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'years') - (date.mdy(8,2,1819) + time.hms(1,2,3))).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:7483: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:7483"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'days') - (date.
mdy(8,2,1819) + time.hms(1,2,3))) => 5.00

ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'weeks') - (date.
mdy(8,2,1819) + time.hms(1,2,3))) => 35.00

ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'months') - (date.
mdy(8,2,1819) + time.hms(1,2,3))) => 153.00

ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'years') - (date.
mdy(8,2,1819) + time.hms(1,2,3))) => 1827.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7483"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_347
#AT_START_348
at_fn_group_banner 348 'evaluate.at:7500' \
  "expressions - NCDF.BETA" "                        " 27
at_xfail=no
(
  printf "%s\n" "348. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /1000 * ncdf.beta(.868,10,20,150).
DEBUG EVALUATE /1000 * ncdf.beta(.9,10,10,120).
DEBUG EVALUATE /1000 * ncdf.beta(.88,15,5,80).
DEBUG EVALUATE /1000 * ncdf.beta(.85,20,10,110).
DEBUG EVALUATE /1000 * ncdf.beta(.66,20,30,65).
DEBUG EVALUATE /1000 * ncdf.beta(.72,20,50,130).
DEBUG EVALUATE /1000 * ncdf.beta(.72,30,20,80).
DEBUG EVALUATE /1000 * ncdf.beta(.8,30,40,130).
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:7518: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:7518"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1000 * ncdf.beta(.868,10,20,150) => 937.66

1000 * ncdf.beta(.9,10,10,120) => 730.68

1000 * ncdf.beta(.88,15,5,80) => 160.43

1000 * ncdf.beta(.85,20,10,110) => 186.75

1000 * ncdf.beta(.66,20,30,65) => 655.94

1000 * ncdf.beta(.72,20,50,130) => 979.69

1000 * ncdf.beta(.72,30,20,80) => 116.24

1000 * ncdf.beta(.8,30,40,130) => 993.04
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7518"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_348
#AT_START_349
at_fn_group_banner 349 'evaluate.at:7545' \
  "expressions - generic tree optimizations" "       " 27
at_xfail=no
(
  printf "%s\n" "349. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE (x=10) /x + 0.
DEBUG EVALUATE (x=-3) /x - 0.
DEBUG EVALUATE (x=5) /0 + x.
DEBUG EVALUATE (x=10) /x * 1.
DEBUG EVALUATE (x=-3) /1 * x.
DEBUG EVALUATE (x=5) /x / 1.
DEBUG EVALUATE (x=10) /0 * x.
DEBUG EVALUATE (x=-3) /x * 0.
DEBUG EVALUATE (x=5) /0 / x.
DEBUG EVALUATE (x=5) /mod(0, x).
DEBUG EVALUATE (x=5) /x ** 1.
DEBUG EVALUATE (x=5) /x ** 2.
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/evaluate.at:7567: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "evaluate.at:7567"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "x + 0 => 10.00

x - 0 => -3.00

0 + x => 5.00

x * 1 => 10.00

1 * x => -3.00

x / 1 => 5.00

0 * x => 0.00

x * 0 => 0.00

0 / x => 0.00

mod(0, x) => 0.00

x ** 1 => 5.00

x ** 2 => 25.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7567"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_349
#AT_START_350
at_fn_group_banner 350 'evaluate.at:7595' \
  "expressions - LAG" "                              " 27
at_xfail=no
(
  printf "%s\n" "350. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lag.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7611: pspp -o pspp.csv lag.sps"
at_fn_check_prepare_trace "evaluate.at:7611"
( $at_check_trace; pspp -o pspp.csv lag.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7611"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7612: cat pspp.csv"
at_fn_check_prepare_trace "evaluate.at:7612"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7612"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_350
#AT_START_351
at_fn_group_banner 351 'evaluate.at:7627' \
  "expression - LAG crash" "                         " 27
at_xfail=no
(
  printf "%s\n" "351. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lag.sps <<'_ATEOF'
DATA LIST LIST /x.
BEGIN DATA
1
2
END DATA.

DO IF (x <> LAG(x) ).
	ECHO 'hello'.
END IF.

EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7641: pspp -o pspp.csv lag.sps"
at_fn_check_prepare_trace "evaluate.at:7641"
( $at_check_trace; pspp -o pspp.csv lag.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7641"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7642: cat pspp.csv"
at_fn_check_prepare_trace "evaluate.at:7642"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0

hello
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7642"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_351
#AT_START_352
at_fn_group_banner 352 'evaluate.at:7652' \
  "expressions - UNIFORM" "                          " 27
at_xfail=no
(
  printf "%s\n" "352. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >uniform.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7667: pspp -o pspp.csv uniform.sps"
at_fn_check_prepare_trace "evaluate.at:7667"
( $at_check_trace; pspp -o pspp.csv uniform.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7667"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7668: cat pspp.csv"
at_fn_check_prepare_trace "evaluate.at:7668"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7668"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_352
#AT_START_353
at_fn_group_banner 353 'evaluate.at:7694' \
  "expressions - VALUELABEL" "                       " 27
at_xfail=no
(
  printf "%s\n" "353. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >valuelabel.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7723: pspp -o pspp.csv valuelabel.sps"
at_fn_check_prepare_trace "evaluate.at:7723"
( $at_check_trace; pspp -o pspp.csv valuelabel.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7723"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7724: cat pspp.csv"
at_fn_check_prepare_trace "evaluate.at:7724"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7724"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_353
#AT_START_354
at_fn_group_banner 354 'evaluate.at:7738' \
  "expressions - variables" "                        " 27
at_xfail=no
(
  printf "%s\n" "354. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >variables.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7778: pspp -o pspp.csv variables.sps"
at_fn_check_prepare_trace "evaluate.at:7778"
( $at_check_trace; pspp -o pspp.csv variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7778"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7779: cat pspp.csv"
at_fn_check_prepare_trace "evaluate.at:7779"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7779"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_354
#AT_START_355
at_fn_group_banner 355 'evaluate.at:7787' \
  "expressions - vectors" "                          " 27
at_xfail=no
(
  printf "%s\n" "355. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >vectors.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7806: pspp -o pspp.csv vectors.sps"
at_fn_check_prepare_trace "evaluate.at:7806"
( $at_check_trace; pspp -o pspp.csv vectors.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7806"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/evaluate.at:7807: cat pspp.csv"
at_fn_check_prepare_trace "evaluate.at:7807"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/evaluate.at:7807"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_355
#AT_START_356
at_fn_group_banner 356 'parse.at:19' \
  "parse expression with unknown variable crash" "   " 28
at_xfail=no
(
  printf "%s\n" "356. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:35: pspp -O format=csv parse.sps"
at_fn_check_prepare_trace "parse.at:35"
( $at_check_trace; pspp -O format=csv parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"parse.sps:10.6: error: IF: Unknown identifier y.
   10 | IF ( y > 0 ) .
      |      ^\"

parse.sps:11: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_356
#AT_START_357
at_fn_group_banner 357 'parse.at:44' \
  "parsing boolean expression with type mismatch" "  " 28
at_xfail=no
(
  printf "%s\n" "357. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1(A).
IF 'foo'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:50: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:50"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:2.4-2.8: error: IF: Type mismatch: expression has string type, but a
boolean value is required here.
    2 | IF 'foo'.
      |    ^~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:50"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_357
#AT_START_358
at_fn_group_banner 358 'parse.at:58' \
  "parsing numeric expression with type mismatch" "  " 28
at_xfail=no
(
  printf "%s\n" "358. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
COMPUTE x='foo'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:64: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:64"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:2.11-2.15: error: COMPUTE: Type mismatch: expression has type
'string', but a numeric value is required.
    2 | COMPUTE x='foo'.
      |           ^~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:64"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_358
#AT_START_359
at_fn_group_banner 359 'parse.at:72' \
  "parsing string expression with type mismatch" "   " 28
at_xfail=no
(
  printf "%s\n" "359. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1(A).
COMPUTE x=1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:78: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:78"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:2.11: error: COMPUTE: Type mismatch: expression has type 'number',
but a string value is required.
    2 | COMPUTE x=1.
      |           ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_359
#AT_START_360
at_fn_group_banner 360 'parse.at:86' \
  "assigning string expression to new variable" "    " 28
at_xfail=no
(
  printf "%s\n" "360. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1(A).
COMPUTE y='a'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:92: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:92"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:2.9: error: COMPUTE: This command tries to create a new variable y by
assigning a string value to it, but this is not supported.  Use the STRING
command to create the new variable with the correct width before assigning to
it, e.g. STRING y(A20).
    2 | COMPUTE y='a'.
      |         ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:92"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_360
#AT_START_361
at_fn_group_banner 361 'parse.at:102' \
  "parse expression with unknown system variable" "  " 28
at_xfail=no
(
  printf "%s\n" "361. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
COMPUTE x=$nonexistent.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:108: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:108"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:2.11-2.22: error: COMPUTE: Unknown system variable \$nonexistent.
    2 | COMPUTE x=\$nonexistent.
      |           ^~~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:108"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_361
#AT_START_362
at_fn_group_banner 362 'parse.at:115' \
  "parse expression with unknown identifier" "       " 28
at_xfail=no
(
  printf "%s\n" "362. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
COMPUTE x=y.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:121: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:121"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:2.11: error: COMPUTE: Unknown identifier y.
    2 | COMPUTE x=y.
      |           ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_362
#AT_START_363
at_fn_group_banner 363 'parse.at:128' \
  "parse expression with extension function in compatibility mode" "" 28
at_xfail=no
(
  printf "%s\n" "363. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DEBUG EVALUATE/ACOS(0)*0.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:133: pspp --testing-mode --syntax=compatible parse.sps"
at_fn_check_prepare_trace "parse.at:133"
( $at_check_trace; pspp --testing-mode --syntax=compatible parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:1.16-1.22: warning: DEBUG EVALUATE: ACOS(number) is a PSPP extension.
    1 | DEBUG EVALUATE/ACOS(0)*0.
      |                ^~~~~~~

ACOS(0)*0 => 0.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/parse.at:133"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_363
#AT_START_364
at_fn_group_banner 364 'parse.at:142' \
  "LAG expression following TEMPORARY" "             " 28
at_xfail=no
(
  printf "%s\n" "364. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
TEMPORARY
COMPUTE y=LAG(x).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:149: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:149"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:3.11-3.16: error: COMPUTE: LAG(num_variable) may not appear after
TEMPORARY.
    3 | COMPUTE y=LAG(x).
      |           ^~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:149"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_364
#AT_START_365
at_fn_group_banner 365 'parse.at:157' \
  "parse expression with invalid logical expression" "" 28
at_xfail=no
(
  printf "%s\n" "365. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
INPUT PROGRAM.
LOOP c=1 to 10.
COMPUTE var1=NORMAL(100).
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.

SELECT IF 2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:170: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:170"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:9.11: error: SELECT IF: This expression, which must be 0 or 1,
evaluated to 2.  It will be treated as 0.
    9 | SELECT IF 2.
      |           ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:170"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_365
#AT_START_366
at_fn_group_banner 366 'parse.at:178' \
  "chaining operators that shouldn't be" "           " 28
at_xfail=no
(
  printf "%s\n" "366. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
INPUT PROGRAM.
* These should provoke warnings.
COMPUTE a = 1 < 2 < 3.
COMPUTE b = 1 > 2 < 0.
COMPUTE c = 2**3**4.

* These should not provoke warnings.
COMPUTE d = (1 < 2) < 3.
COMPUTE e = (2**3)**4.
END INPUT PROGRAM.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:192: pspp parse.sps"
at_fn_check_prepare_trace "parse.at:192"
( $at_check_trace; pspp parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:3.13-3.21: warning: COMPUTE: 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').  To disable this
warning, insert parentheses.
    3 | COMPUTE a = 1 < 2 < 3.
      |             ^~~~~~~~~

parse.sps:4.13-4.21: warning: COMPUTE: 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').  To disable this
warning, insert parentheses.
    4 | COMPUTE b = 1 > 2 < 0.
      |             ^~~~~~~~~

parse.sps:5.13-5.19: warning: COMPUTE: The exponentiation operator (\`**') is
left-associative: \`a**b**c' equals \`(a**b)**c', not \`a**(b**c)'.  To disable
this warning, insert parentheses.
    5 | COMPUTE c = 2**3**4.
      |             ^~~~~~~

parse.sps:1.1-10.17: error: INPUT PROGRAM: Input program does not contain DATA
LIST or END FILE.
    1 | INPUT PROGRAM.
    2 | * These should provoke warnings.
  ... |
   10 | END INPUT PROGRAM.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:192"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_366
#AT_START_367
at_fn_group_banner 367 'parse.at:222' \
  "binary operator type mismatch" "                  " 28
at_xfail=no
(
  printf "%s\n" "367. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DEBUG EVALUATE /1 + 'a'.
DEBUG EVALUATE /'a' + 1.
DEBUG EVALUATE /'a' + 'a'.
DEBUG EVALUATE /'a' + ('a').

DEBUG EVALUATE /1 < 'a'.
DEBUG EVALUATE /'a' < 1.
DEBUG EVALUATE /'a' < 'b' < 'c'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:234: pspp --testing-mode parse.sps"
at_fn_check_prepare_trace "parse.at:234"
( $at_check_trace; pspp --testing-mode parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:1.17-1.23: error: DEBUG EVALUATE: Both operands of + must be numeric.
    1 | DEBUG EVALUATE /1 + 'a'.
      |                 ^~~~~~~

parse.sps:1.17: note: DEBUG EVALUATE: This operand has type 'number'.
    1 | DEBUG EVALUATE /1 + 'a'.
      |                 ^

parse.sps:1.21-1.23: note: DEBUG EVALUATE: This operand has type 'string'.
    1 | DEBUG EVALUATE /1 + 'a'.
      |                     ^~~

1 + 'a' => error

parse.sps:2.17-2.23: error: DEBUG EVALUATE: Both operands of + must be numeric.
    2 | DEBUG EVALUATE /'a' + 1.
      |                 ^~~~~~~

parse.sps:2.17-2.19: note: DEBUG EVALUATE: This operand has type 'string'.
    2 | DEBUG EVALUATE /'a' + 1.
      |                 ^~~

parse.sps:2.23: note: DEBUG EVALUATE: This operand has type 'number'.
    2 | DEBUG EVALUATE /'a' + 1.
      |                       ^

'a' + 1 => error

'a' + 'a' => \"aa\"

parse.sps:4.17-4.26: error: DEBUG EVALUATE: Both operands of + must be numeric.
    4 | DEBUG EVALUATE /'a' + ('a').
      |                 ^~~~~~~~~~

parse.sps:4.17-4.19: note: DEBUG EVALUATE: This operand has type 'string'.
    4 | DEBUG EVALUATE /'a' + ('a').
      |                 ^~~

parse.sps:4.24-4.26: note: DEBUG EVALUATE: This operand has type 'string'.
    4 | DEBUG EVALUATE /'a' + ('a').
      |                        ^~~

'a' + ('a') => error

parse.sps:6.17-6.23: error: DEBUG EVALUATE: Both operands of < must have the
same type.
    6 | DEBUG EVALUATE /1 < 'a'.
      |                 ^~~~~~~

parse.sps:6.17: note: DEBUG EVALUATE: This operand has type 'number'.
    6 | DEBUG EVALUATE /1 < 'a'.
      |                 ^

parse.sps:6.21-6.23: note: DEBUG EVALUATE: This operand has type 'string'.
    6 | DEBUG EVALUATE /1 < 'a'.
      |                     ^~~

1 < 'a' => error

parse.sps:7.17-7.23: error: DEBUG EVALUATE: Both operands of < must have the
same type.
    7 | DEBUG EVALUATE /'a' < 1.
      |                 ^~~~~~~

parse.sps:7.17-7.19: note: DEBUG EVALUATE: This operand has type 'string'.
    7 | DEBUG EVALUATE /'a' < 1.
      |                 ^~~

parse.sps:7.23: note: DEBUG EVALUATE: This operand has type 'number'.
    7 | DEBUG EVALUATE /'a' < 1.
      |                       ^

'a' < 1 => error

parse.sps:8.17-8.31: error: DEBUG EVALUATE: Both operands of < must have the
same type.
    8 | DEBUG EVALUATE /'a' < 'b' < 'c'.
      |                 ^~~~~~~~~~~~~~~

parse.sps:8.17-8.25: note: DEBUG EVALUATE: This operand has type 'number'.
    8 | DEBUG EVALUATE /'a' < 'b' < 'c'.
      |                 ^~~~~~~~~

parse.sps:8.29-8.31: note: DEBUG EVALUATE: This operand has type 'string'.
    8 | DEBUG EVALUATE /'a' < 'b' < 'c'.
      |                             ^~~

'a' < 'b' < 'c' => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:234"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_367
#AT_START_368
at_fn_group_banner 368 'parse.at:326' \
  "unary operator type mismatch" "                   " 28
at_xfail=no
(
  printf "%s\n" "368. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DEBUG EVALUATE /-'a'.
DEBUG EVALUATE /----'a'.
DEBUG EVALUATE /NOT 'a'.
DEBUG EVALUATE /NOT NOT NOT 'a'.
DEBUG EVALUATE /NOT F5.2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:335: pspp --testing-mode parse.sps"
at_fn_check_prepare_trace "parse.at:335"
( $at_check_trace; pspp --testing-mode parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "parse.sps:1.17-1.20: error: DEBUG EVALUATE: The unary - operator requires a
numeric operand.
    1 | DEBUG EVALUATE /-'a'.
      |                 ^~~~

parse.sps:1.18-1.20: note: DEBUG EVALUATE: The operand of - has type 'string'.
    1 | DEBUG EVALUATE /-'a'.
      |                  ^~~

-'a' => error

parse.sps:2.17-2.23: error: DEBUG EVALUATE: The unary - operator requires a
numeric operand.
    2 | DEBUG EVALUATE /----'a'.
      |                 ^~~~~~~

parse.sps:2.21-2.23: note: DEBUG EVALUATE: The operand of - has type 'string'.
    2 | DEBUG EVALUATE /----'a'.
      |                     ^~~

----'a' => error

parse.sps:3.17-3.23: error: DEBUG EVALUATE: The unary NOT operator requires a
numeric operand.
    3 | DEBUG EVALUATE /NOT 'a'.
      |                 ^~~~~~~

parse.sps:3.21-3.23: note: DEBUG EVALUATE: The operand of NOT has type
'string'.
    3 | DEBUG EVALUATE /NOT 'a'.
      |                     ^~~

NOT 'a' => error

parse.sps:4.17-4.31: error: DEBUG EVALUATE: The unary NOT operator requires a
numeric operand.
    4 | DEBUG EVALUATE /NOT NOT NOT 'a'.
      |                 ^~~~~~~~~~~~~~~

parse.sps:4.29-4.31: note: DEBUG EVALUATE: The operand of NOT has type
'string'.
    4 | DEBUG EVALUATE /NOT NOT NOT 'a'.
      |                             ^~~

NOT NOT NOT 'a' => error

parse.sps:5.17-5.24: error: DEBUG EVALUATE: The unary NOT operator requires a
numeric operand.
    5 | DEBUG EVALUATE /NOT F5.2.
      |                 ^~~~~~~~

parse.sps:5.21-5.24: note: DEBUG EVALUATE: The operand of NOT has type
'format'.
    5 | DEBUG EVALUATE /NOT F5.2.
      |                     ^~~~

NOT F5.2 => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:335"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_368
#AT_START_369
at_fn_group_banner 369 'parse.at:396' \
  "parsing with negative numbers" "                  " 28
at_xfail=no
(
  printf "%s\n" "369. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DEBUG EVALUATE NOOPT POSTFIX /-2**3.
DEBUG EVALUATE NOOPT POSTFIX /-2**-3**-4.
DEBUG EVALUATE/1 - 2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:403: pspp --testing-mode parse.sps"
at_fn_check_prepare_trace "parse.at:403"
( $at_check_trace; pspp --testing-mode parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "number: n<2> number: n<3> POW NEG return_number

parse.sps:2.31-2.40: warning: DEBUG EVALUATE: The exponentiation operator
(\`**') is left-associative: \`a**b**c' equals \`(a**b)**c', not \`a**(b**c)'.  To
disable this warning, insert parentheses.
    2 | DEBUG EVALUATE NOOPT POSTFIX /-2**-3**-4.
      |                               ^~~~~~~~~~

number: n<2> number: n<-3> POW number: n<-4> POW NEG return_number

1 - 2 => -1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/parse.at:403"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_369
#AT_START_370
at_fn_group_banner 370 'parse.at:418' \
  "system variables" "                               " 28
at_xfail=no
(
  printf "%s\n" "370. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >parse.sps <<'_ATEOF'
DEBUG EVALUATE /$WIDTH.
DEBUG EVALUATE /$LENGTH.
DEBUG EVALUATE /$SYSMIS.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:425: pspp --testing-mode parse.sps"
at_fn_check_prepare_trace "parse.at:425"
( $at_check_trace; pspp --testing-mode parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\$WIDTH => 79.00

\$LENGTH => 24.00

\$SYSMIS => sysmis
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/parse.at:425"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_370
#AT_START_371
at_fn_group_banner 371 'parse.at:435' \
  "system variables - \$DATE \$DATE11 \$JDATE \$TIME" "  " 28
at_xfail=no
(
  printf "%s\n" "371. $at_setup_line: testing $at_desc ..."
  $at_traceon


# Get the date in the formats that $DATE and $DATE11 support.
date=$(date +%d-%^b-%y)
date11=$(date +%d-%^b-%Y)
echo "date=$date"		# Should be date=DD-MMM-YY.
echo "date11=$date11"	# Should be date11=DD-MMM-YYYY.

# Maybe we don't have the 'date' program or it doesn't work as we
# expect.  Check by trying to see if $date and $date11 are in the
# expected format.  If not, skip the test.
case $date in #(
  [0-9][0-9]-[A-Z][A-Z][A-Z]-[0-9][0-9]) :
     ;; #(
  *) :
    printf "%s\n" "parse.at:446" >"$at_check_line_file"
at_fn_check_skip 77 "$at_srcdir/parse.at:446" ;;
esac
case $date11 in #(
  [0-9][0-9]-[A-Z][A-Z][A-Z]-[0-9][0-9][0-9][0-9]) :
     ;; #(
  *) :
    printf "%s\n" "parse.at:449" >"$at_check_line_file"
at_fn_check_skip 77 "$at_srcdir/parse.at:449" ;;
esac

cat >parse.sps <<'_ATEOF'
DEBUG EVALUATE /$DATE.
DEBUG EVALUATE /$DATE11.
DEBUG EVALUATE FORMAT=DATE9 /$JDATE * 86400.
DEBUG EVALUATE FORMAT=DATE9 /$TIME.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/parse.at:459: pspp --testing-mode parse.sps"
at_fn_check_prepare_trace "parse.at:459"
( $at_check_trace; pspp --testing-mode parse.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\$DATE => \"$date\"

\$DATE11 => \"$date11\"

\$JDATE * 86400 => $date

\$TIME => $date
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/parse.at:459"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_371
#AT_START_372
at_fn_group_banner 372 'parse.at:470' \
  "expressions - negative checks" "                  " 28
at_xfail=no
(
  printf "%s\n" "372. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >evaluate-base.sps <<'_ATEOF'
SET EPOCH 1940.
DEBUG EVALUATE SET opt.
DEBUG EVALUATE /$nonexistent.
DEBUG EVALUATE /RANGE(1, 2).
DEBUG EVALUATE /CONCAT.1('a', 'b').
DEBUG EVALUATE /foobar(x).
DEBUG EVALUATE /CONCAT.1('a' b).
DEBUG EVALUATE /NCDF.CHISQ(1, 2, 3).
DEBUG EVALUATE (a=1)(b=2) VECTOR/v('abc').
_ATEOF


for opt in OPT NOOPT; do
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $opt ##
_ASBOX
    sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
    { set +x
printf "%s\n" "$at_srcdir/parse.at:487: pspp --testing-mode evaluate.sps"
at_fn_check_prepare_trace "parse.at:487"
( $at_check_trace; pspp --testing-mode evaluate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "evaluate.sps:3.17-3.28: error: DEBUG EVALUATE: Unknown system variable
\$nonexistent.
    3 | DEBUG EVALUATE /\$nonexistent.
      |                 ^~~~~~~~~~~~

\$nonexistent => error

evaluate.sps:4.17-4.27: error: DEBUG EVALUATE: RANGE(number, number, number[,
number, number]...) must have an odd number of arguments.
    4 | DEBUG EVALUATE /RANGE(1, 2).
      |                 ^~~~~~~~~~~

RANGE(1, 2) => error

evaluate.sps:5.17-5.34: error: DEBUG EVALUATE: CONCAT(string[, string]...)
function cannot accept suffix .1 to specify the minimum number of valid
arguments.
    5 | DEBUG EVALUATE /CONCAT.1('a', 'b').
      |                 ^~~~~~~~~~~~~~~~~~

CONCAT.1('a', 'b') => error

evaluate.sps:6.17-6.22: error: DEBUG EVALUATE: No function or vector named
foobar.
    6 | DEBUG EVALUATE /foobar(x).
      |                 ^~~~~~

foobar(x) => error

evaluate.sps:7.30: error: DEBUG EVALUATE: Syntax error expecting \`,' or \`)'.
    7 | DEBUG EVALUATE /CONCAT.1('a' b).
      |                              ^

CONCAT.1('a' b) => error

evaluate.sps:8.17-8.35: error: DEBUG EVALUATE: NCDF.CHISQ(number, number,
number) is not available in this version of PSPP.
    8 | DEBUG EVALUATE /NCDF.CHISQ(1, 2, 3).
      |                 ^~~~~~~~~~~~~~~~~~~

NCDF.CHISQ(1, 2, 3) => error

evaluate.sps:9.34-9.41: error: DEBUG EVALUATE: A vector index must be numeric.
    9 | DEBUG EVALUATE (a=1)(b=2) VECTOR/v('abc').
      |                                  ^~~~~~~~

evaluate.sps:9.36-9.40: note: DEBUG EVALUATE: This vector index has type
'string'.
    9 | DEBUG EVALUATE (a=1)(b=2) VECTOR/v('abc').
      |                                    ^~~~~

v('abc') => error
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/parse.at:487"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_372
#AT_START_373
at_fn_group_banner 373 'add-files.at:120' \
  "ADD FILES -- interleave sav with sav" "           " 29
at_xfail=no
(
  printf "%s\n" "373. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF

   cat >save-a.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).
SAVE OUTFILE='a.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/add-files.at:120: pspp -O format=csv save-a.sps"
at_fn_check_prepare_trace "add-files.at:120"
( $at_check_trace; pspp -O format=csv save-a.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >save-b.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
SAVE OUTFILE='b.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/add-files.at:120: pspp -O format=csv save-b.sps"
at_fn_check_prepare_trace "add-files.at:120"
( $at_check_trace; pspp -O format=csv save-b.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }



   cat >add-files.sps <<'_ATEOF'


ADD FILES
    FILE='a.sav' /IN=InA /SORT
    FILE='b.sav' /IN=InB /RENAME c=d
    /BY a /FIRST=first /LAST=last.
LIST.
_ATEOF



   { set +x
printf "%s\n" "$at_srcdir/add-files.at:120: pspp -O format=csv add-files.sps"
at_fn_check_prepare_trace "add-files.at:120"
( $at_check_trace; pspp -O format=csv add-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
a,b,c,d,InA,InB,first,last
0,a,A,,1,0,1,1
1,a,B,,1,0,1,0
1,a,C,,1,0,0,0
1,b,,N,0,1,0,1
2,a,D,,1,0,1,1
3,a,E,,1,0,1,0
3,b,,O,0,1,0,1
4,a,F,,1,0,1,0
4,b,,P,0,1,0,1
5,a,G,,1,0,1,0
5,a,H,,1,0,0,1
6,a,I,,1,0,1,0
6,b,,Q,0,1,0,1
7,a,J,,1,0,1,0
7,a,K,,1,0,0,0
7,a,L,,1,0,0,0
7,b,,R,0,1,0,1
8,a,M,,1,0,1,1
9,b,,S,0,1,1,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_373
#AT_START_374
at_fn_group_banner 374 'add-files.at:121' \
  "ADD FILES -- interleave sav with inline" "        " 29
at_xfail=no
(
  printf "%s\n" "374. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF

   cat >save-a.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).
SAVE OUTFILE='a.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/add-files.at:121: pspp -O format=csv save-a.sps"
at_fn_check_prepare_trace "add-files.at:121"
( $at_check_trace; pspp -O format=csv save-a.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >add-files.sps <<'_ATEOF'

DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
ADD FILES
    FILE='a.sav' /IN=InA /SORT
    FILE=* /IN=InB /RENAME c=d
    /BY a /FIRST=first /LAST=last.
LIST.
_ATEOF



   { set +x
printf "%s\n" "$at_srcdir/add-files.at:121: pspp -O format=csv add-files.sps"
at_fn_check_prepare_trace "add-files.at:121"
( $at_check_trace; pspp -O format=csv add-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
a,b,c,d,InA,InB,first,last
0,a,A,,1,0,1,1
1,a,B,,1,0,1,0
1,a,C,,1,0,0,0
1,b,,N,0,1,0,1
2,a,D,,1,0,1,1
3,a,E,,1,0,1,0
3,b,,O,0,1,0,1
4,a,F,,1,0,1,0
4,b,,P,0,1,0,1
5,a,G,,1,0,1,0
5,a,H,,1,0,0,1
6,a,I,,1,0,1,0
6,b,,Q,0,1,0,1
7,a,J,,1,0,1,0
7,a,K,,1,0,0,0
7,a,L,,1,0,0,0
7,b,,R,0,1,0,1
8,a,M,,1,0,1,1
9,b,,S,0,1,1,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_374
#AT_START_375
at_fn_group_banner 375 'add-files.at:122' \
  "ADD FILES -- interleave inline with sav" "        " 29
at_xfail=no
(
  printf "%s\n" "375. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >save-b.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
SAVE OUTFILE='b.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/add-files.at:122: pspp -O format=csv save-b.sps"
at_fn_check_prepare_trace "add-files.at:122"
( $at_check_trace; pspp -O format=csv save-b.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:122"
$at_failed && at_fn_log_failure
$at_traceon; }



   cat >add-files.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).

ADD FILES
    FILE=* /IN=InA /SORT
    FILE='b.sav' /IN=InB /RENAME c=d
    /BY a /FIRST=first /LAST=last.
LIST.
_ATEOF



   { set +x
printf "%s\n" "$at_srcdir/add-files.at:122: pspp -O format=csv add-files.sps"
at_fn_check_prepare_trace "add-files.at:122"
( $at_check_trace; pspp -O format=csv add-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
a,b,c,d,InA,InB,first,last
0,a,A,,1,0,1,1
1,a,B,,1,0,1,0
1,a,C,,1,0,0,0
1,b,,N,0,1,0,1
2,a,D,,1,0,1,1
3,a,E,,1,0,1,0
3,b,,O,0,1,0,1
4,a,F,,1,0,1,0
4,b,,P,0,1,0,1
5,a,G,,1,0,1,0
5,a,H,,1,0,0,1
6,a,I,,1,0,1,0
6,b,,Q,0,1,0,1
7,a,J,,1,0,1,0
7,a,K,,1,0,0,0
7,a,L,,1,0,0,0
7,b,,R,0,1,0,1
8,a,M,,1,0,1,1
9,b,,S,0,1,1,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:122"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_375
#AT_START_376
at_fn_group_banner 376 'add-files.at:123' \
  "ADD FILES -- concatenate sav with sav" "          " 29
at_xfail=no
(
  printf "%s\n" "376. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF

   cat >save-a.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).
SAVE OUTFILE='a.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/add-files.at:123: pspp -O format=csv save-a.sps"
at_fn_check_prepare_trace "add-files.at:123"
( $at_check_trace; pspp -O format=csv save-a.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >save-b.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
SAVE OUTFILE='b.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/add-files.at:123: pspp -O format=csv save-b.sps"
at_fn_check_prepare_trace "add-files.at:123"
( $at_check_trace; pspp -O format=csv save-b.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }



   cat >add-files.sps <<'_ATEOF'


ADD FILES
    FILE='a.sav' /IN=InA
    FILE='b.sav' /IN=InB /RENAME c=d
    .
LIST.
_ATEOF



   { set +x
printf "%s\n" "$at_srcdir/add-files.at:123: pspp -O format=csv add-files.sps"
at_fn_check_prepare_trace "add-files.at:123"
( $at_check_trace; pspp -O format=csv add-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
a,b,c,d,InA,InB
1,a,B,,1,0
8,a,M,,1,0
3,a,E,,1,0
5,a,G,,1,0
0,a,A,,1,0
5,a,H,,1,0
6,a,I,,1,0
7,a,J,,1,0
2,a,D,,1,0
7,a,K,,1,0
1,a,C,,1,0
7,a,L,,1,0
4,a,F,,1,0
1,b,,N,0,1
3,b,,O,0,1
4,b,,P,0,1
6,b,,Q,0,1
7,b,,R,0,1
9,b,,S,0,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_376
#AT_START_377
at_fn_group_banner 377 'add-files.at:124' \
  "ADD FILES -- concatenate sav with inline" "       " 29
at_xfail=no
(
  printf "%s\n" "377. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF

   cat >save-a.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).
SAVE OUTFILE='a.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/add-files.at:124: pspp -O format=csv save-a.sps"
at_fn_check_prepare_trace "add-files.at:124"
( $at_check_trace; pspp -O format=csv save-a.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >add-files.sps <<'_ATEOF'

DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
ADD FILES
    FILE='a.sav' /IN=InA
    FILE=* /IN=InB /RENAME c=d
    .
LIST.
_ATEOF



   { set +x
printf "%s\n" "$at_srcdir/add-files.at:124: pspp -O format=csv add-files.sps"
at_fn_check_prepare_trace "add-files.at:124"
( $at_check_trace; pspp -O format=csv add-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
a,b,c,d,InA,InB
1,a,B,,1,0
8,a,M,,1,0
3,a,E,,1,0
5,a,G,,1,0
0,a,A,,1,0
5,a,H,,1,0
6,a,I,,1,0
7,a,J,,1,0
2,a,D,,1,0
7,a,K,,1,0
1,a,C,,1,0
7,a,L,,1,0
4,a,F,,1,0
1,b,,N,0,1
3,b,,O,0,1
4,b,,P,0,1
6,b,,Q,0,1
7,b,,R,0,1
9,b,,S,0,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_377
#AT_START_378
at_fn_group_banner 378 'add-files.at:125' \
  "ADD FILES -- concatenate inline with sav" "       " 29
at_xfail=no
(
  printf "%s\n" "378. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >save-b.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
SAVE OUTFILE='b.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/add-files.at:125: pspp -O format=csv save-b.sps"
at_fn_check_prepare_trace "add-files.at:125"
( $at_check_trace; pspp -O format=csv save-b.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:125"
$at_failed && at_fn_log_failure
$at_traceon; }



   cat >add-files.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).

ADD FILES
    FILE=* /IN=InA
    FILE='b.sav' /IN=InB /RENAME c=d
    .
LIST.
_ATEOF



   { set +x
printf "%s\n" "$at_srcdir/add-files.at:125: pspp -O format=csv add-files.sps"
at_fn_check_prepare_trace "add-files.at:125"
( $at_check_trace; pspp -O format=csv add-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
a,b,c,d,InA,InB
1,a,B,,1,0
8,a,M,,1,0
3,a,E,,1,0
5,a,G,,1,0
0,a,A,,1,0
5,a,H,,1,0
6,a,I,,1,0
7,a,J,,1,0
2,a,D,,1,0
7,a,K,,1,0
1,a,C,,1,0
7,a,L,,1,0
4,a,F,,1,0
1,b,,N,0,1
3,b,,O,0,1
4,b,,P,0,1
6,b,,Q,0,1
7,b,,R,0,1
9,b,,S,0,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/add-files.at:125"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_378
#AT_START_379
at_fn_group_banner 379 'aggregate.at:193' \
  "AGGREGATE presorted data to dataset file, itemwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "379. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').
DATASET DECLARE aggregate.
SORT CASES BY g.
AGGREGATE outfile=aggregate
/PRESORTED         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).
DATASET ACTIVATE aggregate.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:193: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:193"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.333,.429,.333,.429,.333,.286,.333,.286,.500,.429,.500,.429,0,0,0,0,.667,.714,.667,.714,5,5,5,5,5,5,5,5,2.00,2.29,0,0,0,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,33.3,42.9,33.3,42.9,33.3,28.6,33.3,28.6,50.0,42.9,50.0,42.9,66.7,71.4,66.7,71.4,1.50,2.00,1.79,1.80,12.00,16.00
2,5.00,5.00,4,4,1.000,1.000,1.000,1.000,.000,.000,.000,.000,.000,.000,.000,.000,6,6,6,4,1.000,1.000,1.000,1.000,8,8,8,8,8,8,8,8,7.00,7.00,6,6,6,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,100.0,100.0,100.0,100.0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,7.00,7.00,1.00,1.00,21.00,21.00
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,NaN,NaN,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:193"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_379
#AT_START_380
at_fn_group_banner 380 'aggregate.at:194' \
  "AGGREGATE presorted data to dataset file, columnwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "380. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').
DATASET DECLARE aggregate.
SORT CASES BY g.
AGGREGATE outfile=aggregate /MISSING=COLUMNWISE
/PRESORTED         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).
DATASET ACTIVATE aggregate.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:194: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:194"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.   ,.429,.   ,.429,.   ,.286,.   ,.286,.   ,.429,.   ,.429,.,0,,0,.   ,.714,.   ,.714,.,5,,5,.,5,,5,.  ,2.29,.,0,,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,. ,42.9,. ,42.9,. ,28.6,. ,28.6,. ,42.9,. ,42.9,. ,71.4,. ,71.4,.  ,2.00,.  ,1.80,.  ,16.00
2,5.00,5.00,4,4,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,8,.,.,,8,.  ,.  ,.,.,,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:194"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_380
#AT_START_381
at_fn_group_banner 381 'aggregate.at:195' \
  "AGGREGATE unsorted data to dataset file, itemwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "381. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').
DATASET DECLARE aggregate.

AGGREGATE outfile=aggregate
         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).
DATASET ACTIVATE aggregate.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:195: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:195"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.333,.429,.333,.429,.333,.286,.333,.286,.500,.429,.500,.429,0,0,0,0,.667,.714,.667,.714,5,5,5,5,5,5,5,5,2.00,2.29,0,0,0,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,33.3,42.9,33.3,42.9,33.3,28.6,33.3,28.6,50.0,42.9,50.0,42.9,66.7,71.4,66.7,71.4,1.50,2.00,1.79,1.80,12.00,16.00
2,5.00,5.00,4,4,1.000,1.000,1.000,1.000,.000,.000,.000,.000,.000,.000,.000,.000,6,6,6,4,1.000,1.000,1.000,1.000,8,8,8,8,8,8,8,8,7.00,7.00,6,6,6,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,100.0,100.0,100.0,100.0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,7.00,7.00,1.00,1.00,21.00,21.00
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,NaN,NaN,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:195"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_381
#AT_START_382
at_fn_group_banner 382 'aggregate.at:196' \
  "AGGREGATE unsorted data to dataset file, columnwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "382. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').
DATASET DECLARE aggregate.

AGGREGATE outfile=aggregate /MISSING=COLUMNWISE
         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).
DATASET ACTIVATE aggregate.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:196: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:196"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.   ,.429,.   ,.429,.   ,.286,.   ,.286,.   ,.429,.   ,.429,.,0,,0,.   ,.714,.   ,.714,.,5,,5,.,5,,5,.  ,2.29,.,0,,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,. ,42.9,. ,42.9,. ,28.6,. ,28.6,. ,42.9,. ,42.9,. ,71.4,. ,71.4,.  ,2.00,.  ,1.80,.  ,16.00
2,5.00,5.00,4,4,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,8,.,.,,8,.  ,.  ,.,.,,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:196"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_382
#AT_START_383
at_fn_group_banner 383 'aggregate.at:197' \
  "AGGREGATE presorted data to active file, itemwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "383. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').

SORT CASES BY g.
AGGREGATE OUTFILE=*
/PRESORTED         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).

LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:197: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:197"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.333,.429,.333,.429,.333,.286,.333,.286,.500,.429,.500,.429,0,0,0,0,.667,.714,.667,.714,5,5,5,5,5,5,5,5,2.00,2.29,0,0,0,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,33.3,42.9,33.3,42.9,33.3,28.6,33.3,28.6,50.0,42.9,50.0,42.9,66.7,71.4,66.7,71.4,1.50,2.00,1.79,1.80,12.00,16.00
2,5.00,5.00,4,4,1.000,1.000,1.000,1.000,.000,.000,.000,.000,.000,.000,.000,.000,6,6,6,4,1.000,1.000,1.000,1.000,8,8,8,8,8,8,8,8,7.00,7.00,6,6,6,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,100.0,100.0,100.0,100.0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,7.00,7.00,1.00,1.00,21.00,21.00
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,NaN,NaN,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:197"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_383
#AT_START_384
at_fn_group_banner 384 'aggregate.at:198' \
  "AGGREGATE presorted data to active file, columnwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "384. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').

SORT CASES BY g.
AGGREGATE OUTFILE=* /MISSING=COLUMNWISE
/PRESORTED         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).

LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:198: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:198"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.   ,.429,.   ,.429,.   ,.286,.   ,.286,.   ,.429,.   ,.429,.,0,,0,.   ,.714,.   ,.714,.,5,,5,.,5,,5,.  ,2.29,.,0,,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,. ,42.9,. ,42.9,. ,28.6,. ,28.6,. ,42.9,. ,42.9,. ,71.4,. ,71.4,.  ,2.00,.  ,1.80,.  ,16.00
2,5.00,5.00,4,4,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,8,.,.,,8,.  ,.  ,.,.,,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:198"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_384
#AT_START_385
at_fn_group_banner 385 'aggregate.at:199' \
  "AGGREGATE unsorted data to active file, itemwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "385. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').


AGGREGATE OUTFILE=*
         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).

LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:199: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:199"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.333,.429,.333,.429,.333,.286,.333,.286,.500,.429,.500,.429,0,0,0,0,.667,.714,.667,.714,5,5,5,5,5,5,5,5,2.00,2.29,0,0,0,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,33.3,42.9,33.3,42.9,33.3,28.6,33.3,28.6,50.0,42.9,50.0,42.9,66.7,71.4,66.7,71.4,1.50,2.00,1.79,1.80,12.00,16.00
2,5.00,5.00,4,4,1.000,1.000,1.000,1.000,.000,.000,.000,.000,.000,.000,.000,.000,6,6,6,4,1.000,1.000,1.000,1.000,8,8,8,8,8,8,8,8,7.00,7.00,6,6,6,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,100.0,100.0,100.0,100.0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,7.00,7.00,1.00,1.00,21.00,21.00
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,NaN,NaN,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:199"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_385
#AT_START_386
at_fn_group_banner 386 'aggregate.at:200' \
  "AGGREGATE unsorted data to active file, columnwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "386. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').


AGGREGATE OUTFILE=* /MISSING=COLUMNWISE
         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).

LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:200: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:200"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.   ,.429,.   ,.429,.   ,.286,.   ,.286,.   ,.429,.   ,.429,.,0,,0,.   ,.714,.   ,.714,.,5,,5,.,5,,5,.  ,2.29,.,0,,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,. ,42.9,. ,42.9,. ,28.6,. ,28.6,. ,42.9,. ,42.9,. ,71.4,. ,71.4,.  ,2.00,.  ,1.80,.  ,16.00
2,5.00,5.00,4,4,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,8,.,.,,8,.  ,.  ,.,.,,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:200"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_386
#AT_START_387
at_fn_group_banner 387 'aggregate.at:201' \
  "AGGREGATE presorted data to external file, itemwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "387. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').

SORT CASES BY g.
AGGREGATE OUTFILE='aggregate.sys'
/PRESORTED         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).
GET FILE='aggregate.sys'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:201: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:201"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.333,.429,.333,.429,.333,.286,.333,.286,.500,.429,.500,.429,0,0,0,0,.667,.714,.667,.714,5,5,5,5,5,5,5,5,2.00,2.29,0,0,0,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,33.3,42.9,33.3,42.9,33.3,28.6,33.3,28.6,50.0,42.9,50.0,42.9,66.7,71.4,66.7,71.4,1.50,2.00,1.79,1.80,12.00,16.00
2,5.00,5.00,4,4,1.000,1.000,1.000,1.000,.000,.000,.000,.000,.000,.000,.000,.000,6,6,6,4,1.000,1.000,1.000,1.000,8,8,8,8,8,8,8,8,7.00,7.00,6,6,6,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,100.0,100.0,100.0,100.0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,7.00,7.00,1.00,1.00,21.00,21.00
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,NaN,NaN,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:201"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_387
#AT_START_388
at_fn_group_banner 388 'aggregate.at:202' \
  "AGGREGATE presorted data to external file, columnwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "388. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').

SORT CASES BY g.
AGGREGATE OUTFILE='aggregate.sys' /MISSING=COLUMNWISE
/PRESORTED         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).
GET FILE='aggregate.sys'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:202: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:202"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.   ,.429,.   ,.429,.   ,.286,.   ,.286,.   ,.429,.   ,.429,.,0,,0,.   ,.714,.   ,.714,.,5,,5,.,5,,5,.  ,2.29,.,0,,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,. ,42.9,. ,42.9,. ,28.6,. ,28.6,. ,42.9,. ,42.9,. ,71.4,. ,71.4,.  ,2.00,.  ,1.80,.  ,16.00
2,5.00,5.00,4,4,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,8,.,.,,8,.  ,.  ,.,.,,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:202"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_388
#AT_START_389
at_fn_group_banner 389 'aggregate.at:203' \
  "AGGREGATE unsorted data to external file, itemwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "389. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').


AGGREGATE OUTFILE='aggregate.sys'
         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).
GET FILE='aggregate.sys'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:203: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:203"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.333,.429,.333,.429,.333,.286,.333,.286,.500,.429,.500,.429,0,0,0,0,.667,.714,.667,.714,5,5,5,5,5,5,5,5,2.00,2.29,0,0,0,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,33.3,42.9,33.3,42.9,33.3,28.6,33.3,28.6,50.0,42.9,50.0,42.9,66.7,71.4,66.7,71.4,1.50,2.00,1.79,1.80,12.00,16.00
2,5.00,5.00,4,4,1.000,1.000,1.000,1.000,.000,.000,.000,.000,.000,.000,.000,.000,6,6,6,4,1.000,1.000,1.000,1.000,8,8,8,8,8,8,8,8,7.00,7.00,6,6,6,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,100.0,100.0,100.0,100.0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,7.00,7.00,1.00,1.00,21.00,21.00
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,NaN,NaN,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:203"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_389
#AT_START_390
at_fn_group_banner 390 'aggregate.at:204' \
  "AGGREGATE unsorted data to external file, columnwise missing" "" 30
at_xfail=no
(
  printf "%s\n" "390. $at_setup_line: testing $at_desc ..."
  $at_traceon

  cat >aggregate.data <<'_ATEOF'
2 42
1001
4 41
3112
1112
2661
1221
2771
1331
1441
2881
1551
_ATEOF

  cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='aggregate.data' /G N 1-2 S 3(a) W 4.
WEIGHT BY w.
MISSING VALUES n(4) s('4').


AGGREGATE OUTFILE='aggregate.sys' /MISSING=COLUMNWISE
         /DOCUMENT
        /BREAK=g
        /N = n
        /NI = n./
        NU = nu
        /NUI = nu./
        NFGT2 = fgt(n, 2)
        /NFGT2I = fgt.(n, 2)
        /SFGT2 = fgt(s, '2')
        /SFGT2I = fgt.(s, '2')
        /NFIN23 = fin(n, 2, 3)
        /NFIN23I = fin.(n, 2, 3)
        /SFIN23 = fin(s, '2', '3')
        /SFIN23I = fin.(s, '2', '3')
        /NFLT2 = flt(n, 2)
        /NFLT2I = flt.(n, 2)
        /SFLT2 = flt(s, '2')
        /SFLT2I = flt.(s, '2')
        /NFIRST = first(n)
        /NFIRSTI = first.(n)
        /SFIRST = first(s)
        /SFIRSTI = first.(s)
        /NFOUT23 = fout(n, 3, 2)
        /NFOUT23I = fout.(n, 3, 2)
        /SFOUT23 = fout(s, '3', '2')
        /SFOUT23I = fout.(s, '3', '2')
        /NLAST = last(n)
        /NLASTI = last.(n)
        /SLAST = last(s)
        /SLASTI = last.(s)
        /NMAX = max(n)
        /NMAXI = max.(n)
        /SMAX = max(s)
        /SMAXI = max.(s)
        /NMEAN = mean(n)
        /NMEANI = mean.(n)
        /NMIN = min(n)
        /NMINI = min.(n)
        /SMIN = min(s)
        /SMINI = min.(s)
        /NN = n(n)
        /NNI = n.(n)
        /SN = n(s)
        /SNI = n.(s)
        /NNMISS = nmiss(n)
        /NNMISSI = nmiss.(n)
        /SNMISS = nmiss(s)
        /SNMISSI = nmiss.(s)
        /NNU = nu(n)
        /NNUI = nu.(n)
        /SNU = nu(s)
        /SNUI = nu.(s)
        /NNUMISS = numiss(n)
        /NNUMISSI = numiss.(n)
        /SNUMISS = numiss(s)
        /SNUMISSI = numiss.(s)
        /NPGT2 = pgt(n, 2)
        /NPGT2I = pgt.(n, 2)
        /SPGT2 = pgt(s, '2')
        /SPGT2I = pgt.(s, '2')
        /NPIN23 = pin(n, 2, 3)
        /NPIN23I = pin.(n, 2, 3)
        /SPIN23 = pin(s, '2', '3')
        /SPIN23I = pin.(s, '2', '3')
        /NPLT2 = plt(n, 2)
        /NPLT2I = plt.(n, 2)
        /SPLT2 = plt(s, '2')
        /SPLT2I = plt.(s, '2')
        /NPOUT23 = pout(n, 2, 3)
        /NPOUT23I = pout.(n, 2, 3)
        /SPOUT23 = pout(s, '2', '3')
        /SPOUT23I = pout.(s, '2', '3')
        /NMEDIAN = median(n)
        /NMEDIANI = median.(n)
        /NSD = sd(n)
        /NSDI = sd.(n)
        /NSUM = sum(n)
        /NSUMI = sum.(n).
GET FILE='aggregate.sys'.
LIST.
_ATEOF

  { set +x
printf "%s\n" "$at_srcdir/aggregate.at:204: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:204"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:29.28-29.31: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   29 |         /NFOUT23 = fout(n, 3, 2)
      |                            ^~~~\"

\"aggregate.sps:30.30-30.33: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   30 |         /NFOUT23I = fout.(n, 3, 2)
      |                              ^~~~\"

\"aggregate.sps:31.28-31.35: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   31 |         /SFOUT23 = fout(s, '3', '2')
      |                            ^~~~~~~~\"

\"aggregate.sps:32.30-32.37: warning: AGGREGATE: The value arguments passed to the FOUT function are out of order.  They will be treated as if they had been specified in the correct order.
   32 |         /SFOUT23I = fout.(s, '3', '2')
      |                              ^~~~~~~~\"

Table: Data List
G,N,NI,NU,NUI,NFGT2,NFGT2I,SFGT2,SFGT2I,NFIN23,NFIN23I,SFIN23,SFIN23I,NFLT2,NFLT2I,SFLT2,SFLT2I,NFIRST,NFIRSTI,SFIRST,SFIRSTI,NFOUT23,NFOUT23I,SFOUT23,SFOUT23I,NLAST,NLASTI,SLAST,SLASTI,NMAX,NMAXI,SMAX,SMAXI,NMEAN,NMEANI,NMIN,NMINI,SMIN,SMINI,NN,NNI,SN,SNI,NNMISS,NNMISSI,SNMISS,SNMISSI,NNU,NNUI,SNU,SNUI,NNUMISS,NNUMISSI,SNUMISS,SNUMISSI,NPGT2,NPGT2I,SPGT2,SPGT2I,NPIN23,NPIN23I,SPIN23,SPIN23I,NPLT2,NPLT2I,SPLT2,SPLT2I,NPOUT23,NPOUT23I,SPOUT23,SPOUT23I,NMEDIAN,NMEDIANI,NSD,NSDI,NSUM,NSUMI
1,7.00,7.00,6,6,.   ,.429,.   ,.429,.   ,.286,.   ,.286,.   ,.429,.   ,.429,.,0,,0,.   ,.714,.   ,.714,.,5,,5,.,5,,5,.  ,2.29,.,0,,0,6.00,7.00,6.00,7.00,1.00,.00,1.00,.00,5,6,5,6,1,0,1,0,. ,42.9,. ,42.9,. ,28.6,. ,28.6,. ,42.9,. ,42.9,. ,71.4,. ,71.4,.  ,2.00,.  ,1.80,.  ,16.00
2,5.00,5.00,4,4,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,8,.,.,,8,.  ,.  ,.,.,,4,3.00,3.00,3.00,5.00,2.00,2.00,2.00,.00,3,3,3,4,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
3,2.00,2.00,1,1,.000,.000,.000,.000,.000,.000,.000,.000,1.000,1.000,1.000,1.000,1,1,1,1,1.000,1.000,1.000,1.000,1,1,1,1,1,1,1,1,1.00,1.00,1,1,1,1,2.00,2.00,2.00,2.00,.00,.00,.00,.00,1,1,1,1,0,0,0,0,.0,.0,.0,.0,.0,.0,.0,.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,1.00,1.00,.00,.00,2.00,2.00
4,1.00,1.00,1,1,.   ,.   ,.   ,1.000,.   ,.   ,.   ,.000,.   ,.   ,.   ,.000,.,.,,4,.   ,.   ,.   ,1.000,.,.,,4,.,.,,4,.  ,.  ,.,.,,4,.00,.00,.00,1.00,1.00,1.00,1.00,.00,0,0,0,1,1,1,1,0,. ,. ,. ,100.0,. ,. ,. ,.0,. ,. ,. ,.0,. ,. ,. ,100.0,.  ,.  ,.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:204"
$at_failed && at_fn_log_failure
$at_traceon; }

    set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_390
#AT_START_391
at_fn_group_banner 391 'aggregate.at:206' \
  "AGGREGATE crash with MAX function" "              " 30
at_xfail=no
(
  printf "%s\n" "391. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >aggregate.sps <<'_ATEOF'
DATA LIST LIST /X (F8.2) Y (a25).

BEGIN DATA.
87.50 foo
87.34 bar
1 bar
END DATA.

AGGREGATE OUTFILE=* /BREAK=y /X=MAX(x).
LIST /x y.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/aggregate.at:219: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:219"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
X,F8.2
Y,A25

Table: Data List
X,Y
87.34,bar
87.50,foo
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:219"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_391
#AT_START_392
at_fn_group_banner 392 'aggregate.at:232' \
  "AGGREGATE crash with invalid syntax" "            " 30
at_xfail=no
(
  printf "%s\n" "392. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >aggregate.sps <<'_ATEOF'
INPUT PROGRAM.
LOOP c=1 TO 20.
  COMPUTE x=UNIFORM(10)
  END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.

AGGREGATE /BREAK=x .
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/aggregate.at:244: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:244"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/aggregate.at:244"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_392
#AT_START_393
at_fn_group_banner 393 'aggregate.at:248' \
  "AGGREGATE mode=addvariables" "                    " 30
at_xfail=no
(
  printf "%s\n" "393. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >addvariables.sps <<'_ATEOF'
data list notable list /x * cn * y *.
begin data.
1 1 2
3 2 3
3 3 4
5 4 6
7 5 8
7 6 9
7 7 20
9 8 11
end data.

aggregate outfile=* mode=addvariables
	/break = x
	/sum = sum(y)
	/mean = mean (y)
	/median = median (y).

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/aggregate.at:271: pspp -O format=csv addvariables.sps"
at_fn_check_prepare_trace "aggregate.at:271"
( $at_check_trace; pspp -O format=csv addvariables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,cn,y,sum,mean,median
1.00,1.00,2.00,2.00,2.00,2.00
3.00,2.00,3.00,7.00,3.50,3.50
3.00,3.00,4.00,7.00,3.50,3.50
5.00,4.00,6.00,6.00,6.00,6.00
7.00,5.00,8.00,37.00,12.33,9.00
7.00,6.00,9.00,37.00,12.33,9.00
7.00,7.00,20.00,37.00,12.33,9.00
9.00,8.00,11.00,11.00,11.00,11.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:271"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_393
#AT_START_394
at_fn_group_banner 394 'aggregate.at:286' \
  "AGGREGATE duplicate variable errors" "            " 30
at_xfail=no
(
  printf "%s\n" "394. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='aggregate.sps' ERROR=IGNORE.
_ATEOF

cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x.
AGGREGATE OUTFILE=* /BREAK=x /x=N.
AGGREGATE OUTFILE=* MODE=ADDVARIABLES /x=N.
AGGREGATE OUTFILE=* MODE=ADDVARIABLES /y=N /y=N.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/aggregate.at:296: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "aggregate.at:296"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:2.31: error: AGGREGATE: Variable name x duplicates the name of a break variable.
    2 | AGGREGATE OUTFILE=* /BREAK=x /x=N.
      |                               ^\"

\"aggregate.sps:3.40: error: AGGREGATE: Variable name x duplicates the name of a variable in the active file dictionary.
    3 | AGGREGATE OUTFILE=* MODE=ADDVARIABLES /x=N.
      |                                        ^\"

\"aggregate.sps:4.45: error: AGGREGATE: Duplicate target variable name y.
    4 | AGGREGATE OUTFILE=* MODE=ADDVARIABLES /y=N /y=N.
      |                                             ^\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/aggregate.at:296"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_394
#AT_START_395
at_fn_group_banner 395 'aggregate.at:311' \
  "AGGREGATE presorted warnings" "                   " 30
at_xfail=no
(
  printf "%s\n" "395. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='aggregate.sps' ERROR=IGNORE.
_ATEOF

cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x.
AGGREGATE/PRESORTED/BREAK=x(A).
AGGREGATE/BREAK=x(A).
AGGREGATE/OUTFILE=* MODE=ADDVARIABLES/BREAK=x(A).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/aggregate.at:321: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "aggregate.at:321"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:2.27-2.30: warning: AGGREGATE: When the input data is presorted, specifying sorting directions with (A) or (D) has no effect.  Output data will be sorted the same way as the input data.
    2 | AGGREGATE/PRESORTED/BREAK=x(A).
      |                           ^~~~\"

\"aggregate.sps:2.11-2.19: note: AGGREGATE: The PRESORTED subcommand states that the input data is presorted.
    2 | AGGREGATE/PRESORTED/BREAK=x(A).
      |           ^~~~~~~~~\"

\"aggregate.sps:2.31: error: AGGREGATE: Syntax error expecting \`/'.
    2 | AGGREGATE/PRESORTED/BREAK=x(A).
      |                               ^\"

\"aggregate.sps:3.17-3.20: warning: AGGREGATE: When the input data is presorted, specifying sorting directions with (A) or (D) has no effect.  Output data will be sorted the same way as the input data.
    3 | AGGREGATE/BREAK=x(A).
      |                 ^~~~\"

aggregate.sps:3: note: AGGREGATE: The input data must be presorted because the OUTFILE subcommand is not specified.

\"aggregate.sps:3.21: error: AGGREGATE: Syntax error expecting \`/'.
    3 | AGGREGATE/BREAK=x(A).
      |                     ^\"

\"aggregate.sps:4.45-4.48: warning: AGGREGATE: When the input data is presorted, specifying sorting directions with (A) or (D) has no effect.  Output data will be sorted the same way as the input data.
    4 | AGGREGATE/OUTFILE=* MODE=ADDVARIABLES/BREAK=x(A).
      |                                             ^~~~\"

\"aggregate.sps:4.26-4.37: note: AGGREGATE: ADDVARIABLES implies that the input data is presorted.
    4 | AGGREGATE/OUTFILE=* MODE=ADDVARIABLES/BREAK=x(A).
      |                          ^~~~~~~~~~~~\"

\"aggregate.sps:4.49: error: AGGREGATE: Syntax error expecting \`/'.
    4 | AGGREGATE/OUTFILE=* MODE=ADDVARIABLES/BREAK=x(A).
      |                                                 ^\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/aggregate.at:321"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_395
#AT_START_396
at_fn_group_banner 396 'aggregate.at:358' \
  "AGGREGATE - subcommand syntax errors" "           " 30
at_xfail=no
(
  printf "%s\n" "396. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='aggregate.sps' ERROR=IGNORE.
_ATEOF

cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x.
AGGREGATE OUTFILE=**.
AGGREGATE OUTFILE=* MODE=**.
AGGREGATE /MISSING=**.
AGGREGATE /BREAK=**.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/aggregate.at:369: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "aggregate.at:369"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:2.19-2.20: error: AGGREGATE: Syntax error expecting a file name or handle name.
    2 | AGGREGATE OUTFILE=**.
      |                   ^~\"

\"aggregate.sps:3.26-3.27: error: AGGREGATE: Syntax error expecting ADDVARIABLES or REPLACE.
    3 | AGGREGATE OUTFILE=* MODE=**.
      |                          ^~\"

\"aggregate.sps:4.20-4.21: error: AGGREGATE: Syntax error expecting COLUMNWISE.
    4 | AGGREGATE /MISSING=**.
      |                    ^~\"

\"aggregate.sps:5.18-5.19: error: AGGREGATE: Syntax error expecting variable name.
    5 | AGGREGATE /BREAK=**.
      |                  ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/aggregate.at:369"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_396
#AT_START_397
at_fn_group_banner 397 'aggregate.at:388' \
  "AGGREGATE - aggregation function syntax errors" " " 30
at_xfail=no
(
  printf "%s\n" "397. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='aggregate.sps' ERROR=IGNORE.
_ATEOF

cat >aggregate.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x (f8.2) s (a8).
AGGREGATE **.
AGGREGATE / **.
AGGREGATE /y.
AGGREGATE /y=**.
AGGREGATE /y=xyzzy.
AGGREGATE /y=mean.
AGGREGATE /y=mean(**).
AGGREGATE /y=fgt(x **).
AGGREGATE /y=fgt(x 'xyzzy').
AGGREGATE /y=fgt(s 1).
AGGREGATE /y=fgt(s x).
AGGREGATE /y=sum(s).
AGGREGATE /y=sum(x. /* )
AGGREGATE /y=min(x, s).
AGGREGATE /y t=min(x).
AGGREGATE /y=pin(x, 2, 1).
AGGREGATE /y=mean(x)**.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/aggregate.at:412: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "aggregate.at:412"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"aggregate.sps:2.11-2.12: error: AGGREGATE: Syntax error expecting \`/'.
    2 | AGGREGATE **.
      |           ^~\"

\"aggregate.sps:3.13-3.14: error: AGGREGATE: Syntax error expecting variable name.
    3 | AGGREGATE / **.
      |             ^~\"

\"aggregate.sps:4.13: error: AGGREGATE: Syntax error expecting variable name.
    4 | AGGREGATE /y.
      |             ^\"

\"aggregate.sps:5.14-5.15: error: AGGREGATE: Syntax error expecting aggregation function.
    5 | AGGREGATE /y=**.
      |              ^~\"

\"aggregate.sps:6.14-6.18: error: AGGREGATE: Unknown aggregation function xyzzy.
    6 | AGGREGATE /y=xyzzy.
      |              ^~~~~\"

\"aggregate.sps:7.18: error: AGGREGATE: Syntax error expecting \`('.
    7 | AGGREGATE /y=mean.
      |                  ^\"

\"aggregate.sps:8.19-8.20: error: AGGREGATE: Syntax error expecting variable name.
    8 | AGGREGATE /y=mean(**).
      |                   ^~\"

\"aggregate.sps:9.20-9.21: error: AGGREGATE: Missing argument 1 to FGT.
    9 | AGGREGATE /y=fgt(x **).
      |                    ^~\"

aggregate.sps:10: error: AGGREGATE: Arguments to FGT must be of same type as source variables.

\"aggregate.sps:10.20-10.26: note: AGGREGATE: The argument is a string.
   10 | AGGREGATE /y=fgt(x 'xyzzy').
      |                    ^~~~~~~\"

\"aggregate.sps:10.18: note: AGGREGATE: The variables are numeric.
   10 | AGGREGATE /y=fgt(x 'xyzzy').
      |                  ^\"

aggregate.sps:11: error: AGGREGATE: Arguments to FGT must be of same type as source variables.

\"aggregate.sps:11.20: note: AGGREGATE: The argument is numeric.
   11 | AGGREGATE /y=fgt(s 1).
      |                    ^\"

\"aggregate.sps:11.18: note: AGGREGATE: The variables have string type.
   11 | AGGREGATE /y=fgt(s 1).
      |                  ^\"

\"aggregate.sps:12.20: error: AGGREGATE: s and x are not the same type.  All variables in this variable list must be of the same type.  x will be omitted from the list.
   12 | AGGREGATE /y=fgt(s x).
      |                    ^\"

\"aggregate.sps:12.21: error: AGGREGATE: Missing argument 1 to FGT.
   12 | AGGREGATE /y=fgt(s x).
      |                     ^\"

\"aggregate.sps:13.18: warning: AGGREGATE: s is not a numeric variable.  It will not be included in the variable list.
   13 | AGGREGATE /y=sum(s).
      |                  ^\"

\"aggregate.sps:14.19: error: AGGREGATE: Syntax error expecting \`)'.
   14 | AGGREGATE /y=sum(x. /* )
      |                   ^\"

aggregate.sps:15: error: AGGREGATE: Number of source variables (2) does not match number of target variables (1).

\"aggregate.sps:15.18-15.21: note: AGGREGATE: These are the source variables.
   15 | AGGREGATE /y=min(x, s).
      |                  ^~~~\"

\"aggregate.sps:15.12: note: AGGREGATE: These are the target variables.
   15 | AGGREGATE /y=min(x, s).
      |            ^\"

aggregate.sps:16: error: AGGREGATE: Number of source variables (1) does not match number of target variables (2).

\"aggregate.sps:16.20: note: AGGREGATE: These are the source variables.
   16 | AGGREGATE /y t=min(x).
      |                    ^\"

\"aggregate.sps:16.12-16.14: note: AGGREGATE: These are the target variables.
   16 | AGGREGATE /y t=min(x).
      |            ^~~\"

\"aggregate.sps:17.21-17.24: warning: AGGREGATE: The value arguments passed to the PIN function are out of order.  They will be treated as if they had been specified in the correct order.
   17 | AGGREGATE /y=pin(x, 2, 1).
      |                     ^~~~\"

\"aggregate.sps:18.1-18.9: error: AGGREGATE: Syntax error expecting \`BEGIN DATA'.
   18 | AGGREGATE /y=mean(x)**.
      | ^~~~~~~~~\"

\"aggregate.sps:18.1-18.9: error: AGGREGATE: Syntax error expecting end of command.
   18 | AGGREGATE /y=mean(x)**.
      | ^~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/aggregate.at:412"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_397
#AT_START_398
at_fn_group_banner 398 'aggregate.at:515' \
  "AGGREGATE - temporary transformations" "          " 30
at_xfail=no
(
  printf "%s\n" "398. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >aggregate.sps <<'_ATEOF'
DATA LIST FREE /quakes (F2.0).
BEGIN DATA
1 2 3 4 5 6 7 8 9 10
END DATA.
TEMPORARY.
SELECT IF quakes GT 5.
AGGREGATE OUTFILE = *  /nrecs=NU.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/aggregate.at:526: pspp -O format=csv aggregate.sps"
at_fn_check_prepare_trace "aggregate.at:526"
( $at_check_trace; pspp -O format=csv aggregate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
nrecs
5
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/aggregate.at:526"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_398
#AT_START_399
at_fn_group_banner 399 'apply.at:19' \
  "APPLY DICTIONARY" "                               " 31
at_xfail=no
(
  printf "%s\n" "399. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >apply-dict.sps <<'_ATEOF'
data list notable list /foo (TIME22.0) bar (a22).
begin data
end data.
Variable label foo "This is a label".
save outfile='ugg.sav'.

new file.
data list notable list /foo bar *.
begin data
end data.
display dictionary.
apply dictionary from = 'ugg.sav'.
display dictionary.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/apply.at:36: pspp -O format=csv apply-dict.sps"
at_fn_check_prepare_trace "apply.at:36"
( $at_check_trace; pspp -O format=csv apply-dict.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
foo,1,Nominal,Input,8,Right,F8.2,F8.2
bar,2,Nominal,Input,8,Right,F8.2,F8.2

\"apply-dict.sps:12: warning: APPLY DICTIONARY: Variable bar is numeric in target file, but string in source file.\"

Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format
foo,1,This is a label,Nominal,Input,8,Right,TIME22.0,TIME22.0
bar,2,,Nominal,Input,8,Right,F8.2,F8.2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/apply.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_399
#AT_START_400
at_fn_group_banner 400 'attributes.at:19' \
  "VARIABLE ATTRIBUTES and DATAFILE ATTRIBUTES" "    " 32
at_xfail=no
(
  printf "%s\n" "400. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >save-attrs.pspp <<'_ATEOF'
DATA LIST FREE/a b c.
BEGIN DATA.
1 2 3
END DATA.

DATAFILE ATTRIBUTE
	ATTRIBUTE=key('value')
                  array('array element 1')
                  Array[2]('array element 2').
VARIABLE ATTRIBUTE
        VARIABLES=a b
        ATTRIBUTE=ValidationRule[2]("a + b > 2")
                  ValidationRule[1]('a * b > 3')
       /VARIABLES=c
        ATTRIBUTE=QuestionWording('X or Y?').
DISPLAY ATTRIBUTES.

SAVE OUTFILE='attributes.sav'.
_ATEOF

cat >get-attrs.pspp <<'_ATEOF'
GET FILE='attributes.sav'.

DATAFILE ATTRIBUTE
         DELETE=Array[1] Array[2].
VARIABLE ATTRIBUTE
         VARIABLES=a
         DELETE=ValidationRule
        /VARIABLE=b
         DELETE=validationrule[2].

DISPLAY ATTRIBUTES.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/attributes.at:53: pspp -O format=csv save-attrs.pspp"
at_fn_check_prepare_trace "attributes.at:53"
( $at_check_trace; pspp -O format=csv save-attrs.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variable and Dataset Attributes
Variable and Name,,Value
(dataset),array[1],array element 1
,array[2],array element 2
,key,value
a,ValidationRule[1],a * b > 3
,ValidationRule[2],a + b > 2
b,ValidationRule[1],a * b > 3
,ValidationRule[2],a + b > 2
c,QuestionWording,X or Y?
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/attributes.at:53"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/attributes.at:65: pspp -O format=csv get-attrs.pspp"
at_fn_check_prepare_trace "attributes.at:65"
( $at_check_trace; pspp -O format=csv get-attrs.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variable and Dataset Attributes
Variable and Name,,Value
(dataset),array,array element 2
,key,value
b,ValidationRule,a * b > 3
c,QuestionWording,X or Y?
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/attributes.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_400
#AT_START_401
at_fn_group_banner 401 'autorecode.at:19' \
  "AUTORECODE multiple missing values" "             " 33
at_xfail=no
(
  printf "%s\n" "401. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >autorecode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /u v w x y z (F2.0).
BEGIN DATA.
11 11 11 11 11 11
12 12 12 12 12 12
13 13 13 13 13 13
14 14 14 14 14 14
15 15 15 15 15 15
16 16 16 16 16 16
END DATA.

MISSING VALUES u (11)
	       v (11, 12)
               w (11, 12, 13)
	       x (11 THRU 14)
	       y (11 THRU 15)
	       z (11 THRU 16).

AUTORECODE u v w x y z INTO a b c d e f/print.
LIST.
DISPLAY VARIABLES/VARIABLES=a TO f.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:42: pspp -O format=csv autorecode.sps"
at_fn_check_prepare_trace "autorecode.at:42"
( $at_check_trace; pspp -O format=csv autorecode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Recoding u into a.
Old Value,New Value,Value Label
12,1,12
13,2,13
14,3,14
15,4,15
16,5,16
11,6,11

Table: Recoding v into b.
Old Value,New Value,Value Label
13,1,13
14,2,14
15,3,15
16,4,16
11,5,11
12,6,12

Table: Recoding w into c.
Old Value,New Value,Value Label
14,1,14
15,2,15
16,3,16
11,4,11
12,5,12
13,6,13

Table: Recoding x into d.
Old Value,New Value,Value Label
15,1,15
16,2,16
11,3,11
12,4,12
13,5,13
14,6,14

Table: Recoding y into e.
Old Value,New Value,Value Label
16,1,16
11,2,11
12,3,12
13,4,13
14,5,14
15,6,15

Table: Recoding z into f.
Old Value,New Value,Value Label
11,1,11
12,2,12
13,3,13
14,4,14
15,5,15
16,6,16

Table: Data List
u,v,w,x,y,z,a,b,c,d,e,f
11,11,11,11,11,11,6,5,4,3,2,1
12,12,12,12,12,12,1,6,5,4,3,2
13,13,13,13,13,13,2,1,6,5,4,3
14,14,14,14,14,14,3,2,1,6,5,4
15,15,15,15,15,15,4,3,2,1,6,5
16,16,16,16,16,16,5,4,3,2,1,6

Table: Variables
Name,Position,Print Format,Write Format,Missing Values
a,7,F1.0,F1.0,6
b,8,F1.0,F1.0,5; 6
c,9,F1.0,F1.0,4; 5; 6
d,10,F1.0,F1.0,3 THRU 6
e,11,F1.0,F1.0,2 THRU 6
f,12,F1.0,F1.0,1 THRU 6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_401
#AT_START_402
at_fn_group_banner 402 'autorecode.at:117' \
  "AUTORECODE numbers and short strings" "           " 33
at_xfail=no
(
  printf "%s\n" "402. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >autorecode.sps <<'_ATEOF'
data list /X 1-5(a) Y 7.
begin data.
lasdj 1
asdfk 0
asdfj 2
asdfj 1
asdfk 2
asdfj 9
lajks 9
asdfk 0
asdfk 1
end data.

missing values x('asdfk') y(9).

autorecode x y into A B/descend/print.

list.
compute Z=trunc(y/2).
formats z(F1.0).
autorecode z into W.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:142: pspp -O format=csv autorecode.sps"
at_fn_check_prepare_trace "autorecode.at:142"
( $at_check_trace; pspp -O format=csv autorecode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
X,1,1-5,A5
Y,1,7-7,F1.0

Table: Recoding X into A.
Old Value,New Value,Value Label
lasdj,1,lasdj
lajks,2,lajks
asdfj,3,asdfj
asdfk,4,asdfk

Table: Recoding Y into B.
Old Value,New Value,Value Label
2,1,2
1,2,1
0,3,0
9,4,9

Table: Data List
X,Y,A,B
lasdj,1,1,2
asdfk,0,4,3
asdfj,2,3,1
asdfj,1,3,2
asdfk,2,4,1
asdfj,9,3,4
lajks,9,2,4
asdfk,0,4,3
asdfk,1,4,2

Table: Data List
X,Y,A,B,Z,W
lasdj,1,1,2,0,1
asdfk,0,4,3,0,1
asdfj,2,3,1,1,2
asdfj,1,3,2,0,1
asdfk,2,4,1,1,2
asdfj,9,3,4,.,.
lajks,9,2,4,.,.
asdfk,0,4,3,0,1
asdfk,1,4,2,0,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:142"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_402
#AT_START_403
at_fn_group_banner 403 'autorecode.at:188' \
  "AUTORECODE long strings and check the value labels" "" 33
at_xfail=no
(
  printf "%s\n" "403. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ar.sps <<'_ATEOF'
data list notable list /s (a16) x (f1.0).
begin data.
widgets      1
thingummies  2
oojars       3
widgets      4
oojars       5
thingummies  6
oojimiflips  7
end data.

variable labels s 'tracking my stuff'.
value labels /s 'thingummies' 'Funny sticky things'.

autorecode s into new/print.

list.

display dictionary/variables=new.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:211: pspp -O format=csv ar.sps"
at_fn_check_prepare_trace "autorecode.at:211"
( $at_check_trace; pspp -O format=csv ar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Recoding s into new (tracking my stuff).
Old Value,New Value,Value Label
oojars,1,oojars
oojimiflips,2,oojimiflips
thingummies,3,Funny sticky things
widgets,4,widgets

Table: Data List
s,x,new
widgets,1,4
thingummies,2,3
oojars,3,1
widgets,4,4
oojars,5,1
thingummies,6,3
oojimiflips,7,2

Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format
new,3,tracking my stuff,Nominal,Input,8,Right,F1.0,F1.0

Table: Value Labels
Variable Value,,Label
tracking my stuff,1,oojars
,2,oojimiflips
,3,Funny sticky things
,4,widgets
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:211"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_403
#AT_START_404
at_fn_group_banner 404 'autorecode.at:244' \
  "AUTORECODE group subcommand" "                    " 33
at_xfail=no
(
  printf "%s\n" "404. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ar-group.sps <<'_ATEOF'
data list notable list /x y (f8.0).
begin data.
11 10
12 12
13 15
14 11
15 12
16 18
end data.

missing values y (12).

autorecode
	x y into a b
	/group
	/print.

list.
display variables /variables=a b.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:267: pspp -O format=csv ar-group.sps"
at_fn_check_prepare_trace "autorecode.at:267"
( $at_check_trace; pspp -O format=csv ar-group.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Recoding grouped variables.
Old Value,New Value,Value Label
10,1,10
11,2,11
13,3,13
14,4,14
15,5,15
16,6,16
18,7,18
12,8,12

Table: Data List
x,y,a,b
11,10,2,1
12,12,8,8
13,15,3,5
14,11,4,2
15,12,5,8
16,18,6,7

Table: Variables
Name,Position,Print Format,Write Format,Missing Values
a,3,F1.0,F1.0,8
b,4,F1.0,F1.0,8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:267"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_404
#AT_START_405
at_fn_group_banner 405 'autorecode.at:298' \
  "AUTORECODE group - string variables" "            " 33
at_xfail=no
(
  printf "%s\n" "405. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >strings.sps <<'_ATEOF'
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
	/print.

delete variables x y.

list.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:320: pspp -O format=csv strings.sps"
at_fn_check_prepare_trace "autorecode.at:320"
( $at_check_trace; pspp -O format=csv strings.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Recoding grouped variables.
Old Value,New Value,Value Label
,1,
bert,2,bert
charlie,3,charlie
delta,4,delta
echo,5,echo
fred,6,fred
nothing,7,nothing
windows,8,windows

Table: Data List
a,b
6,2
3,1
4,5
1,8
1,7
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:320"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_405
#AT_START_406
at_fn_group_banner 406 'autorecode.at:346' \
  "AUTORECODE group vs. strings" "                   " 33
at_xfail=no
(
  printf "%s\n" "406. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ar-strings.sps <<'_ATEOF'
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
	/print.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:363: pspp -O format=csv ar-strings.sps"
at_fn_check_prepare_trace "autorecode.at:363"
( $at_check_trace; pspp -O format=csv ar-strings.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Recoding grouped variables.
Old Value,New Value,Value Label
eleven,1,eleven
four,2,four
nine,3,nine
nought,4,nought
one,5,one
ten,6,ten
three,7,three
two,8,two

Table: Data List
a,b,x,y
one,nine,5,3
two,ten,8,6
three,eleven,7,1
four,nought,2,4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:363"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_406
#AT_START_407
at_fn_group_banner 407 'autorecode.at:387' \
  "AUTORECODE /blank" "                              " 33
at_xfail=no
(
  printf "%s\n" "407. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >auto-blank.sps <<'_ATEOF'
data list notable list /x (a8) y (f8.0) z (a16).
begin data.
one   2  fred
two   4  ""
""    4  fred
""    2  charliebrown
three 2  charliebrown
end data.

autorecode variables x y z into a b c  /blank=missing /print.

list a b c y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:404: pspp -O format=csv auto-blank.sps"
at_fn_check_prepare_trace "autorecode.at:404"
( $at_check_trace; pspp -O format=csv auto-blank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Recoding x into a.
Old Value,New Value,Value Label
one,1,one
three,2,three
two,3,two

Table: Recoding y into b.
Old Value,New Value,Value Label
2,1,2
4,2,4

Table: Recoding z into c.
Old Value,New Value,Value Label
charliebrown,1,charliebrown
fred,2,fred

Table: Data List
a,b,c,y
1,1,2,2
3,2,.,4
.,2,2,4
.,1,1,2
2,1,1,2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:404"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_407
#AT_START_408
at_fn_group_banner 408 'autorecode.at:434' \
  "AUTORECODE with TEMPORARY" "                      " 33
at_xfail=no
(
  printf "%s\n" "408. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >autorecode.sps <<'_ATEOF'
data list /X 1-5(a) Y 7.
begin data.
lasdj 1
asdfk 0
asdfj 2
asdfj 1
asdfk 2
asdfj 9
lajks 9
asdfk 0
asdfk 1
end data.

temporary.
select if y > 1.
autorecode x y into A B/descend/print.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:454: pspp -O format=csv autorecode.sps"
at_fn_check_prepare_trace "autorecode.at:454"
( $at_check_trace; pspp -O format=csv autorecode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
X,1,1-5,A5
Y,1,7-7,F1.0

\"autorecode.sps:16.1-16.10: warning: AUTORECODE: AUTORECODE ignores TEMPORARY.  Temporary transformations will be made permanent.
   16 | autorecode x y into A B/descend/print.
      | ^~~~~~~~~~\"

Table: Recoding X into A.
Old Value,New Value,Value Label
lajks,1,lajks
asdfk,2,asdfk
asdfj,3,asdfj

Table: Recoding Y into B.
Old Value,New Value,Value Label
9,1,9
2,2,2

Table: Data List
X,Y,A,B
asdfj,2,3,2
asdfk,2,2,2
asdfj,9,3,1
lajks,9,1,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:454"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_408
#AT_START_409
at_fn_group_banner 409 'autorecode.at:488' \
  "AUTORECODE with scratch variables" "              " 33
at_xfail=no
(
  printf "%s\n" "409. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >autorecode.sps <<'_ATEOF'
data list /X0 1-5(a) Y0 7.
begin data.
lasdj 1
asdfk 0
asdfj 2
asdfj 1
asdfk 2
asdfj 9
lajks 9
asdfk 0
asdfk 1
end data.
compute #foo = 0.
compute #bar = 1.
compute #baz = 2.
compute #quux = 3.
string X(a5).
numeric Y(f1.0).
compute x = x0.
compute y = y0.
autorecode x y into A B/descend/print.
list x y a b.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:513: pspp -O format=csv autorecode.sps"
at_fn_check_prepare_trace "autorecode.at:513"
( $at_check_trace; pspp -O format=csv autorecode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
X0,1,1-5,A5
Y0,1,7-7,F1.0

Table: Recoding X into A.
Old Value,New Value,Value Label
lasdj,1,lasdj
lajks,2,lajks
asdfk,3,asdfk
asdfj,4,asdfj

Table: Recoding Y into B.
Old Value,New Value,Value Label
9,1,9
2,2,2
1,3,1
0,4,0

Table: Data List
X,Y,A,B
lasdj,1,1,3
asdfk,0,3,4
asdfj,2,4,2
asdfj,1,4,3
asdfk,2,3,2
asdfj,9,4,1
lajks,9,2,1
asdfk,0,3,4
asdfk,1,3,3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:513"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_409
#AT_START_410
at_fn_group_banner 410 'autorecode.at:549' \
  "AUTORECODE with /INTO" "                          " 33
at_xfail=no
(
  printf "%s\n" "410. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >autorecode.sps <<'_ATEOF'
data list list notable /x (f8.0).
begin data.
1
8
-901
4
1
99
8
end data.

autorecode x  /into y /print.

list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:566: pspp -O format=csv autorecode.sps"
at_fn_check_prepare_trace "autorecode.at:566"
( $at_check_trace; pspp -O format=csv autorecode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Recoding x into y.
Old Value,New Value,Value Label
-901,1,-901
1,2,1
4,3,4
8,4,8
99,5,99

Table: Data List
x,y
1,2
8,4
-901,1
4,3
1,2
99,5
8,4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/autorecode.at:566"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_410
#AT_START_411
at_fn_group_banner 411 'autorecode.at:588' \
  "AUTORECODE with /BLANK without specifier" "       " 33
at_xfail=no
(
  printf "%s\n" "411. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >autorecode.sps <<'_ATEOF'
data list notable list /x (a18).
begin data
one
two
three
end data.

* /BLANK should be either =MISSING or =VALID
autorecode x /into y
 /blank

execute.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/autorecode.at:604: pspp -O format=csv autorecode.sps"
at_fn_check_prepare_trace "autorecode.at:604"
( $at_check_trace; pspp -O format=csv autorecode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/autorecode.at:604"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_411
#AT_START_412
at_fn_group_banner 412 'cache.at:19' \
  "CACHE" "                                          " 34
at_xfail=no
(
  printf "%s\n" "412. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >cache.sps <<'_ATEOF'
CACHE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/cache.at:23: pspp -O format=csv cache.sps"
at_fn_check_prepare_trace "cache.at:23"
( $at_check_trace; pspp -O format=csv cache.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/cache.at:23"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_412
#AT_START_413
at_fn_group_banner 413 'cd.at:19' \
  "CD" "                                             " 35
at_xfail=no
(
  printf "%s\n" "413. $at_setup_line: testing $at_desc ..."
  $at_traceon

mkdir subdir
cat >cd.sps <<'_ATEOF'
cd 'subdir'.
host command=['pwd > mydir'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/cd.at:25: pspp -O format=csv cd.sps"
at_fn_check_prepare_trace "cd.at:25"
( $at_check_trace; pspp -O format=csv cd.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/cd.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/cd.at:27: sed 's,.*/,,' subdir/mydir"
at_fn_check_prepare_trace "cd.at:27"
( $at_check_trace; sed 's,.*/,,' subdir/mydir
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "subdir
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/cd.at:27"
$at_failed && at_fn_log_failure  \
"subdir/mydir"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_413
#AT_START_414
at_fn_group_banner 414 'compute.at:19' \
  "COMPUTE crash with SAVE" "                        " 36
at_xfail=no
(
  printf "%s\n" "414. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >compute.sps <<'_ATEOF'
INPUT PROGRAM.
COMPUTE num = 3.
END FILE.
END INPUT PROGRAM.
EXECUTE.

SAVE outfile='temp.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/compute.at:29: pspp -O format=csv compute.sps"
at_fn_check_prepare_trace "compute.at:29"
( $at_check_trace; pspp -O format=csv compute.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/compute.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >list.sps <<'_ATEOF'
GET FILE='temp.sav'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/compute.at:34: pspp -O format=csv list.sps"
at_fn_check_prepare_trace "compute.at:34"
( $at_check_trace; pspp -O format=csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/compute.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_414
#AT_START_415
at_fn_group_banner 415 'compute.at:38' \
  "COMPUTE bug in long string UPCASE" "              " 36
at_xfail=no
(
  printf "%s\n" "415. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >compute.sps <<'_ATEOF'
DATA LIST LIST
 /A (A161)
 B (A3).

BEGIN DATA
abc   def
ghi   jkl
END DATA.

COMPUTE A=upcase(A).
EXECUTE.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/compute.at:53: pspp -O format=csv compute.sps"
at_fn_check_prepare_trace "compute.at:53"
( $at_check_trace; pspp -O format=csv compute.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
A,A161
B,A3

Table: Data List
A,B
ABC,def
GHI,jkl
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/compute.at:53"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_415
#AT_START_416
at_fn_group_banner 416 'compute.at:66' \
  "COMPUTE bug with long variable names" "           " 36
at_xfail=no
(
  printf "%s\n" "416. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >compute.sps <<'_ATEOF'
DATA LIST LIST /longVariablename * x *.
BEGIN DATA.
1 2
3 4
END DATA.


COMPUTE longvariableName=100-longvariablename.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/compute.at:79: pspp -O format=csv compute.sps"
at_fn_check_prepare_trace "compute.at:79"
( $at_check_trace; pspp -O format=csv compute.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
longVariablename,F8.0
x,F8.0

Table: Data List
longVariablename,x
99.00,2.00
97.00,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/compute.at:79"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_416
#AT_START_417
at_fn_group_banner 417 'compute.at:92' \
  "COMPUTE self-reference to new variable" "         " 36
at_xfail=no
(
  printf "%s\n" "417. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >compute.sps <<'_ATEOF'
DATA LIST /ITEM 1-3.
COMPUTE SUM=SUM+ITEM.
PRINT OUTFILE='compute-sum.out' /ITEM SUM.
LEAVE SUM
BEGIN DATA.
123
404
555
999
END DATA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/compute.at:105: pspp -O format=csv compute.sps"
at_fn_check_prepare_trace "compute.at:105"
( $at_check_trace; pspp -O format=csv compute.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
ITEM,1,1-3,F3.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/compute.at:105"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/compute.at:110: cat compute-sum.out"
at_fn_check_prepare_trace "compute.at:110"
( $at_check_trace; cat compute-sum.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 123   123.00 
 404   527.00 
 555  1082.00 
 999  2081.00 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/compute.at:110"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_417
#AT_START_418
at_fn_group_banner 418 'correlations.at:19' \
  "CORRELATIONS -- unweighted" "                     " 37
at_xfail=no
(
  printf "%s\n" "418. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >correlations.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/correlations.at:52: pspp -o pspp.csv -o pspp.txt correlations.sps"
at_fn_check_prepare_trace "correlations.at:52"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt correlations.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/correlations.at:53: cat pspp.csv"
at_fn_check_prepare_trace "correlations.at:53"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Correlations
,,foo,bar,wiz,bang
foo,Pearson Correlation,1.000,.802,.890[a],-.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[a],.519,1.000,-.344
,Sig. (2-tailed),.017,.291,,.505
bang,Pearson Correlation,-.308,.118,-.344,1.000
,Sig. (2-tailed),.553,.824,.505,
Footnote: a. Significant at .05 level

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[a],.883[a],-.308
,Sig. (2-tailed),,.029,.008,.553
,N,7,7,7,6
bar,Pearson Correlation,.805[a],1.000,.497,.164
,Sig. (2-tailed),.029,,.210,.725
,N,7,8,8,7
wiz,Pearson Correlation,.883[a],.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
Footnote: a. Significant at .05 level
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:53"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_418
#AT_START_419
at_fn_group_banner 419 'correlations.at:91' \
  "CORRELATIONS -- weighted" "                       " 37
at_xfail=no
(
  printf "%s\n" "419. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >correlations1.sps <<'_ATEOF'
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
	.
_ATEOF

cat >correlations2.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/correlations.at:133: pspp -O format=csv correlations1.sps"
at_fn_check_prepare_trace "correlations.at:133"
( $at_check_trace; pspp -O format=csv correlations1.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:133"
$at_failed && at_fn_log_failure
$at_traceon; }

mv stdout expout
{ set +x
printf "%s\n" "$at_srcdir/correlations.at:135: pspp -O format=csv correlations2.sps"
at_fn_check_prepare_trace "correlations.at:135"
( $at_check_trace; pspp -O format=csv correlations2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:135"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_419
#AT_START_420
at_fn_group_banner 420 'correlations.at:139' \
  "CORRELATIONS -- non-square" "                     " 37
at_xfail=no
(
  printf "%s\n" "420. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >corr-ns.sps <<'_ATEOF'
set format = F11.3.
data list notable list /foo * bar * wiz *.
begin data.
1 1 6
2 2 5
3 3 4
4 4 3
5 5 2
6 6 1
end data.

correlations
	variables = foo with bar wiz
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/correlations.at:157: pspp -O format=csv corr-ns.sps"
at_fn_check_prepare_trace "correlations.at:157"
( $at_check_trace; pspp -O format=csv corr-ns.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Correlations
,,bar,wiz
foo,Pearson Correlation,1.000,-1.000
,Sig. (2-tailed),.000,.000
,N,6,6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:157"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_420
#AT_START_421
at_fn_group_banner 421 'correlations.at:168' \
  "CORRELATIONS -- crash with WITH keyword" "        " 37
at_xfail=no
(
  printf "%s\n" "421. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >correlations.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /a b c d e f g h i.
.
BEGIN DATA.
20 21 17 28 23 4.35 24 19 25
28 18 29 30 23 4.55 17 23 28
47 18 30 30 29 4.35 26 31 31
20 7 19 22 22 4.80 24 16 27
19 12 17 27 22 . 22 14 25
22 9 19 30 33 5 29 30 27
41 16 22 32 23 3.90 26 27 23
18 18 20 26 22 5.80 17 20 39
18 24 25 25 31 5.15 27 27 34
19 22 26 23 37 6 41 32 27
23 12 15 29 25 4.10 21 27 20
21 4 28 37 31 5.65 27 18 42
19 5 17 17 29 3.10 19 16 19
21 17 20 35 31 . 28 30 22
END DATA.

CORRELATIONS VARIABLE=a f b WITH c g h i e d/STATISTICS=DESCRIPTIVES.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/correlations.at:191: pspp -o pspp.csv correlations.sps"
at_fn_check_prepare_trace "correlations.at:191"
( $at_check_trace; pspp -o pspp.csv correlations.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:191"
$at_failed && at_fn_log_failure
$at_traceon; }

# Check the output, ignoring the actual correlations values since
# they look pretty nonsensical to me for this input (they include NaNs).
{ set +x
printf "%s\n" "$at_srcdir/correlations.at:194: sed '/a,Pearson/,\$s/,\\([^,]*\\),.*/,\\1,.../' pspp.csv"
at_fn_check_prepare_dynamic "sed '/a,Pearson/,$s/,\\([^,]*\\),.*/,\\1,.../' pspp.csv" "correlations.at:194"
( $at_check_trace; sed '/a,Pearson/,$s/,\([^,]*\),.*/,\1,.../' pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,Mean,Std. Deviation,N
a,24.00,8.93,14
f,4.73,.85,12
b,14.50,6.41,14
c,21.71,4.98,14
g,24.86,6.09,14
h,23.57,6.30,14
i,27.79,6.73,14
e,27.21,4.95,14
d,27.93,5.23,14

Table: Correlations
,,c,g,h,i,e,d
a,Pearson Correlation,...
,Sig. (2-tailed),...
,N,...
f,Pearson Correlation,...
,Sig. (2-tailed),...
,N,...
b,Pearson Correlation,...
,Sig. (2-tailed),...
,N,...
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:194"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_421
#AT_START_422
at_fn_group_banner 422 'correlations.at:224' \
  "CORRELATIONS -- incorrect subtable selection" "   " 37
at_xfail=no
(
  printf "%s\n" "422. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >correlations.sps <<'_ATEOF'
set format = F12.4.
OUTPUT MODIFY /SELECT TABLES /TABLECELLS SELECT = [CORRELATIONS] FORMAT=F12.4.
set decimal = dot.
data list notable list /var1 var2 var3 var4 var5 *.
begin data.
7,6,9,2,3
9,12,8,5,8
8,9,7,8,6
8,8,9,10,8
7,6,4,5,3
7,9,8,2,1
9,8,11,,10
8,7,6,,5
6,7,6,,8
6,,3,,4
6,,7,3,3
5,4,2,7,8
9,8,6,11,10
5,6,2,2,4
8,7,6,8,7
10,13,8,12,10
7,8,7,11,2
8,7,7,9,6
10,11,11,8,1
5,8,6,9,9
8,7,5,5,6
5,7,2,1,8
9,8,8,13,6
5,8,5,6,4
,7,5,4,5
,8,4,4,3
,6,4,9,5
8,11,9,12,3
9,11,8,10,6
10,10,7,8,1
6,6,3,8,9
10,9,7,12,2
6,8,,7,4
6,8,3,2,9
7,8,8,2,9
5,6,5,5,5
9,9,7,7,5
9,10,11,7,8
8,11,9,3,3
5,4,4,0,5
9,9,11,14,2
5,6,2,4,4
8,8,7,4,1
9,9,8,14,
6,8,7,2,
10,9,9,6,
8,8,10,9,
7,8,4,12,
6,6,6,7,1
5,7,7,4,10
9,10,10,13,4
9,11,9,8,7
10,13,12,6,8
8,11,6,8,5
7,8,7,12,2
6,7,4,1,10
5,4,5,6,10
7,8,6,12,10
6,5,3,9,2
7,8,8,7,2
5,4,4,9,8
5,7,6,3,9
10,10,9,13,1
8,10,9,5,4
8,9,8,8,7
7,9,9,6,7
10,9,7,12,6
10,13,12,12,4
7,10,9,7,2
6,8,7,11,6
8,11,5,13,2
7,10,6,12,8
10,10,9,7,9
9,12,6,7,10
6,6,8,2,9
10,9,12,13,10
8,9,8,3,6
8,7,6,4,10
8,7,10,12,2
7,6,8,2,7
8,11,6,9,4
6,6,7,8,2
6,7,3,11,4
5,6,3,0,5
10,10,11,15,6
5,4,7,6,8
5,4,4,1,3
6,9,8,1,6
10,11,10,15,8
7,10,4,11,7
9,12,8,6,3
10,10,11,15,2
10,9,9,15,3
6,6,8,5,1
5,7,7,0,3
9,8,10,6,8
9,8,11,11,4
8,10,7,3,4
7,8,7,3,3
8,9,10,13,8
end data.

CORRELATION
	/VARIABLES =  var1 var2 var3 WITH var4 var5
	/PRINT = TWOTAIL NOSIG.

CORRELATION
	/VARIABLES =  var3 var4 var5 WITH var1 var2
	/PRINT = TWOTAIL NOSIG.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/correlations.at:343: pspp -o pspp.csv -o pspp.txt correlations.sps"
at_fn_check_prepare_trace "correlations.at:343"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt correlations.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:343"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/correlations.at:344: cat pspp.csv"
at_fn_check_prepare_trace "correlations.at:344"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Correlations
,,var4,var5
var1,Pearson Correlation,.5693[a],-.0519
,Sig. (2-tailed),.000,.623
,N,93,92
var2,Pearson Correlation,.3792[a],-.0407
,Sig. (2-tailed),.000,.698
,N,95,93
var3,Pearson Correlation,.3699[a],-.0543
,Sig. (2-tailed),.000,.603
,N,95,94
Footnote: a. Significant at .05 level

Table: Correlations
,,var1,var2
var3,Pearson Correlation,.6964[a],.5615[a]
,Sig. (2-tailed),.000,.000
,N,96,97
var4,Pearson Correlation,.5693[a],.3792[a]
,Sig. (2-tailed),.000,.000
,N,93,95
var5,Pearson Correlation,-.0519,-.0407
,Sig. (2-tailed),.623,.698
,N,92,93
Footnote: a. Significant at .05 level
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/correlations.at:344"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_422
#AT_START_423
at_fn_group_banner 423 'correlations.at:376' \
  "CORRELATIONS -- empty dataset" "                  " 37
at_xfail=no
(
  printf "%s\n" "423. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >correlations.sps <<'_ATEOF'
data list list /a b c q g *.
CORRELATIONS 'VARIABLES = a b.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/correlations.at:383: pspp -o pspp.csv correlations.sps"
at_fn_check_prepare_trace "correlations.at:383"
( $at_check_trace; pspp -o pspp.csv correlations.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/correlations.at:383"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_423
#AT_START_424
at_fn_group_banner 424 'correlations.at:388' \
  "CORRELATIONS -- empty dataset 2" "                " 37
at_xfail=no
(
  printf "%s\n" "424. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >correlations.sps <<'_ATEOF'
data list notable list /foo * bar * wiz bang *.
begin data.
 1     00      3           .
 3     9     -50           .
98    78     104           .
 .     4       4           .
 5     3       0           .
end data.

correlations
        variables = foo bar wiz bang
        /missing = listwise
        .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/correlations.at:406: pspp -O format=csv correlations.sps"
at_fn_check_prepare_trace "correlations.at:406"
( $at_check_trace; pspp -O format=csv correlations.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "correlations.sps:13: error: CORRELATIONS: The data for the chosen variables are all missing or empty.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/correlations.at:406"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_424
#AT_START_425
at_fn_group_banner 425 'correlations.at:412' \
  "CORRELATIONS -- syntax errors" "                  " 37
at_xfail=no
(
  printf "%s\n" "425. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >correlations.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
CORRELATIONS MISSING=**.
CORRELATIONS PRINT=**.
CORRELATIONS STATISTICS=**.
CORRELATIONS **.
CORRELATIONS x y z WITH **.
CORRELATIONS.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/correlations.at:422: pspp -O format=csv correlations.sps"
at_fn_check_prepare_trace "correlations.at:422"
( $at_check_trace; pspp -O format=csv correlations.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"correlations.sps:2.22-2.23: error: CORRELATIONS: Syntax error expecting PAIRWISE, LISTWISE, INCLUDE, or EXCLUDE.
    2 | CORRELATIONS MISSING=**.
      |                      ^~\"

\"correlations.sps:3.20-3.21: error: CORRELATIONS: Syntax error expecting TWOTAIL, ONETAIL, SIG, or NOSIG.
    3 | CORRELATIONS PRINT=**.
      |                    ^~\"

\"correlations.sps:4.25-4.26: error: CORRELATIONS: Syntax error expecting DESCRIPTIVES, XPROD, or ALL.
    4 | CORRELATIONS STATISTICS=**.
      |                         ^~\"

\"correlations.sps:5.14-5.15: error: CORRELATIONS: Syntax error expecting variable name.
    5 | CORRELATIONS **.
      |              ^~\"

\"correlations.sps:6.25-6.26: error: CORRELATIONS: Syntax error expecting variable name.
    6 | CORRELATIONS x y z WITH **.
      |                         ^~\"

\"correlations.sps:7.1-7.12: error: CORRELATIONS: No variables specified.
    7 | CORRELATIONS.
      | ^~~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/correlations.at:422"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_425
#AT_START_426
at_fn_group_banner 426 'count.at:19' \
  "COUNT -- numeric data" "                          " 38
at_xfail=no
(
  printf "%s\n" "426. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >count.sps <<'_ATEOF'
DATA LIST LIST /x y.
BEGIN DATA.
1 2
2 3
4 5
2 2
5 6
7 2
. 2
END DATA.

MISSING VALUES x(7)/y(3).

COUNT c=x y (2)/d=x y(7)/e=x y(missing)/f=x y(sysmis).

FORMATS ALL(F1).

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/count.at:40: pspp -O format=csv count.sps"
at_fn_check_prepare_trace "count.at:40"
( $at_check_trace; pspp -O format=csv count.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0
y,F8.0

Table: Data List
x,y,c,d,e,f
1,2,1,0,0,0
2,3,1,0,1,0
4,5,0,0,0,0
2,2,2,0,0,0
5,6,0,0,0,0
7,2,1,1,1,0
.,2,1,0,1,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/count.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_426
#AT_START_427
at_fn_group_banner 427 'count.at:58' \
  "COUNT -- string data" "                           " 38
at_xfail=no
(
  printf "%s\n" "427. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >count.sps <<'_ATEOF'
TITLE 'Test COUNT transformation'.

DATA LIST /v1 to v2 1-4(a).
BEGIN DATA.
1234
321
2 13
4121
1104
03 4
0193
END DATA.
COUNT c=v1 to v2('2',' 4','1').
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/count.at:75: pspp -O format=csv count.sps"
at_fn_check_prepare_trace "count.at:75"
( $at_check_trace; pspp -O format=csv count.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
v1,1,1-2,A2
v2,1,3-4,A2

Table: Data List
v1,v2,c
12,34,.00
32,1,1.00
2,13,1.00
41,21,.00
11,04,.00
03,4,1.00
01,93,.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/count.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_427
#AT_START_428
at_fn_group_banner 428 'crosstabs.at:20' \
  "CROSSTABS residuals" "                            " 39
at_xfail=no
(
  printf "%s\n" "428. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATASET CLOSE ALL.
DATA LIST LIST NOTABLE/ r c n.
BEGIN DATA
1 1 26
1 2 31
2 1 12
2 2 32
3 1 27
3 2 18
4 1 8
4 2 7
END DATA.
WEIGHT by n.
CROSSTABS r by c /STATISTICS=CHISQ
/CELLS=COUNT EXPECTED RESID SRESID ASRESID.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:38: pspp -O format=csv crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:38"
( $at_check_trace; pspp -O format=csv crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
r × c,161.00,100.0%,.00,.0%,161.00,100.0%

Table: r × c
,,,c,,Total
,,,1.00,2.00,
r,1.00,Count,26.00,31.00,57.00
,,Expected,25.84,31.16,.35
,,Residual,.16,-.16,
,,Std. Residual,.03,-.03,
,,Adjusted Residual,.05,-.05,
,2.00,Count,12.00,32.00,44.00
,,Expected,19.95,24.05,.27
,,Residual,-7.95,7.95,
,,Std. Residual,-1.78,1.62,
,,Adjusted Residual,-2.82,2.82,
,3.00,Count,27.00,18.00,45.00
,,Expected,20.40,24.60,.28
,,Residual,6.60,-6.60,
,,Std. Residual,1.46,-1.33,
,,Adjusted Residual,2.33,-2.33,
,4.00,Count,8.00,7.00,15.00
,,Expected,6.80,8.20,.09
,,Residual,1.20,-1.20,
,,Std. Residual,.46,-.42,
,,Adjusted Residual,.65,-.65,
Total,,Count,73.00,88.00,161.00
,,Expected,.45,.55,1.00

Table: Chi-Square Tests
,Value,df,Asymptotic Sig. (2-tailed)
Pearson Chi-Square,10.09,3.00,.018
Likelihood Ratio,10.35,3.00,.016
Linear-by-Linear Association,1.96,1.00,.162
N of Valid Cases,161.00,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_428
#AT_START_429
at_fn_group_banner 429 'crosstabs.at:80' \
  "CROSSTABS integer mode crash" "                   " 39
at_xfail=no
(
  printf "%s\n" "429. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATA LIST LIST /A * B * X * Y * .
BEGIN DATA.
2 3 4 5
END DATA.

CROSSTABS VARIABLES X (1,7) Y (1,7) /TABLES X BY Y.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:89: pspp -o pspp.csv -o pspp.txt crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:89"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:89"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:90: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:90"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
A,F8.0
B,F8.0
X,F8.0
Y,F8.0

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
X × Y,1,100.0%,0,.0%,1,100.0%

Table: X × Y
,,,Y,,,,,,,Total
,,,1.00,2.00,3.00,4.00,5.00,6.00,7.00,
X,1.00,Count,0,0,0,0,0,0,0,0
,2.00,Count,0,0,0,0,0,0,0,0
,3.00,Count,0,0,0,0,0,0,0,0
,4.00,Count,0,0,0,0,1,0,0,1
,5.00,Count,0,0,0,0,0,0,0,0
,6.00,Count,0,0,0,0,0,0,0,0
,7.00,Count,0,0,0,0,0,0,0,0
Total,,Count,0,0,0,0,1,0,0,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:90"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_429
#AT_START_430
at_fn_group_banner 430 'crosstabs.at:119' \
  "CROSSTABS integer mode crash 2" "                 " 39
at_xfail=no
(
  printf "%s\n" "430. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATA LIST lIST /x y.
BEGIN DATA.
4 5
END DATA.

CROSSTABS
        VARIABLES x (1,3) y (1,7)
      /TABLES x BY y.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:130: pspp -O format=csv crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:130"
( $at_check_trace; pspp -O format=csv crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0
y,F8.0

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,0,.0%,1,100.0%,1,100.0%

Table: x × y
,,,y,,,,,,,Total
,,,1.00,2.00,3.00,4.00,5.00,6.00,7.00,
x,1.00,Count,,,,,,,,
,2.00,Count,,,,,,,,
,3.00,Count,,,,,,,,
Total,,Count,,,,,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:130"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_430
#AT_START_431
at_fn_group_banner 431 'crosstabs.at:153' \
  "CROSSTABS long string crash" "                    " 39
at_xfail=no
(
  printf "%s\n" "431. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
data list list /x * y (a18).

begin data.

   1. 'zero none'

1 'one unity'
2 'two duality'
3 'three lots'
end data.

CROSSTABS /TABLES = x BY y.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:168: pspp -o - -O format=csv -o pspp.txt crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:168"
( $at_check_trace; pspp -o - -O format=csv -o pspp.txt crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0
y,A18

\"crosstabs.sps:4: warning: Missing value(s) for all variables from x onward.  These will be filled with the system-missing value or blanks, as appropriate.\"

\"crosstabs.sps:6: warning: Missing value(s) for all variables from x onward.  These will be filled with the system-missing value or blanks, as appropriate.\"

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,4,66.7%,2,33.3%,6,100.0%

Table: x × y
,,,y,,,,Total
,,,one unity,three lots,two duality,zero none,
x,1.00,Count,1,0,0,1,2
,2.00,Count,0,0,1,0,1
,3.00,Count,0,1,0,0,1
Total,,Count,1,1,1,1,4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:168"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_431
#AT_START_432
at_fn_group_banner 432 'crosstabs.at:194' \
  "CROSSTABS crash" "                                " 39
at_xfail=no
(
  printf "%s\n" "432. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATA LIST FIXED
     / x   1-2
       y   3
       z   4.

BEGIN DATA.
0111
0222
0311
0412
0521
0612
0711
0811
0912
END DATA.

LIST.


CROSSTABS TABLES  y by z.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:218: pspp -o - -O format=csv -o pspp.txt crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:218"
( $at_check_trace; pspp -o - -O format=csv -o pspp.txt crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
x,1,1-2,F2.0
y,1,3-3,F1.0
z,1,4-4,F1.0

Table: Data List
x,y,z
1,1,1
2,2,2
3,1,1
4,1,2
5,2,1
6,1,2
7,1,1
8,1,1
9,1,2

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
y × z,9,100.0%,0,.0%,9,100.0%

Table: y × z
,,,z,,Total
,,,1,2,
y,1,Count,4,3,7
,2,Count,1,1,2
Total,,Count,5,4,9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:218"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_432
#AT_START_433
at_fn_group_banner 433 'crosstabs.at:254' \
  "CROSSTABS chi-square crash" "                     " 39
at_xfail=no
(
  printf "%s\n" "433. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATA LIST LIST /x * y *.
BEGIN DATA.
2 2
3 1
4 2
4 1
END DATA.

CROSSTABS
        /TABLES= x BY y
        /STATISTICS=CHISQ.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:268: pspp -O format=csv crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:268"
( $at_check_trace; pspp -O format=csv crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0
y,F8.0

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,4,100.0%,0,.0%,4,100.0%

Table: x × y
,,,y,,Total
,,,1.00,2.00,
x,2.00,Count,0,1,1
,3.00,Count,1,0,1
,4.00,Count,1,1,2
Total,,Count,2,2,4

Table: Chi-Square Tests
,Value,df,Asymptotic Sig. (2-tailed)
Pearson Chi-Square,2.00,2,.368
Likelihood Ratio,2.77,2,.250
Linear-by-Linear Association,.27,1,.602
N of Valid Cases,4,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_433
#AT_START_434
at_fn_group_banner 434 'crosstabs.at:298' \
  "CROSSTABS crash with SPLIT FILE" "                " 39
at_xfail=no
(
  printf "%s\n" "434. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
data list notable / v0 to v2 1-6 (A)
begin data.
a c e
a c e
a c e
a d e
a d f
b d f
b d f
b c f
b d e
a c f
end data.
SORT CASES BY v0.
SPLIT FILE SEPARATE BY v0.

CROSSTABS
    /TABLES= v1 BY v2
    /FORMAT=AVALUE TABLES
    /STATISTICS=CHISQ
    /CELLS=COUNT ROW COLUMN TOTAL.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:323: pspp -o pspp.csv -o pspp.txt crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:323"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:323"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:324: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:324"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
v0,a

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
v1 × v2,6,100.0%,0,.0%,6,100.0%

Table: v1 × v2
,,,v2,,Total
,,,e,f,
v1,c,Count,3,1,4
,,Row %,75.0%,25.0%,100.0%
,,Column %,75.0%,50.0%,66.7%
,,Total %,50.0%,16.7%,66.7%
,d,Count,1,1,2
,,Row %,50.0%,50.0%,100.0%
,,Column %,25.0%,50.0%,33.3%
,,Total %,16.7%,16.7%,33.3%
Total,,Count,4,2,6
,,Row %,66.7%,33.3%,100.0%
,,Column %,100.0%,100.0%,100.0%
,,Total %,66.7%,33.3%,100.0%

Table: Chi-Square Tests
,Value,df,Asymptotic Sig. (2-tailed),Exact Sig. (2-tailed),Exact Sig. (1-tailed)
Pearson Chi-Square,.38,1,.540,,
Likelihood Ratio,.37,1,.545,,
Fisher's Exact Test,,,,1.000,.600
Continuity Correction,.00,1,1.000,,
N of Valid Cases,6,,,,

Table: Split Values
Variable,Value
v0,b

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
v1 × v2,4,100.0%,0,.0%,4,100.0%

Table: v1 × v2
,,,v2,,Total
,,,e,f,
v1,c,Count,0,1,1
,,Row %,.0%,100.0%,100.0%
,,Column %,.0%,33.3%,25.0%
,,Total %,.0%,25.0%,25.0%
,d,Count,1,2,3
,,Row %,33.3%,66.7%,100.0%
,,Column %,100.0%,66.7%,75.0%
,,Total %,25.0%,50.0%,75.0%
Total,,Count,1,3,4
,,Row %,25.0%,75.0%,100.0%
,,Column %,100.0%,100.0%,100.0%
,,Total %,25.0%,75.0%,100.0%

Table: Chi-Square Tests
,Value,df,Asymptotic Sig. (2-tailed),Exact Sig. (2-tailed),Exact Sig. (1-tailed)
Pearson Chi-Square,.44,1,.505,,
Likelihood Ratio,.68,1,.410,,
Fisher's Exact Test,,,,1.000,.750
Continuity Correction,.00,1,1.000,,
N of Valid Cases,4,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:324"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_434
#AT_START_435
at_fn_group_banner 435 'crosstabs.at:396' \
  "3-way CROSSTABS" "                                " 39
at_xfail=no
(
  printf "%s\n" "435. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATA LIST FIXED
     / x   1-2
       y   3
       z   4.

BEGIN DATA.
0111
0222
0311
0412
0521
0612
0711
0811
0912
END DATA.

LIST.


CROSSTABS TABLES  x BY y BY z/STATISTICS=ALL.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:420: pspp -o - -O format=csv -o pspp.csv -o pspp.txt crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:420"
( $at_check_trace; pspp -o - -O format=csv -o pspp.csv -o pspp.txt crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
x,1,1-2,F2.0
y,1,3-3,F1.0
z,1,4-4,F1.0

Table: Data List
x,y,z
1,1,1
2,2,2
3,1,1
4,1,2
5,2,1
6,1,2
7,1,1
8,1,1
9,1,2

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y × z,9,100.0%,0,.0%,9,100.0%

Table: x × y × z
,,,,,y,,Total
,,,,,1,2,
z,1,x,1,Count,1,0,1
,,,3,Count,1,0,1
,,,5,Count,0,1,1
,,,7,Count,1,0,1
,,,8,Count,1,0,1
,,Total,,Count,4,1,5
,2,x,2,Count,0,1,1
,,,4,Count,1,0,1
,,,6,Count,1,0,1
,,,9,Count,1,0,1
,,Total,,Count,3,1,4

Table: Chi-Square Tests
,,,Value,df,Asymptotic Sig. (2-tailed)
z,1,Pearson Chi-Square,5.00,4,.287
,,Likelihood Ratio,5.00,4,.287
,,Linear-by-Linear Association,.01,1,.938
,,N of Valid Cases,5,,
,2,Pearson Chi-Square,4.00,3,.261
,,Likelihood Ratio,4.50,3,.212
,,Linear-by-Linear Association,1.58,1,.209
,,N of Valid Cases,4,,

Table: Symmetric Measures
,,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
z,1,Nominal by Nominal,Phi,1.00,,,
,,,Cramer's V,1.00,,,
,,,Contingency Coefficient,.71,,,
,,Ordinal by Ordinal,Kendall's tau-b,.00,.32,.00,
,,,Kendall's tau-c,.00,.32,.00,
,,,Gamma,.00,.50,.00,
,,,Spearman Correlation,.00,.22,.00,1.000
,,Interval by Interval,Pearson's R,.04,.22,.07,.950
,,N of Valid Cases,,5,,,
,2,Nominal by Nominal,Phi,1.00,,,
,,,Cramer's V,1.00,,,
,,,Contingency Coefficient,.71,,,
,,Ordinal by Ordinal,Kendall's tau-b,-.71,.20,-1.73,
,,,Kendall's tau-c,-.75,.43,-1.73,
,,,Gamma,-1.00,.00,-1.73,
,,,Spearman Correlation,-.77,.17,-1.73,.225
,,Interval by Interval,Pearson's R,-.73,.18,-1.49,.274
,,N of Valid Cases,,4,,,

Table: Directional Measures
,,,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
z,1,Nominal by Nominal,Lambda,Symmetric,.40,.28,1.12,.264
,,,,x Dependent,.25,.22,1.12,.264
,,,,y Dependent,1.00,.00,1.12,.264
,,,Goodman and Kruskal tau,x Dependent,.25,,,
,,,,y Dependent,1.00,,,
,,,Uncertainty Coefficient,Symmetric,.47,.18,,
,,,,x Dependent,.31,.15,2.02,
,,,,y Dependent,1.00,.00,2.02,
,,Ordinal by Ordinal,Somers' d,Symmetric,.00,,.00,1.000
,,,,x Dependent,.00,.50,.00,1.000
,,,,y Dependent,.00,.20,.00,1.000
,,Nominal by Interval,Eta,x Dependent,.04,,,
,,,,y Dependent,1.00,,,
,2,Nominal by Nominal,Lambda,Symmetric,.50,.25,2.00,.046
,,,,x Dependent,.33,.27,1.15,.248
,,,,y Dependent,1.00,.00,1.15,.248
,,,Goodman and Kruskal tau,x Dependent,.33,,,
,,,,y Dependent,1.00,,,
,,,Uncertainty Coefficient,Symmetric,.58,.17,,
,,,,x Dependent,.41,.17,2.36,
,,,,y Dependent,1.00,.00,2.36,
,,Ordinal by Ordinal,Somers' d,Symmetric,-.67,,-1.73,.083
,,,,x Dependent,-1.00,.00,-1.73,.083
,,,,y Dependent,-.50,.29,-1.73,.083
,,Nominal by Interval,Eta,x Dependent,.73,,,
,,,,y Dependent,1.00,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:420"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_435
#AT_START_436
at_fn_group_banner 436 'crosstabs.at:523' \
  "CROSSTABS rounding weights with COUNT" "          " 39
at_xfail=no
(
  printf "%s\n" "436. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x y w.
BEGIN DATA.
1 1 1.4
1 1 1.4
1 2 1.6
1 2 1.6
2 1 1
2 2 2
END DATA.
WEIGHT BY w.

* These should have the same effect (no rounding).
CROSSTABS /TABLES x BY y.
CROSSTABS /TABLES x BY y /COUNT ASIS.

* Round input weights.
CROSSTABS /TABLES x BY y /COUNT CASE ROUND.
CROSSTABS /TABLES x BY y /COUNT CASE TRUNCATE.

* Round cell weights.
CROSSTABS /TABLES x BY y /COUNT.
CROSSTABS /TABLES x BY y /COUNT TRUNCATE.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:549: pspp -o pspp.csv -o pspp.txt crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:549"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:549"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:550: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:550"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,9.00,100.0%,.00,.0%,9.00,100.0%

Table: x × y
,,,y,,Total
,,,1.00,2.00,
x,1.00,Count,2.80,3.20,6.00
,2.00,Count,1.00,2.00,3.00
Total,,Count,3.80,5.20,9.00

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,9.00,100.0%,.00,.0%,9.00,100.0%

Table: x × y
,,,y,,Total
,,,1.00,2.00,
x,1.00,Count,2.80,3.20,6.00
,2.00,Count,1.00,2.00,3.00
Total,,Count,3.80,5.20,9.00

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,9.00,100.0%,.00,.0%,9.00,100.0%

Table: x × y
,,,y,,Total
,,,1.00,2.00,
x,1.00,Count,2.00,4.00,6.00
,2.00,Count,1.00,2.00,3.00
Total,,Count,3.00,6.00,9.00

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,7.00,100.0%,.00,.0%,7.00,100.0%

Table: x × y
,,,y,,Total
,,,1.00,2.00,
x,1.00,Count,2.00,2.00,4.00
,2.00,Count,1.00,2.00,3.00
Total,,Count,3.00,4.00,7.00

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,9.00,100.0%,.00,.0%,9.00,100.0%

Table: x × y
,,,y,,Total
,,,1.00,2.00,
x,1.00,Count,3.00,3.00,6.00
,2.00,Count,1.00,2.00,3.00
Total,,Count,4.00,5.00,9.00

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,8.00,100.0%,.00,.0%,8.00,100.0%

Table: x × y
,,,y,,Total
,,,1.00,2.00,
x,1.00,Count,2.00,3.00,5.00
,2.00,Count,1.00,2.00,3.00
Total,,Count,3.00,5.00,8.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:550"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_436
#AT_START_437
at_fn_group_banner 437 'crosstabs.at:631' \
  "CROSSTABS descending sort order" "                " 39
at_xfail=no
(
  printf "%s\n" "437. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs-descending.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x * y *.
BEGIN DATA.
2 2
2 2
3 1
4 1
3 2
3 2
END DATA.

CROSSTABS
        /TABLES= x BY y
	/FORMAT = DVALUE.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:648: pspp -o pspp.csv -o pspp.txt crosstabs-descending.sps"
at_fn_check_prepare_trace "crosstabs.at:648"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt crosstabs-descending.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:648"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:649: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:649"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,6,100.0%,0,.0%,6,100.0%

Table: x × y
,,,y,,Total
,,,2.00,1.00,
x,4.00,Count,0,1,1
,3.00,Count,2,1,3
,2.00,Count,2,0,2
Total,,Count,4,2,6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:649"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_437
#AT_START_438
at_fn_group_banner 438 'crosstabs.at:667' \
  "CROSSTABS crash when all cases missing" "         " 39
at_xfail=no
(
  printf "%s\n" "438. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /X1 X2.
BEGIN DATA.
1 1
END DATA.

MISSING VALUES x2 (1).

CROSSTABS /TABLES= X1 by X2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:678: pspp -O format=csv crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:678"
( $at_check_trace; pspp -O format=csv crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
X1 × X2,0,.0%,1,100.0%,1,100.0%

\"crosstabs.sps:8.20-8.27: warning: CROSSTABS: Crosstabulation X1 × X2 contained no non-missing cases.
    8 | CROSSTABS /TABLES= X1 by X2.
      |                    ^~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:678"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_438
#AT_START_439
at_fn_group_banner 439 'crosstabs.at:694' \
  "CROSSTABS Fisher Exact Test" "                    " 39
at_xfail=no
(
  printf "%s\n" "439. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >fisher-exact.sps <<'_ATEOF'
SET FORMAT F12.3.
SET DECIMAL DOT.

DATA LIST notable LIST  /schtyp (F9.2) female (F9.2) ses (F9.2) .
begin data.
      1.00       .00      1.00
      1.00      1.00      2.00
      1.00       .00      3.00
      1.00       .00      3.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      3.00
      1.00       .00      1.00
      1.00       .00      1.00
      1.00       .00      3.00
      2.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      3.00
      2.00       .00      2.00
      2.00       .00      3.00
      1.00       .00      1.00
      1.00       .00      2.00
      1.00       .00      3.00
      2.00       .00      3.00
      1.00       .00      2.00
      2.00       .00      3.00
      1.00       .00      3.00
      2.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      1.00
      1.00       .00      2.00
      2.00       .00      2.00
      2.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      1.00
      1.00       .00      3.00
      1.00       .00      1.00
      1.00       .00      3.00
      1.00       .00      2.00
      2.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      2.00
      2.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      1.00
      1.00       .00      2.00
      2.00       .00      2.00
      1.00       .00      2.00
      2.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      1.00
      1.00       .00      2.00
      2.00       .00      3.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      1.00
      1.00       .00      1.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      2.00
      1.00       .00      1.00
      1.00       .00      3.00
      1.00       .00      3.00
      1.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      3.00
      1.00       .00      1.00
      2.00       .00      2.00
      1.00       .00      1.00
      1.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      3.00
      1.00       .00      3.00
      1.00       .00      2.00
      1.00       .00      3.00
      1.00       .00      2.00
      1.00       .00      1.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      1.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      2.00      1.00      3.00
      1.00      1.00      3.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      3.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      2.00      1.00      1.00
      2.00      1.00      3.00
      1.00      1.00      2.00
      1.00      1.00      1.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      2.00      1.00      3.00
      1.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      1.00
      2.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      1.00
      1.00      1.00      3.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      1.00
      1.00      1.00      3.00
      2.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      2.00      1.00      2.00
      1.00      1.00      1.00
      1.00      1.00      3.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      2.00      1.00      3.00
      1.00      1.00      2.00
      2.00      1.00      2.00
      1.00      1.00      1.00
      1.00      1.00      1.00
      1.00      1.00      1.00
      1.00      1.00      3.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      2.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      1.00
      2.00      1.00      2.00
      1.00      1.00      1.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      2.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      2.00
      1.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      2.00
      1.00      1.00      2.00
      2.00      1.00      3.00
      1.00      1.00      1.00
      1.00      1.00      1.00
      2.00      1.00      3.00
      2.00      1.00      2.00
      1.00      1.00      3.00
      2.00      1.00      2.00
      2.00      1.00      2.00
      1.00      1.00      2.00
      2.00      1.00      2.00
      1.00      1.00      2.00
      1.00      1.00      3.00
end data.

VARIABLE LABEL schtyp 'type of school'.
ADD VALUE LABELS female 0 male 1 female.
ADD VALUE LABELS ses 1 low 2 middle 3 high.
ADD VALUE LABELS schtyp 1 public 2 private.

crosstabs /tables = schtyp by female /statistic = chisq.
crosstabs /tables = female by ses  /statistic = chisq.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:913: pspp -o pspp.csv -o pspp.txt fisher-exact.sps"
at_fn_check_prepare_trace "crosstabs.at:913"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt fisher-exact.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:913"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:914: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:914"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
type of school × female,200,100.0%,0,.0%,200,100.0%

Table: type of school × female
,,,female,,Total
,,,male,female,
type of school,public,Count,77,91,168
,private,Count,14,18,32
Total,,Count,91,109,200

Table: Chi-Square Tests
,Value,df,Asymptotic Sig. (2-tailed),Exact Sig. (2-tailed),Exact Sig. (1-tailed)
Pearson Chi-Square,.047,1,.828,,
Likelihood Ratio,.047,1,.828,,
Fisher's Exact Test,,,,.849,.492
Continuity Correction,.001,1,.981,,
Linear-by-Linear Association,.047,1,.829,,
N of Valid Cases,200,,,,

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
female × ses,200,100.0%,0,.0%,200,100.0%

Table: female × ses
,,,ses,,,Total
,,,low,middle,high,
female,male,Count,15,47,29,91
,female,Count,32,48,29,109
Total,,Count,47,95,58,200

Table: Chi-Square Tests
,Value,df,Asymptotic Sig. (2-tailed)
Pearson Chi-Square,4.577,2,.101
Likelihood Ratio,4.679,2,.096
Linear-by-Linear Association,3.110,1,.078
N of Valid Cases,200,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:914"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_439
#AT_START_440
at_fn_group_banner 440 'crosstabs.at:959' \
  "CROSSTABS Pearson's R - 1" "                      " 39
at_xfail=no
(
  printf "%s\n" "440. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pearson.sps <<'_ATEOF'
SET FORMAT F8.3.

* From http://www.statisticslectures.com/topics/pearsonr/.
DATA LIST FREE/x y.
BEGIN DATA.
1 4
3 6
5 10
5 12
6 13
END DATA.
CROSSTABS x BY y/STATISTICS=CORR.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:974: pspp -o pspp.csv -o pspp.txt pearson.sps"
at_fn_check_prepare_trace "crosstabs.at:974"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt pearson.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:974"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:975: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:975"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,5,100.0%,0,.0%,5,100.0%

Table: x × y
,,,y,,,,,Total
,,,4.000,6.000,10.000,12.000,13.000,
x,1.000,Count,1,0,0,0,0,1
,3.000,Count,0,1,0,0,0,1
,5.000,Count,0,0,1,1,0,2
,6.000,Count,0,0,0,0,1,1
Total,,Count,1,1,1,1,1,5

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Spearman Correlation,.975,.022,7.550,.005
Interval by Interval,Pearson's R,.968,.017,6.708,.007
N of Valid Cases,,5,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:975"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_440
#AT_START_441
at_fn_group_banner 441 'crosstabs.at:999' \
  "CROSSTABS Pearson's R - 2" "                      " 39
at_xfail=no
(
  printf "%s\n" "441. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pearson2.sps <<'_ATEOF'
SET FORMAT F8.3.

* Checked with http://www.socscistatistics.com/tests/pearson/Default2.aspx.
DATA LIST FREE/x y.
BEGIN DATA.
1 1.5
2 1.5
3 4
4 6
5 5
6 7
7 6.5
8 9
9 10.5
10 11
END DATA.
CROSSTABS x BY y/STATISTICS=CORR.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1019: pspp -o pspp.csv -o pspp.txt pearson2.sps"
at_fn_check_prepare_trace "crosstabs.at:1019"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt pearson2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1019"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1020: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1020"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,10,100.0%,0,.0%,10,100.0%

Table: x × y
,,,y,,,,,,,,,Total
,,,1.500,4.000,5.000,6.000,6.500,7.000,9.000,10.500,11.000,
x,1.000,Count,1,0,0,0,0,0,0,0,0,1
,2.000,Count,1,0,0,0,0,0,0,0,0,1
,3.000,Count,0,1,0,0,0,0,0,0,0,1
,4.000,Count,0,0,0,1,0,0,0,0,0,1
,5.000,Count,0,0,1,0,0,0,0,0,0,1
,6.000,Count,0,0,0,0,0,1,0,0,0,1
,7.000,Count,0,0,0,0,1,0,0,0,0,1
,8.000,Count,0,0,0,0,0,0,1,0,0,1
,9.000,Count,0,0,0,0,0,0,0,1,0,1
,10.000,Count,0,0,0,0,0,0,0,0,1,1
Total,,Count,2,1,1,1,1,1,1,1,1,10

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Spearman Correlation,.973,.015,11.844,.000
Interval by Interval,Pearson's R,.971,.017,11.580,.000
N of Valid Cases,,10,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1020"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_441
#AT_START_442
at_fn_group_banner 442 'crosstabs.at:1050' \
  "CROSSTABS Pearson's R - 3" "                      " 39
at_xfail=no
(
  printf "%s\n" "442. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pearson3.sps <<'_ATEOF'
SET FORMAT F8.3.

* From http://learntech.uwe.ac.uk/da/Default.aspx?pageid=1442.
DATA LIST FREE/x y.
BEGIN DATA.
56 87
56 91
65 85
65 91
50 75
25 28
87 122
44 66
35 58
END DATA.
CROSSTABS x BY y/STATISTICS=CORR.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1069: pspp -o pspp.csv -o pspp.txt pearson3.sps"
at_fn_check_prepare_trace "crosstabs.at:1069"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt pearson3.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1069"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1070: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1070"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,9,100.0%,0,.0%,9,100.0%

Table: x × y
,,,y,,,,,,,,Total
,,,28.000,58.000,66.000,75.000,85.000,87.000,91.000,122.000,
x,25.000,Count,1,0,0,0,0,0,0,0,1
,35.000,Count,0,1,0,0,0,0,0,0,1
,44.000,Count,0,0,1,0,0,0,0,0,1
,50.000,Count,0,0,0,1,0,0,0,0,1
,56.000,Count,0,0,0,0,0,1,1,0,2
,65.000,Count,0,0,0,0,1,0,1,0,2
,87.000,Count,0,0,0,0,0,0,0,1,1
Total,,Count,1,1,1,1,1,1,2,1,9

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Spearman Correlation,.911,.068,5.860,.001
Interval by Interval,Pearson's R,.966,.017,9.915,.000
N of Valid Cases,,9,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1070"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_442
#AT_START_443
at_fn_group_banner 443 'crosstabs.at:1097' \
  "CROSSTABS Pearson's R - 4" "                      " 39
at_xfail=no
(
  printf "%s\n" "443. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pearson4.sps <<'_ATEOF'
SET FORMAT F8.3.

* From http://psychology.ucdavis.edu/faculty_sites/sommerb/sommerdemo/correlation/hand/pearson_hand.htm.
DATA LIST FREE/x y.
BEGIN DATA.
5 5
10 20
6 4
8 15
4 11
4 9
3 12
10 18
2 7
6 2
7 14
9 17
END DATA.
CROSSTABS x BY y/STATISTICS=CORR.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1119: pspp -o pspp.csv -o pspp.txt pearson4.sps"
at_fn_check_prepare_trace "crosstabs.at:1119"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt pearson4.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1119"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1120: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1120"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,12,100.0%,0,.0%,12,100.0%

Table: x × y
,,,y,,,,,,,,,,,,Total
,,,2.000,4.000,5.000,7.000,9.000,11.000,12.000,14.000,15.000,17.000,18.000,20.000,
x,2.000,Count,0,0,0,1,0,0,0,0,0,0,0,0,1
,3.000,Count,0,0,0,0,0,0,1,0,0,0,0,0,1
,4.000,Count,0,0,0,0,1,1,0,0,0,0,0,0,2
,5.000,Count,0,0,1,0,0,0,0,0,0,0,0,0,1
,6.000,Count,1,1,0,0,0,0,0,0,0,0,0,0,2
,7.000,Count,0,0,0,0,0,0,0,1,0,0,0,0,1
,8.000,Count,0,0,0,0,0,0,0,0,1,0,0,0,1
,9.000,Count,0,0,0,0,0,0,0,0,0,1,0,0,1
,10.000,Count,0,0,0,0,0,0,0,0,0,0,1,1,2
Total,,Count,1,1,1,1,1,1,1,1,1,1,1,1,12

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Spearman Correlation,.657,.140,2.758,.020
Interval by Interval,Pearson's R,.667,.132,2.830,.018
N of Valid Cases,,12,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1120"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_443
#AT_START_444
at_fn_group_banner 444 'crosstabs.at:1149' \
  "CROSSTABS Pearson's R - 5" "                      " 39
at_xfail=no
(
  printf "%s\n" "444. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pearson5.sps <<'_ATEOF'
SET FORMAT F8.3.

* From http://www.statisticslectures.com/topics/pearsonr/.
DATA LIST FREE/x y.
BEGIN DATA.
18 15000
25 29000
57 68000
45 52000
26 32000
64 80000
37 41000
40 45000
24 26000
33 33000
END DATA.
CROSSTABS x BY y/STATISTICS=CORR.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1169: pspp -o pspp.csv -o pspp.txt pearson5.sps"
at_fn_check_prepare_trace "crosstabs.at:1169"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt pearson5.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1169"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1170: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1170"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,10,100.0%,0,.0%,10,100.0%

Table: x × y
,,,y,,,,,,,,,,Total
,,,15000.00,26000.00,29000.00,32000.00,33000.00,41000.00,45000.00,52000.00,68000.00,80000.00,
x,18.000,Count,1,0,0,0,0,0,0,0,0,0,1
,24.000,Count,0,1,0,0,0,0,0,0,0,0,1
,25.000,Count,0,0,1,0,0,0,0,0,0,0,1
,26.000,Count,0,0,0,1,0,0,0,0,0,0,1
,33.000,Count,0,0,0,0,1,0,0,0,0,0,1
,37.000,Count,0,0,0,0,0,1,0,0,0,0,1
,40.000,Count,0,0,0,0,0,0,1,0,0,0,1
,45.000,Count,0,0,0,0,0,0,0,1,0,0,1
,57.000,Count,0,0,0,0,0,0,0,0,1,0,1
,64.000,Count,0,0,0,0,0,0,0,0,0,1,1
Total,,Count,1,1,1,1,1,1,1,1,1,1,10

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Spearman Correlation,1.000,.000,+Infinit,.000
Interval by Interval,Pearson's R,.992,.004,22.638,.000
N of Valid Cases,,10,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1170"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_444
#AT_START_445
at_fn_group_banner 445 'crosstabs.at:1200' \
  "CROSSTABS Goodman and Kruskal's lambda - 1" "     " 39
at_xfail=no
(
  printf "%s\n" "445. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lambda.sps <<'_ATEOF'
SET FORMAT F8.3.

* From http://www.csupomona.edu/~jlkorey/POWERMUTT/Topics/contingency_tables.html.
DATA LIST LIST NOTABLE/x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 424
1 2 213
1 3 59
3 1 55
3 2 188
3 3 357
END DATA.

CROSSTABS x BY y/CELLS=NONE/STATISTICS=LAMBDA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1218: pspp -o pspp.csv -o pspp.txt lambda.sps"
at_fn_check_prepare_trace "crosstabs.at:1218"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt lambda.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1218"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1219: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1219"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,1296.000,100.0%,.000,.0%,1296.000,100.0%

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Lambda,Symmetric,.423,.021,16.875,.000
,,x Dependent,.497,.024,15.986,.000
,,y Dependent,.370,.020,16.339,.000
,Goodman and Kruskal tau,x Dependent,.382,,,
,,y Dependent,.198,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1219"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_445
#AT_START_446
at_fn_group_banner 446 'crosstabs.at:1236' \
  "CROSSTABS Goodman and Kruskal's lambda - 2" "     " 39
at_xfail=no
(
  printf "%s\n" "446. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lambda.sps <<'_ATEOF'
SET FORMAT F8.3.

* From http://vassarstats.net.
DATA LIST LIST NOTABLE/x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 19
1 2 26
1 3 8
2 1 21
2 2 13
2 3 5
3 1 6
3 2 12
3 3 27
END DATA.

CROSSTABS x BY y/CELLS=NONE/STATISTICS=LAMBDA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1257: pspp -o pspp.csv -o pspp.txt lambda.sps"
at_fn_check_prepare_trace "crosstabs.at:1257"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt lambda.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1257"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1258: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1258"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,137.000,100.0%,.000,.0%,137.000,100.0%

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Lambda,Symmetric,.259,.081,2.902,.004
,,x Dependent,.250,.089,2.479,.013
,,y Dependent,.267,.085,2.766,.006
,Goodman and Kruskal tau,x Dependent,.129,,,
,,y Dependent,.123,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1258"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_446
#AT_START_447
at_fn_group_banner 447 'crosstabs.at:1275' \
  "CROSSTABS Goodman and Kruskal's lambda - 3" "     " 39
at_xfail=no
(
  printf "%s\n" "447. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lambda.sps <<'_ATEOF'
SET FORMAT F8.3.

* From Goodman, L.A., Kruskal, W.H. (1954) "Measures of association for
  cross classifications". Part I. Journal of the American Statistical
  Association, 49, 732-764.
DATA LIST LIST NOTABLE/x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 1768
1 2 807
1 3 189
1 4 47
2 1 946
2 2 1387
2 3 746
2 4 53
3 1 115
3 2 438
3 3 288
3 4 16
END DATA.
CROSSTABS x BY y/CELLS=NONE/STATISTICS=LAMBDA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1300: pspp -o pspp.csv -o pspp.txt lambda.sps"
at_fn_check_prepare_trace "crosstabs.at:1300"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt lambda.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1300"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1301: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1301"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,6800.000,100.0%,.000,.0%,6800.000,100.0%

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Lambda,Symmetric,.208,.010,18.793,.000
,,x Dependent,.224,.013,16.076,.000
,,y Dependent,.192,.012,14.438,.000
,Goodman and Kruskal tau,x Dependent,.089,,,
,,y Dependent,.081,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1301"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_447
#AT_START_448
at_fn_group_banner 448 'crosstabs.at:1318' \
  "CROSSTABS Goodman and Kruskal's lambda - treatment of ties" "" 39
at_xfail=no
(
  printf "%s\n" "448. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >lambda.sps <<'_ATEOF'
SET FORMAT F8.3.

* From Douglas Bonett.
DATA LIST LIST NOTABLE/x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 225
1 2 43
1 3 216
2 1 3
2 2 1
2 3 12
END DATA.

CROSSTABS x BY y/CELLS=NONE/STATISTICS=LAMBDA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1336: pspp -o pspp.csv -o pspp.txt lambda.sps"
at_fn_check_prepare_trace "crosstabs.at:1336"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt lambda.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1336"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1337: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1337"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,500.000,100.0%,.000,.0%,500.000,100.0%

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Lambda,Symmetric,.031,.013,2.336,.019
,,x Dependent,.000,.000,NaN,NaN
,,y Dependent,.033,.014,2.336,.019
,Goodman and Kruskal tau,x Dependent,.012,,,
,,y Dependent,.009,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1337"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_448
#AT_START_449
at_fn_group_banner 449 'crosstabs.at:1354' \
  "CROSSTABS Somers' D, Tau-B, Tau-C, Gamma - 1" "   " 39
at_xfail=no
(
  printf "%s\n" "449. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >somersd.sps <<'_ATEOF'
SET FORMAT F8.3.

* From http://stats.stackexchange.com/questions/72203/problem-with-calculating-asymptotic-standard-error-for-somers-d.
DATA LIST LIST NOTABLE/x y * w (F10.6).
WEIGHT BY w.
BEGIN DATA.
1 1 0.000025
1 2 0.0001
1 3 0.001
1 4 0.0025
1 5 0.004
1 6 0.0075
1 7 0.0125
2 1 0.049975
2 2 0.0999
2 3 0.199
2 4 0.2475
2 5 0.196
2 6 0.1425
2 7 0.0375
END DATA.
CROSSTABS x BY y/STATISTICS=D/CELLS=NONE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1379: pspp -o pspp.csv -o pspp.txt somersd.sps"
at_fn_check_prepare_trace "crosstabs.at:1379"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt somersd.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1379"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1380: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1380"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,1.000000,100.0%,.000000,.0%,1.000000,100.0%

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Somers' d,Symmetric,-.084,,-.149,.882
,,x Dependent,-.045,.300,-.149,.882
,,y Dependent,-.684,2.378,-.149,.882
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_449
#AT_START_450
at_fn_group_banner 450 'crosstabs.at:1395' \
  "CROSSTABS Somers' D, Tau-B, Tau-C, Gamma - 2" "   " 39
at_xfail=no
(
  printf "%s\n" "450. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >somersd.sps <<'_ATEOF'
SET FORMAT F8.3.

* From http://uregina.ca/~gingrich/gamma.pdf.
DATA LIST LIST NOTABLE/x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 34
1 2 24
1 3 15
2 1 42
2 2 74
2 3 67
3 1 28
3 2 111
3 3 292
END DATA.
CROSSTABS x BY y/STATISTICS=BTAU CTAU GAMMA D/CELLS=NONE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1415: pspp -o pspp.csv -o pspp.txt somersd.sps"
at_fn_check_prepare_trace "crosstabs.at:1415"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt somersd.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1415"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1416: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1416"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,687.000,100.0%,.000,.0%,687.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Ordinal by Ordinal,Kendall's tau-b,.372,.033,10.669
,Kendall's tau-c,.310,.029,10.669
,Gamma,.591,.043,10.669
N of Valid Cases,,687.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Somers' d,Symmetric,.371,,10.669,.000
,,x Dependent,.351,.032,10.669,.000
,,y Dependent,.394,.035,10.669,.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1416"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_450
#AT_START_451
at_fn_group_banner 451 'crosstabs.at:1438' \
  "CROSSTABS Somers' D, Tau-B, Tau-C, Gamma - 3" "   " 39
at_xfail=no
(
  printf "%s\n" "451. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ordinal.sps <<'_ATEOF'
SET FORMAT F8.3.

* From https://www.iup.edu/WorkArea/DownloadAsset.aspx?id=9829, "Case 1".
DATA LIST LIST NOTABLE /x y w.
WEIGHT BY w.
BEGIN DATA.
1 2 40
2 3 80
3 4 30
END DATA.
CROSSTABS x BY y/STATISTICS=GAMMA D BTAU/CELLS=NONE.

* Same site, case 2.
DATA LIST LIST NOTABLE /x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 40
2 3 80
3 4 30
END DATA.
CROSSTABS x BY y/STATISTICS=GAMMA D BTAU/CELLS=NONE.

* Same site, case 3.
DATA LIST LIST NOTABLE /x y w.
WEIGHT BY w.
BEGIN DATA.
1 4 40
2 3 80
3 2 30
END DATA.
CROSSTABS x BY y/STATISTICS=GAMMA D BTAU/CELLS=NONE.

* Same site, case 4.
DATA LIST LIST NOTABLE /x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 20
1 2 20
2 3 80
3 4 30
END DATA.
CROSSTABS x BY y/STATISTICS=GAMMA D BTAU/CELLS=NONE.

* Same site, case 5.
DATA LIST LIST NOTABLE /x y w.
WEIGHT BY w.
BEGIN DATA.
1 2 40
2 2 80
3 2 29
3 3 1
END DATA.
CROSSTABS x BY y/STATISTICS=GAMMA D BTAU/CELLS=NONE.

* Same site, case 6.
DATA LIST LIST NOTABLE /x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 3
1 2 6
1 3 28
1 4 61
2 1 4
2 2 5
2 3 21
2 4 20
END DATA.
CROSSTABS x BY y/STATISTICS=GAMMA D BTAU/CELLS=NONE.

* Same site, case 7.
DATA LIST LIST NOTABLE /x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 38
1 2 6
1 3 3
1 4 51
2 1 4
2 2 20
2 3 21
2 4 5
END DATA.
CROSSTABS x BY y/STATISTICS=LAMBDA D PHI GAMMA/CELLS=NONE.

* Same site, case 8.
DATA LIST LIST NOTABLE /x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 2
1 2 3
1 3 5
1 4 1
2 1 2
2 2 16
2 3 3
2 4 6
3 1 3
3 2 10
3 3 35
3 4 27
4 1 6
4 2 15
4 3 33
4 4 45
END DATA.
CROSSTABS x BY y/STATISTICS=LAMBDA D PHI BTAU/CELLS=NONE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1547: pspp -o pspp.csv -o pspp.txt ordinal.sps"
at_fn_check_prepare_trace "crosstabs.at:1547"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt ordinal.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1547"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1548: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1548"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,150.000,100.0%,.000,.0%,150.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Ordinal by Ordinal,Kendall's tau-b,1.000,.000,24.841
,Gamma,1.000,.000,24.841
N of Valid Cases,,150.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Somers' d,Symmetric,1.000,,24.841,.000
,,x Dependent,1.000,.000,24.841,.000
,,y Dependent,1.000,.000,24.841,.000

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,150.000,100.0%,.000,.0%,150.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Ordinal by Ordinal,Kendall's tau-b,1.000,.000,24.841
,Gamma,1.000,.000,24.841
N of Valid Cases,,150.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Somers' d,Symmetric,1.000,,24.841,.000
,,x Dependent,1.000,.000,24.841,.000
,,y Dependent,1.000,.000,24.841,.000

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,150.000,100.0%,.000,.0%,150.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Ordinal by Ordinal,Kendall's tau-b,-1.000,.000,-24.841
,Gamma,-1.000,.000,-24.841
N of Valid Cases,,150.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Somers' d,Symmetric,-1.000,,-24.841,.000
,,x Dependent,-1.000,.000,-24.841,.000
,,y Dependent,-1.000,.000,-24.841,.000

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,150.000,100.0%,.000,.0%,150.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Ordinal by Ordinal,Kendall's tau-b,.972,.007,24.841
,Gamma,1.000,.000,24.841
N of Valid Cases,,150.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Somers' d,Symmetric,.971,,24.841,.000
,,x Dependent,.944,.013,24.841,.000
,,y Dependent,1.000,.000,24.841,.000

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,150.000,100.0%,.000,.0%,150.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Ordinal by Ordinal,Kendall's tau-b,.119,.059,1.009
,Gamma,1.000,.000,1.009
N of Valid Cases,,150.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Somers' d,Symmetric,.035,,1.009,.313
,,x Dependent,.805,.032,1.009,.313
,,y Dependent,.018,.017,1.009,.313

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,148.000,100.0%,.000,.0%,148.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Ordinal by Ordinal,Kendall's tau-b,-.208,.078,-2.641
,Gamma,-.381,.130,-2.641
N of Valid Cases,,148.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Ordinal by Ordinal,Somers' d,Symmetric,-.206,,-2.641,.008
,,x Dependent,-.182,.069,-2.641,.008
,,y Dependent,-.237,.089,-2.641,.008

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,148.000,100.0%,.000,.0%,148.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Nominal by Nominal,Phi,.731,,
,Cramer's V,.731,,
Ordinal by Ordinal,Gamma,-.110,.107,-1.022
N of Valid Cases,,148.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Lambda,Symmetric,.338,.059,4.743,.000
,,x Dependent,.640,.085,4.875,.000
,,y Dependent,.174,.050,3.248,.001
,Goodman and Kruskal tau,x Dependent,.534,,,
,,y Dependent,.167,,,
Ordinal by Ordinal,Somers' d,Symmetric,-.074,,-1.022,.307
,,x Dependent,-.060,.059,-1.022,.307
,,y Dependent,-.096,.094,-1.022,.307

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,212.000,100.0%,.000,.0%,212.000,100.0%

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Nominal by Nominal,Phi,.432,,
,Cramer's V,.249,,
Ordinal by Ordinal,Kendall's tau-b,.209,.062,3.338
N of Valid Cases,,212.000,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Lambda,Symmetric,.102,.067,1.473,.141
,,x Dependent,.027,.087,.302,.763
,,y Dependent,.165,.065,2.349,.019
,Goodman and Kruskal tau,x Dependent,.051,,,
,,y Dependent,.068,,,
Ordinal by Ordinal,Somers' d,Symmetric,.209,,3.338,.001
,,x Dependent,.202,.060,3.338,.001
,,y Dependent,.217,.064,3.338,.001
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1548"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_451
#AT_START_452
at_fn_group_banner 452 'crosstabs.at:1707' \
  "CROSSTABS Cohens Kappa" "                         " 39
at_xfail=no
(
  printf "%s\n" "452. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >kappa.sps <<'_ATEOF'
SET FORMAT=F8.3.

data list notable list /p1 * p2 * w *.
begin data.
0 0 18
1 0 1
0 1 1
end data.

weight by w.

crosstabs /table = p1 by p2
	/statistics = kappa
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1729: pspp -o pspp.csv -o pspp.txt kappa.sps"
at_fn_check_prepare_trace "crosstabs.at:1729"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt kappa.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1729"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1730: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1730"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
p1 × p2,20.000,100.0%,.000,.0%,20.000,100.0%

Table: p1 × p2
,,,p2,,Total
,,,.000,1.000,
p1,.000,Count,18.000,1.000,19.000
,1.000,Count,1.000,.000,1.000
Total,,Count,19.000,1.000,20.000

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T
Measure of Agreement,Kappa,-.053,.037,-.235
N of Valid Cases,,20.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1730"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_452
#AT_START_453
at_fn_group_banner 453 'crosstabs.at:1753' \
  "CROSSTABS many statistics" "                      " 39
at_xfail=no
(
  printf "%s\n" "453. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
SET FORMAT=F8.4.

* From http://www4.stat.ncsu.edu/~dzhang2/st744/table3.9.lst.txt.
DATA LIST LIST NOTABLE/x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 25
1 2 25
1 3 12
2 2 1
2 3 3
END DATA.
CROSSTABS x BY y/STATISTICS=CHISQ PHI CC LAMBDA UC BTAU CTAU GAMMA D CORR/CELLS=NONE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1769: pspp -o pspp.csv -o pspp.txt crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:1769"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1769"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1770: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1770"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,66.0000,100.0%,.0000,.0%,66.0000,100.0%

Table: Chi-Square Tests
,Value,df,Asymptotic Sig. (2-tailed)
Pearson Chi-Square,6.9562,2.0000,.031
Likelihood Ratio,6.6901,2.0000,.035
Linear-by-Linear Association,5.8450,1.0000,.016
N of Valid Cases,66.0000,,

Table: Symmetric Measures
,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Phi,.3246,,,
,Cramer's V,.3246,,,
,Contingency Coefficient,.3088,,,
Ordinal by Ordinal,Kendall's tau-b,.2752,.0856,1.9920,
,Kendall's tau-c,.1497,.0751,1.9920,
,Gamma,.8717,.1250,1.9920,
,Spearman Correlation,.2908,.0906,2.4311,.018
Interval by Interval,Pearson's R,.2999,.0973,2.5147,.014
N of Valid Cases,,66.0000,,,

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Lambda,Symmetric,.0455,.1629,.2723,.785
,,x Dependent,.0000,.0000,NaN,NaN
,,y Dependent,.0500,.1791,.2723,.785
,Goodman and Kruskal tau,x Dependent,.1054,,,
,,y Dependent,.0434,,,
,Uncertainty Coefficient,Symmetric,.0780,.0474,,
,,x Dependent,.2217,.1062,1.5373,
,,y Dependent,.0473,.0306,1.5373,
Ordinal by Ordinal,Somers' d,Symmetric,.1960,,1.9920,.046
,,x Dependent,.1152,.0572,1.9920,.046
,,y Dependent,.6573,.1417,1.9920,.046
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1770"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_453
#AT_START_454
at_fn_group_banner 454 'crosstabs.at:1812' \
  "CROSSTABS uncertainy coefficient" "               " 39
at_xfail=no
(
  printf "%s\n" "454. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >uc.sps <<'_ATEOF'
* From http://groups.chass.utoronto.ca/pol242/5bMeasuringAssociation.htm.
SET FORMAT=F8.3.

DATA LIST LIST NOTABLE/x y w.
WEIGHT BY w.
BEGIN DATA.
1 1 416
1 2 121
2 1 335
2 2 2
3 1 112
3 2 1
END DATA.
CROSSTABS x BY y/STATISTICS=LAMBDA UC/CELLS=NONE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1829: pspp -o pspp.csv -o pspp.txt uc.sps"
at_fn_check_prepare_trace "crosstabs.at:1829"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt uc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1829"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1830: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1830"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x × y,987.000,100.0%,.000,.0%,987.000,100.0%

Table: Directional Measures
,,,Value,Asymp. Std. Error,Approx. T,Approx. Sig.
Nominal by Nominal,Lambda,Symmetric,.000,.000,NaN,NaN
,,x Dependent,.000,.000,NaN,NaN
,,y Dependent,.000,.000,NaN,NaN
,Goodman and Kruskal tau,x Dependent,.076,,,
,,y Dependent,.108,,,
,Uncertainty Coefficient,Symmetric,.105,.012,,
,,x Dependent,.073,.009,7.890,
,,y Dependent,.184,.019,7.890,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1830"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_454
#AT_START_455
at_fn_group_banner 455 'crosstabs.at:1850' \
  "CROSSTABS estimated risk" "                       " 39
at_xfail=no
(
  printf "%s\n" "455. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >risk.sps <<'_ATEOF'
DATA LIST LIST /factor disease count (F8.0).
WEIGHT BY count.
VALUE LABELS /factor 0 'Placebo' 1 'Aspirin'
             /disease 1 'No' 0 'Yes'.
BEGIN DATA.
0 1 80
0 0 20
1 1 135
1 0 15
END DATA.
CROSSTABS factor BY disease/STATISTICS=RISK CHISQ.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1866: pspp -o pspp.csv -o pspp.txt risk.sps"
at_fn_check_prepare_trace "crosstabs.at:1866"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt risk.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1866"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1867: cat pspp.csv"
at_fn_check_prepare_trace "crosstabs.at:1867"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
factor,F8.0
disease,F8.0
count,F8.0

Table: Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
factor × disease,250,100.0%,0,.0%,250,100.0%

Table: factor × disease
,,,disease,,Total
,,,Yes,No,
factor,Placebo,Count,20,80,100
,Aspirin,Count,15,135,150
Total,,Count,35,215,250

Table: Chi-Square Tests
,Value,df,Asymptotic Sig. (2-tailed),Exact Sig. (2-tailed),Exact Sig. (1-tailed)
Pearson Chi-Square,4.98,1,.026,,
Likelihood Ratio,4.88,1,.027,,
Fisher's Exact Test,,,,.039,.021
Continuity Correction,4.19,1,.041,,
Linear-by-Linear Association,4.96,1,.026,,
N of Valid Cases,250,,,,

Table: Risk Estimate
,Value,95% Confidence Interval,
,,Lower,Upper
Odds Ratio for factor (Placebo / Aspirin),2.25,1.09,4.64
For cohort disease = Yes,2.00,1.08,3.72
For cohort disease = No,.89,.80,.99
N of Valid Cases,250.00,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1867"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_455
#AT_START_456
at_fn_group_banner 456 'crosstabs.at:1906' \
  "CROSSTABS barchart" "                             " 39
at_xfail=no
(
  printf "%s\n" "456. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >bc.sps <<'_ATEOF'
SET FORMAT=F8.3.

DATA LIST LIST NOTABLE /x (a20) y (f8) z (f8) w (f8) .
BEGIN DATA.
This  1  0 416
That  2  0 121
Other 2  0 335
This  2  0 231
That  3  0 112
Other 4  0 130
This  1  1 160
That  2  1 211
Other 2  1 352
This  2  1 212
That  3  1 121
Other 4  1 101
END DATA.

WEIGHT BY w.

CROSSTABS
	  /table x BY y BY z
	  /table x BY y
	  /barchart.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1934: pspp -O format=txt -o xxx bc.sps"
at_fn_check_prepare_trace "crosstabs.at:1934"
( $at_check_trace; pspp -O format=txt -o xxx bc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1934"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1936: test -e xxx-1.png"
at_fn_check_prepare_trace "crosstabs.at:1936"
( $at_check_trace; test -e xxx-1.png
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1936"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1937: test -e xxx-2.png"
at_fn_check_prepare_trace "crosstabs.at:1937"
( $at_check_trace; test -e xxx-2.png
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1937"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1939: diff xxx-1.png xxx-2.png"
at_fn_check_prepare_trace "crosstabs.at:1939"
( $at_check_trace; diff xxx-1.png xxx-2.png
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/crosstabs.at:1939"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_456
#AT_START_457
at_fn_group_banner 457 'crosstabs.at:1943' \
  "CROSSTABS syntax errors" "                        " 39
at_xfail=no
(
  printf "%s\n" "457. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >crosstabs.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y v1 to v100.
CROSSTABS TABLES=x BY y/VARIABLES **.
CROSSTABS VARIABLES=**.
CROSSTABS VARIABLES=x **.
CROSSTABS VARIABLES=x (**).
CROSSTABS VARIABLES=x (1,**).
CROSSTABS VARIABLES=x (1,5**).
CROSSTABS MISSING=**.
CROSSTABS COUNT=**.
CROSSTABS FORMAT=**.
CROSSTABS CELLS=**.
CROSSTABS STATISTICS=**.
CROSSTABS **.
CROSSTABS
       v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100
    BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100
    BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100
    BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100
    BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100
    BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100.
CROSSTABS BARCHART.
CROSSTABS x BY y/MISSING=REPORT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/crosstabs.at:1968: pspp -O format=csv crosstabs.sps"
at_fn_check_prepare_trace "crosstabs.at:1968"
( $at_check_trace; pspp -O format=csv crosstabs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"crosstabs.sps:2.25-2.33: error: CROSSTABS: VARIABLES must be specified before TABLES.
    2 | CROSSTABS TABLES=x BY y/VARIABLES **.
      |                         ^~~~~~~~~\"

\"crosstabs.sps:3.21-3.22: error: CROSSTABS: Syntax error expecting variable name.
    3 | CROSSTABS VARIABLES=**.
      |                     ^~\"

\"crosstabs.sps:4.23-4.24: error: CROSSTABS: Syntax error expecting \`('.
    4 | CROSSTABS VARIABLES=x **.
      |                       ^~\"

\"crosstabs.sps:5.24-5.25: error: CROSSTABS: Syntax error expecting integer.
    5 | CROSSTABS VARIABLES=x (**).
      |                        ^~\"

\"crosstabs.sps:6.26-6.27: error: CROSSTABS: Syntax error expecting positive integer.
    6 | CROSSTABS VARIABLES=x (1,**).
      |                          ^~\"

\"crosstabs.sps:7.27-7.28: error: CROSSTABS: Syntax error expecting \`)'.
    7 | CROSSTABS VARIABLES=x (1,5**).
      |                           ^~\"

\"crosstabs.sps:8.19-8.20: error: CROSSTABS: Syntax error expecting TABLE, INCLUDE, or REPORT.
    8 | CROSSTABS MISSING=**.
      |                   ^~\"

\"crosstabs.sps:9.17-9.18: error: CROSSTABS: Syntax error expecting ASIS, CASE, CELL, ROUND, or TRUNCATE.
    9 | CROSSTABS COUNT=**.
      |                 ^~\"

\"crosstabs.sps:10.18-10.19: error: CROSSTABS: Syntax error expecting AVALUE, DVALUE, TABLES, or NOTABLES.
   10 | CROSSTABS FORMAT=**.
      |                  ^~\"

\"crosstabs.sps:11.17-11.18: error: CROSSTABS: Syntax error expecting COUNT, EXPECTED, ROW, COLUMN, TOTAL, RESIDUAL, SRESIDUAL, or ASRESIDUAL.
   11 | CROSSTABS CELLS=**.
      |                 ^~\"

\"crosstabs.sps:12.22-12.23: error: CROSSTABS: Syntax error expecting one of the following: CHISQ, PHI, CC, LAMBDA, UC, BTAU, CTAU, RISK, GAMMA, D, KAPPA, ETA, CORR.
   12 | CROSSTABS STATISTICS=**.
      |                      ^~\"

\"crosstabs.sps:13.11-13.12: error: CROSSTABS: Syntax error expecting subcommand name or variable name.
   13 | CROSSTABS **.
      |           ^~\"

\"crosstabs.sps:15.8-20.87: error: CROSSTABS: Too many cross-tabulation variables or dimensions.
   15 |        v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   16 |     BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100
      | ---------------------------------------------------------------------------------------
  ... |
   20 |     BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100 BY v1 to v100.
      | ---------------------------------------------------------------------------------------\"

crosstabs.sps:21: error: CROSSTABS: At least one crosstabulation must be requested (using the TABLES subcommand).

\"crosstabs.sps:22.26-22.31: warning: CROSSTABS: Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE.
   22 | CROSSTABS x BY y/MISSING=REPORT.
      |                          ^~~~~~\"

error: CROSSTABS: At end of input: Syntax error expecting \`BEGIN DATA'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/crosstabs.at:1968"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_457
#AT_START_458
at_fn_group_banner 458 'ctables.at:51' \
  "CTABLES parsing" "                                " 40
at_xfail=no
(
  printf "%s\n" "458. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:52: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:52"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /FORMAT MINCOLWIDTH=10 MAXCOLWIDTH=20 UNITS=POINTS EMPTY=ZERO MISSING="x"
    /FORMAT MINCOLWIDTH=DEFAULT MAXCOLWIDTH=DEFAULT UNITS=INCHES EMPTY=BLANK MISSING="."
    /FORMAT UNITS=CM EMPTY="(-)"
    /VLABELS VARIABLES=qn1 DISPLAY=DEFAULT
    /VLABELS VARIABLES=qn17 DISPLAY=NAME
    /VLABELS VARIABLES=qns3a DISPLAY=LABEL
    /VLABELS VARIABLES=qnd1 DISPLAY=BOTH
    /VLABELS VARIABLES=qn20 DISPLAY=NONE
    /MRSETS COUNTDUPLICATES=NO
    /MRSETS COUNTDUPLICATES=YES
    /SMISSING VARIABLE
    /SMISSING LISTWISE
    /WEIGHT VARIABLE=qns3a
    /HIDESMALLCOUNTS
    /HIDESMALLCOUNTS COUNT=10
    /TABLE qnsa1
    /SLABELS POSITION=COLUMN VISIBLE=YES
    /SLABELS VISIBLE=NO POSITION=ROW
    /SLABELS POSITION=LAYER
    /CLABELS AUTO
    /CLABELS ROWLABELS=OPPOSITE
    /CRITERIA CILEVEL=50
    /CATEGORIES VARIABLES=qn1 qn17
                ORDER=A KEY=VALUE MISSING=INCLUDE TOTAL=YES LABEL="xyzzy"
		POSITION=BEFORE EMPTY=INCLUDE.
CTABLES /TABLE qnsa1 /CLABELS ROWLABELS=LAYER.
CTABLES /TABLE qnsa1 /CLABELS COLLABELS=OPPOSITE.
CTABLES /TABLE qnsa1 /CLABELS COLLABELS=LAYER.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:85: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:85"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "         Custom Tables
Count
╭───────────────────┬────┬────╮
│                   │ RDD│CELL│
├───────────────────┼────┼────┤
│Sa1. SAMPLE SOURCE:│5392│1607│
╰───────────────────┴────┴────╯

       Custom Tables
RDD
╭───────────────────┬─────╮
│                   │Count│
├───────────────────┼─────┤
│Sa1. SAMPLE SOURCE:│ 5392│
╰───────────────────┴─────╯

          Custom Tables
╭────────────────────────┬─────╮
│                        │Count│
├────────────────────────┼─────┤
│Sa1. SAMPLE SOURCE: RDD │ 5392│
│                    CELL│ 1607│
╰────────────────────────┴─────╯

          Custom Tables
╭────────────────────────┬─────╮
│                        │Count│
├────────────────────────┼─────┤
│Sa1. SAMPLE SOURCE: RDD │ 5392│
│                    CELL│ 1607│
╰────────────────────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:85"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_458
#AT_START_459
at_fn_group_banner 459 'ctables.at:120' \
  "CTABLES parsing - negative" "                     " 40
at_xfail=no
(
  printf "%s\n" "459. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:121: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:121"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES.
CTABLES /FORMAT MINCOLWIDTH='foo'.
CTABLES /TABLE qn1 [**].
CTABLES /TABLE qn1 [NOTAFUNCTION].
CTABLES /TABLE (qn1.
CTABLES /TABLE **.
CTABLES /TABLE NOTAVAR.
STRING string(A8).
CTABLES /TABLE string[S].
CTABLES /TABLE qn1 [PTILE 101].
CTABLES /TABLE qn1 [MEAN F0.1].
CTABLES /TABLE qn1 [MEAN NEGPAREN1.2].
CTABLES /TABLE qn1 [MEAN NEGPAREN3.4].
CTABLES /TABLE qn1 [MEAN TOTALS].
CTABLES /TABLE qn1 [MEAN TOTALS[STDDEV]%].
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [SUBTOTAL=x].
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [LO **].
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [LO THRU x].
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [1 THRU **].
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 ['x' THRU **].
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&**].
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&x].
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=PTILE(qn1, 101).
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=MEAN(qn1.
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=MEAN.
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 MISSING=**.
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 TOTAL=**.
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 LABEL=**.
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 POSITION=**.
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 EMPTY=**.
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 **.
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [1,2,3] **.
CTABLES /PCOMPUTE &k=EXPR(SUBTOTAL[0]).
CTABLES /PCOMPUTE &k=EXPR(SUBTOTAL[1**]).
CTABLES /PCOMPUTE &k=EXPR([LO **]).
CTABLES /PCOMPUTE &k=EXPR([LO THRU **]).
CTABLES /PCOMPUTE &k=EXPR([1 THRU **]).
CTABLES /PCOMPUTE &k=EXPR([1**]).
CTABLES /PCOMPUTE &k=EXPR((1x)).
CTABLES /PCOMPUTE **k.
CTABLES /PCOMPUTE &1.
CTABLES /PCOMPUTE &k**.
CTABLES /PCOMPUTE &k=**.
CTABLES /PCOMPUTE &k=EXPR**.
CTABLES /PCOMPUTE &k=EXPR(1x).
CTABLES /PCOMPUTE &k=EXPR(1) /PCOMPUTE &k=EXPR(2).
CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k FORMAT=NOTAFUNCTION.
CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k FORMAT=PTILE **.
CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k LABEL=**.
CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k HIDESOURCECATS=**.
CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k **.
CTABLES /FORMAT EMPTY=**.
CTABLES /FORMAT MISSING=**.
CTABLES /FORMAT **.
CTABLES /FORMAT MINCOLWIDTH=20 MAXCOLWIDTH=10/.
CTABLES /VLABELS **.
CTABLES /VLABELS VARIABLES=NOTAVAR.
CTABLES /VLABELS VARIABLES=qn1 **.
CTABLES /VLABELS VARIABLES=qn1 DISPLAY=**.
CTABLES /MRSETS **.
CTABLES /MRSETS COUNTDUPLICATES=**.
CTABLES /SMISSING **.
CTABLES /WEIGHT **.
CTABLES /WEIGHT VARIABLE=NOTAVAR.
CTABLES /HIDESMALLCOUNTS COUNT=1.
CTABLES /QUUX.
CTABLES /HIDESMALLCOUNTS COUNT=2.
CTABLES /TABLE qn1**.
CTABLES /TABLE qn1 /SLABELS POSITION=**.
CTABLES /TABLE qn1 /SLABELS VISIBLE=**.
CTABLES /TABLE qn1 /SLABELS **.
CTABLES /TABLE qn1 /CLABELS ROWLABELS=**.
CTABLES /TABLE qn1 /CLABELS COLLABELS=**.
CTABLES /TABLE qn1 /CLABELS **.
CTABLES /TABLE qn1 /CRITERIA **.
CTABLES /TABLE qn1 /CRITERIA CILEVEL=101.
CTABLES /TABLE qn1 /TITLES **.
CTABLES /TABLE qn1 /SIGTEST TYPE=**.
CTABLES /TABLE qn1 /SIGTEST ALPHA=**.
CTABLES /TABLE qn1 /SIGTEST INCLUDEMRSETS=**.
CTABLES /TABLE qn1 /SIGTEST CATEGORIES=**.
CTABLES /TABLE qn1 /SIGTEST **.
CTABLES /TABLE qn1 /COMPARETEST TYPE=**.
CTABLES /TABLE qn1 /COMPARETEST ALPHA=**.
CTABLES /TABLE qn1 /COMPARETEST ALPHA=0,5.
CTABLES /TABLE qn1 /COMPARETEST ADJUST=**.
CTABLES /TABLE qn1 /COMPARETEST INCLUDEMRSETS=**.
CTABLES /TABLE qn1 /COMPARETEST MEANSVARIANCE=**.
CTABLES /TABLE qn1 /COMPARETEST CATEGORIES=**.
CTABLES /TABLE qn1 /COMPARETEST MERGE=**.
CTABLES /TABLE qn1 /COMPARETEST STYLE=**.
CTABLES /TABLE qn1 /COMPARETEST SHOWSIG=**.
CTABLES /TABLE qn1 /COMPARETEST **.
CTABLES /TABLE qn1 /FORMAT.
CTABLES /TABLE qn1 /CLABELS ROWLABELS=OPPOSITE /CLABELS COLLABELS=OPPOSITE.
CTABLES /TABLE qn20 > qnd1.
CTABLES /TABLE qn1 [ROWPCT] > qnsa1.
NUMERIC datetime (DATETIME17.0).
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=datetime ['123'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:224: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:224"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctables.sps:2.8: error: CTABLES: Syntax error expecting \`/'.
    2 | CTABLES.
      |        ^

ctables.sps:3.29-3.33: error: CTABLES: Syntax error expecting non-negative
number for MINCOLWIDTH.
    3 | CTABLES /FORMAT MINCOLWIDTH='foo'.
      |                             ^~~~~

ctables.sps:4.21-4.22: error: CTABLES: Syntax error expecting identifier.
    4 | CTABLES /TABLE qn1 [**].
      |                     ^~

ctables.sps:5.21-5.32: error: CTABLES: Syntax error expecting summary function
name.
    5 | CTABLES /TABLE qn1 [NOTAFUNCTION].
      |                     ^~~~~~~~~~~~

ctables.sps:6.20: error: CTABLES: Syntax error expecting \`)'.
    6 | CTABLES /TABLE (qn1.
      |                    ^

ctables.sps:7.16-7.17: error: CTABLES: Syntax error expecting identifier.
    7 | CTABLES /TABLE **.
      |                ^~

ctables.sps:8.16-8.22: error: CTABLES: NOTAVAR is not a variable name.
    8 | CTABLES /TABLE NOTAVAR.
      |                ^~~~~~~

ctables.sps:10.16-10.24: error: CTABLES: Cannot use string variable string as a
scale variable.
   10 | CTABLES /TABLE string[S].
      |                ^~~~~~~~~

ctables.sps:11.27-11.29: error: CTABLES: Syntax error expecting number between 0
and 100 for PTILE.
   11 | CTABLES /TABLE qn1 [PTILE 101].
      |                           ^~~

ctables.sps:12.26-12.29: error: CTABLES: Output format F0.1 specifies width 0,
but F requires a width between 1 and 40.
   12 | CTABLES /TABLE qn1 [MEAN F0.1].
      |                          ^~~~

ctables.sps:13.26-13.36: error: CTABLES: Output format NEGPAREN requires width 2
or greater.
   13 | CTABLES /TABLE qn1 [MEAN NEGPAREN1.2].
      |                          ^~~~~~~~~~~

ctables.sps:14.26-14.36: error: CTABLES: Output format NEGPAREN requires width
greater than decimals.
   14 | CTABLES /TABLE qn1 [MEAN NEGPAREN3.4].
      |                          ^~~~~~~~~~~

ctables.sps:15.21-15.24: error: CTABLES: Summary function MEAN applies only to
scale variables.
   15 | CTABLES /TABLE qn1 [MEAN TOTALS].
      |                     ^~~~

ctables.sps:15.16-15.18: note: CTABLES: 'QN1' is not a scale variable.
   15 | CTABLES /TABLE qn1 [MEAN TOTALS].
      |                ^~~

ctables.sps:16.21-16.24: error: CTABLES: Summary function MEAN applies only to
scale variables.
   16 | CTABLES /TABLE qn1 [MEAN TOTALS[STDDEV]%].
      |                     ^~~~

ctables.sps:16.16-16.18: note: CTABLES: 'QN1' is not a scale variable.
   16 | CTABLES /TABLE qn1 [MEAN TOTALS[STDDEV]%].
      |                ^~~

ctables.sps:17.56: error: CTABLES: Syntax error expecting string.
   17 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [SUBTOTAL=x].
      |                                                        ^

ctables.sps:18.50-18.51: error: CTABLES: Syntax error expecting THRU.
   18 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [LO **].
      |                                                  ^~

ctables.sps:19.55: error: CTABLES: Syntax error expecting number.
   19 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [LO THRU x].
      |                                                       ^

ctables.sps:20.54-20.55: error: CTABLES: Syntax error expecting number.
   20 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [1 THRU **].
      |                                                      ^~

ctables.sps:21.56-21.57: error: CTABLES: Syntax error expecting string.
   21 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 ['x' THRU **].
      |                                                        ^~

ctables.sps:22.48-22.49: error: CTABLES: Syntax error expecting identifier.
   22 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&**].
      |                                                ^~

ctables.sps:23.47-23.48: error: CTABLES: Unknown postcompute &x.
   23 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&x].
      |                                               ^~

ctables.sps:24.61-24.63: error: CTABLES: Syntax error expecting number between 0
and 100 for PTILE.
   24 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=PTILE(qn1, 101).
      |                                                             ^~~

ctables.sps:25.58: error: CTABLES: Syntax error expecting \`)'.
   25 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=MEAN(qn1.
      |                                                          ^

ctables.sps:26.54: error: CTABLES: Syntax error expecting \`('.
   26 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=MEAN.
      |                                                      ^

ctables.sps:27.54-27.55: error: CTABLES: Syntax error expecting INCLUDE or
EXCLUDE.
   27 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 MISSING=**.
      |                                                      ^~

ctables.sps:28.52-28.53: error: CTABLES: Syntax error expecting YES or NO.
   28 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 TOTAL=**.
      |                                                    ^~

ctables.sps:29.52-29.53: error: CTABLES: Syntax error expecting string.
   29 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 LABEL=**.
      |                                                    ^~

ctables.sps:30.55-30.56: error: CTABLES: Syntax error expecting BEFORE or AFTER.
   30 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 POSITION=**.
      |                                                       ^~

ctables.sps:31.52-31.53: error: CTABLES: Syntax error expecting INCLUDE or
EXCLUDE.
   31 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 EMPTY=**.
      |                                                    ^~

ctables.sps:32.46-32.47: error: CTABLES: Syntax error expecting ORDER, KEY,
MISSING, TOTAL, LABEL, POSITION, or EMPTY.
   32 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 **.
      |                                              ^~

ctables.sps:33.54-33.55: error: CTABLES: Syntax error expecting TOTAL, LABEL,
POSITION, or EMPTY.
   33 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [1,2,3] **.
      |                                                      ^~

ctables.sps:34.36: error: CTABLES: Syntax error expecting positive integer for
SUBTOTAL.
   34 | CTABLES /PCOMPUTE &k=EXPR(SUBTOTAL[0]).
      |                                    ^

ctables.sps:35.37-35.38: error: CTABLES: Syntax error expecting \`]'.
   35 | CTABLES /PCOMPUTE &k=EXPR(SUBTOTAL[1**]).
      |                                     ^~

ctables.sps:36.31-36.32: error: CTABLES: Syntax error expecting THRU.
   36 | CTABLES /PCOMPUTE &k=EXPR([LO **]).
      |                               ^~

ctables.sps:37.36-37.37: error: CTABLES: Syntax error expecting number.
   37 | CTABLES /PCOMPUTE &k=EXPR([LO THRU **]).
      |                                    ^~

ctables.sps:38.35-38.36: error: CTABLES: Syntax error expecting number.
   38 | CTABLES /PCOMPUTE &k=EXPR([1 THRU **]).
      |                                   ^~

ctables.sps:39.29-39.30: error: CTABLES: Syntax error expecting \`]'.
   39 | CTABLES /PCOMPUTE &k=EXPR([1**]).
      |                             ^~

ctables.sps:40.29: error: CTABLES: Syntax error expecting \`)'.
   40 | CTABLES /PCOMPUTE &k=EXPR((1x)).
      |                             ^

ctables.sps:41.19-41.20: error: CTABLES: Syntax error expecting &.
   41 | CTABLES /PCOMPUTE **k.
      |                   ^~

ctables.sps:42.20: error: CTABLES: Syntax error expecting identifier.
   42 | CTABLES /PCOMPUTE &1.
      |                    ^

ctables.sps:43.21-43.22: error: CTABLES: Syntax error expecting \`=EXPR('.
   43 | CTABLES /PCOMPUTE &k**.
      |                     ^~

ctables.sps:44.21-44.23: error: CTABLES: Syntax error expecting \`=EXPR('.
   44 | CTABLES /PCOMPUTE &k=**.
      |                     ^~~

ctables.sps:45.21-45.27: error: CTABLES: Syntax error expecting \`=EXPR('.
   45 | CTABLES /PCOMPUTE &k=EXPR**.
      |                     ^~~~~~~

ctables.sps:46.28: error: CTABLES: Syntax error expecting \`)'.
   46 | CTABLES /PCOMPUTE &k=EXPR(1x).
      |                            ^

ctables.sps:47.31-47.49: warning: CTABLES: New definition of &k will override
the previous definition.
   47 | CTABLES /PCOMPUTE &k=EXPR(1) /PCOMPUTE &k=EXPR(2).
      |                               ^~~~~~~~~~~~~~~~~~~

ctables.sps:47.10-47.28: note: CTABLES: This is the previous definition.
   47 | CTABLES /PCOMPUTE &k=EXPR(1) /PCOMPUTE &k=EXPR(2).
      |          ^~~~~~~~~~~~~~~~~~~

ctables.sps:47.50: error: CTABLES: Syntax error expecting \`/'.
   47 | CTABLES /PCOMPUTE &k=EXPR(1) /PCOMPUTE &k=EXPR(2).
      |                                                  ^

ctables.sps:48.53-48.64: error: CTABLES: Syntax error expecting summary function
name.
   48 | CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k FORMAT=NOTAFUNCTION.
      |                                                     ^~~~~~~~~~~~

ctables.sps:49.59-49.60: error: CTABLES: Syntax error expecting number between 0
and 100 for PTILE.
   49 | CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k FORMAT=PTILE **.
      |                                                           ^~

ctables.sps:50.52-50.53: error: CTABLES: Syntax error expecting string.
   50 | CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k LABEL=**.
      |                                                    ^~

ctables.sps:51.61-51.62: error: CTABLES: Syntax error expecting YES or NO.
   51 | CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k HIDESOURCECATS=**.
      |                                                             ^~

ctables.sps:52.46-52.47: error: CTABLES: Syntax error expecting LABEL, FORMAT,
or HIDESOURCECATS.
   52 | CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k **.
      |                                              ^~

ctables.sps:53.23-53.24: error: CTABLES: Syntax error expecting string.
   53 | CTABLES /FORMAT EMPTY=**.
      |                       ^~

ctables.sps:54.25-54.26: error: CTABLES: Syntax error expecting string.
   54 | CTABLES /FORMAT MISSING=**.
      |                         ^~

ctables.sps:55.17-55.18: error: CTABLES: Syntax error expecting MINCOLWIDTH,
MAXCOLWIDTH, UNITS, EMPTY, or MISSING.
   55 | CTABLES /FORMAT **.
      |                 ^~

ctables.sps:56.17-56.45: error: CTABLES: MINCOLWIDTH must not be greater than
MAXCOLWIDTH.
   56 | CTABLES /FORMAT MINCOLWIDTH=20 MAXCOLWIDTH=10/.
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ctables.sps:57.18-57.19: error: CTABLES: Syntax error expecting VARIABLES.
   57 | CTABLES /VLABELS **.
      |                  ^~

ctables.sps:58.28-58.34: error: CTABLES: NOTAVAR is not a variable name.
   58 | CTABLES /VLABELS VARIABLES=NOTAVAR.
      |                            ^~~~~~~

ctables.sps:59.32-59.33: error: CTABLES: Syntax error expecting DISPLAY.
   59 | CTABLES /VLABELS VARIABLES=qn1 **.
      |                                ^~

ctables.sps:60.40-60.41: error: CTABLES: Syntax error expecting DEFAULT, NAME,
LABEL, BOTH, or NONE.
   60 | CTABLES /VLABELS VARIABLES=qn1 DISPLAY=**.
      |                                        ^~

ctables.sps:61.17-61.18: error: CTABLES: Syntax error expecting COUNTDUPLICATES.
   61 | CTABLES /MRSETS **.
      |                 ^~

ctables.sps:62.33-62.34: error: CTABLES: Syntax error expecting YES or NO.
   62 | CTABLES /MRSETS COUNTDUPLICATES=**.
      |                                 ^~

ctables.sps:63.19-63.20: error: CTABLES: Syntax error expecting VARIABLE or
LISTWISE.
   63 | CTABLES /SMISSING **.
      |                   ^~

ctables.sps:64.17-64.18: error: CTABLES: Syntax error expecting VARIABLE.
   64 | CTABLES /WEIGHT **.
      |                 ^~

ctables.sps:65.26-65.32: error: CTABLES: NOTAVAR is not a variable name.
   65 | CTABLES /WEIGHT VARIABLE=NOTAVAR.
      |                          ^~~~~~~

ctables.sps:66.32: error: CTABLES: Syntax error expecting integer 2 or greater
for HIDESMALLCOUNTS COUNT.
   66 | CTABLES /HIDESMALLCOUNTS COUNT=1.
      |                                ^

ctables.sps:67.10-67.13: error: CTABLES: Syntax error expecting one of the
following: FORMAT, VLABELS, MRSETS, SMISSING, PCOMPUTE, PPROPERTIES, WEIGHT,
HIDESMALLCOUNTS, TABLE.
   67 | CTABLES /QUUX.
      |          ^~~~

ctables.sps:68.33: error: CTABLES: Syntax error expecting \`/'.
   68 | CTABLES /HIDESMALLCOUNTS COUNT=2.
      |                                 ^

ctables.sps:69.19-69.20: error: CTABLES: Syntax error expecting \`/'.
   69 | CTABLES /TABLE qn1**.
      |                   ^~

ctables.sps:70.38-70.39: error: CTABLES: Syntax error expecting COLUMN, ROW, or
LAYER.
   70 | CTABLES /TABLE qn1 /SLABELS POSITION=**.
      |                                      ^~

ctables.sps:71.37-71.38: error: CTABLES: Syntax error expecting YES or NO.
   71 | CTABLES /TABLE qn1 /SLABELS VISIBLE=**.
      |                                     ^~

ctables.sps:72.29-72.30: error: CTABLES: Syntax error expecting POSITION or
VISIBLE.
   72 | CTABLES /TABLE qn1 /SLABELS **.
      |                             ^~

ctables.sps:73.39-73.40: error: CTABLES: Syntax error expecting OPPOSITE or
LAYER.
   73 | CTABLES /TABLE qn1 /CLABELS ROWLABELS=**.
      |                                       ^~

ctables.sps:74.39-74.40: error: CTABLES: Syntax error expecting OPPOSITE or
LAYER.
   74 | CTABLES /TABLE qn1 /CLABELS COLLABELS=**.
      |                                       ^~

ctables.sps:75.29-75.30: error: CTABLES: Syntax error expecting AUTO, ROWLABELS,
or COLLABELS.
   75 | CTABLES /TABLE qn1 /CLABELS **.
      |                             ^~

ctables.sps:76.30-76.31: error: CTABLES: Syntax error expecting CILEVEL.
   76 | CTABLES /TABLE qn1 /CRITERIA **.
      |                              ^~

ctables.sps:77.38-77.40: error: CTABLES: Syntax error expecting number in
[0,100) for CILEVEL.
   77 | CTABLES /TABLE qn1 /CRITERIA CILEVEL=101.
      |                                      ^~~

ctables.sps:78.28-78.29: error: CTABLES: Syntax error expecting CAPTION, CORNER,
or TITLE.
   78 | CTABLES /TABLE qn1 /TITLES **.
      |                            ^~

ctables.sps:79.34-79.35: error: CTABLES: Syntax error expecting CHISQUARE.
   79 | CTABLES /TABLE qn1 /SIGTEST TYPE=**.
      |                                  ^~

ctables.sps:80.35-80.36: error: CTABLES: Syntax error expecting number in [0,1)
for ALPHA.
   80 | CTABLES /TABLE qn1 /SIGTEST ALPHA=**.
      |                                   ^~

ctables.sps:81.43-81.44: error: CTABLES: Syntax error expecting YES or NO.
   81 | CTABLES /TABLE qn1 /SIGTEST INCLUDEMRSETS=**.
      |                                           ^~

ctables.sps:82.40-82.41: error: CTABLES: Syntax error expecting ALLVISIBLE or
SUBTOTALS.
   82 | CTABLES /TABLE qn1 /SIGTEST CATEGORIES=**.
      |                                        ^~

ctables.sps:83.29-83.30: error: CTABLES: Syntax error expecting TYPE, ALPHA,
INCLUDEMRSETS, or CATEGORIES.
   83 | CTABLES /TABLE qn1 /SIGTEST **.
      |                             ^~

ctables.sps:84.38-84.39: error: CTABLES: Syntax error expecting PROP or MEAN.
   84 | CTABLES /TABLE qn1 /COMPARETEST TYPE=**.
      |                                      ^~

ctables.sps:85.39-85.40: error: CTABLES: Syntax error expecting number in (0,1)
for ALPHA.
   85 | CTABLES /TABLE qn1 /COMPARETEST ALPHA=**.
      |                                       ^~

ctables.sps:86.39: error: CTABLES: Syntax error expecting number in (0,1) for
ALPHA.
   86 | CTABLES /TABLE qn1 /COMPARETEST ALPHA=0,5.
      |                                       ^

ctables.sps:87.40-87.41: error: CTABLES: Syntax error expecting BONFERRONI, BH,
or NONE.
   87 | CTABLES /TABLE qn1 /COMPARETEST ADJUST=**.
      |                                        ^~

ctables.sps:88.47-88.48: error: CTABLES: Syntax error expecting YES or NO.
   88 | CTABLES /TABLE qn1 /COMPARETEST INCLUDEMRSETS=**.
      |                                               ^~

ctables.sps:89.47-89.48: error: CTABLES: Syntax error expecting ALLCATS or
TESTEDCATS.
   89 | CTABLES /TABLE qn1 /COMPARETEST MEANSVARIANCE=**.
      |                                               ^~

ctables.sps:90.44-90.45: error: CTABLES: Syntax error expecting ALLVISIBLE or
SUBTOTALS.
   90 | CTABLES /TABLE qn1 /COMPARETEST CATEGORIES=**.
      |                                            ^~

ctables.sps:91.39-91.40: error: CTABLES: Syntax error expecting YES or NO.
   91 | CTABLES /TABLE qn1 /COMPARETEST MERGE=**.
      |                                       ^~

ctables.sps:92.39-92.40: error: CTABLES: Syntax error expecting APA or SIMPLE.
   92 | CTABLES /TABLE qn1 /COMPARETEST STYLE=**.
      |                                       ^~

ctables.sps:93.41-93.42: error: CTABLES: Syntax error expecting YES or NO.
   93 | CTABLES /TABLE qn1 /COMPARETEST SHOWSIG=**.
      |                                         ^~

ctables.sps:94.33-94.34: error: CTABLES: Syntax error expecting one of the
following: TYPE, ALPHA, ADJUST, INCLUDEMRSETS, MEANSVARIANCE, CATEGORIES, MERGE,
STYLE, SHOWSIG.
   94 | CTABLES /TABLE qn1 /COMPARETEST **.
      |                                 ^~

ctables.sps:95.21-95.26: error: CTABLES: Syntax error expecting TABLE, SLABELS,
CLABELS, CRITERIA, CATEGORIES, TITLES, SIGTEST, or COMPARETEST.
   95 | CTABLES /TABLE qn1 /FORMAT.
      |                     ^~~~~~

ctables.sps:95.21-95.26: note: CTABLES: This subcommand must appear before
TABLE.
   95 | CTABLES /TABLE qn1 /FORMAT.
      |                     ^~~~~~

ctables.sps:96: error: CTABLES: ROWLABELS and COLLABELS may not both be
specified.

ctables.sps:96.21-96.46: note: CTABLES: This is the first specification.
   96 | CTABLES /TABLE qn1 /CLABELS ROWLABELS=OPPOSITE /CLABELS
COLLABELS=OPPOSITE.
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~

ctables.sps:96.49-96.74: note: CTABLES: This is the second specification.
   96 | CTABLES /TABLE qn1 /CLABELS ROWLABELS=OPPOSITE /CLABELS
COLLABELS=OPPOSITE.
      |
^~~~~~~~~~~~~~~~~~~~~~~~~~

ctables.sps:97.16-97.26: error: CTABLES: Cannot nest scale variables.
   97 | CTABLES /TABLE qn20 > qnd1.
      |                ^~~~~~~~~~~

ctables.sps:97.16-97.19: note: CTABLES: This is an outer scale variable.
   97 | CTABLES /TABLE qn20 > qnd1.
      |                ^~~~

ctables.sps:97.23-97.26: note: CTABLES: This is an inner scale variable.
   97 | CTABLES /TABLE qn20 > qnd1.
      |                       ^~~~

ctables.sps:98.16-98.35: error: CTABLES: Summaries may only be requested for
categorical variables at the innermost nesting level.
   98 | CTABLES /TABLE qn1 [ROWPCT] > qnsa1.
      |                ^~~~~~~~~~~~~~~~~~~~

ctables.sps:98.16-98.18: note: CTABLES: This outer categorical variable has a
summary.
   98 | CTABLES /TABLE qn1 [ROWPCT] > qnsa1.
      |                ^~~

ctables.sps:100.52-100.56: error: CTABLES: Failed to parse category
specification as format DATETIME: Day (123) must be between 1 and 31..
  100 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=datetime ['123'].
      |                                                    ^~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/ctables.at:224"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_459
#AT_START_460
at_fn_group_banner 460 'ctables.at:705' \
  "CTABLES parsing - more negative" "                " 40
at_xfail=no
(
  printf "%s\n" "460. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:706: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:706"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:706"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc].
CTABLES /PCOMPUTE &pc=EXPR(TOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc].
CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc, SUBTOTAL, SUBTOTAL].

STRING string(A8).
CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 ['string'].
CTABLES /TABLE string /CATEGORIES VARIABLES=string [1].

CTABLES /TABLE qn1 /CLABELS ROWLABELS=OPPOSITE /CATEGORIES VARIABLES=qn1 KEY=MEAN(qn1).

CTABLES /TABLE qnd1 /CLABELS ROWLABELS=OPPOSITE.
CTABLES /TABLE qn1 + string /CLABELS ROWLABELS=OPPOSITE.
CTABLES /TABLE qn1 + qnsa1 /CLABELS ROWLABELS=OPPOSITE.
CTABLES /TABLE qn105ba + qn105bb /CLABELS ROWLABELS=OPPOSITE /CATEGORIES VARIABLES=qn105ba [1,2,3].

CTABLES /PCOMPUTE &x=EXPR(1**2**3).
CTABLES /PCOMPUTE &x=EXPR([**]).
CTABLES /PCOMPUTE &x=EXPR(**).

CTABLES /TABLE.

CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT].

CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=PTILE(qn1, 50).

CTABLES /TABLE $mrset.

CTABLES /TABLE qn113 /SIGTEST TYPE=CHISQUARE.
CTABLES /TABLE qn113 /COMPARETEST TYPE=PROP.

CTABLES /TABLE qn113 [COUNT.UCL].

CTABLES /TABLE qn1 /CATEGORIES **.

CTABLES /TITLES.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:745: pspp ctables.sps -O box=unicode -O width=120"
at_fn_check_prepare_trace "ctables.at:745"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ctables.sps:2.76-2.78: error: CTABLES: Computed category &pc references a category not included in the category list.
    2 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc].
      |                                                                            ^~~

ctables.sps:2.28-2.35: note: CTABLES: This is the missing category.
    2 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc].
      |                            ^~~~~~~~

ctables.sps:2.76-2.79: note: CTABLES: To fix the problem, add subtotals to the list of categories here.
    2 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc].
      |                                                                            ^~~~

ctables.sps:3.73-3.75: error: CTABLES: Computed category &pc references a category not included in the category list.
    3 | CTABLES /PCOMPUTE &pc=EXPR(TOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc].
      |                                                                         ^~~

ctables.sps:3.28-3.32: note: CTABLES: This is the missing category.
    3 | CTABLES /PCOMPUTE &pc=EXPR(TOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc].
      |                            ^~~~~

ctables.sps:3: note: CTABLES: To fix the problem, add TOTAL=YES to the variable's CATEGORIES specification.

ctables.sps:4.76-4.99: error: CTABLES: These categories include 2 instances of SUBTOTAL or HSUBTOTAL, so references from
computed categories must refer to subtotals by position, e.g. SUBTOTAL[1].
    4 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc, SUBTOTAL, SUBTOTAL].
      |                                                                            ^~~~~~~~~~~~~~~~~~~~~~~~

ctables.sps:4.28-4.35: note: CTABLES: This is the reference that lacks a position.
    4 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc, SUBTOTAL, SUBTOTAL].
      |                            ^~~~~~~~

ctables.sps:7.47-7.54: error: CTABLES: This category specification may be applied only to string variables, but this
subcommand tries to apply it to numeric variable QN1.
    7 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 ['string'].
      |                                               ^~~~~~~~

ctables.sps:8.53: error: CTABLES: This category specification may be applied only to numeric variables, but this
subcommand tries to apply it to string variable string.
    8 | CTABLES /TABLE string /CATEGORIES VARIABLES=string [1].
      |                                                     ^

ctables.sps:10.74-10.86: error: CTABLES: Data-dependent sorting is not implemented.
   10 | CTABLES /TABLE qn1 /CLABELS ROWLABELS=OPPOSITE /CATEGORIES VARIABLES=qn1 KEY=MEAN(qn1).
      |                                                                          ^~~~~~~~~~~~~

ctables.sps:12: error: CTABLES: To move category labels from one axis to another, the variables whose labels are to be
moved must be categorical, but qnd1 is scale.

ctables.sps:12.22-12.47: note: CTABLES: This syntax moves category labels to another axis.
   12 | CTABLES /TABLE qnd1 /CLABELS ROWLABELS=OPPOSITE.
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~

ctables.sps:13: error: CTABLES: To move category labels from one axis to another, the variables whose labels are to be
moved must all have the same width, but QN1 has width 0 and string has width 8.

ctables.sps:13.30-13.55: note: CTABLES: This syntax moves category labels to another axis.
   13 | CTABLES /TABLE qn1 + string /CLABELS ROWLABELS=OPPOSITE.
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~

ctables.sps:14: error: CTABLES: To move category labels from one axis to another, the variables whose labels are to be
moved must all have the same value labels, but QN1 and QNSA1 have different value labels.

ctables.sps:14.29-14.54: note: CTABLES: This syntax moves category labels to another axis.
   14 | CTABLES /TABLE qn1 + qnsa1 /CLABELS ROWLABELS=OPPOSITE.
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~

ctables.sps:15: error: CTABLES: To move category labels from one axis to another, the variables whose labels are to be
moved must all have the same category specifications, but QN105BA and QN105BB have different category specifications.

ctables.sps:15.35-15.60: note: CTABLES: This syntax moves category labels to another axis.
   15 | CTABLES /TABLE qn105ba + qn105bb /CLABELS ROWLABELS=OPPOSITE /CATEGORIES VARIABLES=qn105ba [1,2,3].
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~

ctables.sps:17.27-17.33: warning: CTABLES: The exponentiation operator (\`**') is left-associative: \`a**b**c' equals
\`(a**b)**c', not \`a**(b**c)'.  To disable this warning, insert parentheses.
   17 | CTABLES /PCOMPUTE &x=EXPR(1**2**3).
      |                           ^~~~~~~

ctables.sps:17.35: error: CTABLES: Syntax error expecting \`/'.
   17 | CTABLES /PCOMPUTE &x=EXPR(1**2**3).
      |                                   ^

ctables.sps:18.28-18.29: error: CTABLES: Syntax error expecting number or string or range.
   18 | CTABLES /PCOMPUTE &x=EXPR([**]).
      |                            ^~

ctables.sps:19.27-19.28: error: CTABLES: Syntax error in postcompute expression.
   19 | CTABLES /PCOMPUTE &x=EXPR(**).
      |                           ^~

ctables.sps:21.15: error: CTABLES: At least one variable must be specified.
   21 | CTABLES /TABLE.
      |               ^

ctables.sps:23: error: CTABLES: Summaries may appear only on one axis.

ctables.sps:23.50-23.54: note: CTABLES: This variable on the layers axis has a summary.
   23 | CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT].
      |                                                  ^~~~~

ctables.sps:23.16-23.20: note: CTABLES: This variable on the rows axis has a summary.
   23 | CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT].
      |                ^~~~~

ctables.sps:23.33-23.37: note: CTABLES: This variable on the columns axis has a summary.
   23 | CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT].
      |                                 ^~~~~

ctables.sps:23.33-23.37: note: CTABLES: This is a scale variable, so it always has a summary even if the syntax does not
explicitly specify one.
   23 | CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT].
      |                                 ^~~~~

ctables.sps:25.46-25.63: error: CTABLES: Data-dependent sorting is not implemented.
   25 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=PTILE(qn1, 50).
      |                                              ^~~~~~~~~~~~~~~~~~

ctables.sps:27.16-27.21: error: CTABLES: Multiple response set support not implemented.
   27 | CTABLES /TABLE \$mrset.
      |                ^~~~~~

ctables.sps:29.23-29.44: error: CTABLES: Support for SIGTEST not yet implemented.
   29 | CTABLES /TABLE qn113 /SIGTEST TYPE=CHISQUARE.
      |                       ^~~~~~~~~~~~~~~~~~~~~~

ctables.sps:30.23-30.43: error: CTABLES: Support for COMPARETEST not yet implemented.
   30 | CTABLES /TABLE qn113 /COMPARETEST TYPE=PROP.
      |                       ^~~~~~~~~~~~~~~~~~~~~

ctables.sps:32.23-32.31: error: CTABLES: Support for LCL, UCL, and SE summary functions is not yet implemented.
   32 | CTABLES /TABLE qn113 [COUNT.UCL].
      |                       ^~~~~~~~~

ctables.sps:34.32-34.33: error: CTABLES: Syntax error expecting VARIABLES.
   34 | CTABLES /TABLE qn1 /CATEGORIES **.
      |                                ^~

ctables.sps:36.10-36.15: error: CTABLES: Syntax error expecting one of the following: FORMAT, VLABELS, MRSETS, SMISSING,
PCOMPUTE, PPROPERTIES, WEIGHT, HIDESMALLCOUNTS, TABLE.
   36 | CTABLES /TITLES.
      |          ^~~~~~

ctables.sps:36.10-36.15: note: CTABLES: TABLE must appear before this subcommand.
   36 | CTABLES /TITLES.
      |          ^~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/ctables.at:745"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_460
#AT_START_461
at_fn_group_banner 461 'ctables.at:894' \
  "CTABLES one categorical variable" "               " 40
at_xfail=no
(
  printf "%s\n" "461. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:895: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:895"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:895"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE qn1.
CTABLES /TABLE BY qn1.
CTABLES /TABLE BY BY qn1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:902: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:902"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│ 1. How often do you usually drive a car or other  Every day            │ 4667│
│motor vehicle?                                     Several days a week  │ 1274│
│                                                   Once a week or less  │  361│
│                                                   Only certain times a │  130│
│                                                   year                 │     │
│                                                   Never                │  540│
╰────────────────────────────────────────────────────────────────────────┴─────╯

                                  Custom Tables
╭──────────────────────────────────────────────────────────────────────────────╮
│        1. How often do you usually drive a car or other motor vehicle?       │
├─────────┬──────────────────┬──────────────────┬────────────────────────┬─────┤
│         │  Several days a  │  Once a week or  │  Only certain times a  │     │
│Every day│       week       │       less       │          year          │Never│
├─────────┼──────────────────┼──────────────────┼────────────────────────┼─────┤
│  Count  │       Count      │       Count      │          Count         │Count│
├─────────┼──────────────────┼──────────────────┼────────────────────────┼─────┤
│     4667│              1274│               361│                     130│  540│
╰─────────┴──────────────────┴──────────────────┴────────────────────────┴─────╯

Custom Tables
Every day
╭─────╮
│Count│
├─────┤
│ 4667│
╰─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:902"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_461
#AT_START_462
at_fn_group_banner 462 'ctables.at:937' \
  "CTABLES one string variable" "                    " 40
at_xfail=no
(
  printf "%s\n" "462. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:938: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:938"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:938"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
STRING licensed(A8).
MISSING VALUES licensed('DontKnow', 'NoAnswer').
RECODE qnd7a(1='Yes')(2='No')(3='DontKnow')(4='NoAnswer') INTO licensed.
CTABLES /TABLE licensed.
CTABLES /TABLE licensed [COUNT, TOTALS[COUNT, VALIDN]] /CATEGORIES VARIABLES=ALL TOTAL=YES MISSING=INCLUDE.
CTABLES /TABLE licensed /CATEGORIES VARIABLES=licensed ['Yes', 'No'] TOTAL=YES.
* Notice that the string matching is case-sensitive.
CTABLES /TABLE licensed /CATEGORIES VARIABLES=licensed ['Yes', 'no'] TOTAL=YES.
CTABLES /TABLE licensed /CATEGORIES VARIABLES=licensed ['No' THRU 'yes'] TOTAL=YES.
CTABLES
    /PCOMPUTE &notyes=EXPR(['No']+['DontKnow']+['NoAnswer'])
    /PPROPERTIES &notyes LABEL='Not Yes' HIDESOURCECATS=YES
    /TABLE licensed
    /CATEGORIES VARIABLES=licensed ['Yes', &notyes, 'No', 'DontKnow', 'NoAnswer'].
CTABLES
    /PCOMPUTE &notyes=EXPR(['DontKnow' THRU 'No'] + ['NoAnswer'])
    /PPROPERTIES &notyes LABEL='Not Yes' HIDESOURCECATS=YES
    /TABLE licensed
    /CATEGORIES VARIABLES=licensed ['Yes', &notyes, 'DontKnow' THRU 'No', 'NoAnswer'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:961: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:961"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "    Custom Tables
╭────────────┬─────╮
│            │Count│
├────────────┼─────┤
│licensed No │  572│
│         Yes│ 6379│
╰────────────┴─────╯

          Custom Tables
╭─────────────────┬─────┬───────╮
│                 │Count│Valid N│
├─────────────────┼─────┼───────┤
│licensed DontKnow│    4│       │
│         No      │  572│       │
│         NoAnswer│   44│       │
│         Yes     │ 6379│       │
│         Total   │ 6999│   6951│
╰─────────────────┴─────┴───────╯

     Custom Tables
╭──────────────┬─────╮
│              │Count│
├──────────────┼─────┤
│licensed Yes  │ 6379│
│         No   │  572│
│         Total│ 6951│
╰──────────────┴─────╯

     Custom Tables
╭──────────────┬─────╮
│              │Count│
├──────────────┼─────┤
│licensed Yes  │ 6379│
│         no   │    0│
│         Total│ 6379│
╰──────────────┴─────╯

      Custom Tables
╭─────────────────┬─────╮
│                 │Count│
├─────────────────┼─────┤
│licensed No      │  572│
│         NoAnswer│   44│
│         Yes     │ 6379│
│         Total   │ 6995│
╰─────────────────┴─────╯

      Custom Tables
╭────────────────┬─────╮
│                │Count│
├────────────────┼─────┤
│licensed Yes    │ 6379│
│         Not Yes│  620│
╰────────────────┴─────╯

      Custom Tables
╭────────────────┬─────╮
│                │Count│
├────────────────┼─────┤
│licensed Yes    │ 6379│
│         Not Yes│  620│
╰────────────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:961"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_462
#AT_START_463
at_fn_group_banner 463 'ctables.at:1027' \
  "CTABLES one scale variable" "                     " 40
at_xfail=no
(
  printf "%s\n" "463. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1028: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1028"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1028"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
DESCRIPTIVES qnd1.
CTABLES /TABLE qnd1[COUNT, VALIDN, TOTALN, MEAN, STDDEV, MINIMUM, MAXIMUM].
CTABLES /TABLE BY qnd1.
CTABLES /TABLE BY BY qnd1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1036: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1036"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                       Descriptive Statistics
╭──────────────────────────┬────┬─────┬───────┬───────┬───────────╮
│                          │  N │ Mean│Std Dev│Minimum│  Maximum  │
├──────────────────────────┼────┼─────┼───────┼───────┼───────────┤
│D1. AGE: What is your age?│6930│48.26│  19.01│     16│86 or older│
│Valid N (listwise)        │6999│     │       │       │           │
│Missing N (listwise)      │  69│     │       │       │           │
╰──────────────────────────┴────┴─────┴───────┴───────┴───────────╯

                                  Custom Tables
╭──────────────────────┬─────┬───────┬───────┬────┬────────────┬───────┬───────╮
│                      │     │       │       │    │     Std    │       │       │
│                      │Count│Valid N│Total N│Mean│  Deviation │Minimum│Maximum│
├──────────────────────┼─────┼───────┼───────┼────┼────────────┼───────┼───────┤
│D1. AGE: What is your │ 6999│   6930│   6999│  48│          19│     16│     86│
│age?                  │     │       │       │    │            │       │       │
╰──────────────────────┴─────┴───────┴───────┴────┴────────────┴───────┴───────╯

        Custom Tables
╭──────────────────────────╮
│D1. AGE: What is your age?│
├──────────────────────────┤
│           Mean           │
├──────────────────────────┤
│                        48│
╰──────────────────────────╯

Custom Tables
D1. AGE: What is your age?
╭────╮
│Mean│
├────┤
│  48│
╰────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1036"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_463
#AT_START_464
at_fn_group_banner 464 'ctables.at:1074' \
  "CTABLES simple stacking" "                        " 40
at_xfail=no
(
  printf "%s\n" "464. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1076: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1076"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1076"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE qn105ba + qn105bb + qn105bc + qn105bd BY qns3a [COLPCT PCT8.0].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1081: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1081"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭───────────────────────────────────────────────────────────────┬──────────────╮
│                                                               │ S3a. GENDER: │
│                                                               ├──────┬───────┤
│                                                               │ Male │ Female│
│                                                               ├──────┼───────┤
│                                                               │Column│ Column│
│                                                               │   %  │   %   │
├───────────────────────────────────────────────────────────────┼──────┼───────┤
│105b. How likely is it that drivers who have had   Almost      │   10%│    11%│
│too much to drink to drive safely will A. Get      certain     │      │       │
│stopped by the police?                             Very likely │   21%│    22%│
│                                                   Somewhat    │   38%│    42%│
│                                                   likely      │      │       │
│                                                   Somewhat    │   21%│    18%│
│                                                   unlikely    │      │       │
│                                                   Very        │   10%│     8%│
│                                                   unlikely    │      │       │
├───────────────────────────────────────────────────────────────┼──────┼───────┤
│105b. How likely is it that drivers who have had   Almost      │   14%│    18%│
│too much to drink to drive safely will B. Have an  certain     │      │       │
│accident?                                          Very likely │   36%│    45%│
│                                                   Somewhat    │   39%│    32%│
│                                                   likely      │      │       │
│                                                   Somewhat    │    9%│     4%│
│                                                   unlikely    │      │       │
│                                                   Very        │    3%│     2%│
│                                                   unlikely    │      │       │
├───────────────────────────────────────────────────────────────┼──────┼───────┤
│105b. How likely is it that drivers who have had   Almost      │   18%│    16%│
│too much to drink to drive safely will C. Be       certain     │      │       │
│convicted for drunk driving?                       Very likely │   32%│    28%│
│                                                   Somewhat    │   27%│    32%│
│                                                   likely      │      │       │
│                                                   Somewhat    │   15%│    15%│
│                                                   unlikely    │      │       │
│                                                   Very        │    9%│     9%│
│                                                   unlikely    │      │       │
├───────────────────────────────────────────────────────────────┼──────┼───────┤
│105b. How likely is it that drivers who have had   Almost      │   16%│    16%│
│too much to drink to drive safely will D. Be       certain     │      │       │
│arrested for drunk driving?                        Very likely │   26%│    27%│
│                                                   Somewhat    │   32%│    35%│
│                                                   likely      │      │       │
│                                                   Somewhat    │   17%│    15%│
│                                                   unlikely    │      │       │
│                                                   Very        │    9%│     7%│
│                                                   unlikely    │      │       │
╰───────────────────────────────────────────────────────────────┴──────┴───────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1081"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_464
#AT_START_465
at_fn_group_banner 465 'ctables.at:1134' \
  "CTABLES show or hide empty categories" "          " 40
at_xfail=no
(
  printf "%s\n" "465. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1135: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1135"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1135"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
IF (qn105ba = 2) qn105ba = 1.
IF (qns3a = 1) qns3a = 2.
CTABLES /TABLE qn105ba BY qns3a [COLPCT PCT8.0].
CTABLES /TABLE qn105ba BY qns3a [COLPCT PCT8.0]
    /CATEGORIES VAR=qn105ba EMPTY=EXCLUDE.
CTABLES /TABLE qn105ba BY qns3a [COLPCT PCT8.0]
    /CATEGORIES VAR=qns3a EMPTY=EXCLUDE.
CTABLES /TABLE qn105ba BY qns3a [COLPCT PCT8.0]
    /CATEGORIES VAR=ALL EMPTY=EXCLUDE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1148: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1148"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭──────────────────────────────────────────────────────────────┬───────────────╮
│                                                              │  S3a. GENDER: │
│                                                              ├───────┬───────┤
│                                                              │  Male │ Female│
│                                                              ├───────┼───────┤
│                                                              │ Column│ Column│
│                                                              │   %   │   %   │
├──────────────────────────────────────────────────────────────┼───────┼───────┤
│105b. How likely is it that drivers who have had   Almost     │      .│    32%│
│too much to drink to drive safely will A. Get      certain    │       │       │
│stopped by the police?                             Very likely│      .│     0%│
│                                                   Somewhat   │      .│    40%│
│                                                   likely     │       │       │
│                                                   Somewhat   │      .│    19%│
│                                                   unlikely   │       │       │
│                                                   Very       │      .│     9%│
│                                                   unlikely   │       │       │
╰──────────────────────────────────────────────────────────────┴───────┴───────╯

                                  Custom Tables
╭──────────────────────────────────────────────────────────────┬───────────────╮
│                                                              │  S3a. GENDER: │
│                                                              ├───────┬───────┤
│                                                              │  Male │ Female│
│                                                              ├───────┼───────┤
│                                                              │ Column│ Column│
│                                                              │   %   │   %   │
├──────────────────────────────────────────────────────────────┼───────┼───────┤
│105b. How likely is it that drivers who have had   Almost     │      .│    32%│
│too much to drink to drive safely will A. Get      certain    │       │       │
│stopped by the police?                             Somewhat   │      .│    40%│
│                                                   likely     │       │       │
│                                                   Somewhat   │      .│    19%│
│                                                   unlikely   │       │       │
│                                                   Very       │      .│     9%│
│                                                   unlikely   │       │       │
╰──────────────────────────────────────────────────────────────┴───────┴───────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────┬─────────╮
│                                                                    │   S3a.  │
│                                                                    │ GENDER: │
│                                                                    ├─────────┤
│                                                                    │  Female │
│                                                                    ├─────────┤
│                                                                    │ Column %│
├────────────────────────────────────────────────────────────────────┼─────────┤
│105b. How likely is it that drivers who have had too    Almost      │      32%│
│much to drink to drive safely will A. Get stopped by    certain     │         │
│the police?                                             Very likely │       0%│
│                                                        Somewhat    │      40%│
│                                                        likely      │         │
│                                                        Somewhat    │      19%│
│                                                        unlikely    │         │
│                                                        Very        │       9%│
│                                                        unlikely    │         │
╰────────────────────────────────────────────────────────────────────┴─────────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────┬─────────╮
│                                                                    │   S3a.  │
│                                                                    │ GENDER: │
│                                                                    ├─────────┤
│                                                                    │  Female │
│                                                                    ├─────────┤
│                                                                    │ Column %│
├────────────────────────────────────────────────────────────────────┼─────────┤
│105b. How likely is it that drivers who have had too    Almost      │      32%│
│much to drink to drive safely will A. Get stopped by    certain     │         │
│the police?                                             Somewhat    │      40%│
│                                                        likely      │         │
│                                                        Somewhat    │      19%│
│                                                        unlikely    │         │
│                                                        Very        │       9%│
│                                                        unlikely    │         │
╰────────────────────────────────────────────────────────────────────┴─────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1148"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_465
#AT_START_466
at_fn_group_banner 466 'ctables.at:1229' \
  "CTABLES categories and EMPTY" "                   " 40
at_xfail=no
(
  printf "%s\n" "466. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1230: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1230"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1230"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /class datum size.
BEGIN DATA
1 1 1
2 2 1
1 3 1
2 4 2
1 5 2
2 6 2
END DATA.
VARIABLE LEVEL class datum size (NOMINAL).
FORMATS class datum size (F1.0).

* The following are the same except for the order of the CATEGORIES commands.
* The test checks that they produce the same resuls.
CTABLES /TABLE=class > datum BY size
   /CATEGORIES VARIABLES=ALL EMPTY=EXCLUDE
   /CATEGORIES VARIABLES=size TOTAL=YES.
CTABLES /TABLE=class > datum BY size
   /CATEGORIES VARIABLES=size TOTAL=YES
   /CATEGORIES VARIABLES=ALL EMPTY=EXCLUDE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1253: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1253"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "           Custom Tables
╭───────────────┬─────────────────╮
│               │       size      │
│               ├─────┬─────┬─────┤
│               │  1  │  2  │Total│
│               ├─────┼─────┼─────┤
│               │Count│Count│Count│
├───────────────┼─────┼─────┼─────┤
│class 1 datum 1│    1│     │    1│
│              3│    1│     │    1│
│              5│     │    1│    1│
│     ╶─────────┼─────┼─────┼─────┤
│      2 datum 2│    1│     │    1│
│              4│     │    1│    1│
│              6│     │    1│    1│
╰───────────────┴─────┴─────┴─────╯

           Custom Tables
╭───────────────┬─────────────────╮
│               │       size      │
│               ├─────┬─────┬─────┤
│               │  1  │  2  │Total│
│               ├─────┼─────┼─────┤
│               │Count│Count│Count│
├───────────────┼─────┼─────┼─────┤
│class 1 datum 1│    1│     │    1│
│              3│    1│     │    1│
│              5│     │    1│    1│
│     ╶─────────┼─────┼─────┼─────┤
│      2 datum 2│    1│     │    1│
│              4│     │    1│    1│
│              6│     │    1│    1│
╰───────────────┴─────┴─────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1253"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_466
#AT_START_467
at_fn_group_banner 467 'ctables.at:1293' \
  "CTABLES interaction between EMPTY and PCOMPUTE" " " 40
at_xfail=no
(
  printf "%s\n" "467. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1294: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1294"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1294"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.

* Make sure that "Never" has no responses.
SELECT IF qn1 <> 5.

* This will include "% Not Drivers" even though it has a zero value,
because it is explicitly specified.  It will include "missing" and the
"Not Drivers or Missing" subtotal, even though they are both zero,
because we include empty values.
CTABLES
  /PCOMPUTE &all_drivers=EXPR([1 THRU 2] + [3 THRU 4])
  /PPROPERTIES &all_drivers LABEL='All Drivers'
  /PCOMPUTE &pct_never=EXPR([5] / ([1 THRU 2] + [3 THRU 4] + [5]) * 100)
  /PPROPERTIES &pct_never LABEL='% Not Drivers' FORMAT=COUNT PCT40.1
  /TABLE=qn1 BY qns3a
  /CATEGORIES VARIABLES=qn1
  [1 THRU 2, SUBTOTAL='Frequent Drivers',
  3 THRU 4, SUBTOTAL='Infrequent Drivers',
  &all_drivers, 5, &pct_never,
  MISSING, SUBTOTAL='Not Drivers or Missing'].

* This will include "% Not Drivers" even though it has a zero value,
because it is explicitly specified.  It will omit "missing" and the
"Not Drivers or Missing" subtotal because they are both zero and
we have EMPTY=EXCLUDE.
CTABLES
  /PCOMPUTE &all_drivers=EXPR([1 THRU 2] + [3 THRU 4])
  /PPROPERTIES &all_drivers LABEL='All Drivers'
  /PCOMPUTE &pct_never=EXPR([5] / ([1 THRU 2] + [3 THRU 4] + [5]) * 100)
  /PPROPERTIES &pct_never LABEL='% Not Drivers' FORMAT=COUNT PCT40.1
  /TABLE=qn1 BY qns3a
  /CATEGORIES VARIABLES=ALL EMPTY=EXCLUDE
  /CATEGORIES VARIABLES=qn1
  [1 THRU 2, SUBTOTAL='Frequent Drivers',
  3 THRU 4, SUBTOTAL='Infrequent Drivers',
  &all_drivers, 5, &pct_never,
  MISSING, SUBTOTAL='Not Drivers or Missing'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1334: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:1334"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                 Custom Tables
╭────────────────────────────────────────────────────────────────┬────────────╮
│                                                                │S3a. GENDER:│
│                                                                ├─────┬──────┤
│                                                                │ Male│Female│
│                                                                ├─────┼──────┤
│                                                                │Count│ Count│
├────────────────────────────────────────────────────────────────┼─────┼──────┤
│ 1. How often do you usually drive a car or Every day           │ 2305│  2362│
│other motor vehicle?                        Several days a week │  440│   834│
│                                            Frequent Drivers    │ 2745│  3196│
│                                            Once a week or less │  125│   236│
│                                            Only certain times a│   58│    72│
│                                            year                │     │      │
│                                            Infrequent Drivers  │  183│   308│
│                                            All Drivers         │ 2928│  3504│
│                                            Never               │    0│     0│
│                                            % Not Drivers       │  .0%│   .0%│
│                                            Don't know          │    0│     0│
│                                            Refused             │    0│     0│
│                                            Not Drivers or      │    0│     0│
│                                            Missing             │     │      │
╰────────────────────────────────────────────────────────────────┴─────┴──────╯

                                 Custom Tables
╭────────────────────────────────────────────────────────────────┬────────────╮
│                                                                │S3a. GENDER:│
│                                                                ├─────┬──────┤
│                                                                │ Male│Female│
│                                                                ├─────┼──────┤
│                                                                │Count│ Count│
├────────────────────────────────────────────────────────────────┼─────┼──────┤
│ 1. How often do you usually drive a car or Every day           │ 2305│  2362│
│other motor vehicle?                        Several days a week │  440│   834│
│                                            Frequent Drivers    │ 2745│  3196│
│                                            Once a week or less │  125│   236│
│                                            Only certain times a│   58│    72│
│                                            year                │     │      │
│                                            Infrequent Drivers  │  183│   308│
│                                            All Drivers         │ 2928│  3504│
│                                            % Not Drivers       │  .0%│   .0%│
╰────────────────────────────────────────────────────────────────┴─────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1334"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_467
#AT_START_468
at_fn_group_banner 468 'ctables.at:1380' \
  "CTABLES sorting categories" "                     " 40
at_xfail=no
(
  printf "%s\n" "468. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1381: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1381"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1381"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
IF (QND5A=6) QND5A=-1.
IF (QND5A=5) QND5A=-2.
CTABLES /TABLE qnd5a /CATEGORIES VARIABLES=qnd5a KEY=VALUE ORDER=A
        /TABLE qnd5a /CATEGORIES VARIABLES=qnd5a KEY=VALUE ORDER=D
        /TABLE qnd5a /CATEGORIES VARIABLES=qnd5a KEY=LABEL ORDER=A
        /TABLE qnd5a /CATEGORIES VARIABLES=qnd5a KEY=LABEL ORDER=D.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1391: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1391"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│D5a. What would you say is your primary ethnic  -2.00                   │   52│
│background?                                     -1.00                   │   78│
│                                                Cuban                   │   20│
│                                                Mexican                 │  311│
│                                                Spanish                 │   48│
│                                                South American          │   34│
│                                                Central American        │    0│
│                                                Puerto Rican, OR        │    0│
│                                                Something else          │   68│
│                                                Multiple - cannot choose│    7│
│                                                one                     │     │
╰────────────────────────────────────────────────────────────────────────┴─────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│D5a. What would you say is your primary ethnic  Multiple - cannot choose│    7│
│background?                                     one                     │     │
│                                                Something else          │   68│
│                                                Puerto Rican, OR        │    0│
│                                                Central American        │    0│
│                                                South American          │   34│
│                                                Spanish                 │   48│
│                                                Mexican                 │  311│
│                                                Cuban                   │   20│
│                                                -1.00                   │   78│
│                                                -2.00                   │   52│
╰────────────────────────────────────────────────────────────────────────┴─────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│D5a. What would you say is your primary ethnic  Central American        │    0│
│background?                                     Cuban                   │   20│
│                                                Mexican                 │  311│
│                                                Multiple - cannot choose│    7│
│                                                one                     │     │
│                                                Puerto Rican, OR        │    0│
│                                                Something else          │   68│
│                                                South American          │   34│
│                                                Spanish                 │   48│
│                                                -2.00                   │   52│
│                                                -1.00                   │   78│
╰────────────────────────────────────────────────────────────────────────┴─────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│D5a. What would you say is your primary ethnic  Spanish                 │   48│
│background?                                     South American          │   34│
│                                                Something else          │   68│
│                                                Puerto Rican, OR        │    0│
│                                                Multiple - cannot choose│    7│
│                                                one                     │     │
│                                                Mexican                 │  311│
│                                                Cuban                   │   20│
│                                                Central American        │    0│
│                                                -1.00                   │   78│
│                                                -2.00                   │   52│
╰────────────────────────────────────────────────────────────────────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1391"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_468
#AT_START_469
at_fn_group_banner 469 'ctables.at:1462' \
  "CTABLES simple nesting" "                         " 40
at_xfail=no
(
  printf "%s\n" "469. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1464: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1464"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1464"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE ((qn105ba + qn105bb + qn105bc + qn105bd) > qns3a) [COUNT, TABLEPCT PCT8.0]
  /CATEGORIES VARIABLES=qns3a TOTAL=YES.
CTABLES /TABLE qns3a > (qn105ba + qn105bb + qn105bc + qn105bd) [TABLEPCT PCT8.0]
  /CATEGORIES VARIABLES=qns3a TOTAL=YES
  /CLABELS ROW=OPPOSITE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1473: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1473"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭─────────────────────────────────────────────────────────────────┬─────┬──────╮
│                                                                 │     │ Table│
│                                                                 │Count│   %  │
├─────────────────────────────────────────────────────────────────┼─────┼──────┤
│105b. How likely is it that drivers    Almost     S3a.     Male  │  297│    4%│
│who have had too much to drink to      certain    GENDER:  Female│  403│    6%│
│drive safely will A. Get stopped by                        Total │  700│   10%│
│the police?                           ╶──────────────────────────┼─────┼──────┤
│                                       Very       S3a.     Male  │  660│   10%│
│                                       likely     GENDER:  Female│  842│   12%│
│                                                           Total │ 1502│   22%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Somewhat   S3a.     Male  │ 1174│   17%│
│                                       likely     GENDER:  Female│ 1589│   23%│
│                                                           Total │ 2763│   40%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Somewhat   S3a.     Male  │  640│    9%│
│                                       unlikely   GENDER:  Female│  667│   10%│
│                                                           Total │ 1307│   19%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Very       S3a.     Male  │  311│    5%│
│                                       unlikely   GENDER:  Female│  298│    4%│
│                                                           Total │  609│    9%│
├─────────────────────────────────────────────────────────────────┼─────┼──────┤
│105b. How likely is it that drivers    Almost     S3a.     Male  │  429│    6%│
│who have had too much to drink to      certain    GENDER:  Female│  671│   10%│
│drive safely will B. Have an accident?                     Total │ 1100│   16%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Very       S3a.     Male  │ 1104│   16%│
│                                       likely     GENDER:  Female│ 1715│   25%│
│                                                           Total │ 2819│   41%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Somewhat   S3a.     Male  │ 1203│   17%│
│                                       likely     GENDER:  Female│ 1214│   18%│
│                                                           Total │ 2417│   35%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Somewhat   S3a.     Male  │  262│    4%│
│                                       unlikely   GENDER:  Female│  168│    2%│
│                                                           Total │  430│    6%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Very       S3a.     Male  │   81│    1%│
│                                       unlikely   GENDER:  Female│   59│    1%│
│                                                           Total │  140│    2%│
├─────────────────────────────────────────────────────────────────┼─────┼──────┤
│105b. How likely is it that drivers    Almost     S3a.     Male  │  539│    8%│
│who have had too much to drink to      certain    GENDER:  Female│  610│    9%│
│drive safely will C. Be convicted for                      Total │ 1149│   17%│
│drunk driving?                        ╶──────────────────────────┼─────┼──────┤
│                                       Very       S3a.     Male  │  988│   14%│
│                                       likely     GENDER:  Female│ 1049│   15%│
│                                                           Total │ 2037│   30%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Somewhat   S3a.     Male  │  822│   12%│
│                                       likely     GENDER:  Female│ 1210│   18%│
│                                                           Total │ 2032│   30%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Somewhat   S3a.     Male  │  446│    7%│
│                                       unlikely   GENDER:  Female│  548│    8%│
│                                                           Total │  994│   15%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Very       S3a.     Male  │  268│    4%│
│                                       unlikely   GENDER:  Female│  354│    5%│
│                                                           Total │  622│    9%│
├─────────────────────────────────────────────────────────────────┼─────┼──────┤
│105b. How likely is it that drivers    Almost     S3a.     Male  │  498│    7%│
│who have had too much to drink to      certain    GENDER:  Female│  603│    9%│
│drive safely will D. Be arrested for                       Total │ 1101│   16%│
│drunk driving?                        ╶──────────────────────────┼─────┼──────┤
│                                       Very       S3a.     Male  │  805│   12%│
│                                       likely     GENDER:  Female│ 1029│   15%│
│                                                           Total │ 1834│   27%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Somewhat   S3a.     Male  │  975│   14%│
│                                       likely     GENDER:  Female│ 1332│   19%│
│                                                           Total │ 2307│   34%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Somewhat   S3a.     Male  │  535│    8%│
│                                       unlikely   GENDER:  Female│  560│    8%│
│                                                           Total │ 1095│   16%│
│                                      ╶──────────────────────────┼─────┼──────┤
│                                       Very       S3a.     Male  │  270│    4%│
│                                       unlikely   GENDER:  Female│  279│    4%│
│                                                           Total │  549│    8%│
╰─────────────────────────────────────────────────────────────────┴─────┴──────╯

                                  Custom Tables
╭─────────────────────────────────┬────────┬──────┬─────────┬─────────┬────────╮
│                                 │ Almost │ Very │ Somewhat│ Somewhat│  Very  │
│                                 │ certain│likely│  likely │ unlikely│unlikely│
│                                 ├────────┼──────┼─────────┼─────────┼────────┤
│                                 │        │ Table│         │         │        │
│                                 │ Table %│   %  │ Table % │ Table % │ Table %│
├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│S3a.    Male   105b. How likely  │      4%│   10%│      17%│       9%│      5%│
│GENDER:        is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               A. Get stopped by │        │      │         │         │        │
│               the police?       │        │      │         │         │        │
│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│        Female 105b. How likely  │      6%│   12%│      23%│      10%│      4%│
│               is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               A. Get stopped by │        │      │         │         │        │
│               the police?       │        │      │         │         │        │
│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│        Total  105b. How likely  │     10%│   22%│      40%│      19%│      9%│
│               is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               A. Get stopped by │        │      │         │         │        │
│               the police?       │        │      │         │         │        │
├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│S3a.    Male   105b. How likely  │      6%│   16%│      17%│       4%│      1%│
│GENDER:        is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               B. Have an        │        │      │         │         │        │
│               accident?         │        │      │         │         │        │
│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│        Female 105b. How likely  │     10%│   25%│      18%│       2%│      1%│
│               is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               B. Have an        │        │      │         │         │        │
│               accident?         │        │      │         │         │        │
│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│        Total  105b. How likely  │     16%│   41%│      35%│       6%│      2%│
│               is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               B. Have an        │        │      │         │         │        │
│               accident?         │        │      │         │         │        │
├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│S3a.    Male   105b. How likely  │      8%│   14%│      12%│       7%│      4%│
│GENDER:        is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               C. Be convicted   │        │      │         │         │        │
│               for drunk driving?│        │      │         │         │        │
│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│        Female 105b. How likely  │      9%│   15%│      18%│       8%│      5%│
│               is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               C. Be convicted   │        │      │         │         │        │
│               for drunk driving?│        │      │         │         │        │
│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│        Total  105b. How likely  │     17%│   30%│      30%│      15%│      9%│
│               is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               C. Be convicted   │        │      │         │         │        │
│               for drunk driving?│        │      │         │         │        │
├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│S3a.    Male   105b. How likely  │      7%│   12%│      14%│       8%│      4%│
│GENDER:        is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               D. Be arrested for│        │      │         │         │        │
│               drunk driving?    │        │      │         │         │        │
│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│        Female 105b. How likely  │      9%│   15%│      19%│       8%│      4%│
│               is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               D. Be arrested for│        │      │         │         │        │
│               drunk driving?    │        │      │         │         │        │
│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
│        Total  105b. How likely  │     16%│   27%│      34%│      16%│      8%│
│               is it that drivers│        │      │         │         │        │
│               who have had too  │        │      │         │         │        │
│               much to drink to  │        │      │         │         │        │
│               drive safely will │        │      │         │         │        │
│               D. Be arrested for│        │      │         │         │        │
│               drunk driving?    │        │      │         │         │        │
╰─────────────────────────────────┴────────┴──────┴─────────┴─────────┴────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1473"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_469
#AT_START_470
at_fn_group_banner 470 'ctables.at:1667' \
  "CTABLES nesting and scale variables" "            " 40
at_xfail=no
(
  printf "%s\n" "470. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1669: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1669"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1669"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE=qnd1 > qn1 BY qns3a.
CTABLES /TABLE=qnd1 [MINIMUM, MAXIMUM, MEAN] > qns3a > (qn26 + qn27).
CTABLES /TABLE=qnsa1 > qn105ba [COLPCT] BY qns1
  /CATEGORIES VAR=qnsa1 EMPTY=EXCLUDE.
CTABLES /TABLE=AgeGroup > qn20 [MEAN F8.1, STDDEV F8.1].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1678: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1678"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭─────────────────────────────────────────────────────────────────┬────────────╮
│                                                                 │S3a. GENDER:│
│                                                                 ├─────┬──────┤
│                                                                 │ Male│Female│
│                                                                 ├─────┼──────┤
│                                                                 │ Mean│ Mean │
├─────────────────────────────────────────────────────────────────┼─────┼──────┤
│D1. AGE: What   1. How often do you usually drive Every day      │   46│    46│
│is your age?   a car or other motor vehicle?      Several days a │   51│    59│
│                                                  week           │     │      │
│                                                  Once a week or │   44│    54│
│                                                  less           │     │      │
│                                                  Only certain   │   34│    41│
│                                                  times a year   │     │      │
│                                                  Never          │   39│    55│
╰─────────────────────────────────────────────────────────────────┴─────┴──────╯

                                  Custom Tables
╭─────────────────────────────────────────────────────────┬───────┬───────┬────╮
│                                                         │Minimum│Maximum│Mean│
├─────────────────────────────────────────────────────────┼───────┼───────┼────┤
│D1. AGE: S3a.     Male   26. During the last 12       Yes│     16│     86│  42│
│What is  GENDER:         months, has there been a        │       │       │    │
│your                     time when you felt you          │       │       │    │
│age?                     should cut down on your      No │     16│     86│  46│
│                         drinking?                       │       │       │    │
│                 ╶───────────────────────────────────────┼───────┼───────┼────┤
│                  Female 26. During the last 12       Yes│     16│     86│  43│
│                         months, has there been a        │       │       │    │
│                         time when you felt you          │       │       │    │
│                         should cut down on your      No │     16│     86│  48│
│                         drinking?                       │       │       │    │
├─────────────────────────────────────────────────────────┼───────┼───────┼────┤
│D1. AGE: S3a.     Male   27. During the last 12       Yes│     16│     86│  38│
│What is  GENDER:         months, has there been a        │       │       │    │
│your                     time when people criticized  No │     16│     86│  46│
│age?                     your drinking?                  │       │       │    │
│                 ╶───────────────────────────────────────┼───────┼───────┼────┤
│                  Female 27. During the last 12       Yes│     17│     69│  37│
│                         months, has there been a        │       │       │    │
│                         time when people criticized  No │     16│     86│  48│
│                         your drinking?                  │       │       │    │
╰─────────────────────────────────────────────────────────┴───────┴───────┴────╯

                                  Custom Tables
╭─────────────────────────────┬────────────────────────────────────────────────╮
│                             │S1. Including yourself, how many members of this│
│                             │         household are age 16 or older?         │
│                             ├──────┬──────┬──────┬──────┬──────┬──────┬──────┤
│                             │      │      │      │      │      │      │ 6 or │
│                             │ None │   1  │   2  │   3  │   4  │   5  │ more │
│                             ├──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│                             │Column│Column│Column│Column│Column│Column│Column│
│                             │   %  │   %  │   %  │   %  │   %  │   %  │   %  │
├─────────────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Sa1.    RDD 105b.    Almost  │     .│  9.5%│  8.2%│ 12.4%│  9.9%│ 20.0%│ 23.8%│
│SAMPLE      How      certain │      │      │      │      │      │      │      │
│SOURCE:     likely           │      │      │      │      │      │      │      │
│            is it    Very    │     .│ 24.9%│ 18.5%│ 24.0%│ 26.6%│ 25.5%│ 33.3%│
│            that     likely  │      │      │      │      │      │      │      │
│            drivers          │      │      │      │      │      │      │      │
│            who have         │      │      │      │      │      │      │      │
│            had too  Somewhat│     .│ 38.3%│ 41.9%│ 38.6%│ 37.5%│ 36.4%│ 23.8%│
│            much to  likely  │      │      │      │      │      │      │      │
│            drink to         │      │      │      │      │      │      │      │
│            drive    Somewhat│     .│ 18.1%│ 21.7%│ 16.8%│ 16.7%│ 10.9%│  9.5%│
│            safely   unlikely│      │      │      │      │      │      │      │
│            will A.          │      │      │      │      │      │      │      │
│            Get              │      │      │      │      │      │      │      │
│            stopped  Very    │     .│  9.2%│  9.7%│  8.2%│  9.4%│  7.3%│  9.5%│
│            by the   unlikely│      │      │      │      │      │      │      │
│            police?          │      │      │      │      │      │      │      │
╰─────────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────╯

                                  Custom Tables
╭──────────────────────────────────────────────────────────────┬────┬──────────╮
│                                                              │    │    Std   │
│                                                              │Mean│ Deviation│
├──────────────────────────────────────────────────────────────┼────┼──────────┤
│Age    16 to 25 20. On how many of the thirty days in this    │ 5.2│       6.0│
│group           typical month did you have one or more        │    │          │
│                alcoholic beverages to drink?                 │    │          │
│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
│       26 to 35 20. On how many of the thirty days in this    │ 4.7│       5.9│
│                typical month did you have one or more        │    │          │
│                alcoholic beverages to drink?                 │    │          │
│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
│       36 to 45 20. On how many of the thirty days in this    │ 5.5│       6.8│
│                typical month did you have one or more        │    │          │
│                alcoholic beverages to drink?                 │    │          │
│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
│       46 to 55 20. On how many of the thirty days in this    │ 5.8│       7.7│
│                typical month did you have one or more        │    │          │
│                alcoholic beverages to drink?                 │    │          │
│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
│       56 to 65 20. On how many of the thirty days in this    │ 6.3│       8.2│
│                typical month did you have one or more        │    │          │
│                alcoholic beverages to drink?                 │    │          │
│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
│       66 or    20. On how many of the thirty days in this    │ 7.1│       9.2│
│       older    typical month did you have one or more        │    │          │
│                alcoholic beverages to drink?                 │    │          │
╰──────────────────────────────────────────────────────────────┴────┴──────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1678"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_470
#AT_START_471
at_fn_group_banner 471 'ctables.at:1787' \
  "CTABLES SLABELS" "                                " 40
at_xfail=no
(
  printf "%s\n" "471. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1788: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1788"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1788"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE qn1 [COUNT COLPCT].
CTABLES /TABLE qn1 [COUNT COLPCT]
    /SLABELS POSITION=ROW.
CTABLES /TABLE qn1 [COUNT COLPCT]
    /SLABELS POSITION=ROW VISIBLE=NO.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1797: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1797"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭────────────────────────────────────────────────────────────────┬─────┬───────╮
│                                                                │     │ Column│
│                                                                │Count│   %   │
├────────────────────────────────────────────────────────────────┼─────┼───────┤
│ 1. How often do you usually drive a car or  Every day          │ 4667│  66.9%│
│other motor vehicle?                         Several days a week│ 1274│  18.3%│
│                                             Once a week or less│  361│   5.2%│
│                                             Only certain times │  130│   1.9%│
│                                             a year             │     │       │
│                                             Never              │  540│   7.7%│
╰────────────────────────────────────────────────────────────────┴─────┴───────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│ 1. How often do you usually drive a car or  Every day           Count  │ 4667│
│other motor vehicle?                                             Column │66.9%│
│                                                                 %      │     │
│                                            ╶───────────────────────────┼─────┤
│                                             Several days a week Count  │ 1274│
│                                                                 Column │18.3%│
│                                                                 %      │     │
│                                            ╶───────────────────────────┼─────┤
│                                             Once a week or less Count  │  361│
│                                                                 Column │ 5.2%│
│                                                                 %      │     │
│                                            ╶───────────────────────────┼─────┤
│                                             Only certain times  Count  │  130│
│                                             a year              Column │ 1.9%│
│                                                                 %      │     │
│                                            ╶───────────────────────────┼─────┤
│                                             Never               Count  │  540│
│                                                                 Column │ 7.7%│
│                                                                 %      │     │
╰────────────────────────────────────────────────────────────────────────┴─────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│ 1. How often do you usually drive a car or other  Every day            │ 4667│
│motor vehicle?                                                          │66.9%│
│                                                   Several days a week  │ 1274│
│                                                                        │18.3%│
│                                                   Once a week or less  │  361│
│                                                                        │ 5.2%│
│                                                   Only certain times a │  130│
│                                                   year                 │ 1.9%│
│                                                   Never                │  540│
│                                                                        │ 7.7%│
╰────────────────────────────────────────────────────────────────────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1797"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_471
#AT_START_472
at_fn_group_banner 472 'ctables.at:1850' \
  "CTABLES SLABELS with stacking different summaries" "" 40
at_xfail=no
(
  printf "%s\n" "472. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1851: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1851"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1851"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /VLABELS VARIABLES=ALL DISPLAY=NAME
    /TABLE qn1 [COUNT] + qnd1 [MEAN] + qn17 [UCOUNT] BY qns3a
    /SLABELS POSITION=ROW.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1859: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1859"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                         Custom Tables
╭─────────────────────────────────────────────────┬───────────╮
│                                                 │   QNS3A   │
│                                                 ├────┬──────┤
│                                                 │Male│Female│
├─────────────────────────────────────────────────┼────┼──────┤
│QN1  Every day                   Count           │2305│  2362│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Several days a week         Count           │ 440│   834│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Once a week or less         Count           │ 125│   236│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Only certain times a year   Count           │  58│    72│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Never                       Count           │ 192│   348│
├─────────────────────────────────────────────────┼────┼──────┤
│qnd1 Mean                                        │  46│    50│
├─────────────────────────────────────────────────┼────┼──────┤
│QN17 OR, something else          Unweighted Count│   1│     1│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Beer                        Unweighted Count│ 817│   256│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Light beer                  Unweighted Count│ 406│   214│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Wine                        Unweighted Count│ 390│  1028│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Wine coolers                Unweighted Count│  20│   117│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Hard liquor or mixed drinks Unweighted Count│ 392│   496│
│    ╶────────────────────────────────────────────┼────┼──────┤
│     Flavored malt drinks        Unweighted Count│  20│    63│
╰─────────────────────────────────────────────────┴────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1859"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_472
#AT_START_473
at_fn_group_banner 473 'ctables.at:1895' \
  "CTABLES simple totals" "                          " 40
at_xfail=no
(
  printf "%s\n" "473. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1896: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1896"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1896"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE=qn17
    /CATEGORIES VARIABLES=qn17 TOTAL=YES LABEL='Number responding'.
DESCRIPTIVES qn18/STATISTICS=MEAN.
CTABLES /TABLE=region > qn18 [MEAN, COUNT, VALIDN, TOTALN]
    /CATEGORIES VARIABLES=region TOTAL=YES LABEL='All regions'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1905: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:1905"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│17. When you drink alcoholic beverages, which ONE of  OR, something else│    2│
│the following beverages do you drink MOST OFTEN?      Beer              │ 1073│
│                                                      Light beer        │  620│
│                                                      Wine              │ 1418│
│                                                      Wine coolers      │  137│
│                                                      Hard liquor or    │  888│
│                                                      mixed drinks      │     │
│                                                      Flavored malt     │   83│
│                                                      drinks            │     │
│                                                      Number responding │ 4221│
╰────────────────────────────────────────────────────────────────────────┴─────╯

                             Descriptive Statistics
╭────────────────────────────────────────────────────────────────────┬────┬────╮
│                                                                    │  N │Mean│
├────────────────────────────────────────────────────────────────────┼────┼────┤
│18. When you drink ANSWERFROM(QN17R1), about how many               │4218│4.62│
│ANSWERFROM(QN17R2) do you usually drink per sitting?                │    │    │
│Valid N (listwise)                                                  │6999│    │
│Missing N (listwise)                                                │2781│    │
╰────────────────────────────────────────────────────────────────────┴────┴────╯

                                  Custom Tables
╭──────────────────────────────────────────────────────┬────┬─────┬──────┬─────╮
│                                                      │    │     │ Valid│Total│
│                                                      │Mean│Count│   N  │  N  │
├──────────────────────────────────────────────────────┼────┼─────┼──────┼─────┤
│Region NE       18. When you drink ANSWERFROM(QN17R1),│4.36│ 1409│   949│ 1409│
│                about how many ANSWERFROM(QN17R2) do  │    │     │      │     │
│                you usually drink per sitting?        │    │     │      │     │
│      ╶───────────────────────────────────────────────┼────┼─────┼──────┼─────┤
│       MW       18. When you drink ANSWERFROM(QN17R1),│4.67│ 1654│  1027│ 1654│
│                about how many ANSWERFROM(QN17R2) do  │    │     │      │     │
│                you usually drink per sitting?        │    │     │      │     │
│      ╶───────────────────────────────────────────────┼────┼─────┼──────┼─────┤
│       S        18. When you drink ANSWERFROM(QN17R1),│4.71│ 2390│  1287│ 2390│
│                about how many ANSWERFROM(QN17R2) do  │    │     │      │     │
│                you usually drink per sitting?        │    │     │      │     │
│      ╶───────────────────────────────────────────────┼────┼─────┼──────┼─────┤
│       W        18. When you drink ANSWERFROM(QN17R1),│4.69│ 1546│   955│ 1546│
│                about how many ANSWERFROM(QN17R2) do  │    │     │      │     │
│                you usually drink per sitting?        │    │     │      │     │
│      ╶───────────────────────────────────────────────┼────┼─────┼──────┼─────┤
│       All      18. When you drink ANSWERFROM(QN17R1),│4.62│ 6999│  4218│ 6999│
│       regions  about how many ANSWERFROM(QN17R2) do  │    │     │      │     │
│                you usually drink per sitting?        │    │     │      │     │
╰──────────────────────────────────────────────────────┴────┴─────┴──────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1905"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_473
#AT_START_474
at_fn_group_banner 474 'ctables.at:1960' \
  "CTABLES subtotals" "                              " 40
at_xfail=no
(
  printf "%s\n" "474. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1961: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:1961"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1961"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE=qn105ba BY qns1
    /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, SUBTOTAL].
CTABLES /TABLE=qn105ba [COLPCT] BY qns1
    /CATEGORIES VARIABLES=qn105ba [1, 2, 3, SUBTOTAL, 4, 5, SUBTOTAL].
CTABLES /TABLE=qn105ba BY qns1
    /CATEGORIES VARIABLES=qn105ba [1, 2, 3, SUBTOTAL, 4, 5, SUBTOTAL]
    /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, SUBTOTAL].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:1972: pspp ctables.sps -O box=unicode -O width=120"
at_fn_check_prepare_trace "ctables.at:1972"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                                      Custom Tables
╭─────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────────╮
│                                                         │ S1. Including yourself, how many members of this household │
│                                                         │                    are age 16 or older?                    │
│                                                         ├───────┬───────┬─────────┬───────┬────────┬──────┬──────────┤
│                                                         │   1   │   2   │ Subtotal│   3   │    4   │   5  │ Subtotal │
│                                                         ├───────┼───────┼─────────┼───────┼────────┼──────┼──────────┤
│                                                         │ Count │ Count │  Count  │ Count │  Count │ Count│   Count  │
├─────────────────────────────────────────────────────────┼───────┼───────┼─────────┼───────┼────────┼──────┼──────────┤
│105b. How likely is it that drivers who have  Almost     │    147│    246│      393│     62│      19│    11│        92│
│had too much to drink to drive safely will A. certain    │       │       │         │       │        │      │          │
│Get stopped by the police?                    Very likely│    384│    552│      936│    120│      51│    14│       185│
│                                              Somewhat   │    590│   1249│     1839│    193│      72│    20│       285│
│                                              likely     │       │       │         │       │        │      │          │
│                                              Somewhat   │    278│    647│      925│     84│      32│     6│       122│
│                                              unlikely   │       │       │         │       │        │      │          │
│                                              Very       │    141│    290│      431│     41│      18│     4│        63│
│                                              unlikely   │       │       │         │       │        │      │          │
╰─────────────────────────────────────────────────────────┴───────┴───────┴─────────┴───────┴────────┴──────┴──────────╯

                                                      Custom Tables
╭────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────╮
│                                                        │  S1. Including yourself, how many members of this household │
│                                                        │                     are age 16 or older?                    │
│                                                        ├────────┬────────┬────────┬────────┬───────┬────────┬────────┤
│                                                        │        │        │        │        │       │        │  6 or  │
│                                                        │  None  │    1   │    2   │    3   │   4   │    5   │  more  │
│                                                        ├────────┼────────┼────────┼────────┼───────┼────────┼────────┤
│                                                        │        │        │        │        │ Column│        │        │
│                                                        │Column %│Column %│Column %│Column %│   %   │Column %│Column %│
├────────────────────────────────────────────────────────┼────────┼────────┼────────┼────────┼───────┼────────┼────────┤
│105b. How likely is it that drivers who have Almost     │       .│    9.5%│    8.2%│   12.4%│   9.9%│   20.0%│   23.8%│
│had too much to drink to drive safely will   certain    │        │        │        │        │       │        │        │
│A. Get stopped by the police?                Very likely│       .│   24.9%│   18.5%│   24.0%│  26.6%│   25.5%│   33.3%│
│                                             Somewhat   │       .│   38.3%│   41.9%│   38.6%│  37.5%│   36.4%│   23.8%│
│                                             likely     │        │        │        │        │       │        │        │
│                                             Subtotal   │       .│   72.8%│   68.6%│   75.0%│  74.0%│   81.8%│   81.0%│
│                                             Somewhat   │       .│   18.1%│   21.7%│   16.8%│  16.7%│   10.9%│    9.5%│
│                                             unlikely   │        │        │        │        │       │        │        │
│                                             Very       │       .│    9.2%│    9.7%│    8.2%│   9.4%│    7.3%│    9.5%│
│                                             unlikely   │        │        │        │        │       │        │        │
│                                             Subtotal   │       .│   27.2%│   31.4%│   25.0%│  26.0%│   18.2%│   19.0%│
╰────────────────────────────────────────────────────────┴────────┴────────┴────────┴────────┴───────┴────────┴────────╯

                                                      Custom Tables
╭─────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────────╮
│                                                         │ S1. Including yourself, how many members of this household │
│                                                         │                    are age 16 or older?                    │
│                                                         ├───────┬───────┬─────────┬───────┬────────┬──────┬──────────┤
│                                                         │   1   │   2   │ Subtotal│   3   │    4   │   5  │ Subtotal │
│                                                         ├───────┼───────┼─────────┼───────┼────────┼──────┼──────────┤
│                                                         │ Count │ Count │  Count  │ Count │  Count │ Count│   Count  │
├─────────────────────────────────────────────────────────┼───────┼───────┼─────────┼───────┼────────┼──────┼──────────┤
│105b. How likely is it that drivers who have  Almost     │    147│    246│      393│     62│      19│    11│        92│
│had too much to drink to drive safely will A. certain    │       │       │         │       │        │      │          │
│Get stopped by the police?                    Very likely│    384│    552│      936│    120│      51│    14│       185│
│                                              Somewhat   │    590│   1249│     1839│    193│      72│    20│       285│
│                                              likely     │       │       │         │       │        │      │          │
│                                              Subtotal   │   1121│   2047│     3168│    375│     142│    45│       562│
│                                              Somewhat   │    278│    647│      925│     84│      32│     6│       122│
│                                              unlikely   │       │       │         │       │        │      │          │
│                                              Very       │    141│    290│      431│     41│      18│     4│        63│
│                                              unlikely   │       │       │         │       │        │      │          │
│                                              Subtotal   │    419│    937│     1356│    125│      50│    10│       185│
╰─────────────────────────────────────────────────────────┴───────┴───────┴─────────┴───────┴────────┴──────┴──────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:1972"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_474
#AT_START_475
at_fn_group_banner 475 'ctables.at:2041' \
  "CTABLES PCOMPUTE" "                               " 40
at_xfail=no
(
  printf "%s\n" "475. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2043: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:2043"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2043"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /PCOMPUTE &x=EXPR([3] + [4])
    /PCOMPUTE &y=EXPR([4] + [5])
    /PPROPERTIES &x LABEL='3+4' FORMAT=COUNT F8.2
    /PPROPERTIES &y LABEL=')LABEL[5]+)LABEL[6]'
    /TABLE=qn105ba [COUNT, ROWPCT] BY qns1
    /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, &x, &y, SUBTOTAL] TOTAL=YES

* Adding HIDESOURCECATS=YES for one PPROPERTIES.
CTABLES
    /PCOMPUTE &x=EXPR([3] + [4])
    /PCOMPUTE &y=EXPR([4] + [5])
    /PPROPERTIES &x LABEL='3+4' FORMAT=COUNT F8.2
    /PPROPERTIES &y LABEL=')LABEL[5]+)LABEL[6]' HIDESOURCECATS=YES
    /TABLE=qn105ba [COUNT, ROWPCT] BY qns1
    /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, &x, &y, SUBTOTAL] TOTAL=YES
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2063: pspp ctables.sps -O box=unicode -O width=140"
at_fn_check_prepare_trace "ctables.at:2063"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=140
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                                                Custom Tables
╭───────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│                   │                    S1. Including yourself, how many members of this household are age 16 or older?                   │
│                   ├───────────┬───────────┬───────────┬───────────┬──────────┬──────────┬────────────┬──────────┬───────────┬────────────┤
│                   │     1     │     2     │  Subtotal │     3     │     4    │     5    │     3+4    │    4+5   │  Subtotal │    Total   │
│                   ├─────┬─────┼─────┬─────┼─────┬─────┼─────┬─────┼─────┬────┼─────┬────┼──────┬─────┼─────┬────┼─────┬─────┼─────┬──────┤
│                   │     │     │     │     │     │     │     │     │     │ Row│     │ Row│      │     │     │ Row│     │     │     │      │
│                   │Count│Row %│Count│Row %│Count│Row %│Count│Row %│Count│  % │Count│  % │ Count│Row %│Count│  % │Count│Row %│Count│ Row %│
├───────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────┼─────┼────┼──────┼─────┼─────┼────┼─────┼─────┼─────┼──────┤
│105b. How  Almost  │  147│30.3%│  246│50.7%│  393│81.0%│   62│12.8%│   19│3.9%│   11│2.3%│ 81.00│16.7%│   30│6.2%│   92│19.0%│  485│100.0%│
│likely is  certain │     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│it that            │     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│drivers    Very    │  384│34.3%│  552│49.2%│  936│83.5%│  120│10.7%│   51│4.5%│   14│1.2%│171.00│15.3%│   65│5.8%│  185│16.5%│ 1121│100.0%│
│who have   likely  │     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│had too            │     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│much to    Somewhat│  590│27.8%│ 1249│58.8%│ 1839│86.6%│  193│ 9.1%│   72│3.4%│   20│ .9%│265.00│12.5%│   92│4.3%│  285│13.4%│ 2124│100.0%│
│drink to   likely  │     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│drive              │     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│safely     Somewhat│  278│26.6%│  647│61.8%│  925│88.3%│   84│ 8.0%│   32│3.1%│    6│ .6%│116.00│11.1%│   38│3.6%│  122│11.7%│ 1047│100.0%│
│will A.    unlikely│     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│Get                │     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│stopped by Very    │  141│28.5%│  290│58.7%│  431│87.2%│   41│ 8.3%│   18│3.6%│    4│ .8%│ 59.00│11.9%│   22│4.5%│   63│12.8%│  494│100.0%│
│the        unlikely│     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
│police?            │     │     │     │     │     │     │     │     │     │    │     │    │      │     │     │    │     │     │     │      │
╰───────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴────┴─────┴────┴──────┴─────┴─────┴────┴─────┴─────┴─────┴──────╯

                                                                Custom Tables
╭─────────────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────╮
│                                         │         S1. Including yourself, how many members of this household are age 16 or older?        │
│                                         ├───────────┬───────────┬───────────┬───────────┬────────────┬──────────┬───────────┬────────────┤
│                                         │     1     │     2     │  Subtotal │     3     │     3+4    │    4+5   │  Subtotal │    Total   │
│                                         ├─────┬─────┼─────┬─────┼─────┬─────┼─────┬─────┼──────┬─────┼─────┬────┼─────┬─────┼─────┬──────┤
│                                         │     │     │     │     │     │     │     │     │      │     │     │ Row│     │     │     │      │
│                                         │Count│Row %│Count│Row %│Count│Row %│Count│Row %│ Count│Row %│Count│  % │Count│Row %│Count│ Row %│
├─────────────────────────────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼──────┼─────┼─────┼────┼─────┼─────┼─────┼──────┤
│105b. How likely is it that    Almost    │  147│30.3%│  246│50.7%│  393│81.0%│   62│12.8%│ 81.00│16.7%│   30│6.2%│   92│19.0%│  485│100.0%│
│drivers who have had too much  certain   │     │     │     │     │     │     │     │     │      │     │     │    │     │     │     │      │
│to drink to drive safely will  Very      │  384│34.3%│  552│49.2%│  936│83.5%│  120│10.7%│171.00│15.3%│   65│5.8%│  185│16.5%│ 1121│100.0%│
│A. Get stopped by the police?  likely    │     │     │     │     │     │     │     │     │      │     │     │    │     │     │     │      │
│                               Somewhat  │  590│27.8%│ 1249│58.8%│ 1839│86.6%│  193│ 9.1%│265.00│12.5%│   92│4.3%│  285│13.4%│ 2124│100.0%│
│                               likely    │     │     │     │     │     │     │     │     │      │     │     │    │     │     │     │      │
│                               Somewhat  │  278│26.6%│  647│61.8%│  925│88.3%│   84│ 8.0%│116.00│11.1%│   38│3.6%│  122│11.7%│ 1047│100.0%│
│                               unlikely  │     │     │     │     │     │     │     │     │      │     │     │    │     │     │     │      │
│                               Very      │  141│28.5%│  290│58.7%│  431│87.2%│   41│ 8.3%│ 59.00│11.9%│   22│4.5%│   63│12.8%│  494│100.0%│
│                               unlikely  │     │     │     │     │     │     │     │     │      │     │     │    │     │     │     │      │
╰─────────────────────────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴──────┴─────┴─────┴────┴─────┴─────┴─────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2063"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_475
#AT_START_476
at_fn_group_banner 476 'ctables.at:2113' \
  "CTABLES PCOMPUTE - OTHERNM and MISSING" "         " 40
at_xfail=no
(
  printf "%s\n" "476. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2115: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:2115"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2115"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /PCOMPUTE &x=EXPR(OTHERNM)
    /PCOMPUTE &y=EXPR(MISSING)
    /PPROPERTIES &x LABEL='Drivers'
    /PPROPERTIES &y LABEL='Missing Values 2'
    /TABLE=qn1 BY qns3a
    /CATEGORIES VARIABLES=qn1 [OTHERNM, 5, &x, SUBTOTAL='Valid Values', MISSING, SUBTOTAL='Missing Values', &y]
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2126: pspp ctables.sps -O box=unicode -O width=140"
at_fn_check_prepare_trace "ctables.at:2126"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=140
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                              Custom Tables
╭──────────────────────────────────────────────────────────────────────────────────────────┬────────────╮
│                                                                                          │S3a. GENDER:│
│                                                                                          ├─────┬──────┤
│                                                                                          │ Male│Female│
│                                                                                          ├─────┼──────┤
│                                                                                          │Count│ Count│
├──────────────────────────────────────────────────────────────────────────────────────────┼─────┼──────┤
│ 1. How often do you usually drive a car or other motor vehicle? Every day                │ 2305│  2362│
│                                                                 Several days a week      │  440│   834│
│                                                                 Once a week or less      │  125│   236│
│                                                                 Only certain times a year│   58│    72│
│                                                                 Never                    │  192│   348│
│                                                                 Drivers                  │ 2928│  3504│
│                                                                 Valid Values             │ 3120│  3852│
│                                                                 Don't know               │    3│     5│
│                                                                 Refused                  │    9│    10│
│                                                                 Missing Values           │   12│    15│
│                                                                 Missing Values 2         │   12│    15│
╰──────────────────────────────────────────────────────────────────────────────────────────┴─────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2126"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_476
#AT_START_477
at_fn_group_banner 477 'ctables.at:2150' \
  "CTABLES PCOMPUTE - THRU" "                        " 40
at_xfail=no
(
  printf "%s\n" "477. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2152: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:2152"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2152"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /PCOMPUTE &x=EXPR([1 THRU 2])
    /PCOMPUTE &y=EXPR([3 THRU 4])
    /PCOMPUTE &z=EXPR([5] + MISSING)
    /PPROPERTIES &x LABEL='Frequent Drivers'
    /PPROPERTIES &y LABEL='Infrequent Drivers'
    /PPROPERTIES &z LABEL='Not Drivers or Missing'
    /TABLE=qn1 BY qns3a
    /CATEGORIES VARIABLES=qn1 [1 THRU 2, &x, 3 THRU 4, &y, SUBTOTAL='Drivers', 5, MISSING, &z]
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2165: pspp ctables.sps -O box=unicode -O width=140"
at_fn_check_prepare_trace "ctables.at:2165"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=140
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                              Custom Tables
╭──────────────────────────────────────────────────────────────────────────────────────────┬────────────╮
│                                                                                          │S3a. GENDER:│
│                                                                                          ├─────┬──────┤
│                                                                                          │ Male│Female│
│                                                                                          ├─────┼──────┤
│                                                                                          │Count│ Count│
├──────────────────────────────────────────────────────────────────────────────────────────┼─────┼──────┤
│ 1. How often do you usually drive a car or other motor vehicle? Every day                │ 2305│  2362│
│                                                                 Several days a week      │  440│   834│
│                                                                 Frequent Drivers         │ 2745│  3196│
│                                                                 Once a week or less      │  125│   236│
│                                                                 Only certain times a year│   58│    72│
│                                                                 Infrequent Drivers       │  183│   308│
│                                                                 Drivers                  │ 2928│  3504│
│                                                                 Never                    │  192│   348│
│                                                                 Don't know               │    3│     5│
│                                                                 Refused                  │    9│    10│
│                                                                 Not Drivers or Missing   │  204│   363│
╰──────────────────────────────────────────────────────────────────────────────────────────┴─────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2165"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_477
#AT_START_478
at_fn_group_banner 478 'ctables.at:2192' \
  "CTABLES intersecting PCOMPUTEs" "                 " 40
at_xfail=no
(
  printf "%s\n" "478. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >ctables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
WEIGHT by z.
FORMATS ALL (F1.0).
VARIABLE LEVEL x y (NOMINAL).
BEGIN DATA.
1 4 5
1 5 2
1 6 9
2 4 2
2 5 3
2 6 4
3 4 1
3 5 6
3 6 1
END DATA.

CTABLES
    /PCOMPUTE &a = EXPR([1] + [2])
    /PCOMPUTE &b = EXPR([2] + [3])
    /PCOMPUTE &c = EXPR([4] * [5])
    /PCOMPUTE &d = EXPR([5] * [6])
    /TABLE x BY y
    /CATEGORIES VARIABLES=x [1, &a, 2, &b, 3]
    /CATEGORIES VARIABLES=y [4, &c, 5, &d, 6].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2220: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:2220"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                   Custom Tables
╭───────────┬─────────────────────────────────────╮
│           │                  y                  │
│           ├─────┬─────────┬─────┬─────────┬─────┤
│           │  4  │[4] * [5]│  5  │[5] * [6]│  6  │
│           ├─────┼─────────┼─────┼─────────┼─────┤
│           │Count│  Count  │Count│  Count  │Count│
├───────────┼─────┼─────────┼─────┼─────────┼─────┤
│x 1        │    5│       10│    2│       18│    9│
│  [1] + [2]│    7│        .│    5│        .│   13│
│  2        │    2│        6│    3│       12│    4│
│  [2] + [3]│    3│        .│    9│        .│    5│
│  3        │    1│        6│    6│        6│    1│
╰───────────┴─────┴─────────┴─────┴─────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2220"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_478
#AT_START_479
at_fn_group_banner 479 'ctables.at:2238' \
  "CTABLES string and date and time" "               " 40
at_xfail=no
(
  printf "%s\n" "479. $at_setup_line: testing $at_desc ..."
  $at_traceon


weight=1
for gender in F M; do
    for month in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec; do
        for wkday in Sun Mon Tue Wed Thu Fri Sat Sun; do
	    printf "$weight $gender $month $wkday\n"
	    weight=$(expr \( $weight + 3 \) % 7 + 2)
	done
    done
done > ctables.txt

cat >ctables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='ctables.txt'
    /w (F5.0) gender (A1) fmon (MONTH3) fday (WKDAY3).
WEIGHT by w.
VARIABLE LEVEL w (SCALE).
VARIABLE LEVEL gender fmon fday (NOMINAL).
VARIABLE LABEL
  gender 'Gender'
  fmon 'Favorite month'
  fday 'Favorite day of the week'.
VALUE LABELS /gender 'M' 'Male' 'F' 'Female'.
CTABLES
    /PCOMPUTE &q2 = EXPR(['APR' THRU 'June'])
    /PPROPERTIES &q2 LABEL='Q2'
    /PCOMPUTE &weekend = EXPR(['sun'] + ['Sat'])
    /PPROPERTIES &weekend LABEL='Weekend'
    /TABLE fmon BY gender > fday
    /CATEGORIES VARIABLES=fmon ['JAN', 'FEB', 'Mar', SUBTOTAL="Q1",
                                4 THRU 6, &q2,
				'JUL' THRU 'sep', SUBTOTAL="Q3",
				OTHERNM, SUBTOTAL='Q4']
    /CATEGORIES VARIABLES=gender ['M', 'F']
    /CATEGORIES VARIABLE=fday ['Sun', 2 THRU 6, 'Sat', &weekend] TOTAL=YES
    /SLABELS VISIBLE=NO.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2275: pspp ctables.sps -O box=unicode -O width=120"
at_fn_check_prepare_trace "ctables.at:2275"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                              Custom Tables
╭──────────────────┬───────────────────────────────────────────────────────────────────────────────────╮
│                  │                                       Gender                                      │
│                  ├─────────────────────────────────────────┬─────────────────────────────────────────┤
│                  │                   Male                  │                  Female                 │
│                  ├─────────────────────────────────────────┼─────────────────────────────────────────┤
│                  │         Favorite day of the week        │         Favorite day of the week        │
│                  ├───┬───┬───┬───┬───┬───┬───┬───────┬─────┼───┬───┬───┬───┬───┬───┬───┬───────┬─────┤
│                  │SUN│MON│TUE│WED│THU│FRI│SAT│Weekend│Total│SUN│MON│TUE│WED│THU│FRI│SAT│Weekend│Total│
├──────────────────┼───┼───┼───┼───┼───┼───┼───┼───────┼─────┼───┼───┼───┼───┼───┼───┼───┼───────┼─────┤
│Favorite month JAN│ 10│  3│  8│  6│  4│  2│  7│     17│   40│  9│  6│  4│  2│  7│  5│  3│     12│   36│
│               FEB│  6│  8│  6│  4│  2│  7│  5│     11│   38│ 12│  4│  2│  7│  5│  3│  8│     20│   41│
│               MAR│ 16│  6│  4│  2│  7│  5│  3│     19│   43│  8│  2│  7│  5│  3│  8│  6│     14│   39│
│               Q1 │ 32│ 17│ 18│ 12│ 13│ 14│ 15│     47│     │ 29│ 12│ 13│ 14│ 15│ 16│ 17│     46│     │
│               APR│ 12│  4│  2│  7│  5│  3│  8│     20│   41│  4│  7│  5│  3│  8│  6│  4│      8│   37│
│               MAY│  8│  2│  7│  5│  3│  8│  6│     14│   39│ 14│  5│  3│  8│  6│  4│  2│     16│   42│
│               JUN│  4│  7│  5│  3│  8│  6│  4│      8│   37│ 10│  3│  8│  6│  4│  2│  7│     17│   40│
│               Q2 │ 24│ 13│ 14│ 15│ 16│ 17│ 18│      .│     │ 28│ 15│ 16│ 17│ 18│ 12│ 13│      .│     │
│               JUL│ 14│  5│  3│  8│  6│  4│  2│     16│   42│  6│  8│  6│  4│  2│  7│  5│     11│   38│
│               AUG│ 10│  3│  8│  6│  4│  2│  7│     17│   40│ 16│  6│  4│  2│  7│  5│  3│     19│   43│
│               SEP│  6│  8│  6│  4│  2│  7│  5│     11│   38│ 12│  4│  2│  7│  5│  3│  8│     20│   41│
│               Q3 │ 54│ 29│ 31│ 33│ 28│ 30│ 32│     86│     │ 62│ 33│ 28│ 30│ 32│ 27│ 29│     91│     │
│               OCT│ 16│  6│  4│  2│  7│  5│  3│     19│   43│  8│  2│  7│  5│  3│  8│  6│     14│   39│
│               NOV│ 12│  4│  2│  7│  5│  3│  8│     20│   41│  4│  7│  5│  3│  8│  6│  4│      8│   37│
│               DEC│  8│  2│  7│  5│  3│  8│  6│     14│   39│ 14│  5│  3│  8│  6│  4│  2│     16│   42│
│               Q4 │ 36│ 12│ 13│ 14│ 15│ 16│ 17│     53│     │ 26│ 14│ 15│ 16│ 17│ 18│ 12│     38│     │
╰──────────────────┴───┴───┴───┴───┴───┴───┴───┴───────┴─────┴───┴───┴───┴───┴───┴───┴───┴───────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2275"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_479
#AT_START_480
at_fn_group_banner 480 'ctables.at:2306' \
  "CTABLES CLABELS" "                                " 40
at_xfail=no
(
  printf "%s\n" "480. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2307: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:2307"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2307"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE AgeGroup BY qns3a.
CTABLES /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=OPPOSITE.
CTABLES /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=OPPOSITE.
CTABLES /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=LAYER.
CTABLES /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=LAYER.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2316: pspp ctables.sps --table-look=\"\$builddir\"/all-layers.stt -O box=unicode -O width=120"
at_fn_check_prepare_dynamic "pspp ctables.sps --table-look=\"$builddir\"/all-layers.stt -O box=unicode -O width=120" "ctables.at:2316"
( $at_check_trace; pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "             Custom Tables
╭───────────────────────┬────────────╮
│                       │S3a. GENDER:│
│                       ├─────┬──────┤
│                       │ Male│Female│
│                       ├─────┼──────┤
│                       │Count│ Count│
├───────────────────────┼─────┼──────┤
│Age group 15 or younger│    0│     0│
│          16 to 25     │  594│   505│
│          26 to 35     │  476│   491│
│          36 to 45     │  489│   548│
│          46 to 55     │  526│   649│
│          56 to 65     │  516│   731│
│          66 or older  │  531│   943│
╰───────────────────────┴─────┴──────╯

                                                      Custom Tables
╭───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│       │                                                 S3a. GENDER:                                                 │
│       ├──────────────────────────────────────────────────────┬───────────────────────────────────────────────────────┤
│       │                         Male                         │                         Female                        │
│       ├─────────┬───────┬──────┬──────┬──────┬───────┬───────┼──────────┬──────┬───────┬──────┬──────┬──────┬────────┤
│       │  15 or  │ 16 to │ 26 to│ 36 to│ 46 to│ 56 to │ 66 or │   15 or  │ 16 to│ 26 to │ 36 to│ 46 to│ 56 to│  66 or │
│       │ younger │   25  │  35  │  45  │  55  │   65  │ older │  younger │  25  │   35  │  45  │  55  │  65  │  older │
│       ├─────────┼───────┼──────┼──────┼──────┼───────┼───────┼──────────┼──────┼───────┼──────┼──────┼──────┼────────┤
│       │  Count  │ Count │ Count│ Count│ Count│ Count │ Count │   Count  │ Count│ Count │ Count│ Count│ Count│  Count │
├───────┼─────────┼───────┼──────┼──────┼──────┼───────┼───────┼──────────┼──────┼───────┼──────┼──────┼──────┼────────┤
│Age    │        0│    594│   476│   489│   526│    516│    531│         0│   505│    491│   548│   649│   731│     943│
│group  │         │       │      │      │      │       │       │          │      │       │      │      │      │        │
╰───────┴─────────┴───────┴──────┴──────┴──────┴───────┴───────┴──────────┴──────┴───────┴──────┴──────┴──────┴────────╯

                Custom Tables
╭──────────────────────────────┬────────────╮
│                              │S3a. GENDER:│
│                              ├────────────┤
│                              │    Count   │
├──────────────────────────────┼────────────┤
│Age group 15 or younger Male  │           0│
│                        Female│           0│
│         ╶────────────────────┼────────────┤
│          16 to 25      Male  │         594│
│                        Female│         505│
│         ╶────────────────────┼────────────┤
│          26 to 35      Male  │         476│
│                        Female│         491│
│         ╶────────────────────┼────────────┤
│          36 to 45      Male  │         489│
│                        Female│         548│
│         ╶────────────────────┼────────────┤
│          46 to 55      Male  │         526│
│                        Female│         649│
│         ╶────────────────────┼────────────┤
│          56 to 65      Male  │         516│
│                        Female│         731│
│         ╶────────────────────┼────────────┤
│          66 or older   Male  │         531│
│                        Female│         943│
╰──────────────────────────────┴────────────╯

      Custom Tables
15 or younger
╭─────────┬────────────╮
│         │S3a. GENDER:│
│         ├─────┬──────┤
│         │ Male│Female│
│         ├─────┼──────┤
│         │Count│ Count│
├─────────┼─────┼──────┤
│Age group│    0│     0│
╰─────────┴─────┴──────╯

      Custom Tables
16 to 25
╭─────────┬────────────╮
│         │S3a. GENDER:│
│         ├─────┬──────┤
│         │ Male│Female│
│         ├─────┼──────┤
│         │Count│ Count│
├─────────┼─────┼──────┤
│Age group│  594│   505│
╰─────────┴─────┴──────╯

      Custom Tables
26 to 35
╭─────────┬────────────╮
│         │S3a. GENDER:│
│         ├─────┬──────┤
│         │ Male│Female│
│         ├─────┼──────┤
│         │Count│ Count│
├─────────┼─────┼──────┤
│Age group│  476│   491│
╰─────────┴─────┴──────╯

      Custom Tables
36 to 45
╭─────────┬────────────╮
│         │S3a. GENDER:│
│         ├─────┬──────┤
│         │ Male│Female│
│         ├─────┼──────┤
│         │Count│ Count│
├─────────┼─────┼──────┤
│Age group│  489│   548│
╰─────────┴─────┴──────╯

      Custom Tables
46 to 55
╭─────────┬────────────╮
│         │S3a. GENDER:│
│         ├─────┬──────┤
│         │ Male│Female│
│         ├─────┼──────┤
│         │Count│ Count│
├─────────┼─────┼──────┤
│Age group│  526│   649│
╰─────────┴─────┴──────╯

      Custom Tables
56 to 65
╭─────────┬────────────╮
│         │S3a. GENDER:│
│         ├─────┬──────┤
│         │ Male│Female│
│         ├─────┼──────┤
│         │Count│ Count│
├─────────┼─────┼──────┤
│Age group│  516│   731│
╰─────────┴─────┴──────╯

      Custom Tables
66 or older
╭─────────┬────────────╮
│         │S3a. GENDER:│
│         ├─────┬──────┤
│         │ Male│Female│
│         ├─────┼──────┤
│         │Count│ Count│
├─────────┼─────┼──────┤
│Age group│  531│   943│
╰─────────┴─────┴──────╯

             Custom Tables
Male
╭───────────────────────┬────────────╮
│                       │S3a. GENDER:│
│                       ├────────────┤
│                       │    Count   │
├───────────────────────┼────────────┤
│Age group 15 or younger│           0│
│          16 to 25     │         594│
│          26 to 35     │         476│
│          36 to 45     │         489│
│          46 to 55     │         526│
│          56 to 65     │         516│
│          66 or older  │         531│
╰───────────────────────┴────────────╯

             Custom Tables
Female
╭───────────────────────┬────────────╮
│                       │S3a. GENDER:│
│                       ├────────────┤
│                       │    Count   │
├───────────────────────┼────────────┤
│Age group 15 or younger│           0│
│          16 to 25     │         505│
│          26 to 35     │         491│
│          36 to 45     │         548│
│          46 to 55     │         649│
│          56 to 65     │         731│
│          66 or older  │         943│
╰───────────────────────┴────────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2316"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_480
#AT_START_481
at_fn_group_banner 481 'ctables.at:2498' \
  "CTABLES CLABELS with VLABELS DISPLAY=NONE" "      " 40
at_xfail=no
(
  printf "%s\n" "481. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2499: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:2499"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2499"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /VLABELS VARIABLES=ALL DISPLAY=NONE /TABLE AgeGroup BY qns3a.
CTABLES /VLABELS VARIABLES=ALL DISPLAY=NONE /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=OPPOSITE.
CTABLES /VLABELS VARIABLES=ALL DISPLAY=NONE /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=OPPOSITE.
CTABLES /VLABELS VARIABLES=ALL DISPLAY=NONE /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=LAYER.
CTABLES /VLABELS VARIABLES=ALL DISPLAY=NONE /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=LAYER.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2508: pspp ctables.sps --table-look=\"\$builddir\"/all-layers.stt -O box=unicode -O width=120"
at_fn_check_prepare_dynamic "pspp ctables.sps --table-look=\"$builddir\"/all-layers.stt -O box=unicode -O width=120" "ctables.at:2508"
( $at_check_trace; pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "        Custom Tables
╭─────────────┬─────┬──────╮
│             │ Male│Female│
│             ├─────┼──────┤
│             │Count│ Count│
├─────────────┼─────┼──────┤
│15 or younger│    0│     0│
│16 to 25     │  594│   505│
│26 to 35     │  476│   491│
│36 to 45     │  489│   548│
│46 to 55     │  526│   649│
│56 to 65     │  516│   731│
│66 or older  │  531│   943│
╰─────────────┴─────┴──────╯

                                                      Custom Tables
╭────────┬──────────────────────────────────────────────────────┬──────────────────────────────────────────────────────╮
│        │                         Male                         │                        Female                        │
│        ├─────────┬───────┬──────┬──────┬──────┬───────┬───────┼─────────┬───────┬──────┬──────┬──────┬───────┬───────┤
│        │  15 or  │ 16 to │ 26 to│ 36 to│ 46 to│ 56 to │ 66 or │  15 or  │ 16 to │ 26 to│ 36 to│ 46 to│ 56 to │ 66 or │
│        │ younger │   25  │  35  │  45  │  55  │   65  │ older │ younger │   25  │  35  │  45  │  55  │   65  │ older │
│        ├─────────┼───────┼──────┼──────┼──────┼───────┼───────┼─────────┼───────┼──────┼──────┼──────┼───────┼───────┤
│        │  Count  │ Count │ Count│ Count│ Count│ Count │ Count │  Count  │ Count │ Count│ Count│ Count│ Count │ Count │
├────────┼─────────┼───────┼──────┼──────┼──────┼───────┼───────┼─────────┼───────┼──────┼──────┼──────┼───────┼───────┤
│agegroup│        0│    594│   476│   489│   526│    516│    531│        0│    505│   491│   548│   649│    731│    943│
╰────────┴─────────┴───────┴──────┴──────┴──────┴───────┴───────┴─────────┴───────┴──────┴──────┴──────┴───────┴───────╯

        Custom Tables
╭────────────────────┬─────╮
│                    │QNS3A│
│                    ├─────┤
│                    │Count│
├────────────────────┼─────┤
│15 or younger Male  │    0│
│              Female│    0│
├────────────────────┼─────┤
│16 to 25      Male  │  594│
│              Female│  505│
├────────────────────┼─────┤
│26 to 35      Male  │  476│
│              Female│  491│
├────────────────────┼─────┤
│36 to 45      Male  │  489│
│              Female│  548│
├────────────────────┼─────┤
│46 to 55      Male  │  526│
│              Female│  649│
├────────────────────┼─────┤
│56 to 65      Male  │  516│
│              Female│  731│
├────────────────────┼─────┤
│66 or older   Male  │  531│
│              Female│  943│
╰────────────────────┴─────╯

     Custom Tables
15 or younger
╭────────┬─────┬──────╮
│        │ Male│Female│
│        ├─────┼──────┤
│        │Count│ Count│
├────────┼─────┼──────┤
│agegroup│    0│     0│
╰────────┴─────┴──────╯

     Custom Tables
16 to 25
╭────────┬─────┬──────╮
│        │ Male│Female│
│        ├─────┼──────┤
│        │Count│ Count│
├────────┼─────┼──────┤
│agegroup│  594│   505│
╰────────┴─────┴──────╯

     Custom Tables
26 to 35
╭────────┬─────┬──────╮
│        │ Male│Female│
│        ├─────┼──────┤
│        │Count│ Count│
├────────┼─────┼──────┤
│agegroup│  476│   491│
╰────────┴─────┴──────╯

     Custom Tables
36 to 45
╭────────┬─────┬──────╮
│        │ Male│Female│
│        ├─────┼──────┤
│        │Count│ Count│
├────────┼─────┼──────┤
│agegroup│  489│   548│
╰────────┴─────┴──────╯

     Custom Tables
46 to 55
╭────────┬─────┬──────╮
│        │ Male│Female│
│        ├─────┼──────┤
│        │Count│ Count│
├────────┼─────┼──────┤
│agegroup│  526│   649│
╰────────┴─────┴──────╯

     Custom Tables
56 to 65
╭────────┬─────┬──────╮
│        │ Male│Female│
│        ├─────┼──────┤
│        │Count│ Count│
├────────┼─────┼──────┤
│agegroup│  516│   731│
╰────────┴─────┴──────╯

     Custom Tables
66 or older
╭────────┬─────┬──────╮
│        │ Male│Female│
│        ├─────┼──────┤
│        │Count│ Count│
├────────┼─────┼──────┤
│agegroup│  531│   943│
╰────────┴─────┴──────╯

    Custom Tables
Male
╭─────────────┬─────╮
│             │QNS3A│
│             ├─────┤
│             │Count│
├─────────────┼─────┤
│15 or younger│    0│
│16 to 25     │  594│
│26 to 35     │  476│
│36 to 45     │  489│
│46 to 55     │  526│
│56 to 65     │  516│
│66 or older  │  531│
╰─────────────┴─────╯

    Custom Tables
Female
╭─────────────┬─────╮
│             │QNS3A│
│             ├─────┤
│             │Count│
├─────────────┼─────┤
│15 or younger│    0│
│16 to 25     │  505│
│26 to 35     │  491│
│36 to 45     │  548│
│46 to 55     │  649│
│56 to 65     │  731│
│66 or older  │  943│
╰─────────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2508"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_481
#AT_START_482
at_fn_group_banner 482 'ctables.at:2668' \
  "CTABLES missing values" "                         " 40
at_xfail=no
(
  printf "%s\n" "482. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ctables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y.
BEGIN DATA.
1 1
1 2
1 3
1 4
1 5
1 .
2 1
2 2
2 3
2 4
2 5
2 .
3 1
3 2
3 3
3 4
3 5
3 .
4 1
4 2
4 3
4 4
4 5
4 .
5 1
5 2
5 3
5 4
5 5
5 .
. 1
. 2
. 3
. 4
. 5
. .
END DATA.
MISSING VALUES x (1, 2) y (2, 3).
VARIABLE LEVEL ALL (NOMINAL).

CTABLES /TABLE x[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN,
                 TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, VALIDN, TOTALN]]
    /CATEGORIES VARIABLES=ALL TOTAL=YES.
CTABLES /TABLE x[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN,
                 TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, VALIDN, TOTALN]]
    /CATEGORIES VARIABLES=ALL TOTAL=YES MISSING=INCLUDE.
CTABLES /TABLE x BY y[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN,
                      TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, VALIDN, TOTALN]]
    /CATEGORIES VARIABLES=ALL TOTAL=YES
    /SLABELS POSITION=ROW.
CTABLES /TABLE x BY y[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN,
                      TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, VALIDN, TOTALN]]
    /CATEGORIES VARIABLES=ALL TOTAL=YES MISSING=INCLUDE
    /SLABELS POSITION=ROW.
CTABLES /TABLE x BY y[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN,
                      TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, VALIDN, TOTALN]]
    /CATEGORIES VARIABLES=x [1, 2, 3, 4] TOTAL=YES
    /CATEGORIES VARIABLES=y [1, 3, 4, 5] TOTAL=YES
    /SLABELS POSITION=ROW.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2732: pspp ctables.sps -O box=unicode -O width=120"
at_fn_check_prepare_trace "ctables.at:2732"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                               Custom Tables
╭───────┬─────┬────────┬────────────────┬────────────────┬───────┬───────╮
│       │Count│Column %│Column Valid N %│Column Total N %│Valid N│Total N│
├───────┼─────┼────────┼────────────────┼────────────────┼───────┼───────┤
│x 3.00 │    6│   33.3%│           33.3%│           16.7%│       │       │
│  4.00 │    6│   33.3%│           33.3%│           16.7%│       │       │
│  5.00 │    6│   33.3%│           33.3%│           16.7%│       │       │
│  Total│   18│  100.0%│          100.0%│          100.0%│     18│     36│
╰───────┴─────┴────────┴────────────────┴────────────────┴───────┴───────╯

                               Custom Tables
╭───────┬─────┬────────┬────────────────┬────────────────┬───────┬───────╮
│       │Count│Column %│Column Valid N %│Column Total N %│Valid N│Total N│
├───────┼─────┼────────┼────────────────┼────────────────┼───────┼───────┤
│x 1.00 │    6│   20.0%│             .0%│           16.7%│       │       │
│  2.00 │    6│   20.0%│             .0%│           16.7%│       │       │
│  3.00 │    6│   20.0%│           33.3%│           16.7%│       │       │
│  4.00 │    6│   20.0%│           33.3%│           16.7%│       │       │
│  5.00 │    6│   20.0%│           33.3%│           16.7%│       │       │
│  Total│   30│  100.0%│          100.0%│          100.0%│     18│     36│
╰───────┴─────┴────────┴────────────────┴────────────────┴───────┴───────╯

                     Custom Tables
╭────────────────────────┬───────────────────────────╮
│                        │             y             │
│                        ├──────┬──────┬──────┬──────┤
│                        │ 1.00 │ 4.00 │ 5.00 │ Total│
├────────────────────────┼──────┼──────┼──────┼──────┤
│x 3.00  Count           │     1│     1│     1│     3│
│        Column %        │ 33.3%│ 33.3%│ 33.3%│     .│
│        Column Valid N %│ 33.3%│ 33.3%│ 33.3%│     .│
│        Column Total N %│ 33.3%│ 33.3%│ 33.3%│     .│
│        Row %           │ 33.3%│ 33.3%│ 33.3%│100.0%│
│        Row Valid N %   │ 33.3%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │     3│
│        Total N         │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┤
│  4.00  Count           │     1│     1│     1│     3│
│        Column %        │ 33.3%│ 33.3%│ 33.3%│     .│
│        Column Valid N %│ 33.3%│ 33.3%│ 33.3%│     .│
│        Column Total N %│ 33.3%│ 33.3%│ 33.3%│     .│
│        Row %           │ 33.3%│ 33.3%│ 33.3%│100.0%│
│        Row Valid N %   │ 33.3%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │     3│
│        Total N         │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┤
│  5.00  Count           │     1│     1│     1│     3│
│        Column %        │ 33.3%│ 33.3%│ 33.3%│     .│
│        Column Valid N %│ 33.3%│ 33.3%│ 33.3%│     .│
│        Column Total N %│ 33.3%│ 33.3%│ 33.3%│     .│
│        Row %           │ 33.3%│ 33.3%│ 33.3%│100.0%│
│        Row Valid N %   │ 33.3%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │     3│
│        Total N         │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┤
│  Total Count           │     3│     3│     3│     9│
│        Column %        │100.0%│100.0%│100.0%│     .│
│        Column Valid N %│100.0%│100.0%│100.0%│     .│
│        Column Total N %│100.0%│100.0%│100.0%│     .│
│        Row %           │     .│     .│     .│     .│
│        Row Valid N %   │     .│     .│     .│     .│
│        Row Total N %   │     .│     .│     .│     .│
│        Valid N         │     3│     3│     3│     9│
│        Total N         │     3│     3│     3│    18│
╰────────────────────────┴──────┴──────┴──────┴──────╯

                            Custom Tables
╭────────────────────────┬─────────────────────────────────────────╮
│                        │                    y                    │
│                        ├──────┬──────┬──────┬──────┬──────┬──────┤
│                        │ 1.00 │ 2.00 │ 3.00 │ 4.00 │ 5.00 │ Total│
├────────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│x 1.00  Count           │     1│     1│     1│     1│     1│     5│
│        Column %        │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Column Valid N %│ 20.0%│     .│     .│ 20.0%│ 20.0%│     .│
│        Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Row %           │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │      │     3│
│        Total N         │      │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│  2.00  Count           │     1│     1│     1│     1│     1│     5│
│        Column %        │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Column Valid N %│ 20.0%│     .│     .│ 20.0%│ 20.0%│     .│
│        Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Row %           │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │      │     3│
│        Total N         │      │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│  3.00  Count           │     1│     1│     1│     1│     1│     5│
│        Column %        │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Column Valid N %│ 20.0%│     .│     .│ 20.0%│ 20.0%│     .│
│        Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Row %           │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │      │     3│
│        Total N         │      │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│  4.00  Count           │     1│     1│     1│     1│     1│     5│
│        Column %        │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Column Valid N %│ 20.0%│     .│     .│ 20.0%│ 20.0%│     .│
│        Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Row %           │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │      │     3│
│        Total N         │      │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│  5.00  Count           │     1│     1│     1│     1│     1│     5│
│        Column %        │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Column Valid N %│ 20.0%│     .│     .│ 20.0%│ 20.0%│     .│
│        Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│     .│
│        Row %           │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │      │     3│
│        Total N         │      │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│  Total Count           │     5│     5│     5│     5│     5│    25│
│        Column %        │100.0%│100.0%│100.0%│100.0%│100.0%│     .│
│        Column Valid N %│100.0%│     .│     .│100.0%│100.0%│     .│
│        Column Total N %│100.0%│100.0%│100.0%│100.0%│100.0%│     .│
│        Row %           │     .│     .│     .│     .│     .│     .│
│        Row Valid N %   │     .│     .│     .│     .│     .│     .│
│        Row Total N %   │     .│     .│     .│     .│     .│     .│
│        Valid N         │     5│     0│     0│     5│     5│    15│
│        Total N         │     5│     5│     5│     5│     5│    30│
╰────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────╯

                        Custom Tables
╭────────────────────────┬──────────────────────────────────╮
│                        │                 y                │
│                        ├──────┬──────┬──────┬──────┬──────┤
│                        │ 1.00 │ 3.00 │ 4.00 │ 5.00 │ Total│
├────────────────────────┼──────┼──────┼──────┼──────┼──────┤
│x 1.00  Count           │     1│     1│     1│     1│     4│
│        Column %        │ 25.0%│ 25.0%│ 25.0%│ 25.0%│     .│
│        Column Valid N %│ 25.0%│     .│ 25.0%│ 25.0%│     .│
│        Column Total N %│ 25.0%│ 25.0%│ 25.0%│ 25.0%│     .│
│        Row %           │ 25.0%│ 25.0%│ 25.0%│ 25.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │     3│
│        Total N         │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤
│  2.00  Count           │     1│     1│     1│     1│     4│
│        Column %        │ 25.0%│ 25.0%│ 25.0%│ 25.0%│     .│
│        Column Valid N %│ 25.0%│     .│ 25.0%│ 25.0%│     .│
│        Column Total N %│ 25.0%│ 25.0%│ 25.0%│ 25.0%│     .│
│        Row %           │ 25.0%│ 25.0%│ 25.0%│ 25.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │     3│
│        Total N         │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤
│  3.00  Count           │     1│     1│     1│     1│     4│
│        Column %        │ 25.0%│ 25.0%│ 25.0%│ 25.0%│     .│
│        Column Valid N %│ 25.0%│     .│ 25.0%│ 25.0%│     .│
│        Column Total N %│ 25.0%│ 25.0%│ 25.0%│ 25.0%│     .│
│        Row %           │ 25.0%│ 25.0%│ 25.0%│ 25.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │     3│
│        Total N         │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤
│  4.00  Count           │     1│     1│     1│     1│     4│
│        Column %        │ 25.0%│ 25.0%│ 25.0%│ 25.0%│     .│
│        Column Valid N %│ 25.0%│     .│ 25.0%│ 25.0%│     .│
│        Column Total N %│ 25.0%│ 25.0%│ 25.0%│ 25.0%│     .│
│        Row %           │ 25.0%│ 25.0%│ 25.0%│ 25.0%│100.0%│
│        Row Valid N %   │ 33.3%│   .0%│ 33.3%│ 33.3%│100.0%│
│        Row Total N %   │ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│
│        Valid N         │      │      │      │      │     3│
│        Total N         │      │      │      │      │     6│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤
│  Total Count           │     4│     4│     4│     4│    16│
│        Column %        │100.0%│100.0%│100.0%│100.0%│     .│
│        Column Valid N %│100.0%│     .│100.0%│100.0%│     .│
│        Column Total N %│100.0%│100.0%│100.0%│100.0%│     .│
│        Row %           │     .│     .│     .│     .│     .│
│        Row Valid N %   │     .│     .│     .│     .│     .│
│        Row Total N %   │     .│     .│     .│     .│     .│
│        Valid N         │     4│     0│     4│     4│    12│
│        Total N         │     4│     4│     4│     4│    24│
╰────────────────────────┴──────┴──────┴──────┴──────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2732"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_482
#AT_START_483
at_fn_group_banner 483 'ctables.at:2934' \
  "CTABLES SMISSING=LISTWISE" "                      " 40
at_xfail=no
(
  printf "%s\n" "483. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >ctables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
BEGIN DATA.
1  . 40
1 10 50
1 20 60
1  .  .
1 30  .
END DATA.
VARIABLE LEVEL x (NOMINAL).

CTABLES /TABLE (y + z) > x.
CTABLES /SMISSING LISTWISE /TABLE (y + z) > x.

* The following doesn't come out as listwise because the tables are
separate, not linked by an > operator.
CTABLES /SMISSING LISTWISE /TABLE (y > x) + (z > x).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2954: pspp ctables.sps -O box=unicode -O width=120"
at_fn_check_prepare_trace "ctables.at:2954"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  Custom Tables
╭────────┬─────╮
│        │ Mean│
├────────┼─────┤
│y x 1.00│20.00│
├────────┼─────┤
│z x 1.00│50.00│
╰────────┴─────╯

  Custom Tables
╭────────┬─────╮
│        │ Mean│
├────────┼─────┤
│y x 1.00│15.00│
├────────┼─────┤
│z x 1.00│55.00│
╰────────┴─────╯

  Custom Tables
╭────────┬─────╮
│        │ Mean│
├────────┼─────┤
│y x 1.00│20.00│
├────────┼─────┤
│z x 1.00│50.00│
╰────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2954"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_483
#AT_START_484
at_fn_group_banner 484 'ctables.at:2984' \
  "CTABLES VLABELS - variables on different axes" "  " 40
at_xfail=no
(
  printf "%s\n" "484. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2985: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:2985"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2985"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=DEFAULT /TABLE qnd5a BY qns3a.
CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=NAME    /TABLE qnd5a BY qns3a.
CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=LABEL   /TABLE qnd5a BY qns3a.
CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=BOTH    /TABLE qnd5a BY qns3a.
CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=NONE    /TABLE qnd5a BY qns3a.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:2994: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:2994"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                 Custom Tables
╭────────────────────────────────────────────────────────────────┬────────────╮
│                                                                │S3a. GENDER:│
│                                                                ├─────┬──────┤
│                                                                │ Male│Female│
│                                                                ├─────┼──────┤
│                                                                │Count│ Count│
├────────────────────────────────────────────────────────────────┼─────┼──────┤
│D5a. What would you say is your primary    Cuban                │   13│     7│
│ethnic background?                         Mexican              │  175│   136│
│                                           Spanish              │   20│    28│
│                                           South American       │   21│    13│
│                                           Central American     │   27│    25│
│                                           Puerto Rican, OR     │   37│    41│
│                                           Something else       │   35│    33│
│                                           Multiple - cannot    │    2│     5│
│                                           choose one           │     │      │
╰────────────────────────────────────────────────────────────────┴─────┴──────╯

                  Custom Tables
╭──────────────────────────────────┬────────────╮
│                                  │    QNS3A   │
│                                  ├─────┬──────┤
│                                  │ Male│Female│
│                                  ├─────┼──────┤
│                                  │Count│ Count│
├──────────────────────────────────┼─────┼──────┤
│QND5A Cuban                       │   13│     7│
│      Mexican                     │  175│   136│
│      Spanish                     │   20│    28│
│      South American              │   21│    13│
│      Central American            │   27│    25│
│      Puerto Rican, OR            │   37│    41│
│      Something else              │   35│    33│
│      Multiple - cannot choose one│    2│     5│
╰──────────────────────────────────┴─────┴──────╯

                                 Custom Tables
╭────────────────────────────────────────────────────────────────┬────────────╮
│                                                                │S3a. GENDER:│
│                                                                ├─────┬──────┤
│                                                                │ Male│Female│
│                                                                ├─────┼──────┤
│                                                                │Count│ Count│
├────────────────────────────────────────────────────────────────┼─────┼──────┤
│D5a. What would you say is your primary    Cuban                │   13│     7│
│ethnic background?                         Mexican              │  175│   136│
│                                           Spanish              │   20│    28│
│                                           South American       │   21│    13│
│                                           Central American     │   27│    25│
│                                           Puerto Rican, OR     │   37│    41│
│                                           Something else       │   35│    33│
│                                           Multiple - cannot    │    2│     5│
│                                           choose one           │     │      │
╰────────────────────────────────────────────────────────────────┴─────┴──────╯

                                 Custom Tables
╭────────────────────────────────────────────────────────────┬────────────────╮
│                                                            │   QNS3A S3a.   │
│                                                            │     GENDER:    │
│                                                            ├───────┬────────┤
│                                                            │  Male │ Female │
│                                                            ├───────┼────────┤
│                                                            │ Count │  Count │
├────────────────────────────────────────────────────────────┼───────┼────────┤
│QND5A D5a. What would you say is your    Cuban              │     13│       7│
│primary ethnic background?               Mexican            │    175│     136│
│                                         Spanish            │     20│      28│
│                                         South American     │     21│      13│
│                                         Central American   │     27│      25│
│                                         Puerto Rican, OR   │     37│      41│
│                                         Something else     │     35│      33│
│                                         Multiple - cannot  │      2│       5│
│                                         choose one         │       │        │
╰────────────────────────────────────────────────────────────┴───────┴────────╯

               Custom Tables
╭────────────────────────────┬─────┬──────╮
│                            │ Male│Female│
│                            ├─────┼──────┤
│                            │Count│ Count│
├────────────────────────────┼─────┼──────┤
│Cuban                       │   13│     7│
│Mexican                     │  175│   136│
│Spanish                     │   20│    28│
│South American              │   21│    13│
│Central American            │   27│    25│
│Puerto Rican, OR            │   37│    41│
│Something else              │   35│    33│
│Multiple - cannot choose one│    2│     5│
╰────────────────────────────┴─────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:2994"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_484
#AT_START_485
at_fn_group_banner 485 'ctables.at:3089' \
  "CTABLES VLABELS - stacked variables" "            " 40
at_xfail=no
(
  printf "%s\n" "485. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3091: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3091"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3091"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /VLABELS VARIABLES=qns3a DISPLAY=NAME /TABLE qnd5a + qns3a.
CTABLES /VLABELS VARIABLES=qnd5a DISPLAY=NAME /TABLE qnd5a + qns3a.
CTABLES /VLABELS VARIABLES=qns3a DISPLAY=NONE /TABLE qnd5a + qns3a.
CTABLES /VLABELS VARIABLES=qnd5a DISPLAY=NONE /TABLE qnd5a + qns3a.
CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=NONE /TABLE qnd5a + qns3a.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3100: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:3100"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                 Custom Tables
╭───────────────────────────────────────────────────────────────────────┬─────╮
│                                                                       │Count│
├───────────────────────────────────────────────────────────────────────┼─────┤
│D5a. What would you say is your primary ethnic  Cuban                  │   20│
│background?                                     Mexican                │  311│
│                                                Spanish                │   48│
│                                                South American         │   34│
│                                                Central American       │   52│
│                                                Puerto Rican, OR       │   78│
│                                                Something else         │   68│
│                                                Multiple - cannot      │    7│
│                                                choose one             │     │
├───────────────────────────────────────────────────────────────────────┼─────┤
│QNS3A                                           Male                   │ 3132│
│                                                Female                 │ 3867│
╰───────────────────────────────────────────────────────────────────────┴─────╯

                  Custom Tables
╭─────────────────────────────────────────┬─────╮
│                                         │Count│
├─────────────────────────────────────────┼─────┤
│QND5A        Cuban                       │   20│
│             Mexican                     │  311│
│             Spanish                     │   48│
│             South American              │   34│
│             Central American            │   52│
│             Puerto Rican, OR            │   78│
│             Something else              │   68│
│             Multiple - cannot choose one│    7│
├─────────────────────────────────────────┼─────┤
│S3a. GENDER: Male                        │ 3132│
│             Female                      │ 3867│
╰─────────────────────────────────────────┴─────╯

                                 Custom Tables
╭───────────────────────────────────────────────────────────────────────┬─────╮
│                                                                       │Count│
├───────────────────────────────────────────────────────────────────────┼─────┤
│D5a. What would you say is your primary ethnic  Cuban                  │   20│
│background?                                     Mexican                │  311│
│                                                Spanish                │   48│
│                                                South American         │   34│
│                                                Central American       │   52│
│                                                Puerto Rican, OR       │   78│
│                                                Something else         │   68│
│                                                Multiple - cannot      │    7│
│                                                choose one             │     │
├───────────────────────────────────────────────────────────────────────┼─────┤
│Male                                                                   │ 3132│
├───────────────────────────────────────────────────────────────────────┼─────┤
│Female                                                                 │ 3867│
╰───────────────────────────────────────────────────────────────────────┴─────╯

            Custom Tables
╭─────────────────────────────┬─────╮
│                             │Count│
├─────────────────────────────┼─────┤
│Cuban                        │   20│
├─────────────────────────────┼─────┤
│Mexican                      │  311│
├─────────────────────────────┼─────┤
│Spanish                      │   48│
├─────────────────────────────┼─────┤
│South American               │   34│
├─────────────────────────────┼─────┤
│Central American             │   52│
├─────────────────────────────┼─────┤
│Puerto Rican, OR             │   78│
├─────────────────────────────┼─────┤
│Something else               │   68│
├─────────────────────────────┼─────┤
│Multiple - cannot choose one │    7│
├─────────────────────────────┼─────┤
│S3a. GENDER:     Male        │ 3132│
│                 Female      │ 3867│
╰─────────────────────────────┴─────╯

            Custom Tables
╭────────────────────────────┬─────╮
│                            │Count│
├────────────────────────────┼─────┤
│Cuban                       │   20│
│Mexican                     │  311│
│Spanish                     │   48│
│South American              │   34│
│Central American            │   52│
│Puerto Rican, OR            │   78│
│Something else              │   68│
│Multiple - cannot choose one│    7│
│Male                        │ 3132│
│Female                      │ 3867│
╰────────────────────────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3100"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_485
#AT_START_486
at_fn_group_banner 486 'ctables.at:3197' \
  "CTABLES VLABELS - nested variables" "             " 40
at_xfail=no
(
  printf "%s\n" "486. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3199: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3199"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3199"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /VLABELS VARIABLES=qns3a DISPLAY=NAME /TABLE qnd5a > qns3a.
CTABLES /VLABELS VARIABLES=qnd5a DISPLAY=NAME /TABLE qnd5a > qns3a.
CTABLES /VLABELS VARIABLES=qns3a DISPLAY=NONE /TABLE qnd5a > qns3a.
CTABLES /VLABELS VARIABLES=qnd5a DISPLAY=NONE /TABLE qnd5a > qns3a.
CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=NONE /TABLE qnd5a > qns3a.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3208: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:3208"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                 Custom Tables
╭───────────────────────────────────────────────────────────────────────┬─────╮
│                                                                       │Count│
├───────────────────────────────────────────────────────────────────────┼─────┤
│D5a. What would you say is your       Cuban                QNS3A Male  │   13│
│primary ethnic background?                                       Female│    7│
│                                     ╶─────────────────────────────────┼─────┤
│                                      Mexican              QNS3A Male  │  175│
│                                                                 Female│  136│
│                                     ╶─────────────────────────────────┼─────┤
│                                      Spanish              QNS3A Male  │   20│
│                                                                 Female│   28│
│                                     ╶─────────────────────────────────┼─────┤
│                                      South American       QNS3A Male  │   21│
│                                                                 Female│   13│
│                                     ╶─────────────────────────────────┼─────┤
│                                      Central American     QNS3A Male  │   27│
│                                                                 Female│   25│
│                                     ╶─────────────────────────────────┼─────┤
│                                      Puerto Rican, OR     QNS3A Male  │   37│
│                                                                 Female│   41│
│                                     ╶─────────────────────────────────┼─────┤
│                                      Something else       QNS3A Male  │   35│
│                                                                 Female│   33│
│                                     ╶─────────────────────────────────┼─────┤
│                                      Multiple - cannot    QNS3A Male  │    2│
│                                      choose one                 Female│    5│
╰───────────────────────────────────────────────────────────────────────┴─────╯

                         Custom Tables
╭──────────────────────────────────────────────────────┬─────╮
│                                                      │Count│
├──────────────────────────────────────────────────────┼─────┤
│QND5A Cuban                        S3a. GENDER: Male  │   13│
│                                                Female│    7│
│     ╶────────────────────────────────────────────────┼─────┤
│      Mexican                      S3a. GENDER: Male  │  175│
│                                                Female│  136│
│     ╶────────────────────────────────────────────────┼─────┤
│      Spanish                      S3a. GENDER: Male  │   20│
│                                                Female│   28│
│     ╶────────────────────────────────────────────────┼─────┤
│      South American               S3a. GENDER: Male  │   21│
│                                                Female│   13│
│     ╶────────────────────────────────────────────────┼─────┤
│      Central American             S3a. GENDER: Male  │   27│
│                                                Female│   25│
│     ╶────────────────────────────────────────────────┼─────┤
│      Puerto Rican, OR             S3a. GENDER: Male  │   37│
│                                                Female│   41│
│     ╶────────────────────────────────────────────────┼─────┤
│      Something else               S3a. GENDER: Male  │   35│
│                                                Female│   33│
│     ╶────────────────────────────────────────────────┼─────┤
│      Multiple - cannot choose one S3a. GENDER: Male  │    2│
│                                                Female│    5│
╰──────────────────────────────────────────────────────┴─────╯

                                 Custom Tables
╭───────────────────────────────────────────────────────────────────────┬─────╮
│                                                                       │Count│
├───────────────────────────────────────────────────────────────────────┼─────┤
│D5a. What would you say is your primary    Cuban                 Male  │   13│
│ethnic background?                                               Female│    7│
│                                          ╶────────────────────────────┼─────┤
│                                           Mexican               Male  │  175│
│                                                                 Female│  136│
│                                          ╶────────────────────────────┼─────┤
│                                           Spanish               Male  │   20│
│                                                                 Female│   28│
│                                          ╶────────────────────────────┼─────┤
│                                           South American        Male  │   21│
│                                                                 Female│   13│
│                                          ╶────────────────────────────┼─────┤
│                                           Central American      Male  │   27│
│                                                                 Female│   25│
│                                          ╶────────────────────────────┼─────┤
│                                           Puerto Rican, OR      Male  │   37│
│                                                                 Female│   41│
│                                          ╶────────────────────────────┼─────┤
│                                           Something else        Male  │   35│
│                                                                 Female│   33│
│                                          ╶────────────────────────────┼─────┤
│                                           Multiple - cannot     Male  │    2│
│                                           choose one            Female│    5│
╰───────────────────────────────────────────────────────────────────────┴─────╯

                      Custom Tables
╭────────────────────────────────────────────────┬─────╮
│                                                │Count│
├────────────────────────────────────────────────┼─────┤
│Cuban                        S3a. GENDER: Male  │   13│
│                                          Female│    7│
├────────────────────────────────────────────────┼─────┤
│Mexican                      S3a. GENDER: Male  │  175│
│                                          Female│  136│
├────────────────────────────────────────────────┼─────┤
│Spanish                      S3a. GENDER: Male  │   20│
│                                          Female│   28│
├────────────────────────────────────────────────┼─────┤
│South American               S3a. GENDER: Male  │   21│
│                                          Female│   13│
├────────────────────────────────────────────────┼─────┤
│Central American             S3a. GENDER: Male  │   27│
│                                          Female│   25│
├────────────────────────────────────────────────┼─────┤
│Puerto Rican, OR             S3a. GENDER: Male  │   37│
│                                          Female│   41│
├────────────────────────────────────────────────┼─────┤
│Something else               S3a. GENDER: Male  │   35│
│                                          Female│   33│
├────────────────────────────────────────────────┼─────┤
│Multiple - cannot choose one S3a. GENDER: Male  │    2│
│                                          Female│    5│
╰────────────────────────────────────────────────┴─────╯

               Custom Tables
╭───────────────────────────────────┬─────╮
│                                   │Count│
├───────────────────────────────────┼─────┤
│Cuban                        Male  │   13│
│                             Female│    7│
├───────────────────────────────────┼─────┤
│Mexican                      Male  │  175│
│                             Female│  136│
├───────────────────────────────────┼─────┤
│Spanish                      Male  │   20│
│                             Female│   28│
├───────────────────────────────────┼─────┤
│South American               Male  │   21│
│                             Female│   13│
├───────────────────────────────────┼─────┤
│Central American             Male  │   27│
│                             Female│   25│
├───────────────────────────────────┼─────┤
│Puerto Rican, OR             Male  │   37│
│                             Female│   41│
├───────────────────────────────────┼─────┤
│Something else               Male  │   35│
│                             Female│   33│
├───────────────────────────────────┼─────┤
│Multiple - cannot choose one Male  │    2│
│                             Female│    5│
╰───────────────────────────────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3208"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_486
#AT_START_487
at_fn_group_banner 487 'ctables.at:3356' \
  "CTABLES FORMAT EMPTY" "                           " 40
at_xfail=no
(
  printf "%s\n" "487. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3357: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3357"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3357"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /FORMAT EMPTY=ZERO /TABLE qnd5a BY qnd5.
CTABLES /FORMAT EMPTY=BLANK /TABLE qnd5a BY qnd5.
CTABLES /FORMAT EMPTY='n/a' /TABLE qnd5a BY qnd5.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3364: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:3364"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                 Custom Tables
╭─────────────────────────────────────────────┬───────────────────────────────╮
│                                             │   D5. ETHNICITY: Are you of   │
│                                             │  Hispanic or Latino origin or │
│                                             │            descent?           │
│                                             ├───────────────┬───────────────┤
│                                             │      Yes      │       No      │
│                                             ├───────────────┼───────────────┤
│                                             │     Count     │     Count     │
├─────────────────────────────────────────────┼───────────────┼───────────────┤
│D5a. What would you say is   Cuban           │             20│              0│
│your primary ethnic          Mexican         │            311│              0│
│background?                  Spanish         │             48│              0│
│                             South American  │             34│              0│
│                             Central American│             52│              0│
│                             Puerto Rican, OR│             78│              0│
│                             Something else  │             68│              0│
│                             Multiple -      │              7│              0│
│                             cannot choose   │               │               │
│                             one             │               │               │
╰─────────────────────────────────────────────┴───────────────┴───────────────╯

                                 Custom Tables
╭─────────────────────────────────────────────┬───────────────────────────────╮
│                                             │   D5. ETHNICITY: Are you of   │
│                                             │  Hispanic or Latino origin or │
│                                             │            descent?           │
│                                             ├───────────────┬───────────────┤
│                                             │      Yes      │       No      │
│                                             ├───────────────┼───────────────┤
│                                             │     Count     │     Count     │
├─────────────────────────────────────────────┼───────────────┼───────────────┤
│D5a. What would you say is   Cuban           │             20│               │
│your primary ethnic          Mexican         │            311│               │
│background?                  Spanish         │             48│               │
│                             South American  │             34│               │
│                             Central American│             52│               │
│                             Puerto Rican, OR│             78│               │
│                             Something else  │             68│               │
│                             Multiple -      │              7│               │
│                             cannot choose   │               │               │
│                             one             │               │               │
╰─────────────────────────────────────────────┴───────────────┴───────────────╯

                                 Custom Tables
╭─────────────────────────────────────────────┬───────────────────────────────╮
│                                             │   D5. ETHNICITY: Are you of   │
│                                             │  Hispanic or Latino origin or │
│                                             │            descent?           │
│                                             ├───────────────┬───────────────┤
│                                             │      Yes      │       No      │
│                                             ├───────────────┼───────────────┤
│                                             │     Count     │     Count     │
├─────────────────────────────────────────────┼───────────────┼───────────────┤
│D5a. What would you say is   Cuban           │             20│n/a            │
│your primary ethnic          Mexican         │            311│n/a            │
│background?                  Spanish         │             48│n/a            │
│                             South American  │             34│n/a            │
│                             Central American│             52│n/a            │
│                             Puerto Rican, OR│             78│n/a            │
│                             Something else  │             68│n/a            │
│                             Multiple -      │              7│n/a            │
│                             cannot choose   │               │               │
│                             one             │               │               │
╰─────────────────────────────────────────────┴───────────────┴───────────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3364"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_487
#AT_START_488
at_fn_group_banner 488 'ctables.at:3433' \
  "CTABLES FORMAT MISSING" "                         " 40
at_xfail=no
(
  printf "%s\n" "488. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3434: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3434"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3434"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /FORMAT MISSING='(no data)' /TABLE qnd5a[COLPCT] BY qnd5.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3439: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:3439"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                 Custom Tables
╭─────────────────────────────────────────────┬───────────────────────────────╮
│                                             │   D5. ETHNICITY: Are you of   │
│                                             │  Hispanic or Latino origin or │
│                                             │            descent?           │
│                                             ├───────────────┬───────────────┤
│                                             │      Yes      │       No      │
│                                             ├───────────────┼───────────────┤
│                                             │    Column %   │    Column %   │
├─────────────────────────────────────────────┼───────────────┼───────────────┤
│D5a. What would you say is   Cuban           │           3.2%│(no data)      │
│your primary ethnic          Mexican         │          50.3%│(no data)      │
│background?                  Spanish         │           7.8%│(no data)      │
│                             South American  │           5.5%│(no data)      │
│                             Central American│           8.4%│(no data)      │
│                             Puerto Rican, OR│          12.6%│(no data)      │
│                             Something else  │          11.0%│(no data)      │
│                             Multiple -      │           1.1%│(no data)      │
│                             cannot choose   │               │               │
│                             one             │               │               │
╰─────────────────────────────────────────────┴───────────────┴───────────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3439"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_488
#AT_START_489
at_fn_group_banner 489 'ctables.at:3464' \
  "CTABLES HIDESMALLCOUNTS" "                        " 40
at_xfail=no
(
  printf "%s\n" "489. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3465: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3465"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3465"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /TABLE qn38[c][COUNT, COLPCT].
CTABLES /HIDESMALLCOUNTS /TABLE qn38[c][COUNT, COLPCT].
CTABLES /HIDESMALLCOUNTS COUNT=10 /TABLE qn38[c][COUNT, COLPCT].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3472: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:3472"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                 Custom Tables
╭──────────────────────────────────────────────────────────────┬─────┬────────╮
│                                                              │Count│Column %│
├──────────────────────────────────────────────────────────────┼─────┼────────┤
│38. How many drinks did you have on that         Less than one│    7│     .5%│
│occasion?                                        1            │  491│   34.9%│
│                                                 2            │  462│   32.9%│
│                                                 3            │  229│   16.3%│
│                                                 4            │   82│    5.8%│
│                                                 5            │   56│    4.0%│
│                                                 6            │   32│    2.3%│
│                                                 7            │    9│     .6%│
│                                                 8            │    8│     .6%│
│                                                 9            │    4│     .3%│
│                                                 10           │    6│     .4%│
│                                                 11           │    2│     .1%│
│                                                 12           │    5│     .4%│
│                                                 14           │    1│     .1%│
│                                                 15           │    1│     .1%│
│                                                 18           │    1│     .1%│
│                                                 20           │    4│     .3%│
│                                                 25           │    1│     .1%│
│                                                 30           │    3│     .2%│
│                                                 60           │    1│     .1%│
│                                                 99+          │    0│     .0%│
╰──────────────────────────────────────────────────────────────┴─────┴────────╯

                                 Custom Tables
╭──────────────────────────────────────────────────────────────┬─────┬────────╮
│                                                              │Count│Column %│
├──────────────────────────────────────────────────────────────┼─────┼────────┤
│38. How many drinks did you have on that         Less than one│    7│     .5%│
│occasion?                                        1            │  491│   34.9%│
│                                                 2            │  462│   32.9%│
│                                                 3            │  229│   16.3%│
│                                                 4            │   82│    5.8%│
│                                                 5            │   56│    4.0%│
│                                                 6            │   32│    2.3%│
│                                                 7            │    9│     .6%│
│                                                 8            │    8│     .6%│
│                                                 9            │<5   │     .3%│
│                                                 10           │    6│     .4%│
│                                                 11           │<5   │     .1%│
│                                                 12           │    5│     .4%│
│                                                 14           │<5   │     .1%│
│                                                 15           │<5   │     .1%│
│                                                 18           │<5   │     .1%│
│                                                 20           │<5   │     .3%│
│                                                 25           │<5   │     .1%│
│                                                 30           │<5   │     .2%│
│                                                 60           │<5   │     .1%│
│                                                 99+          │<5   │     .0%│
╰──────────────────────────────────────────────────────────────┴─────┴────────╯

                                 Custom Tables
╭──────────────────────────────────────────────────────────────┬─────┬────────╮
│                                                              │Count│Column %│
├──────────────────────────────────────────────────────────────┼─────┼────────┤
│38. How many drinks did you have on that         Less than one│<10  │     .5%│
│occasion?                                        1            │  491│   34.9%│
│                                                 2            │  462│   32.9%│
│                                                 3            │  229│   16.3%│
│                                                 4            │   82│    5.8%│
│                                                 5            │   56│    4.0%│
│                                                 6            │   32│    2.3%│
│                                                 7            │<10  │     .6%│
│                                                 8            │<10  │     .6%│
│                                                 9            │<10  │     .3%│
│                                                 10           │<10  │     .4%│
│                                                 11           │<10  │     .1%│
│                                                 12           │<10  │     .4%│
│                                                 14           │<10  │     .1%│
│                                                 15           │<10  │     .1%│
│                                                 18           │<10  │     .1%│
│                                                 20           │<10  │     .3%│
│                                                 25           │<10  │     .1%│
│                                                 30           │<10  │     .2%│
│                                                 60           │<10  │     .1%│
│                                                 99+          │<10  │     .0%│
╰──────────────────────────────────────────────────────────────┴─────┴────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3472"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_489
#AT_START_490
at_fn_group_banner 490 'ctables.at:3556' \
  "CTABLES FORMAT MINCOLWIDTH MAXCOLWIDTH" "         " 40
at_xfail=no
(
  printf "%s\n" "490. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3557: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3557"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3557"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES /FORMAT MINCOLWIDTH=1 MAXCOLWIDTH=2 UNITS=INCHES /TABLE BY qns3a.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3562: pspp ctables.sps -o - -O box=unicode -o pspp.spv"
at_fn_check_prepare_trace "ctables.at:3562"
( $at_check_trace; pspp ctables.sps -o - -O box=unicode -o pspp.spv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " Custom Tables
╭────────────╮
│S3a. GENDER:│
├─────┬──────┤
│ Male│Female│
├─────┼──────┤
│Count│ Count│
├─────┼──────┤
│ 3132│  3867│
╰─────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3562"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3574: pspp-output get-table-look pspp.spv pspp.stt"
at_fn_check_prepare_trace "ctables.at:3574"
( $at_check_trace; pspp-output get-table-look pspp.spv pspp.stt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3574"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3575: sed 's/ /\\n/g' pspp.stt | grep ColumnWidth | sort"
at_fn_check_prepare_notrace 'a shell pipeline' "ctables.at:3575"
( $at_check_trace; sed 's/ /\n/g' pspp.stt | grep ColumnWidth | sort
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "maximumColumnWidth=\"192\"
minimumColumnWidth=\"96\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3575"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_490
#AT_START_491
at_fn_group_banner 491 'ctables.at:3581' \
  "CTABLES special formats" "                        " 40
at_xfail=no
(
  printf "%s\n" "491. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3583: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3583"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3583"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
COMPUTE x = qnd3 - 4.
CTABLES /TABLE x[MINIMUM NEGPAREN8.1, MINIMUM NEQUAL8.1, MINIMUM PAREN8.1, MINIMUM PCTPAREN8.1, MAXIMUM NEGPAREN8.1, MAXIMUM NEQUAL8.1, MAXIMUM PAREN8.1, MAXIMUM PCTPAREN8.1].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3589: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:3589"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                           Custom Tables
╭─┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────╮
│ │Minimum│Minimum│Minimum│Minimum│Maximum│Maximum│Maximum│Maximum│
├─┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
│x│(3.0)  │N=-3.0 │(-3.0) │(-3.0%)│8.0    │N=8.0  │(8.0)  │(8.0%) │
╰─┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3589"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_491
#AT_START_492
at_fn_group_banner 492 'ctables.at:3599' \
  "CTABLES TITLES" "                                 " 40
at_xfail=no
(
  printf "%s\n" "492. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3600: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3600"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3600"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /VLABELS VARIABLES=qn1 DISPLAY=NONE
    /TABLE ((qn1[c][COUNT])) BY qns3a[c] > qnd5
    /TITLES TITLE='How often do you drive?' 'second line of title'
            CAPTION='Generated )TIME on )DATE'
	    CORNER=')TABLE'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3610: pspp ctables.sps -O box=unicode | sed 's/..:..:../HH:MM:SS/
s&../../..&MM/DD/YY&'"
at_fn_check_prepare_notrace 'an embedded newline' "ctables.at:3610"
( $at_check_trace; pspp ctables.sps -O box=unicode | sed 's/..:..:../HH:MM:SS/
s&../../..&MM/DD/YY&'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                            How often do you drive?
                              second line of title
╭───────────────────────────────────┬─────────────────────────────────────────╮
│                                   │               S3a. GENDER:              │
│                                   ├────────────────────┬────────────────────┤
│                                   │        Male        │       Female       │
│                                   ├────────────────────┼────────────────────┤
│                                   │ D5. ETHNICITY: Are │ D5. ETHNICITY: Are │
│                                   │ you of Hispanic or │ you of Hispanic or │
│                                   │  Latino origin or  │  Latino origin or  │
│( ( 1. How often do you usually    │      descent?      │      descent?      │
│drive a car or other motor         ├─────────┬──────────┼─────────┬──────────┤
│vehicle?) ) BY S3a. GENDER: > D5.  │   Yes   │    No    │   Yes   │    No    │
│ETHNICITY: Are you of Hispanic or  ├─────────┼──────────┼─────────┼──────────┤
│Latino origin or descent?          │  Count  │   Count  │  Count  │   Count  │
├───────────────────────────────────┼─────────┼──────────┼─────────┼──────────┤
│Every day                          │      218│      2066│      166│      2175│
│Several days a week                │       44│       391│       45│       782│
│Once a week or less                │       16│       109│       12│       223│
│Only certain times a year          │       15│        41│       11│        61│
│Never                              │       39│       150│       56│       278│
╰───────────────────────────────────┴─────────┴──────────┴─────────┴──────────╯
Generated HH:MM:SS on MM/DD/YY
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3610"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_492
#AT_START_493
at_fn_group_banner 493 'ctables.at:3638' \
  "CTABLES area definitions" "                       " 40
at_xfail=no
(
  printf "%s\n" "493. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3639: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3639"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3639"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /VLABELS VARIABLES=ALL DISPLAY=NAME
    /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[TABLEID, LAYERID, SUBTABLEID]
    /SLABELS POSITION=ROW
    /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[ROWID, LAYERROWID]
    /SLABELS POSITION=ROW
    /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[COLID, LAYERCOLID]
    /SLABELS POSITION=ROW.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3651: pspp ctables.sps --table-look=\"\$builddir\"/all-layers.stt -O box=unicode -O width=80"
at_fn_check_prepare_dynamic "pspp ctables.sps --table-look=\"$builddir\"/all-layers.stt -O box=unicode -O width=80" "ctables.at:3651"
( $at_check_trace; pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                    Custom Tables
Male
╭─────────────────────────────┬─────────────┬──────╮
│                             │    QND7A    │ QN64B│
│                             ├──────┬──────┼───┬──┤
│                             │  Yes │  No  │   │  │
│                             ├──────┼──────┤   │  │
│                             │ QN86 │ QN86 │   │  │
│                             ├───┬──┼───┬──┤   │  │
│                             │Yes│No│Yes│No│Yes│No│
├─────────────────────────────┼───┼──┼───┼──┼───┼──┤
│QN61 Yes QN57 Yes Table ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Layer ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Subtable ID│  1│ 1│  2│ 2│  3│ 3│
│             ╶───────────────┼───┼──┼───┼──┼───┼──┤
│              No  Table ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Layer ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Subtable ID│  1│ 1│  2│ 2│  3│ 3│
│    ╶────────────────────────┼───┼──┼───┼──┼───┼──┤
│     No  QN57 Yes Table ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Layer ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Subtable ID│  4│ 4│  5│ 5│  6│ 6│
│             ╶───────────────┼───┼──┼───┼──┼───┼──┤
│              No  Table ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Layer ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Subtable ID│  4│ 4│  5│ 5│  6│ 6│
╰─────────────────────────────┴───┴──┴───┴──┴───┴──╯

                    Custom Tables
Female
╭─────────────────────────────┬─────────────┬──────╮
│                             │    QND7A    │ QN64B│
│                             ├──────┬──────┼───┬──┤
│                             │  Yes │  No  │   │  │
│                             ├──────┼──────┤   │  │
│                             │ QN86 │ QN86 │   │  │
│                             ├───┬──┼───┬──┤   │  │
│                             │Yes│No│Yes│No│Yes│No│
├─────────────────────────────┼───┼──┼───┼──┼───┼──┤
│QN61 Yes QN57 Yes Table ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Layer ID   │  3│ 3│  3│ 3│  4│ 4│
│                  Subtable ID│  7│ 7│  8│ 8│  9│ 9│
│             ╶───────────────┼───┼──┼───┼──┼───┼──┤
│              No  Table ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Layer ID   │  3│ 3│  3│ 3│  4│ 4│
│                  Subtable ID│  7│ 7│  8│ 8│  9│ 9│
│    ╶────────────────────────┼───┼──┼───┼──┼───┼──┤
│     No  QN57 Yes Table ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Layer ID   │  3│ 3│  3│ 3│  4│ 4│
│                  Subtable ID│ 10│10│ 11│11│ 12│12│
│             ╶───────────────┼───┼──┼───┼──┼───┼──┤
│              No  Table ID   │  1│ 1│  1│ 1│  2│ 2│
│                  Layer ID   │  3│ 3│  3│ 3│  4│ 4│
│                  Subtable ID│ 10│10│ 11│11│ 12│12│
╰─────────────────────────────┴───┴──┴───┴──┴───┴──╯

                    Custom Tables
Male
╭──────────────────────────────┬─────────────┬──────╮
│                              │    QND7A    │ QN64B│
│                              ├──────┬──────┼───┬──┤
│                              │  Yes │  No  │   │  │
│                              ├──────┼──────┤   │  │
│                              │ QN86 │ QN86 │   │  │
│                              ├───┬──┼───┬──┤   │  │
│                              │Yes│No│Yes│No│Yes│No│
├──────────────────────────────┼───┼──┼───┼──┼───┼──┤
│QN61 Yes QN57 Yes Row ID      │  1│ 1│  2│ 2│  3│ 3│
│                  Layer Row ID│  1│ 1│  1│ 1│  2│ 2│
│             ╶────────────────┼───┼──┼───┼──┼───┼──┤
│              No  Row ID      │  4│ 4│  5│ 5│  6│ 6│
│                  Layer Row ID│  3│ 3│  3│ 3│  4│ 4│
│    ╶─────────────────────────┼───┼──┼───┼──┼───┼──┤
│     No  QN57 Yes Row ID      │  7│ 7│  8│ 8│  9│ 9│
│                  Layer Row ID│  5│ 5│  5│ 5│  6│ 6│
│             ╶────────────────┼───┼──┼───┼──┼───┼──┤
│              No  Row ID      │ 10│10│ 11│11│ 12│12│
│                  Layer Row ID│  7│ 7│  7│ 7│  8│ 8│
╰──────────────────────────────┴───┴──┴───┴──┴───┴──╯

                    Custom Tables
Female
╭──────────────────────────────┬─────────────┬──────╮
│                              │    QND7A    │ QN64B│
│                              ├──────┬──────┼───┬──┤
│                              │  Yes │  No  │   │  │
│                              ├──────┼──────┤   │  │
│                              │ QN86 │ QN86 │   │  │
│                              ├───┬──┼───┬──┤   │  │
│                              │Yes│No│Yes│No│Yes│No│
├──────────────────────────────┼───┼──┼───┼──┼───┼──┤
│QN61 Yes QN57 Yes Row ID      │ 13│13│ 14│14│ 15│15│
│                  Layer Row ID│  9│ 9│  9│ 9│ 10│10│
│             ╶────────────────┼───┼──┼───┼──┼───┼──┤
│              No  Row ID      │ 16│16│ 17│17│ 18│18│
│                  Layer Row ID│ 11│11│ 11│11│ 12│12│
│    ╶─────────────────────────┼───┼──┼───┼──┼───┼──┤
│     No  QN57 Yes Row ID      │ 19│19│ 20│20│ 21│21│
│                  Layer Row ID│ 13│13│ 13│13│ 14│14│
│             ╶────────────────┼───┼──┼───┼──┼───┼──┤
│              No  Row ID      │ 22│22│ 23│23│ 24│24│
│                  Layer Row ID│ 15│15│ 15│15│ 16│16│
╰──────────────────────────────┴───┴──┴───┴──┴───┴──╯

                      Custom Tables
Male
╭─────────────────────────────────┬─────────────┬──────╮
│                                 │    QND7A    │ QN64B│
│                                 ├──────┬──────┼───┬──┤
│                                 │  Yes │  No  │   │  │
│                                 ├──────┼──────┤   │  │
│                                 │ QN86 │ QN86 │   │  │
│                                 ├───┬──┼───┬──┤   │  │
│                                 │Yes│No│Yes│No│Yes│No│
├─────────────────────────────────┼───┼──┼───┼──┼───┼──┤
│QN61 Yes QN57 Yes Column ID      │  1│ 2│  3│ 4│  5│ 6│
│                  Layer Column ID│  1│ 2│  3│ 4│  5│ 6│
│             ╶───────────────────┼───┼──┼───┼──┼───┼──┤
│              No  Column ID      │  1│ 2│  3│ 4│  5│ 6│
│                  Layer Column ID│  1│ 2│  3│ 4│  5│ 6│
│    ╶────────────────────────────┼───┼──┼───┼──┼───┼──┤
│     No  QN57 Yes Column ID      │  7│ 8│  9│10│ 11│12│
│                  Layer Column ID│  1│ 2│  3│ 4│  5│ 6│
│             ╶───────────────────┼───┼──┼───┼──┼───┼──┤
│              No  Column ID      │  7│ 8│  9│10│ 11│12│
│                  Layer Column ID│  1│ 2│  3│ 4│  5│ 6│
╰─────────────────────────────────┴───┴──┴───┴──┴───┴──╯

                      Custom Tables
Female
╭─────────────────────────────────┬─────────────┬──────╮
│                                 │    QND7A    │ QN64B│
│                                 ├──────┬──────┼───┬──┤
│                                 │  Yes │  No  │   │  │
│                                 ├──────┼──────┤   │  │
│                                 │ QN86 │ QN86 │   │  │
│                                 ├───┬──┼───┬──┤   │  │
│                                 │Yes│No│Yes│No│Yes│No│
├─────────────────────────────────┼───┼──┼───┼──┼───┼──┤
│QN61 Yes QN57 Yes Column ID      │ 13│14│ 15│16│ 17│18│
│                  Layer Column ID│  7│ 8│  9│10│ 11│12│
│             ╶───────────────────┼───┼──┼───┼──┼───┼──┤
│              No  Column ID      │ 13│14│ 15│16│ 17│18│
│                  Layer Column ID│  7│ 8│  9│10│ 11│12│
│    ╶────────────────────────────┼───┼──┼───┼──┼───┼──┤
│     No  QN57 Yes Column ID      │ 19│20│ 21│22│ 23│24│
│                  Layer Column ID│  7│ 8│  9│10│ 11│12│
│             ╶───────────────────┼───┼──┼───┼──┼───┼──┤
│              No  Column ID      │ 19│20│ 21│22│ 23│24│
│                  Layer Column ID│  7│ 8│  9│10│ 11│12│
╰─────────────────────────────────┴───┴──┴───┴──┴───┴──╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3651"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_493
#AT_START_494
at_fn_group_banner 494 'ctables.at:3806' \
  "CTABLES area definitions with CLABELS ROWLABELS=OPPOSITE" "" 40
at_xfail=no
(
  printf "%s\n" "494. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3808: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:3808"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3808"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /VLABELS VARIABLES=ALL DISPLAY=NAME
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[TABLEID, LAYERID, SUBTABLEID]
    /SLABELS POSITION=ROW
    /CLABELS ROWLABELS=OPPOSITE
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID]
    /SLABELS POSITION=ROW
    /CLABELS ROWLABELS=OPPOSITE
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID]
    /SLABELS POSITION=ROW
    /CLABELS ROWLABELS=OPPOSITE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:3823: pspp ctables.sps --table-look=\"\$builddir\"/all-layers.stt -O box=unicode -O width=120"
at_fn_check_prepare_dynamic "pspp ctables.sps --table-look=\"$builddir\"/all-layers.stt -O box=unicode -O width=120" "ctables.at:3823"
( $at_check_trace; pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                        Custom Tables
Male
╭──────────────────────────────────┬───────────────────────────────────────────────────────╮
│                                  │                          QN27                         │
│                                  ├───────────────────────────┬───────────────────────────┤
│                                  │            Yes            │             No            │
│                                  ├───────────────────────────┼───────────────────────────┤
│                                  │           QND7A           │           QND7A           │
│                                  ├─────────────┬─────────────┼─────────────┬─────────────┤
│                                  │     Yes     │      No     │     Yes     │      No     │
│                                  ├─────────────┼─────────────┼─────────────┼─────────────┤
│                                  │     QN86    │     QN86    │     QN86    │     QN86    │
│                                  ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤
│                                  │  Yes │  No  │  Yes │  No  │  Yes │  No  │  Yes │  No  │
│                                  ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤
│                                  │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Subtable ID│  1│ 1│  2│ 2│  3│ 3│  4│ 4│  5│ 5│  6│ 6│  7│ 7│  8│ 8│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Subtable ID│  1│ 1│  2│ 2│  3│ 3│  4│ 4│  5│ 5│  6│ 6│  7│ 7│  8│ 8│
│    ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Subtable ID│  9│ 9│ 10│10│ 11│11│ 12│12│ 13│13│ 14│14│ 15│15│ 16│16│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Subtable ID│  9│ 9│ 10│10│ 11│11│ 12│12│ 13│13│ 14│14│ 15│15│ 16│16│
╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯

                                        Custom Tables
Female
╭──────────────────────────────────┬───────────────────────────────────────────────────────╮
│                                  │                          QN27                         │
│                                  ├───────────────────────────┬───────────────────────────┤
│                                  │            Yes            │             No            │
│                                  ├───────────────────────────┼───────────────────────────┤
│                                  │           QND7A           │           QND7A           │
│                                  ├─────────────┬─────────────┼─────────────┬─────────────┤
│                                  │     Yes     │      No     │     Yes     │      No     │
│                                  ├─────────────┼─────────────┼─────────────┼─────────────┤
│                                  │     QN86    │     QN86    │     QN86    │     QN86    │
│                                  ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤
│                                  │  Yes │  No  │  Yes │  No  │  Yes │  No  │  Yes │  No  │
│                                  ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤
│                                  │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│                       Subtable ID│ 17│17│ 18│18│ 19│19│ 20│20│ 21│21│ 22│22│ 23│23│ 24│24│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│                       Subtable ID│ 17│17│ 18│18│ 19│19│ 20│20│ 21│21│ 22│22│ 23│23│ 24│24│
│    ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│                       Subtable ID│ 25│25│ 26│26│ 27│27│ 28│28│ 29│29│ 30│30│ 31│31│ 32│32│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│                       Subtable ID│ 25│25│ 26│26│ 27│27│ 28│28│ 29│29│ 30│30│ 31│31│ 32│32│
╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯

                                        Custom Tables
Male
╭───────────────────────────────────┬───────────────────────────────────────────────────────╮
│                                   │                          QN27                         │
│                                   ├───────────────────────────┬───────────────────────────┤
│                                   │            Yes            │             No            │
│                                   ├───────────────────────────┼───────────────────────────┤
│                                   │           QND7A           │           QND7A           │
│                                   ├─────────────┬─────────────┼─────────────┬─────────────┤
│                                   │     Yes     │      No     │     Yes     │      No     │
│                                   ├─────────────┼─────────────┼─────────────┼─────────────┤
│                                   │     QN86    │     QN86    │     QN86    │     QN86    │
│                                   ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤
│                                   │  Yes │  No  │  Yes │  No  │  Yes │  No  │  Yes │  No  │
│                                   ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤
│                                   │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│
├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Row ID      │  1│ 1│  2│ 2│  3│ 3│  4│ 4│  5│ 5│  6│ 6│  7│ 7│  8│ 8│
│                       Layer Row ID│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │  9│ 9│ 10│10│ 11│11│ 12│12│ 13│13│ 14│14│ 15│15│ 16│16│
│                       Layer Row ID│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│    ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Row ID      │ 17│17│ 18│18│ 19│19│ 20│20│ 21│21│ 22│22│ 23│23│ 24│24│
│                       Layer Row ID│  3│ 3│  3│ 3│  3│ 3│  3│ 3│  3│ 3│  3│ 3│  3│ 3│  3│ 3│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 25│25│ 26│26│ 27│27│ 28│28│ 29│29│ 30│30│ 31│31│ 32│32│
│                       Layer Row ID│  4│ 4│  4│ 4│  4│ 4│  4│ 4│  4│ 4│  4│ 4│  4│ 4│  4│ 4│
╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯

                                        Custom Tables
Female
╭───────────────────────────────────┬───────────────────────────────────────────────────────╮
│                                   │                          QN27                         │
│                                   ├───────────────────────────┬───────────────────────────┤
│                                   │            Yes            │             No            │
│                                   ├───────────────────────────┼───────────────────────────┤
│                                   │           QND7A           │           QND7A           │
│                                   ├─────────────┬─────────────┼─────────────┬─────────────┤
│                                   │     Yes     │      No     │     Yes     │      No     │
│                                   ├─────────────┼─────────────┼─────────────┼─────────────┤
│                                   │     QN86    │     QN86    │     QN86    │     QN86    │
│                                   ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤
│                                   │  Yes │  No  │  Yes │  No  │  Yes │  No  │  Yes │  No  │
│                                   ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤
│                                   │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│
├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Row ID      │ 33│33│ 34│34│ 35│35│ 36│36│ 37│37│ 38│38│ 39│39│ 40│40│
│                       Layer Row ID│  5│ 5│  5│ 5│  5│ 5│  5│ 5│  5│ 5│  5│ 5│  5│ 5│  5│ 5│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 41│41│ 42│42│ 43│43│ 44│44│ 45│45│ 46│46│ 47│47│ 48│48│
│                       Layer Row ID│  6│ 6│  6│ 6│  6│ 6│  6│ 6│  6│ 6│  6│ 6│  6│ 6│  6│ 6│
│    ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Row ID      │ 49│49│ 50│50│ 51│51│ 52│52│ 53│53│ 54│54│ 55│55│ 56│56│
│                       Layer Row ID│  7│ 7│  7│ 7│  7│ 7│  7│ 7│  7│ 7│  7│ 7│  7│ 7│  7│ 7│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 57│57│ 58│58│ 59│59│ 60│60│ 61│61│ 62│62│ 63│63│ 64│64│
│                       Layer Row ID│  8│ 8│  8│ 8│  8│ 8│  8│ 8│  8│ 8│  8│ 8│  8│ 8│  8│ 8│
╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯

                                          Custom Tables
Male
╭──────────────────────────────────────┬───────────────────────────────────────────────────────╮
│                                      │                          QN27                         │
│                                      ├───────────────────────────┬───────────────────────────┤
│                                      │            Yes            │             No            │
│                                      ├───────────────────────────┼───────────────────────────┤
│                                      │           QND7A           │           QND7A           │
│                                      ├─────────────┬─────────────┼─────────────┬─────────────┤
│                                      │     Yes     │      No     │     Yes     │      No     │
│                                      ├─────────────┼─────────────┼─────────────┼─────────────┤
│                                      │     QN86    │     QN86    │     QN86    │     QN86    │
│                                      ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤
│                                      │  Yes │  No  │  Yes │  No  │  Yes │  No  │  Yes │  No  │
│                                      ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤
│                                      │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Column ID      │  1│ 2│  3│ 4│  5│ 6│  7│ 8│  9│10│ 11│12│ 13│14│ 15│16│
│                       Layer Column ID│  1│ 2│  3│ 4│  5│ 6│  7│ 8│  9│10│ 11│12│ 13│14│ 15│16│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │  1│ 2│  3│ 4│  5│ 6│  7│ 8│  9│10│ 11│12│ 13│14│ 15│16│
│                       Layer Column ID│  1│ 2│  3│ 4│  5│ 6│  7│ 8│  9│10│ 11│12│ 13│14│ 15│16│
│    ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Column ID      │ 17│18│ 19│20│ 21│22│ 23│24│ 25│26│ 27│28│ 29│30│ 31│32│
│                       Layer Column ID│  1│ 2│  3│ 4│  5│ 6│  7│ 8│  9│10│ 11│12│ 13│14│ 15│16│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 17│18│ 19│20│ 21│22│ 23│24│ 25│26│ 27│28│ 29│30│ 31│32│
│                       Layer Column ID│  1│ 2│  3│ 4│  5│ 6│  7│ 8│  9│10│ 11│12│ 13│14│ 15│16│
╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯

                                          Custom Tables
Female
╭──────────────────────────────────────┬───────────────────────────────────────────────────────╮
│                                      │                          QN27                         │
│                                      ├───────────────────────────┬───────────────────────────┤
│                                      │            Yes            │             No            │
│                                      ├───────────────────────────┼───────────────────────────┤
│                                      │           QND7A           │           QND7A           │
│                                      ├─────────────┬─────────────┼─────────────┬─────────────┤
│                                      │     Yes     │      No     │     Yes     │      No     │
│                                      ├─────────────┼─────────────┼─────────────┼─────────────┤
│                                      │     QN86    │     QN86    │     QN86    │     QN86    │
│                                      ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤
│                                      │  Yes │  No  │  Yes │  No  │  Yes │  No  │  Yes │  No  │
│                                      ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤
│                                      │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Column ID      │ 33│34│ 35│36│ 37│38│ 39│40│ 41│42│ 43│44│ 45│46│ 47│48│
│                       Layer Column ID│ 17│18│ 19│20│ 21│22│ 23│24│ 25│26│ 27│28│ 29│30│ 31│32│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 33│34│ 35│36│ 37│38│ 39│40│ 41│42│ 43│44│ 45│46│ 47│48│
│                       Layer Column ID│ 17│18│ 19│20│ 21│22│ 23│24│ 25│26│ 27│28│ 29│30│ 31│32│
│    ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Column ID      │ 49│50│ 51│52│ 53│54│ 55│56│ 57│58│ 59│60│ 61│62│ 63│64│
│                       Layer Column ID│ 17│18│ 19│20│ 21│22│ 23│24│ 25│26│ 27│28│ 29│30│ 31│32│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 49│50│ 51│52│ 53│54│ 55│56│ 57│58│ 59│60│ 61│62│ 63│64│
│                       Layer Column ID│ 17│18│ 19│20│ 21│22│ 23│24│ 25│26│ 27│28│ 29│30│ 31│32│
╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:3823"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_494
#AT_START_495
at_fn_group_banner 495 'ctables.at:4014' \
  "CTABLES area definitions with CLABELS COLLABELS=OPPOSITE" "" 40
at_xfail=no
(
  printf "%s\n" "495. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:4016: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:4016"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:4016"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /VLABELS VARIABLES=ALL DISPLAY=NAME
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[TABLEID, LAYERID, SUBTABLEID]
    /SLABELS POSITION=ROW
    /CLABELS COLLABELS=OPPOSITE
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID]
    /SLABELS POSITION=ROW
    /CLABELS COLLABELS=OPPOSITE
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID]
    /SLABELS POSITION=ROW
    /CLABELS COLLABELS=OPPOSITE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:4031: pspp ctables.sps --table-look=\"\$builddir\"/all-layers.stt -O box=unicode -O width=120"
at_fn_check_prepare_dynamic "pspp ctables.sps --table-look=\"$builddir\"/all-layers.stt -O box=unicode -O width=120" "ctables.at:4031"
( $at_check_trace; pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                          Custom Tables
Male
╭──────────────────────────────────────────┬───────────────────╮
│                                          │        QN27       │
│                                          ├─────────┬─────────┤
│                                          │   Yes   │    No   │
│                                          ├─────────┼─────────┤
│                                          │  QND7A  │  QND7A  │
│                                          ├────┬────┼────┬────┤
│                                          │ Yes│ No │ Yes│ No │
│                                          ├────┼────┼────┼────┤
│                                          │QN86│QN86│QN86│QN86│
├──────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   1│   1│   2│   2│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   1│   1│   2│   2│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   3│   3│   4│   4│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   3│   3│   4│   4│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   5│   5│   6│   6│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   5│   5│   6│   6│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   7│   7│   8│   8│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   7│   7│   8│   8│
│    ╶─────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   9│   9│  10│  10│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│   9│   9│  10│  10│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│  11│  11│  12│  12│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│  11│  11│  12│  12│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│  13│  13│  14│  14│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│  13│  13│  14│  14│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│  15│  15│  16│  16│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   1│   1│   1│   1│
│                               Subtable ID│  15│  15│  16│  16│
╰──────────────────────────────────────────┴────┴────┴────┴────╯

                          Custom Tables
Female
╭──────────────────────────────────────────┬───────────────────╮
│                                          │        QN27       │
│                                          ├─────────┬─────────┤
│                                          │   Yes   │    No   │
│                                          ├─────────┼─────────┤
│                                          │  QND7A  │  QND7A  │
│                                          ├────┬────┼────┬────┤
│                                          │ Yes│ No │ Yes│ No │
│                                          ├────┼────┼────┼────┤
│                                          │QN86│QN86│QN86│QN86│
├──────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  17│  17│  18│  18│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  17│  17│  18│  18│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  19│  19│  20│  20│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  19│  19│  20│  20│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  21│  21│  22│  22│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  21│  21│  22│  22│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  23│  23│  24│  24│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  23│  23│  24│  24│
│    ╶─────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  25│  25│  26│  26│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  25│  25│  26│  26│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  27│  27│  28│  28│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  27│  27│  28│  28│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  29│  29│  30│  30│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  29│  29│  30│  30│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Yes Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  31│  31│  32│  32│
│                          ╶───────────────┼────┼────┼────┼────┤
│                           No  Table ID   │   1│   1│   1│   1│
│                               Layer ID   │   2│   2│   2│   2│
│                               Subtable ID│  31│  31│  32│  32│
╰──────────────────────────────────────────┴────┴────┴────┴────╯

                          Custom Tables
Male
╭───────────────────────────────────────────┬───────────────────╮
│                                           │        QN27       │
│                                           ├─────────┬─────────┤
│                                           │   Yes   │    No   │
│                                           ├─────────┼─────────┤
│                                           │  QND7A  │  QND7A  │
│                                           ├────┬────┼────┬────┤
│                                           │ Yes│ No │ Yes│ No │
│                                           ├────┼────┼────┼────┤
│                                           │QN86│QN86│QN86│QN86│
├───────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Yes Row ID      │   1│   1│   3│   3│
│                               Layer Row ID│   1│   1│   1│   1│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │   2│   2│   4│   4│
│                               Layer Row ID│   2│   2│   2│   2│
│                      ╶────────────────────┼────┼────┼────┼────┤
│                       No  Yes Row ID      │   5│   5│   7│   7│
│                               Layer Row ID│   3│   3│   3│   3│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │   6│   6│   8│   8│
│                               Layer Row ID│   4│   4│   4│   4│
│             ╶─────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Row ID      │   9│   9│  11│  11│
│                               Layer Row ID│   5│   5│   5│   5│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  10│  10│  12│  12│
│                               Layer Row ID│   6│   6│   6│   6│
│                      ╶────────────────────┼────┼────┼────┼────┤
│                       No  Yes Row ID      │  13│  13│  15│  15│
│                               Layer Row ID│   7│   7│   7│   7│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  14│  14│  16│  16│
│                               Layer Row ID│   8│   8│   8│   8│
│    ╶──────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Yes Row ID      │  17│  17│  19│  19│
│                               Layer Row ID│   9│   9│   9│   9│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  18│  18│  20│  20│
│                               Layer Row ID│  10│  10│  10│  10│
│                      ╶────────────────────┼────┼────┼────┼────┤
│                       No  Yes Row ID      │  21│  21│  23│  23│
│                               Layer Row ID│  11│  11│  11│  11│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  22│  22│  24│  24│
│                               Layer Row ID│  12│  12│  12│  12│
│             ╶─────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Row ID      │  25│  25│  27│  27│
│                               Layer Row ID│  13│  13│  13│  13│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  26│  26│  28│  28│
│                               Layer Row ID│  14│  14│  14│  14│
│                      ╶────────────────────┼────┼────┼────┼────┤
│                       No  Yes Row ID      │  29│  29│  31│  31│
│                               Layer Row ID│  15│  15│  15│  15│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  30│  30│  32│  32│
│                               Layer Row ID│  16│  16│  16│  16│
╰───────────────────────────────────────────┴────┴────┴────┴────╯

                          Custom Tables
Female
╭───────────────────────────────────────────┬───────────────────╮
│                                           │        QN27       │
│                                           ├─────────┬─────────┤
│                                           │   Yes   │    No   │
│                                           ├─────────┼─────────┤
│                                           │  QND7A  │  QND7A  │
│                                           ├────┬────┼────┬────┤
│                                           │ Yes│ No │ Yes│ No │
│                                           ├────┼────┼────┼────┤
│                                           │QN86│QN86│QN86│QN86│
├───────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Yes Row ID      │  33│  33│  35│  35│
│                               Layer Row ID│  17│  17│  17│  17│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  34│  34│  36│  36│
│                               Layer Row ID│  18│  18│  18│  18│
│                      ╶────────────────────┼────┼────┼────┼────┤
│                       No  Yes Row ID      │  37│  37│  39│  39│
│                               Layer Row ID│  19│  19│  19│  19│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  38│  38│  40│  40│
│                               Layer Row ID│  20│  20│  20│  20│
│             ╶─────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Row ID      │  41│  41│  43│  43│
│                               Layer Row ID│  21│  21│  21│  21│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  42│  42│  44│  44│
│                               Layer Row ID│  22│  22│  22│  22│
│                      ╶────────────────────┼────┼────┼────┼────┤
│                       No  Yes Row ID      │  45│  45│  47│  47│
│                               Layer Row ID│  23│  23│  23│  23│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  46│  46│  48│  48│
│                               Layer Row ID│  24│  24│  24│  24│
│    ╶──────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Yes Row ID      │  49│  49│  51│  51│
│                               Layer Row ID│  25│  25│  25│  25│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  50│  50│  52│  52│
│                               Layer Row ID│  26│  26│  26│  26│
│                      ╶────────────────────┼────┼────┼────┼────┤
│                       No  Yes Row ID      │  53│  53│  55│  55│
│                               Layer Row ID│  27│  27│  27│  27│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  54│  54│  56│  56│
│                               Layer Row ID│  28│  28│  28│  28│
│             ╶─────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Row ID      │  57│  57│  59│  59│
│                               Layer Row ID│  29│  29│  29│  29│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  58│  58│  60│  60│
│                               Layer Row ID│  30│  30│  30│  30│
│                      ╶────────────────────┼────┼────┼────┼────┤
│                       No  Yes Row ID      │  61│  61│  63│  63│
│                               Layer Row ID│  31│  31│  31│  31│
│                          ╶────────────────┼────┼────┼────┼────┤
│                           No  Row ID      │  62│  62│  64│  64│
│                               Layer Row ID│  32│  32│  32│  32│
╰───────────────────────────────────────────┴────┴────┴────┴────╯

                            Custom Tables
Male
╭──────────────────────────────────────────────┬───────────────────╮
│                                              │        QN27       │
│                                              ├─────────┬─────────┤
│                                              │   Yes   │    No   │
│                                              ├─────────┼─────────┤
│                                              │  QND7A  │  QND7A  │
│                                              ├────┬────┼────┬────┤
│                                              │ Yes│ No │ Yes│ No │
│                                              ├────┼────┼────┼────┤
│                                              │QN86│QN86│QN86│QN86│
├──────────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Yes Column ID      │   1│   2│   3│   4│
│                               Layer Column ID│   1│   2│   3│   4│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │   1│   2│   3│   4│
│                               Layer Column ID│   1│   2│   3│   4│
│                      ╶───────────────────────┼────┼────┼────┼────┤
│                       No  Yes Column ID      │   5│   6│   7│   8│
│                               Layer Column ID│   1│   2│   3│   4│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │   5│   6│   7│   8│
│                               Layer Column ID│   1│   2│   3│   4│
│             ╶────────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Column ID      │   9│  10│  11│  12│
│                               Layer Column ID│   1│   2│   3│   4│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │   9│  10│  11│  12│
│                               Layer Column ID│   1│   2│   3│   4│
│                      ╶───────────────────────┼────┼────┼────┼────┤
│                       No  Yes Column ID      │  13│  14│  15│  16│
│                               Layer Column ID│   1│   2│   3│   4│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  13│  14│  15│  16│
│                               Layer Column ID│   1│   2│   3│   4│
│    ╶─────────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Yes Column ID      │  17│  18│  19│  20│
│                               Layer Column ID│   1│   2│   3│   4│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  17│  18│  19│  20│
│                               Layer Column ID│   1│   2│   3│   4│
│                      ╶───────────────────────┼────┼────┼────┼────┤
│                       No  Yes Column ID      │  21│  22│  23│  24│
│                               Layer Column ID│   1│   2│   3│   4│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  21│  22│  23│  24│
│                               Layer Column ID│   1│   2│   3│   4│
│             ╶────────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Column ID      │  25│  26│  27│  28│
│                               Layer Column ID│   1│   2│   3│   4│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  25│  26│  27│  28│
│                               Layer Column ID│   1│   2│   3│   4│
│                      ╶───────────────────────┼────┼────┼────┼────┤
│                       No  Yes Column ID      │  29│  30│  31│  32│
│                               Layer Column ID│   1│   2│   3│   4│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  29│  30│  31│  32│
│                               Layer Column ID│   1│   2│   3│   4│
╰──────────────────────────────────────────────┴────┴────┴────┴────╯

                            Custom Tables
Female
╭──────────────────────────────────────────────┬───────────────────╮
│                                              │        QN27       │
│                                              ├─────────┬─────────┤
│                                              │   Yes   │    No   │
│                                              ├─────────┼─────────┤
│                                              │  QND7A  │  QND7A  │
│                                              ├────┬────┼────┬────┤
│                                              │ Yes│ No │ Yes│ No │
│                                              ├────┼────┼────┼────┤
│                                              │QN86│QN86│QN86│QN86│
├──────────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Yes Column ID      │  33│  34│  35│  36│
│                               Layer Column ID│   5│   6│   7│   8│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  33│  34│  35│  36│
│                               Layer Column ID│   5│   6│   7│   8│
│                      ╶───────────────────────┼────┼────┼────┼────┤
│                       No  Yes Column ID      │  37│  38│  39│  40│
│                               Layer Column ID│   5│   6│   7│   8│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  37│  38│  39│  40│
│                               Layer Column ID│   5│   6│   7│   8│
│             ╶────────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Column ID      │  41│  42│  43│  44│
│                               Layer Column ID│   5│   6│   7│   8│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  41│  42│  43│  44│
│                               Layer Column ID│   5│   6│   7│   8│
│                      ╶───────────────────────┼────┼────┼────┼────┤
│                       No  Yes Column ID      │  45│  46│  47│  48│
│                               Layer Column ID│   5│   6│   7│   8│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  45│  46│  47│  48│
│                               Layer Column ID│   5│   6│   7│   8│
│    ╶─────────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Yes Column ID      │  49│  50│  51│  52│
│                               Layer Column ID│   5│   6│   7│   8│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  49│  50│  51│  52│
│                               Layer Column ID│   5│   6│   7│   8│
│                      ╶───────────────────────┼────┼────┼────┼────┤
│                       No  Yes Column ID      │  53│  54│  55│  56│
│                               Layer Column ID│   5│   6│   7│   8│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  53│  54│  55│  56│
│                               Layer Column ID│   5│   6│   7│   8│
│             ╶────────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Yes Column ID      │  57│  58│  59│  60│
│                               Layer Column ID│   5│   6│   7│   8│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  57│  58│  59│  60│
│                               Layer Column ID│   5│   6│   7│   8│
│                      ╶───────────────────────┼────┼────┼────┼────┤
│                       No  Yes Column ID      │  61│  62│  63│  64│
│                               Layer Column ID│   5│   6│   7│   8│
│                          ╶───────────────────┼────┼────┼────┼────┤
│                           No  Column ID      │  61│  62│  63│  64│
│                               Layer Column ID│   5│   6│   7│   8│
╰──────────────────────────────────────────────┴────┴────┴────┴────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:4031"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_495
#AT_START_496
at_fn_group_banner 496 'ctables.at:4438' \
  "CTABLES area definitions with CLABELS ROWLABELS=LAYER" "" 40
at_xfail=no
(
  printf "%s\n" "496. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:4440: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:4440"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:4440"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /VLABELS VARIABLES=ALL DISPLAY=NAME
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[TABLEID, LAYERID, SUBTABLEID]
    /SLABELS POSITION=ROW
    /CLABELS ROWLABELS=LAYER
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID]
    /SLABELS POSITION=ROW
    /CLABELS ROWLABELS=LAYER
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID]
    /SLABELS POSITION=ROW
    /CLABELS ROWLABELS=LAYER.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:4455: pspp ctables.sps --table-look=\"\$builddir\"/all-layers.stt -O box=unicode -O width=120"
at_fn_check_prepare_dynamic "pspp ctables.sps --table-look=\"$builddir\"/all-layers.stt -O box=unicode -O width=120" "ctables.at:4455"
( $at_check_trace; pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                          Custom Tables
Male
Yes
╭──────────────────────────────────┬───────────────────────────╮
│                                  │            QN27           │
│                                  ├─────────────┬─────────────┤
│                                  │     Yes     │      No     │
│                                  ├─────────────┼─────────────┤
│                                  │    QND7A    │    QND7A    │
│                                  ├──────┬──────┼──────┬──────┤
│                                  │  Yes │  No  │  Yes │  No  │
│                                  ├──────┼──────┼──────┼──────┤
│                                  │ QN86 │ QN86 │ QN86 │ QN86 │
│                                  ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                  │Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Subtable ID│  1│ 1│  3│ 3│  5│ 5│  7│ 7│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Subtable ID│  1│ 1│  3│ 3│  5│ 5│  7│ 7│
│    ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Subtable ID│  9│ 9│ 11│11│ 13│13│ 15│15│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Subtable ID│  9│ 9│ 11│11│ 13│13│ 15│15│
╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                          Custom Tables
Male
No
╭──────────────────────────────────┬───────────────────────────╮
│                                  │            QN27           │
│                                  ├─────────────┬─────────────┤
│                                  │     Yes     │      No     │
│                                  ├─────────────┼─────────────┤
│                                  │    QND7A    │    QND7A    │
│                                  ├──────┬──────┼──────┬──────┤
│                                  │  Yes │  No  │  Yes │  No  │
│                                  ├──────┼──────┼──────┼──────┤
│                                  │ QN86 │ QN86 │ QN86 │ QN86 │
│                                  ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                  │Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│                       Subtable ID│  2│ 2│  4│ 4│  6│ 6│  8│ 8│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│                       Subtable ID│  2│ 2│  4│ 4│  6│ 6│  8│ 8│
│    ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│                       Subtable ID│ 10│10│ 12│12│ 14│14│ 16│16│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│                       Subtable ID│ 10│10│ 12│12│ 14│14│ 16│16│
╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                          Custom Tables
Female
Yes
╭──────────────────────────────────┬───────────────────────────╮
│                                  │            QN27           │
│                                  ├─────────────┬─────────────┤
│                                  │     Yes     │      No     │
│                                  ├─────────────┼─────────────┤
│                                  │    QND7A    │    QND7A    │
│                                  ├──────┬──────┼──────┬──────┤
│                                  │  Yes │  No  │  Yes │  No  │
│                                  ├──────┼──────┼──────┼──────┤
│                                  │ QN86 │ QN86 │ QN86 │ QN86 │
│                                  ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                  │Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  3│ 3│  3│ 3│  3│ 3│  3│ 3│
│                       Subtable ID│ 17│17│ 19│19│ 21│21│ 23│23│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  3│ 3│  3│ 3│  3│ 3│  3│ 3│
│                       Subtable ID│ 17│17│ 19│19│ 21│21│ 23│23│
│    ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  3│ 3│  3│ 3│  3│ 3│  3│ 3│
│                       Subtable ID│ 25│25│ 27│27│ 29│29│ 31│31│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  3│ 3│  3│ 3│  3│ 3│  3│ 3│
│                       Subtable ID│ 25│25│ 27│27│ 29│29│ 31│31│
╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                          Custom Tables
Female
No
╭──────────────────────────────────┬───────────────────────────╮
│                                  │            QN27           │
│                                  ├─────────────┬─────────────┤
│                                  │     Yes     │      No     │
│                                  ├─────────────┼─────────────┤
│                                  │    QND7A    │    QND7A    │
│                                  ├──────┬──────┼──────┬──────┤
│                                  │  Yes │  No  │  Yes │  No  │
│                                  ├──────┼──────┼──────┼──────┤
│                                  │ QN86 │ QN86 │ QN86 │ QN86 │
│                                  ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                  │Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  4│ 4│  4│ 4│  4│ 4│  4│ 4│
│                       Subtable ID│ 18│18│ 20│20│ 22│22│ 24│24│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  4│ 4│  4│ 4│  4│ 4│  4│ 4│
│                       Subtable ID│ 18│18│ 20│20│ 22│22│ 24│24│
│    ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  4│ 4│  4│ 4│  4│ 4│  4│ 4│
│                       Subtable ID│ 26│26│ 28│28│ 30│30│ 32│32│
│             ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Table ID   │  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│                       Layer ID   │  4│ 4│  4│ 4│  4│ 4│  4│ 4│
│                       Subtable ID│ 26│26│ 28│28│ 30│30│ 32│32│
╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                          Custom Tables
Male
Yes
╭───────────────────────────────────┬───────────────────────────╮
│                                   │            QN27           │
│                                   ├─────────────┬─────────────┤
│                                   │     Yes     │      No     │
│                                   ├─────────────┼─────────────┤
│                                   │    QND7A    │    QND7A    │
│                                   ├──────┬──────┼──────┬──────┤
│                                   │  Yes │  No  │  Yes │  No  │
│                                   ├──────┼──────┼──────┼──────┤
│                                   │ QN86 │ QN86 │ QN86 │ QN86 │
│                                   ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                   │Yes│No│Yes│No│Yes│No│Yes│No│
├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Row ID      │  1│ 1│  3│ 3│  5│ 5│  7│ 7│
│                       Layer Row ID│  1│ 1│  1│ 1│  1│ 1│  1│ 1│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │  9│ 9│ 11│11│ 13│13│ 15│15│
│                       Layer Row ID│  3│ 3│  3│ 3│  3│ 3│  3│ 3│
│    ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Row ID      │ 17│17│ 19│19│ 21│21│ 23│23│
│                       Layer Row ID│  5│ 5│  5│ 5│  5│ 5│  5│ 5│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 25│25│ 27│27│ 29│29│ 31│31│
│                       Layer Row ID│  7│ 7│  7│ 7│  7│ 7│  7│ 7│
╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                          Custom Tables
Male
No
╭───────────────────────────────────┬───────────────────────────╮
│                                   │            QN27           │
│                                   ├─────────────┬─────────────┤
│                                   │     Yes     │      No     │
│                                   ├─────────────┼─────────────┤
│                                   │    QND7A    │    QND7A    │
│                                   ├──────┬──────┼──────┬──────┤
│                                   │  Yes │  No  │  Yes │  No  │
│                                   ├──────┼──────┼──────┼──────┤
│                                   │ QN86 │ QN86 │ QN86 │ QN86 │
│                                   ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                   │Yes│No│Yes│No│Yes│No│Yes│No│
├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Row ID      │  2│ 2│  4│ 4│  6│ 6│  8│ 8│
│                       Layer Row ID│  2│ 2│  2│ 2│  2│ 2│  2│ 2│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 10│10│ 12│12│ 14│14│ 16│16│
│                       Layer Row ID│  4│ 4│  4│ 4│  4│ 4│  4│ 4│
│    ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Row ID      │ 18│18│ 20│20│ 22│22│ 24│24│
│                       Layer Row ID│  6│ 6│  6│ 6│  6│ 6│  6│ 6│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 26│26│ 28│28│ 30│30│ 32│32│
│                       Layer Row ID│  8│ 8│  8│ 8│  8│ 8│  8│ 8│
╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                          Custom Tables
Female
Yes
╭───────────────────────────────────┬───────────────────────────╮
│                                   │            QN27           │
│                                   ├─────────────┬─────────────┤
│                                   │     Yes     │      No     │
│                                   ├─────────────┼─────────────┤
│                                   │    QND7A    │    QND7A    │
│                                   ├──────┬──────┼──────┬──────┤
│                                   │  Yes │  No  │  Yes │  No  │
│                                   ├──────┼──────┼──────┼──────┤
│                                   │ QN86 │ QN86 │ QN86 │ QN86 │
│                                   ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                   │Yes│No│Yes│No│Yes│No│Yes│No│
├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Row ID      │ 33│33│ 35│35│ 37│37│ 39│39│
│                       Layer Row ID│  9│ 9│  9│ 9│  9│ 9│  9│ 9│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 41│41│ 43│43│ 45│45│ 47│47│
│                       Layer Row ID│ 11│11│ 11│11│ 11│11│ 11│11│
│    ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Row ID      │ 49│49│ 51│51│ 53│53│ 55│55│
│                       Layer Row ID│ 13│13│ 13│13│ 13│13│ 13│13│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 57│57│ 59│59│ 61│61│ 63│63│
│                       Layer Row ID│ 15│15│ 15│15│ 15│15│ 15│15│
╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                          Custom Tables
Female
No
╭───────────────────────────────────┬───────────────────────────╮
│                                   │            QN27           │
│                                   ├─────────────┬─────────────┤
│                                   │     Yes     │      No     │
│                                   ├─────────────┼─────────────┤
│                                   │    QND7A    │    QND7A    │
│                                   ├──────┬──────┼──────┬──────┤
│                                   │  Yes │  No  │  Yes │  No  │
│                                   ├──────┼──────┼──────┼──────┤
│                                   │ QN86 │ QN86 │ QN86 │ QN86 │
│                                   ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                   │Yes│No│Yes│No│Yes│No│Yes│No│
├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Row ID      │ 34│34│ 36│36│ 38│38│ 40│40│
│                       Layer Row ID│ 10│10│ 10│10│ 10│10│ 10│10│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 42│42│ 44│44│ 46│46│ 48│48│
│                       Layer Row ID│ 12│12│ 12│12│ 12│12│ 12│12│
│    ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Row ID      │ 50│50│ 52│52│ 54│54│ 56│56│
│                       Layer Row ID│ 14│14│ 14│14│ 14│14│ 14│14│
│             ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Row ID      │ 58│58│ 60│60│ 62│62│ 64│64│
│                       Layer Row ID│ 16│16│ 16│16│ 16│16│ 16│16│
╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                            Custom Tables
Male
Yes
╭──────────────────────────────────────┬───────────────────────────╮
│                                      │            QN27           │
│                                      ├─────────────┬─────────────┤
│                                      │     Yes     │      No     │
│                                      ├─────────────┼─────────────┤
│                                      │    QND7A    │    QND7A    │
│                                      ├──────┬──────┼──────┬──────┤
│                                      │  Yes │  No  │  Yes │  No  │
│                                      ├──────┼──────┼──────┼──────┤
│                                      │ QN86 │ QN86 │ QN86 │ QN86 │
│                                      ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                      │Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Column ID      │  1│ 3│  5│ 7│  9│11│ 13│15│
│                       Layer Column ID│  1│ 3│  5│ 7│  9│11│ 13│15│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │  1│ 3│  5│ 7│  9│11│ 13│15│
│                       Layer Column ID│  1│ 3│  5│ 7│  9│11│ 13│15│
│    ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Column ID      │ 17│19│ 21│23│ 25│27│ 29│31│
│                       Layer Column ID│  1│ 3│  5│ 7│  9│11│ 13│15│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 17│19│ 21│23│ 25│27│ 29│31│
│                       Layer Column ID│  1│ 3│  5│ 7│  9│11│ 13│15│
╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                            Custom Tables
Male
No
╭──────────────────────────────────────┬───────────────────────────╮
│                                      │            QN27           │
│                                      ├─────────────┬─────────────┤
│                                      │     Yes     │      No     │
│                                      ├─────────────┼─────────────┤
│                                      │    QND7A    │    QND7A    │
│                                      ├──────┬──────┼──────┬──────┤
│                                      │  Yes │  No  │  Yes │  No  │
│                                      ├──────┼──────┼──────┼──────┤
│                                      │ QN86 │ QN86 │ QN86 │ QN86 │
│                                      ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                      │Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Column ID      │  2│ 4│  6│ 8│ 10│12│ 14│16│
│                       Layer Column ID│  2│ 4│  6│ 8│ 10│12│ 14│16│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │  2│ 4│  6│ 8│ 10│12│ 14│16│
│                       Layer Column ID│  2│ 4│  6│ 8│ 10│12│ 14│16│
│    ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Column ID      │ 18│20│ 22│24│ 26│28│ 30│32│
│                       Layer Column ID│  2│ 4│  6│ 8│ 10│12│ 14│16│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 18│20│ 22│24│ 26│28│ 30│32│
│                       Layer Column ID│  2│ 4│  6│ 8│ 10│12│ 14│16│
╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                            Custom Tables
Female
Yes
╭──────────────────────────────────────┬───────────────────────────╮
│                                      │            QN27           │
│                                      ├─────────────┬─────────────┤
│                                      │     Yes     │      No     │
│                                      ├─────────────┼─────────────┤
│                                      │    QND7A    │    QND7A    │
│                                      ├──────┬──────┼──────┬──────┤
│                                      │  Yes │  No  │  Yes │  No  │
│                                      ├──────┼──────┼──────┼──────┤
│                                      │ QN86 │ QN86 │ QN86 │ QN86 │
│                                      ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                      │Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Column ID      │ 33│35│ 37│39│ 41│43│ 45│47│
│                       Layer Column ID│ 17│19│ 21│23│ 25│27│ 29│31│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 33│35│ 37│39│ 41│43│ 45│47│
│                       Layer Column ID│ 17│19│ 21│23│ 25│27│ 29│31│
│    ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Column ID      │ 49│51│ 53│55│ 57│59│ 61│63│
│                       Layer Column ID│ 17│19│ 21│23│ 25│27│ 29│31│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 49│51│ 53│55│ 57│59│ 61│63│
│                       Layer Column ID│ 17│19│ 21│23│ 25│27│ 29│31│
╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯

                            Custom Tables
Female
No
╭──────────────────────────────────────┬───────────────────────────╮
│                                      │            QN27           │
│                                      ├─────────────┬─────────────┤
│                                      │     Yes     │      No     │
│                                      ├─────────────┼─────────────┤
│                                      │    QND7A    │    QND7A    │
│                                      ├──────┬──────┼──────┬──────┤
│                                      │  Yes │  No  │  Yes │  No  │
│                                      ├──────┼──────┼──────┼──────┤
│                                      │ QN86 │ QN86 │ QN86 │ QN86 │
│                                      ├───┬──┼───┬──┼───┬──┼───┬──┤
│                                      │Yes│No│Yes│No│Yes│No│Yes│No│
├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│QN26 Yes QN61 Yes QN57 Column ID      │ 34│36│ 38│40│ 42│44│ 46│48│
│                       Layer Column ID│ 18│20│ 22│24│ 26│28│ 30│32│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 34│36│ 38│40│ 42│44│ 46│48│
│                       Layer Column ID│ 18│20│ 22│24│ 26│28│ 30│32│
│    ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│     No  QN61 Yes QN57 Column ID      │ 50│52│ 54│56│ 58│60│ 62│64│
│                       Layer Column ID│ 18│20│ 22│24│ 26│28│ 30│32│
│             ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
│              No  QN57 Column ID      │ 50│52│ 54│56│ 58│60│ 62│64│
│                       Layer Column ID│ 18│20│ 22│24│ 26│28│ 30│32│
╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:4455"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_496
#AT_START_497
at_fn_group_banner 497 'ctables.at:4822' \
  "CTABLES area definitions with CLABELS COLLABELS=LAYER" "" 40
at_xfail=no
(
  printf "%s\n" "497. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:4824: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:4824"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:4824"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /VLABELS VARIABLES=ALL DISPLAY=NAME
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[TABLEID, LAYERID, SUBTABLEID]
    /SLABELS POSITION=ROW
    /CLABELS COLLABELS=LAYER
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID]
    /SLABELS POSITION=ROW
    /CLABELS COLLABELS=LAYER
    /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID]
    /SLABELS POSITION=ROW
    /CLABELS COLLABELS=LAYER.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:4839: pspp ctables.sps --table-look=\"\$builddir\"/all-layers.stt -O box=unicode -O width=120"
at_fn_check_prepare_dynamic "pspp ctables.sps --table-look=\"$builddir\"/all-layers.stt -O box=unicode -O width=120" "ctables.at:4839"
( $at_check_trace; pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                        Custom Tables
Male
Yes
╭──────────────────────────────────────┬───────────────────╮
│                                      │        QN27       │
│                                      ├─────────┬─────────┤
│                                      │   Yes   │    No   │
│                                      ├─────────┼─────────┤
│                                      │  QND7A  │  QND7A  │
│                                      ├────┬────┼────┬────┤
│                                      │ Yes│ No │ Yes│ No │
│                                      ├────┼────┼────┼────┤
│                                      │QN86│QN86│QN86│QN86│
├──────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   1│   1│   1│   1│
│                           Subtable ID│   1│   1│   3│   3│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   1│   1│   1│   1│
│                           Subtable ID│   1│   1│   3│   3│
│             ╶────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   1│   1│   1│   1│
│                           Subtable ID│   5│   5│   7│   7│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   1│   1│   1│   1│
│                           Subtable ID│   5│   5│   7│   7│
│    ╶─────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   1│   1│   1│   1│
│                           Subtable ID│   9│   9│  11│  11│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   1│   1│   1│   1│
│                           Subtable ID│   9│   9│  11│  11│
│             ╶────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   1│   1│   1│   1│
│                           Subtable ID│  13│  13│  15│  15│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   1│   1│   1│   1│
│                           Subtable ID│  13│  13│  15│  15│
╰──────────────────────────────────────┴────┴────┴────┴────╯

                        Custom Tables
Male
No
╭──────────────────────────────────────┬───────────────────╮
│                                      │        QN27       │
│                                      ├─────────┬─────────┤
│                                      │   Yes   │    No   │
│                                      ├─────────┼─────────┤
│                                      │  QND7A  │  QND7A  │
│                                      ├────┬────┼────┬────┤
│                                      │ Yes│ No │ Yes│ No │
│                                      ├────┼────┼────┼────┤
│                                      │QN86│QN86│QN86│QN86│
├──────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   2│   2│   2│   2│
│                           Subtable ID│   2│   2│   4│   4│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   2│   2│   2│   2│
│                           Subtable ID│   2│   2│   4│   4│
│             ╶────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   2│   2│   2│   2│
│                           Subtable ID│   6│   6│   8│   8│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   2│   2│   2│   2│
│                           Subtable ID│   6│   6│   8│   8│
│    ╶─────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   2│   2│   2│   2│
│                           Subtable ID│  10│  10│  12│  12│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   2│   2│   2│   2│
│                           Subtable ID│  10│  10│  12│  12│
│             ╶────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   2│   2│   2│   2│
│                           Subtable ID│  14│  14│  16│  16│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   2│   2│   2│   2│
│                           Subtable ID│  14│  14│  16│  16│
╰──────────────────────────────────────┴────┴────┴────┴────╯

                        Custom Tables
Female
Yes
╭──────────────────────────────────────┬───────────────────╮
│                                      │        QN27       │
│                                      ├─────────┬─────────┤
│                                      │   Yes   │    No   │
│                                      ├─────────┼─────────┤
│                                      │  QND7A  │  QND7A  │
│                                      ├────┬────┼────┬────┤
│                                      │ Yes│ No │ Yes│ No │
│                                      ├────┼────┼────┼────┤
│                                      │QN86│QN86│QN86│QN86│
├──────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   3│   3│   3│   3│
│                           Subtable ID│  17│  17│  19│  19│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   3│   3│   3│   3│
│                           Subtable ID│  17│  17│  19│  19│
│             ╶────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   3│   3│   3│   3│
│                           Subtable ID│  21│  21│  23│  23│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   3│   3│   3│   3│
│                           Subtable ID│  21│  21│  23│  23│
│    ╶─────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   3│   3│   3│   3│
│                           Subtable ID│  25│  25│  27│  27│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   3│   3│   3│   3│
│                           Subtable ID│  25│  25│  27│  27│
│             ╶────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   3│   3│   3│   3│
│                           Subtable ID│  29│  29│  31│  31│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   3│   3│   3│   3│
│                           Subtable ID│  29│  29│  31│  31│
╰──────────────────────────────────────┴────┴────┴────┴────╯

                        Custom Tables
Female
No
╭──────────────────────────────────────┬───────────────────╮
│                                      │        QN27       │
│                                      ├─────────┬─────────┤
│                                      │   Yes   │    No   │
│                                      ├─────────┼─────────┤
│                                      │  QND7A  │  QND7A  │
│                                      ├────┬────┼────┬────┤
│                                      │ Yes│ No │ Yes│ No │
│                                      ├────┼────┼────┼────┤
│                                      │QN86│QN86│QN86│QN86│
├──────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   4│   4│   4│   4│
│                           Subtable ID│  18│  18│  20│  20│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   4│   4│   4│   4│
│                           Subtable ID│  18│  18│  20│  20│
│             ╶────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   4│   4│   4│   4│
│                           Subtable ID│  22│  22│  24│  24│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   4│   4│   4│   4│
│                           Subtable ID│  22│  22│  24│  24│
│    ╶─────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   4│   4│   4│   4│
│                           Subtable ID│  26│  26│  28│  28│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   4│   4│   4│   4│
│                           Subtable ID│  26│  26│  28│  28│
│             ╶────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   4│   4│   4│   4│
│                           Subtable ID│  30│  30│  32│  32│
│                      ╶───────────────┼────┼────┼────┼────┤
│                       No  Table ID   │   1│   1│   1│   1│
│                           Layer ID   │   4│   4│   4│   4│
│                           Subtable ID│  30│  30│  32│  32│
╰──────────────────────────────────────┴────┴────┴────┴────╯

                        Custom Tables
Male
Yes
╭───────────────────────────────────────┬───────────────────╮
│                                       │        QN27       │
│                                       ├─────────┬─────────┤
│                                       │   Yes   │    No   │
│                                       ├─────────┼─────────┤
│                                       │  QND7A  │  QND7A  │
│                                       ├────┬────┼────┬────┤
│                                       │ Yes│ No │ Yes│ No │
│                                       ├────┼────┼────┼────┤
│                                       │QN86│QN86│QN86│QN86│
├───────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Row ID      │   1│   1│   3│   3│
│                           Layer Row ID│   1│   1│   1│   1│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │   5│   5│   7│   7│
│                           Layer Row ID│   3│   3│   3│   3│
│             ╶─────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Row ID      │   9│   9│  11│  11│
│                           Layer Row ID│   5│   5│   5│   5│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  13│  13│  15│  15│
│                           Layer Row ID│   7│   7│   7│   7│
│    ╶──────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Row ID      │  17│  17│  19│  19│
│                           Layer Row ID│   9│   9│   9│   9│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  21│  21│  23│  23│
│                           Layer Row ID│  11│  11│  11│  11│
│             ╶─────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Row ID      │  25│  25│  27│  27│
│                           Layer Row ID│  13│  13│  13│  13│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  29│  29│  31│  31│
│                           Layer Row ID│  15│  15│  15│  15│
╰───────────────────────────────────────┴────┴────┴────┴────╯

                        Custom Tables
Male
No
╭───────────────────────────────────────┬───────────────────╮
│                                       │        QN27       │
│                                       ├─────────┬─────────┤
│                                       │   Yes   │    No   │
│                                       ├─────────┼─────────┤
│                                       │  QND7A  │  QND7A  │
│                                       ├────┬────┼────┬────┤
│                                       │ Yes│ No │ Yes│ No │
│                                       ├────┼────┼────┼────┤
│                                       │QN86│QN86│QN86│QN86│
├───────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Row ID      │   2│   2│   4│   4│
│                           Layer Row ID│   2│   2│   2│   2│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │   6│   6│   8│   8│
│                           Layer Row ID│   4│   4│   4│   4│
│             ╶─────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Row ID      │  10│  10│  12│  12│
│                           Layer Row ID│   6│   6│   6│   6│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  14│  14│  16│  16│
│                           Layer Row ID│   8│   8│   8│   8│
│    ╶──────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Row ID      │  18│  18│  20│  20│
│                           Layer Row ID│  10│  10│  10│  10│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  22│  22│  24│  24│
│                           Layer Row ID│  12│  12│  12│  12│
│             ╶─────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Row ID      │  26│  26│  28│  28│
│                           Layer Row ID│  14│  14│  14│  14│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  30│  30│  32│  32│
│                           Layer Row ID│  16│  16│  16│  16│
╰───────────────────────────────────────┴────┴────┴────┴────╯

                        Custom Tables
Female
Yes
╭───────────────────────────────────────┬───────────────────╮
│                                       │        QN27       │
│                                       ├─────────┬─────────┤
│                                       │   Yes   │    No   │
│                                       ├─────────┼─────────┤
│                                       │  QND7A  │  QND7A  │
│                                       ├────┬────┼────┬────┤
│                                       │ Yes│ No │ Yes│ No │
│                                       ├────┼────┼────┼────┤
│                                       │QN86│QN86│QN86│QN86│
├───────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Row ID      │  33│  33│  35│  35│
│                           Layer Row ID│  17│  17│  17│  17│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  37│  37│  39│  39│
│                           Layer Row ID│  19│  19│  19│  19│
│             ╶─────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Row ID      │  41│  41│  43│  43│
│                           Layer Row ID│  21│  21│  21│  21│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  45│  45│  47│  47│
│                           Layer Row ID│  23│  23│  23│  23│
│    ╶──────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Row ID      │  49│  49│  51│  51│
│                           Layer Row ID│  25│  25│  25│  25│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  53│  53│  55│  55│
│                           Layer Row ID│  27│  27│  27│  27│
│             ╶─────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Row ID      │  57│  57│  59│  59│
│                           Layer Row ID│  29│  29│  29│  29│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  61│  61│  63│  63│
│                           Layer Row ID│  31│  31│  31│  31│
╰───────────────────────────────────────┴────┴────┴────┴────╯

                        Custom Tables
Female
No
╭───────────────────────────────────────┬───────────────────╮
│                                       │        QN27       │
│                                       ├─────────┬─────────┤
│                                       │   Yes   │    No   │
│                                       ├─────────┼─────────┤
│                                       │  QND7A  │  QND7A  │
│                                       ├────┬────┼────┬────┤
│                                       │ Yes│ No │ Yes│ No │
│                                       ├────┼────┼────┼────┤
│                                       │QN86│QN86│QN86│QN86│
├───────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Row ID      │  34│  34│  36│  36│
│                           Layer Row ID│  18│  18│  18│  18│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  38│  38│  40│  40│
│                           Layer Row ID│  20│  20│  20│  20│
│             ╶─────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Row ID      │  42│  42│  44│  44│
│                           Layer Row ID│  22│  22│  22│  22│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  46│  46│  48│  48│
│                           Layer Row ID│  24│  24│  24│  24│
│    ╶──────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Row ID      │  50│  50│  52│  52│
│                           Layer Row ID│  26│  26│  26│  26│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  54│  54│  56│  56│
│                           Layer Row ID│  28│  28│  28│  28│
│             ╶─────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Row ID      │  58│  58│  60│  60│
│                           Layer Row ID│  30│  30│  30│  30│
│                      ╶────────────────┼────┼────┼────┼────┤
│                       No  Row ID      │  62│  62│  64│  64│
│                           Layer Row ID│  32│  32│  32│  32│
╰───────────────────────────────────────┴────┴────┴────┴────╯

                          Custom Tables
Male
Yes
╭──────────────────────────────────────────┬───────────────────╮
│                                          │        QN27       │
│                                          ├─────────┬─────────┤
│                                          │   Yes   │    No   │
│                                          ├─────────┼─────────┤
│                                          │  QND7A  │  QND7A  │
│                                          ├────┬────┼────┬────┤
│                                          │ Yes│ No │ Yes│ No │
│                                          ├────┼────┼────┼────┤
│                                          │QN86│QN86│QN86│QN86│
├──────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Column ID      │   1│   3│   5│   7│
│                           Layer Column ID│   1│   3│   5│   7│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │   1│   3│   5│   7│
│                           Layer Column ID│   1│   3│   5│   7│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Column ID      │   9│  11│  13│  15│
│                           Layer Column ID│   1│   3│   5│   7│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │   9│  11│  13│  15│
│                           Layer Column ID│   1│   3│   5│   7│
│    ╶─────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Column ID      │  17│  19│  21│  23│
│                           Layer Column ID│   1│   3│   5│   7│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  17│  19│  21│  23│
│                           Layer Column ID│   1│   3│   5│   7│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Column ID      │  25│  27│  29│  31│
│                           Layer Column ID│   1│   3│   5│   7│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  25│  27│  29│  31│
│                           Layer Column ID│   1│   3│   5│   7│
╰──────────────────────────────────────────┴────┴────┴────┴────╯

                          Custom Tables
Male
No
╭──────────────────────────────────────────┬───────────────────╮
│                                          │        QN27       │
│                                          ├─────────┬─────────┤
│                                          │   Yes   │    No   │
│                                          ├─────────┼─────────┤
│                                          │  QND7A  │  QND7A  │
│                                          ├────┬────┼────┬────┤
│                                          │ Yes│ No │ Yes│ No │
│                                          ├────┼────┼────┼────┤
│                                          │QN86│QN86│QN86│QN86│
├──────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Column ID      │   2│   4│   6│   8│
│                           Layer Column ID│   2│   4│   6│   8│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │   2│   4│   6│   8│
│                           Layer Column ID│   2│   4│   6│   8│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Column ID      │  10│  12│  14│  16│
│                           Layer Column ID│   2│   4│   6│   8│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  10│  12│  14│  16│
│                           Layer Column ID│   2│   4│   6│   8│
│    ╶─────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Column ID      │  18│  20│  22│  24│
│                           Layer Column ID│   2│   4│   6│   8│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  18│  20│  22│  24│
│                           Layer Column ID│   2│   4│   6│   8│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Column ID      │  26│  28│  30│  32│
│                           Layer Column ID│   2│   4│   6│   8│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  26│  28│  30│  32│
│                           Layer Column ID│   2│   4│   6│   8│
╰──────────────────────────────────────────┴────┴────┴────┴────╯

                          Custom Tables
Female
Yes
╭──────────────────────────────────────────┬───────────────────╮
│                                          │        QN27       │
│                                          ├─────────┬─────────┤
│                                          │   Yes   │    No   │
│                                          ├─────────┼─────────┤
│                                          │  QND7A  │  QND7A  │
│                                          ├────┬────┼────┬────┤
│                                          │ Yes│ No │ Yes│ No │
│                                          ├────┼────┼────┼────┤
│                                          │QN86│QN86│QN86│QN86│
├──────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Column ID      │  33│  35│  37│  39│
│                           Layer Column ID│   9│  11│  13│  15│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  33│  35│  37│  39│
│                           Layer Column ID│   9│  11│  13│  15│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Column ID      │  41│  43│  45│  47│
│                           Layer Column ID│   9│  11│  13│  15│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  41│  43│  45│  47│
│                           Layer Column ID│   9│  11│  13│  15│
│    ╶─────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Column ID      │  49│  51│  53│  55│
│                           Layer Column ID│   9│  11│  13│  15│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  49│  51│  53│  55│
│                           Layer Column ID│   9│  11│  13│  15│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Column ID      │  57│  59│  61│  63│
│                           Layer Column ID│   9│  11│  13│  15│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  57│  59│  61│  63│
│                           Layer Column ID│   9│  11│  13│  15│
╰──────────────────────────────────────────┴────┴────┴────┴────╯

                          Custom Tables
Female
No
╭──────────────────────────────────────────┬───────────────────╮
│                                          │        QN27       │
│                                          ├─────────┬─────────┤
│                                          │   Yes   │    No   │
│                                          ├─────────┼─────────┤
│                                          │  QND7A  │  QND7A  │
│                                          ├────┬────┼────┬────┤
│                                          │ Yes│ No │ Yes│ No │
│                                          ├────┼────┼────┼────┤
│                                          │QN86│QN86│QN86│QN86│
├──────────────────────────────────────────┼────┼────┼────┼────┤
│QN26 Yes QN61 Yes QN57 Yes Column ID      │  34│  36│  38│  40│
│                           Layer Column ID│  10│  12│  14│  16│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  34│  36│  38│  40│
│                           Layer Column ID│  10│  12│  14│  16│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Column ID      │  42│  44│  46│  48│
│                           Layer Column ID│  10│  12│  14│  16│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  42│  44│  46│  48│
│                           Layer Column ID│  10│  12│  14│  16│
│    ╶─────────────────────────────────────┼────┼────┼────┼────┤
│     No  QN61 Yes QN57 Yes Column ID      │  50│  52│  54│  56│
│                           Layer Column ID│  10│  12│  14│  16│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  50│  52│  54│  56│
│                           Layer Column ID│  10│  12│  14│  16│
│             ╶────────────────────────────┼────┼────┼────┼────┤
│              No  QN57 Yes Column ID      │  58│  60│  62│  64│
│                           Layer Column ID│  10│  12│  14│  16│
│                      ╶───────────────────┼────┼────┼────┼────┤
│                       No  Column ID      │  58│  60│  62│  64│
│                           Layer Column ID│  10│  12│  14│  16│
╰──────────────────────────────────────────┴────┴────┴────┴────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:4839"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_497
#AT_START_498
at_fn_group_banner 498 'ctables.at:5342' \
  "CTABLES categorical summary functions" "          " 40
at_xfail=no
(
  printf "%s\n" "498. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5343: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:5343"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5343"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /TABLE region BY qnd5a[COUNT, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, TOTAL[COUNT, VALIDN, TOTALN]]
    /CATEGORIES VARIABLES=qnd5a TOTAL=YES MISSING=INCLUDE
    /SLABELS POSITION=ROW.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5351: pspp ctables.sps -O box=unicode -O width=120"
at_fn_check_prepare_trace "ctables.at:5351"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                                      Custom Tables
╭─────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────╮
│                 │                     D5a. What would you say is your primary ethnic background?                     │
│                 ├─────┬───────┬───────┬──────────┬──────────┬─────────┬──────────┬──────────────┬──────┬───────┬─────┤
│                 │     │       │       │          │          │         │          │  Multiple -  │      │       │     │
│                 │     │       │       │   South  │  Central │  Puerto │ Something│ cannot choose│ Don't│       │     │
│                 │Cuban│Mexican│Spanish│ American │ American │Rican, OR│   else   │      one     │ know │Refused│Total│
├─────────────────┼─────┼───────┼───────┼──────────┼──────────┼─────────┼──────────┼──────────────┼──────┼───────┼─────┤
│Region NE Count  │    6│      8│      8│        11│         7│       39│        23│             2│     0│      1│  105│
│          Row %  │ 5.7%│   7.6%│   7.6%│     10.5%│      6.7%│    37.1%│     21.9%│          1.9%│   .0%│   1.0%│     │
│          Row    │ 5.8%│   7.7%│   7.7%│     10.6%│      6.7%│    37.5%│     22.1%│          1.9%│   .0%│    .0%│     │
│          Valid N│     │       │       │          │          │         │          │              │      │       │     │
│          %      │     │       │       │          │          │         │          │              │      │       │     │
│          Row    │  .4%│    .6%│    .6%│       .8%│       .5%│     2.8%│      1.6%│           .1%│   .0%│    .1%│     │
│          Total N│     │       │       │          │          │         │          │              │      │       │     │
│          %      │     │       │       │          │          │         │          │              │      │       │     │
│          Valid N│     │       │       │          │          │         │          │              │      │       │  104│
│          Total N│     │       │       │          │          │         │          │              │      │       │ 1409│
│      ╶──────────┼─────┼───────┼───────┼──────────┼──────────┼─────────┼──────────┼──────────────┼──────┼───────┼─────┤
│       MW Count  │    3│     24│      1│         4│         5│        9│         6│             0│     0│      1│   53│
│          Row %  │ 5.7%│  45.3%│   1.9%│      7.5%│      9.4%│    17.0%│     11.3%│           .0%│   .0%│   1.9%│     │
│          Row    │ 5.8%│  46.2%│   1.9%│      7.7%│      9.6%│    17.3%│     11.5%│           .0%│   .0%│    .0%│     │
│          Valid N│     │       │       │          │          │         │          │              │      │       │     │
│          %      │     │       │       │          │          │         │          │              │      │       │     │
│          Row    │  .2%│   1.5%│    .1%│       .2%│       .3%│      .5%│       .4%│           .0%│   .0%│    .1%│     │
│          Total N│     │       │       │          │          │         │          │              │      │       │     │
│          %      │     │       │       │          │          │         │          │              │      │       │     │
│          Valid N│     │       │       │          │          │         │          │              │      │       │   52│
│          Total N│     │       │       │          │          │         │          │              │      │       │ 1654│
│      ╶──────────┼─────┼───────┼───────┼──────────┼──────────┼─────────┼──────────┼──────────────┼──────┼───────┼─────┤
│       S  Count  │   10│    113│     11│        14│        25│       23│        20│             2│     3│      2│  223│
│          Row %  │ 4.5%│  50.7%│   4.9%│      6.3%│     11.2%│    10.3%│      9.0%│           .9%│  1.3%│    .9%│     │
│          Row    │ 4.6%│  51.8%│   5.0%│      6.4%│     11.5%│    10.6%│      9.2%│           .9%│   .0%│    .0%│     │
│          Valid N│     │       │       │          │          │         │          │              │      │       │     │
│          %      │     │       │       │          │          │         │          │              │      │       │     │
│          Row    │  .4%│   4.7%│    .5%│       .6%│      1.0%│     1.0%│       .8%│           .1%│   .1%│    .1%│     │
│          Total N│     │       │       │          │          │         │          │              │      │       │     │
│          %      │     │       │       │          │          │         │          │              │      │       │     │
│          Valid N│     │       │       │          │          │         │          │              │      │       │  218│
│          Total N│     │       │       │          │          │         │          │              │      │       │ 2390│
│      ╶──────────┼─────┼───────┼───────┼──────────┼──────────┼─────────┼──────────┼──────────────┼──────┼───────┼─────┤
│       W  Count  │    1│    166│     28│         5│        15│        7│        19│             3│     0│      1│  245│
│          Row %  │  .4%│  67.8%│  11.4%│      2.0%│      6.1%│     2.9%│      7.8%│          1.2%│   .0%│    .4%│     │
│          Row    │  .4%│  68.0%│  11.5%│      2.0%│      6.1%│     2.9%│      7.8%│          1.2%│   .0%│    .0%│     │
│          Valid N│     │       │       │          │          │         │          │              │      │       │     │
│          %      │     │       │       │          │          │         │          │              │      │       │     │
│          Row    │  .1%│  10.7%│   1.8%│       .3%│      1.0%│      .5%│      1.2%│           .2%│   .0%│    .1%│     │
│          Total N│     │       │       │          │          │         │          │              │      │       │     │
│          %      │     │       │       │          │          │         │          │              │      │       │     │
│          Valid N│     │       │       │          │          │         │          │              │      │       │  244│
│          Total N│     │       │       │          │          │         │          │              │      │       │ 1546│
╰─────────────────┴─────┴───────┴───────┴──────────┴──────────┴─────────┴──────────┴──────────────┴──────┴───────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5351"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_498
#AT_START_499
at_fn_group_banner 499 'ctables.at:5407' \
  "CTABLES scale summary functions" "                " 40
at_xfail=no
(
  printf "%s\n" "499. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5408: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:5408"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5408"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
SET TVAR=NAME.

* Use SPLIT FILE with FREQUENCIES to generate output equivalent to
  CTABLES later, to make the results easier to verify.
SPLIT FILE BY REGION.
FREQUENCIES
    qn19a
    /STATISTICS=MEAN SEMEAN MEDIAN MODE STDDEV VARIANCE RANGE MINIMUM MAXIMUM SUM
    /FORMAT NOTABLE /MISSING=INCLUDE.
SPLIT FILE OFF.

CTABLES
    /VLABELS VARIABLE=qn19a DISPLAY=NONE
    /TABLE region BY qn19a[VALIDN, MISSING, MEAN, SEMEAN, MEDIAN, MODE, STDDEV, VARIANCE, RANGE, MINIMUM, MAXIMUM, SUM, COUNT, TOTALN, ROWPCT.SUM]
    /CATEGORIES VARIABLES=qn19a TOTAL=YES MISSING=INCLUDE
    /SLABELS POSITION=ROW
    /CLABELS ROWLABELS=OPPOSITE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5429: pspp ctables.sps -O box=unicode -O width=120"
at_fn_check_prepare_trace "ctables.at:5429"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                   Statistics
╭─────────┬───────────────────────────────────╮
│         │               REGION              │
│         ├────────┬────────┬────────┬────────┤
│         │   NE   │   MW   │    S   │    W   │
│         ├────────┼────────┼────────┼────────┤
│         │  QN19A │  QN19A │  QN19A │  QN19A │
├─────────┼────────┼────────┼────────┼────────┤
│N Valid  │     936│    1019│    1276│     950│
│  Missing│     473│     635│    1114│     596│
├─────────┼────────┼────────┼────────┼────────┤
│Mean     │   19.33│   19.83│   20.29│   19.87│
├─────────┼────────┼────────┼────────┼────────┤
│S.E. Mean│     .14│     .16│     .18│     .17│
├─────────┼────────┼────────┼────────┼────────┤
│Median   │   18.00│   19.00│   19.00│   19.00│
├─────────┼────────┼────────┼────────┼────────┤
│Mode     │   18.00│   18.00│   18.00│   18.00│
├─────────┼────────┼────────┼────────┼────────┤
│Std Dev  │    4.41│    5.15│    6.44│    5.25│
├─────────┼────────┼────────┼────────┼────────┤
│Variance │   19.41│   26.47│   41.43│   27.59│
├─────────┼────────┼────────┼────────┼────────┤
│Range    │   59.00│   71.00│   75.00│   61.00│
├─────────┼────────┼────────┼────────┼────────┤
│Minimum  │     .00│    4.00│    4.00│    4.00│
├─────────┼────────┼────────┼────────┼────────┤
│Maximum  │   59.00│   75.00│   79.00│   65.00│
├─────────┼────────┼────────┼────────┼────────┤
│Sum      │18092.00│20206.00│25886.00│18877.00│
╰─────────┴────────┴────────┴────────┴────────╯

                         Custom Tables
╭────────────────────────┬────────┬────────┬────────┬────────╮
│                        │   NE   │   MW   │    S   │    W   │
├────────────────────────┼────────┼────────┼────────┼────────┤
│REGION Valid N          │     936│    1019│    1276│     950│
│       Missing          │  473.00│  635.00│ 1114.00│  596.00│
│       Mean             │   19.33│   19.83│   20.29│   19.87│
│       Std Error of Mean│     .14│     .16│     .18│     .17│
│       Median           │   18.00│   19.00│   19.00│   19.00│
│       Mode             │   18.00│   18.00│   18.00│   18.00│
│       Std Deviation    │    4.41│    5.15│    6.44│    5.25│
│       Variance         │   19.41│   26.47│   41.43│   27.59│
│       Range            │   59.00│   71.00│   75.00│   61.00│
│       Minimum          │     .00│    4.00│    4.00│    4.00│
│       Maximum          │   59.00│   75.00│   79.00│   65.00│
│       Sum              │18092.00│20206.00│25886.00│18877.00│
│       Count            │    1409│    1654│    2390│    1546│
│       Total N          │    1409│    1654│    2390│    1546│
│       Row Sum %        │   21.8%│   24.3%│   31.2%│   22.7%│
╰────────────────────────┴────────┴────────┴────────┴────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5429"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_499
#AT_START_500
at_fn_group_banner 500 'ctables.at:5485' \
  "CTABLES scale summary functions - weighting" "    " 40
at_xfail=no
(
  printf "%s\n" "500. $at_setup_line: testing $at_desc ..."
  $at_traceon

weight=1
c=10
for a in 1 2 9; do
    for b in 3 4 9; do
        for n in 1 2 3 4 5 6 7 8 9 10; do
	    if test $c -lt 15; then
		cval=.
	    else
		cval=$c
	    fi
	    printf "$weight $a $b $cval\n"
	    weight=$(expr \( $weight + 3 \) % 7 + 2)
	    c=$(expr \( $c + 13 \) % 29 + 7)
        done
    done
done > ctables.txt

cat >analysis.sps <<'_ATEOF'
* Use SPLIT FILE with FREQUENCIES to generate output equivalent to
  CTABLES later, to make the results easier to verify.
SPLIT FILE BY a b.
FREQUENCIES
    c
    /STATISTICS=MEAN SEMEAN MEDIAN MODE STDDEV VARIANCE RANGE MINIMUM MAXIMUM SUM
    /FORMAT NOTABLE /MISSING=INCLUDE.
SPLIT FILE OFF.

CTABLES
    /TABLE c[VALIDN, MISSING, MEAN F8.2, SEMEAN F8.2, MEDIAN F8.2, MODE, STDDEV F8.2, VARIANCE F8.2, RANGE F8.2, MINIMUM, MAXIMUM, SUM F8.2, COUNT, TOTALN, LAYERROWPCT.SUM] BY a>b
    /SLABELS POSITION=ROW
    /CATEGORIES VARIABLES=a b MISSING=INCLUDE.
_ATEOF


cat >ctables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='ctables.txt'
    /w (F5.0) a b c (f2.0).
VAR LEVEL w c (SCALE) a b (NOMINAL).
MISSING VALUES a b (9).

INCLUDE 'analysis.sps'.

WEIGHT BY w.
INCLUDE 'analysis.sps'.

* Same as original analysis using unweighted versions of summaries.
CTABLES
    /TABLE c[UVALIDN, UMISSING, UMEAN F8.2, USEMEAN F8.2, UMEDIAN F8.2, UMODE, USTDDEV F8.2, UVARIANCE F8.2, USUM F8.2, UCOUNT, UTOTALN, ULAYERROWPCT.SUM] BY a>b
    /SLABELS POSITION=ROW
    /CATEGORIES VARIABLES=a b MISSING=INCLUDE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5536: pspp ctables.sps -O box=unicode -O width=120"
at_fn_check_prepare_trace "ctables.at:5536"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=120
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                Statistics
╭─────────┬──────────────────────────────────────────────────────────────╮
│         │                               a                              │
│         ├────────────────────┬────────────────────┬────────────────────┤
│         │          1         │          2         │          9         │
│         ├────────────────────┼────────────────────┼────────────────────┤
│         │          b         │          b         │          b         │
│         ├──────┬──────┬──────┼──────┬──────┬──────┼──────┬──────┬──────┤
│         │   3  │   4  │   9  │   3  │   4  │   9  │   3  │   4  │   9  │
│         ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│         │   c  │   c  │   c  │   c  │   c  │   c  │   c  │   c  │   c  │
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│N Valid  │     7│     6│     8│     7│     7│     8│     7│     7│     8│
│  Missing│     3│     4│     2│     3│     3│     2│     3│     3│     2│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Mean     │ 25.86│ 24.50│ 24.63│ 25.86│ 25.71│ 24.25│ 25.43│ 25.29│ 23.88│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│S.E. Mean│  2.44│  2.14│  2.58│  2.44│  2.18│  2.43│  2.36│  2.18│  2.47│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Median   │ 25.00│ 24.50│ 25.00│ 25.00│ 27.00│ 25.00│ 25.00│ 24.00│ 23.50│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Mode     │    16│    18│    15│    16│    18│    15│    16│    18│    15│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Std Dev  │  6.47│  5.24│  7.31│  6.47│  5.77│  6.88│  6.24│  5.77│  6.98│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Variance │ 41.81│ 27.50│ 53.41│ 41.81│ 33.24│ 47.36│ 38.95│ 33.24│ 48.70│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Range    │ 18.00│ 13.00│ 20.00│ 18.00│ 15.00│ 20.00│ 18.00│ 15.00│ 20.00│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Minimum  │    16│    18│    15│    16│    18│    15│    16│    18│    15│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Maximum  │    34│    31│    35│    34│    33│    35│    34│    33│    35│
├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│Sum      │181.00│147.00│197.00│181.00│180.00│194.00│178.00│177.00│191.00│
╰─────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────╯

                                    Custom Tables
╭───────────────────┬──────────────────────────────────────────────────────────────╮
│                   │                               a                              │
│                   ├────────────────────┬────────────────────┬────────────────────┤
│                   │          1         │          2         │          9         │
│                   ├────────────────────┼────────────────────┼────────────────────┤
│                   │          b         │          b         │          b         │
│                   ├──────┬──────┬──────┼──────┬──────┬──────┼──────┬──────┬──────┤
│                   │   3  │   4  │   9  │   3  │   4  │   9  │   3  │   4  │   9  │
├───────────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│c Valid N          │     7│     6│     8│     7│     7│     8│     7│     7│     8│
│  Missing          │     3│     4│     2│     3│     3│     2│     3│     3│     2│
│  Mean             │ 25.86│ 24.50│ 24.63│ 25.86│ 25.71│ 24.25│ 25.43│ 25.29│ 23.88│
│  Std Error of Mean│  2.44│  2.14│  2.58│  2.44│  2.18│  2.43│  2.36│  2.18│  2.47│
│  Median           │ 25.00│ 24.50│ 25.00│ 25.00│ 27.00│ 25.00│ 25.00│ 24.00│ 23.50│
│  Mode             │    16│    18│    15│    16│    18│    15│    16│    18│    15│
│  Std Deviation    │  6.47│  5.24│  7.31│  6.47│  5.77│  6.88│  6.24│  5.77│  6.98│
│  Variance         │ 41.81│ 27.50│ 53.41│ 41.81│ 33.24│ 47.36│ 38.95│ 33.24│ 48.70│
│  Range            │ 18.00│ 13.00│ 20.00│ 18.00│ 15.00│ 20.00│ 18.00│ 15.00│ 20.00│
│  Minimum          │    16│    18│    15│    16│    18│    15│    16│    18│    15│
│  Maximum          │    34│    31│    35│    34│    33│    35│    34│    33│    35│
│  Sum              │181.00│147.00│197.00│181.00│180.00│194.00│178.00│177.00│191.00│
│  Count            │    10│    10│    10│    10│    10│    10│    10│    10│    10│
│  Total N          │    10│    10│    10│    10│    10│    10│    10│    10│    10│
│  Layer Row Sum %  │ 11.1%│  9.0%│ 12.1%│ 11.1%│ 11.1%│ 11.9%│ 10.9%│ 10.9%│ 11.7%│
╰───────────────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────╯

                                  Statistics
╭─────────┬─────────────────────────────────────────────────────────────────╮
│         │                                a                                │
│         ├─────────────────────┬─────────────────────┬─────────────────────┤
│         │          1          │          2          │          9          │
│         ├─────────────────────┼─────────────────────┼─────────────────────┤
│         │          b          │          b          │          b          │
│         ├───────┬──────┬──────┼──────┬───────┬──────┼──────┬──────┬───────┤
│         │   3   │   4  │   9  │   3  │   4   │   9  │   3  │   4  │   9   │
│         ├───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│         │   c   │   c  │   c  │   c  │   c   │   c  │   c  │   c  │   c   │
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│N Valid  │     40│    35│    41│    26│     38│    40│    34│    32│     39│
│  Missing│      6│    14│    11│    22│     13│     7│    16│    21│     10│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Mean     │  27.23│ 24.20│ 22.63│ 27.96│  27.21│ 23.48│ 23.71│ 25.47│  26.03│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│S.E. Mean│    .93│   .75│  1.03│  1.12│    .84│   .87│  1.01│  1.05│   1.01│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Median   │  30.00│ 22.00│ 19.00│ 30.00│  29.00│ 24.00│ 23.00│ 24.00│  28.00│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Mode     │     34│    29│    19│    34│     33│    28│    23│    18│     30│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Std Dev  │   5.89│  4.42│  6.59│  5.69│   5.16│  5.50│  5.87│  5.94│   6.30│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Variance │  34.64│ 19.52│ 43.39│ 32.36│  26.66│ 30.20│ 34.46│ 35.29│  39.71│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Range    │  18.00│ 13.00│ 20.00│ 18.00│  15.00│ 20.00│ 18.00│ 15.00│  20.00│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Minimum  │     16│    18│    15│    16│     18│    15│    16│    18│     15│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Maximum  │     34│    31│    35│    34│     33│    35│    34│    33│     35│
├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│Sum      │1089.00│847.00│928.00│727.00│1034.00│939.00│806.00│815.00│1015.00│
╰─────────┴───────┴──────┴──────┴──────┴───────┴──────┴──────┴──────┴───────╯

                                     Custom Tables
╭───────────────────┬─────────────────────────────────────────────────────────────────╮
│                   │                                a                                │
│                   ├─────────────────────┬─────────────────────┬─────────────────────┤
│                   │          1          │          2          │          9          │
│                   ├─────────────────────┼─────────────────────┼─────────────────────┤
│                   │          b          │          b          │          b          │
│                   ├───────┬──────┬──────┼──────┬───────┬──────┼──────┬──────┬───────┤
│                   │   3   │   4  │   9  │   3  │   4   │   9  │   3  │   4  │   9   │
├───────────────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤
│c Valid N          │     40│    35│    41│    26│     38│    40│    34│    32│     39│
│  Missing          │      6│    14│    11│    22│     13│     7│    16│    21│     10│
│  Mean             │  27.22│ 24.20│ 22.63│ 27.96│  27.21│ 23.48│ 23.71│ 25.47│  26.03│
│  Std Error of Mean│    .93│   .75│  1.03│  1.12│    .84│   .87│  1.01│  1.05│   1.01│
│  Median           │  30.00│ 22.00│ 19.00│ 30.00│  29.00│ 24.00│ 23.00│ 24.00│  28.00│
│  Mode             │     34│    29│    19│    34│     33│    28│    23│    18│     30│
│  Std Deviation    │   5.89│  4.42│  6.59│  5.69│   5.16│  5.50│  5.87│  5.94│   6.30│
│  Variance         │  34.64│ 19.52│ 43.39│ 32.36│  26.66│ 30.20│ 34.46│ 35.29│  39.71│
│  Range            │  18.00│ 13.00│ 20.00│ 18.00│  15.00│ 20.00│ 18.00│ 15.00│  20.00│
│  Minimum          │     16│    18│    15│    16│     18│    15│    16│    18│     15│
│  Maximum          │     34│    31│    35│    34│     33│    35│    34│    33│     35│
│  Sum              │1089.00│847.00│928.00│727.00│1034.00│939.00│806.00│815.00│1015.00│
│  Count            │     46│    49│    52│    48│     51│    47│    50│    53│     49│
│  Total N          │     46│    49│    52│    48│     51│    47│    50│    53│     49│
│  Layer Row Sum %  │  13.3%│ 10.3%│ 11.3%│  8.9%│  12.6%│ 11.5%│  9.8%│  9.9%│  12.4%│
╰───────────────────┴───────┴──────┴──────┴──────┴───────┴──────┴──────┴──────┴───────╯

                                         Custom Tables
╭──────────────────────────────┬──────────────────────────────────────────────────────────────╮
│                              │                               a                              │
│                              ├────────────────────┬────────────────────┬────────────────────┤
│                              │          1         │          2         │          9         │
│                              ├────────────────────┼────────────────────┼────────────────────┤
│                              │          b         │          b         │          b         │
│                              ├──────┬──────┬──────┼──────┬──────┬──────┼──────┬──────┬──────┤
│                              │   3  │   4  │   9  │   3  │   4  │   9  │   3  │   4  │   9  │
├──────────────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
│c Unweighted Valid N          │     7│     6│     8│     7│     7│     8│     7│     7│     8│
│  Unweighted Missing          │     3│     4│     2│     3│     3│     2│     3│     3│     2│
│  Unweighted Mean             │ 25.86│ 24.50│ 24.63│ 25.86│ 25.71│ 24.25│ 25.43│ 25.29│ 23.88│
│  Unweighted Std Error of Mean│  2.44│  2.14│  2.58│  2.44│  2.18│  2.43│  2.36│  2.18│  2.47│
│  Unweighted Median           │ 25.00│ 24.50│ 25.00│ 25.00│ 27.00│ 25.00│ 25.00│ 24.00│ 23.50│
│  Unweighted Mode             │    16│    18│    15│    16│    18│    15│    16│    18│    15│
│  Unweighted Std Deviation    │  6.47│  5.24│  7.31│  6.47│  5.77│  6.88│  6.24│  5.77│  6.98│
│  Unweighted Variance         │ 41.81│ 27.50│ 53.41│ 41.81│ 33.24│ 47.36│ 38.95│ 33.24│ 48.70│
│  Unweighted Sum              │181.00│147.00│197.00│181.00│180.00│194.00│178.00│177.00│191.00│
│  Unweighted Count            │    10│    10│    10│    10│    10│    10│    10│    10│    10│
│  Unweighted Total N          │    10│    10│    10│    10│    10│    10│    10│    10│    10│
│  Unweighted Layer Row Sum %  │ 11.1%│  9.0%│ 12.1%│ 11.1%│ 11.1%│ 11.9%│ 10.9%│ 10.9%│ 11.7%│
╰──────────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5536"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_500
#AT_START_501
at_fn_group_banner 501 'ctables.at:5689' \
  "CTABLES hidden scale VLABELS" "                   " 40
at_xfail=no
(
  printf "%s\n" "501. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5690: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:5690"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5690"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.
CTABLES
    /TABLE region BY qn19a + qn35
    /SLABELS POSITION=ROW.
CTABLES
    /VLABELS VARIABLE=qn19a DISPLAY=NONE
    /TABLE region BY qn19a + qn35
    /SLABELS POSITION=ROW.
CTABLES
    /VLABELS VARIABLE=qn35 DISPLAY=NONE
    /TABLE region BY qn19a + qn35
    /SLABELS POSITION=ROW.

* This one in particular caused a crash because no categories were
  created on the column axis, so passing in 0 for the index was still
  too big for that number of categories.  It was fixed by creating a
  name-only category for each variable despite the "NONE" request,
  then hiding the entire dimension's labels if all its labels were
  set to "NONE".
CTABLES
    /VLABELS VARIABLE=qn19a qn35 DISPLAY=NONE
    /TABLE region BY qn19a + qn35
    /SLABELS POSITION=ROW.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5716: pspp ctables.sps -O box=unicode"
at_fn_check_prepare_trace "ctables.at:5716"
( $at_check_trace; pspp ctables.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                 Custom Tables
╭──────────────┬────────────────────────────┬─────────────────────────────────╮
│              │ 19a. About how old were you│ 35. In the past thirty days, how│
│              │   when you first starting  │   many times have you driven a  │
│              │    drinking alcohol, not   │  motor vehicle WITHIN TWO HOURS │
│              │  counting small tastes or  │     AFTER drinking alcoholic    │
│              │      sips of alcohol.      │            beverages?           │
├──────────────┼────────────────────────────┼─────────────────────────────────┤
│Region NE Mean│                       19.33│                                2│
│      ╶───────┼────────────────────────────┼─────────────────────────────────┤
│       MW Mean│                       19.83│                                2│
│      ╶───────┼────────────────────────────┼─────────────────────────────────┤
│       S  Mean│                       20.29│                                2│
│      ╶───────┼────────────────────────────┼─────────────────────────────────┤
│       W  Mean│                       19.87│                                2│
╰──────────────┴────────────────────────────┴─────────────────────────────────╯

                                 Custom Tables
╭──────────────┬─────┬────────────────────────────────────────────────────────╮
│              │     │  35. In the past thirty days, how many times have you  │
│              │     │ driven a motor vehicle WITHIN TWO HOURS AFTER drinking │
│              │QN19A│                  alcoholic beverages?                  │
├──────────────┼─────┼────────────────────────────────────────────────────────┤
│Region NE Mean│19.33│                                                       2│
│      ╶───────┼─────┼────────────────────────────────────────────────────────┤
│       MW Mean│19.83│                                                       2│
│      ╶───────┼─────┼────────────────────────────────────────────────────────┤
│       S  Mean│20.29│                                                       2│
│      ╶───────┼─────┼────────────────────────────────────────────────────────┤
│       W  Mean│19.87│                                                       2│
╰──────────────┴─────┴────────────────────────────────────────────────────────╯

                                 Custom Tables
╭──────────────┬─────────────────────────────────────────────────────────┬────╮
│              │   19a. About how old were you when you first starting   │    │
│              │  drinking alcohol, not counting small tastes or sips of │    │
│              │                         alcohol.                        │qn35│
├──────────────┼─────────────────────────────────────────────────────────┼────┤
│Region NE Mean│                                                    19.33│   2│
│      ╶───────┼─────────────────────────────────────────────────────────┼────┤
│       MW Mean│                                                    19.83│   2│
│      ╶───────┼─────────────────────────────────────────────────────────┼────┤
│       S  Mean│                                                    20.29│   2│
│      ╶───────┼─────────────────────────────────────────────────────────┼────┤
│       W  Mean│                                                    19.87│   2│
╰──────────────┴─────────────────────────────────────────────────────────┴────╯

      Custom Tables
╭──────────────┬───────╮
│Region NE Mean│19.33 2│
│      ╶───────┼───────┤
│       MW Mean│19.83 2│
│      ╶───────┼───────┤
│       S  Mean│20.29 2│
│      ╶───────┼───────┤
│       W  Mean│19.87 2│
╰──────────────┴───────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5716"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_501
#AT_START_502
at_fn_group_banner 502 'ctables.at:5777' \
  "CTABLES with SPLIT FILE" "                        " 40
at_xfail=no
(
  printf "%s\n" "502. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5778: ln -s \$top_srcdir/tests/language/commands/nhtsa.sav . || cp \$top_srcdir/tests/language/commands/nhtsa.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav ." "ctables.at:5778"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/nhtsa.sav . || cp $top_srcdir/tests/language/commands/nhtsa.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5778"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >ctables.sps <<'_ATEOF'
GET 'nhtsa.sav'.

SORT CASES BY qns3a.

CTABLES /TABLE qn105ba.

* Layered split has no effect on output.
SPLIT FILE BY qns3a.
CTABLES /TABLE qn105ba.

* Add column variable qns3a to compare against separate splits.
CTABLES /TABLE qn105ba BY qns3a.

* Separate splits are truly output separately.
SPLIT FILE SEPARATE BY qns3a.
CTABLES /TABLE qn105ba.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5797: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:5797"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│105b. How likely is it that drivers who have had too much   Almost      │  700│
│to drink to drive safely will A. Get stopped by the police? certain     │     │
│                                                            Very likely │ 1502│
│                                                            Somewhat    │ 2763│
│                                                            likely      │     │
│                                                            Somewhat    │ 1307│
│                                                            unlikely    │     │
│                                                            Very        │  609│
│                                                            unlikely    │     │
╰────────────────────────────────────────────────────────────────────────┴─────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│105b. How likely is it that drivers who have had too much   Almost      │  700│
│to drink to drive safely will A. Get stopped by the police? certain     │     │
│                                                            Very likely │ 1502│
│                                                            Somewhat    │ 2763│
│                                                            likely      │     │
│                                                            Somewhat    │ 1307│
│                                                            unlikely    │     │
│                                                            Very        │  609│
│                                                            unlikely    │     │
╰────────────────────────────────────────────────────────────────────────┴─────╯

                                  Custom Tables
╭─────────────────────────────────────────────────────────────────┬────────────╮
│                                                                 │S3a. GENDER:│
│                                                                 ├─────┬──────┤
│                                                                 │ Male│Female│
│                                                                 ├─────┼──────┤
│                                                                 │Count│ Count│
├─────────────────────────────────────────────────────────────────┼─────┼──────┤
│105b. How likely is it that drivers who have had too Almost      │  297│   403│
│much to drink to drive safely will A. Get stopped by certain     │     │      │
│the police?                                          Very likely │  660│   842│
│                                                     Somewhat    │ 1174│  1589│
│                                                     likely      │     │      │
│                                                     Somewhat    │  640│   667│
│                                                     unlikely    │     │      │
│                                                     Very        │  311│   298│
│                                                     unlikely    │     │      │
╰─────────────────────────────────────────────────────────────────┴─────┴──────╯

    Split Values
╭────────────┬─────╮
│Variable    │Value│
├────────────┼─────┤
│S3a. GENDER:│Male │
╰────────────┴─────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│105b. How likely is it that drivers who have had too much   Almost      │  297│
│to drink to drive safely will A. Get stopped by the police? certain     │     │
│                                                            Very likely │  660│
│                                                            Somewhat    │ 1174│
│                                                            likely      │     │
│                                                            Somewhat    │  640│
│                                                            unlikely    │     │
│                                                            Very        │  311│
│                                                            unlikely    │     │
╰────────────────────────────────────────────────────────────────────────┴─────╯

     Split Values
╭────────────┬──────╮
│Variable    │ Value│
├────────────┼──────┤
│S3a. GENDER:│Female│
╰────────────┴──────╯

                                  Custom Tables
╭────────────────────────────────────────────────────────────────────────┬─────╮
│                                                                        │Count│
├────────────────────────────────────────────────────────────────────────┼─────┤
│105b. How likely is it that drivers who have had too much   Almost      │  403│
│to drink to drive safely will A. Get stopped by the police? certain     │     │
│                                                            Very likely │  842│
│                                                            Somewhat    │ 1589│
│                                                            likely      │     │
│                                                            Somewhat    │  667│
│                                                            unlikely    │     │
│                                                            Very        │  298│
│                                                            unlikely    │     │
╰────────────────────────────────────────────────────────────────────────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5797"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_502
#AT_START_503
at_fn_group_banner 503 'ctables.at:5893' \
  "CTABLES variable level inference" "               " 40
at_xfail=no
(
  printf "%s\n" "503. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.txt <<'_ATEOF'
1  1  . 1  1  1    10 10001
2  2  . 2  2  2    11 10002
3  3  . 3  3  3    12 10003
4  4  . 4  4  4    13 10004
5  5  . 5  5  5    14 10005
6  6  . 6  6  6    15 10006
7  7  . 7  7  7    16 10007
8  8  . 8  8  8    17 10008
9  9  . 9  9  9    18 10009
10 10 . 10 10 10.5 19 110000
1  11 . 11 -1 1    11 10001
2  12 . 12 2  2    12 10002
3  13 . 13 3  3    13 10003
4  14 . 14 4  4    14 10004
5  15 . 15 5  5    15 10005
6  16 . 16 6  6    16 10006
7  17 . 17 7  7    17 10007
8  18 . 18 8  8    18 10008
9  19 . 19 9  9    19 10009
1  20 . 20 1  1    20 10001
2  21 . 21 2  2    21 10002
3  22 . 22 3  3    22 10003
4  23 . 23 4  4    23 10004
5  23 . 24 5  5    24 10005
6  23 . 24 6  6    25 10006
_ATEOF


cat >ctables.sps <<'_ATEOF'
DATA LIST LIST file='data.txt' NOTABLE /n1 to n3 s1 to s5.

* Nominal formats (copied from data that will default to scale).
COMPUTE n4=s1.
COMPUTE n5=s1.
FORMATS n4(WKDAY5) n5(MONTH5).

* Scale formats (copied from data that will default to nominal).
COMPUTE s6=n1.
COMPUTE s7=n1.
COMPUTE s8=n1.
FORMATS s6(DOLLAR6.2) s7(CCA8.2) s8(DATETIME17).

STRING string(A8).

DISPLAY DICTIONARY.
CTABLES /TABLE n1 + n2 + n3 + string + s1 + s2 + s3 + s4 + s5.
DISPLAY DICTIONARY.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/ctables.at:5951: pspp ctables.sps -O box=unicode -O width=80"
at_fn_check_prepare_trace "ctables.at:5951"
( $at_check_trace; pspp ctables.sps -O box=unicode -O width=80
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                                    Variables
╭──────┬────────┬──────────────┬─────┬─────┬─────────┬────────────┬────────────╮
│      │        │  Measurement │     │     │         │            │            │
│Name  │Position│     Level    │ Role│Width│Alignment│Print Format│Write Format│
├──────┼────────┼──────────────┼─────┼─────┼─────────┼────────────┼────────────┤
│n1    │       1│Unknown       │Input│    8│Right    │F8.2        │F8.2        │
│n2    │       2│Unknown       │Input│    8│Right    │F8.2        │F8.2        │
│n3    │       3│Unknown       │Input│    8│Right    │F8.2        │F8.2        │
│s1    │       4│Unknown       │Input│    8│Right    │F8.2        │F8.2        │
│s2    │       5│Unknown       │Input│    8│Right    │F8.2        │F8.2        │
│s3    │       6│Unknown       │Input│    8│Right    │F8.2        │F8.2        │
│s4    │       7│Unknown       │Input│    8│Right    │F8.2        │F8.2        │
│s5    │       8│Unknown       │Input│    8│Right    │F8.2        │F8.2        │
│n4    │       9│Unknown       │Input│    8│Right    │WKDAY5      │WKDAY5      │
│n5    │      10│Unknown       │Input│    8│Right    │MONTH5      │MONTH5      │
│s6    │      11│Unknown       │Input│    8│Right    │DOLLAR6.2   │DOLLAR6.2   │
│s7    │      12│Unknown       │Input│    8│Right    │CCA8.2      │CCA8.2      │
│s8    │      13│Unknown       │Input│    8│Right    │DATETIME17.0│DATETIME17.0│
│string│      14│Nominal       │Input│    8│Left     │A8          │A8          │
╰──────┴────────┴──────────────┴─────┴─────┴─────────┴────────────┴────────────╯

        Custom Tables
╭────────────┬─────┬────────╮
│            │Count│  Mean  │
├────────────┼─────┼────────┤
│n1     1.00 │    3│        │
│       2.00 │    3│        │
│       3.00 │    3│        │
│       4.00 │    3│        │
│       5.00 │    3│        │
│       6.00 │    3│        │
│       7.00 │    2│        │
│       8.00 │    2│        │
│       9.00 │    2│        │
│       10.00│    1│        │
├────────────┼─────┼────────┤
│n2     1.00 │    1│        │
│       2.00 │    1│        │
│       3.00 │    1│        │
│       4.00 │    1│        │
│       5.00 │    1│        │
│       6.00 │    1│        │
│       7.00 │    1│        │
│       8.00 │    1│        │
│       9.00 │    1│        │
│       10.00│    1│        │
│       11.00│    1│        │
│       12.00│    1│        │
│       13.00│    1│        │
│       14.00│    1│        │
│       15.00│    1│        │
│       16.00│    1│        │
│       17.00│    1│        │
│       18.00│    1│        │
│       19.00│    1│        │
│       20.00│    1│        │
│       21.00│    1│        │
│       22.00│    1│        │
│       23.00│    3│        │
├────────────┼─────┼────────┤
│string      │   25│        │
├────────────┼─────┼────────┤
│s1          │     │   12.96│
├────────────┼─────┼────────┤
│s2          │     │    4.76│
├────────────┼─────┼────────┤
│s3          │     │    4.86│
├────────────┼─────┼────────┤
│s4          │     │   16.60│
├────────────┼─────┼────────┤
│s5          │     │14004.44│
╰────────────┴─────┴────────╯

                                    Variables
╭──────┬────────┬──────────────┬─────┬─────┬─────────┬────────────┬────────────╮
│      │        │  Measurement │     │     │         │            │            │
│Name  │Position│     Level    │ Role│Width│Alignment│Print Format│Write Format│
├──────┼────────┼──────────────┼─────┼─────┼─────────┼────────────┼────────────┤
│n1    │       1│Nominal       │Input│    8│Right    │F8.2        │F8.2        │
│n2    │       2│Nominal       │Input│    8│Right    │F8.2        │F8.2        │
│n3    │       3│Nominal       │Input│    8│Right    │F8.2        │F8.2        │
│s1    │       4│Scale         │Input│    8│Right    │F8.2        │F8.2        │
│s2    │       5│Scale         │Input│    8│Right    │F8.2        │F8.2        │
│s3    │       6│Scale         │Input│    8│Right    │F8.2        │F8.2        │
│s4    │       7│Scale         │Input│    8│Right    │F8.2        │F8.2        │
│s5    │       8│Scale         │Input│    8│Right    │F8.2        │F8.2        │
│n4    │       9│Nominal       │Input│    8│Right    │WKDAY5      │WKDAY5      │
│n5    │      10│Nominal       │Input│    8│Right    │MONTH5      │MONTH5      │
│s6    │      11│Scale         │Input│    8│Right    │DOLLAR6.2   │DOLLAR6.2   │
│s7    │      12│Scale         │Input│    8│Right    │CCA8.2      │CCA8.2      │
│s8    │      13│Scale         │Input│    8│Right    │DATETIME17.0│DATETIME17.0│
│string│      14│Nominal       │Input│    8│Left     │A8          │A8          │
╰──────┴────────┴──────────────┴─────┴─────┴─────────┴────────────┴────────────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ctables.at:5951"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_503
#AT_START_504
at_fn_group_banner 504 'data-list.at:19' \
  "DATA LIST LIST with empty fields" "               " 41
at_xfail=no
(
  printf "%s\n" "504. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.pspp <<'_ATEOF'
DATA LIST LIST NOTABLE /A B C (F1.0).
BEGIN DATA.
,,
,,3
,2,
,2,3
1,,
1,,3
1,2,
1,2,3
END DATA.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:35: pspp -O format=csv data-list.pspp"
at_fn_check_prepare_trace "data-list.at:35"
( $at_check_trace; pspp -O format=csv data-list.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
A,B,C
.,.,.
.,.,3
.,2,.
.,2,3
1,.,.
1,.,3
1,2,.
1,2,3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_504
#AT_START_505
at_fn_group_banner 505 'data-list.at:50' \
  "DATA LIST LIST with explicit delimiters" "        " 41
at_xfail=no
(
  printf "%s\n" "505. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.pspp <<'_ATEOF'
data list list ('|','X') /A B C D.
begin data.
1|23X45|2.03x
2X22|34|23|
3|34|34X34
end data.

list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:61: pspp -O format=csv data-list.pspp"
at_fn_check_prepare_trace "data-list.at:61"
( $at_check_trace; pspp -O format=csv data-list.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
A,F8.0
B,F8.0
C,F8.0
D,F8.0

data-list.pspp:3.9-3.13: warning: Data for variable D is not valid as format F: Number followed by garbage.

Table: Data List
A,B,C,D
1.00,23.00,45.00,.  
2.00,22.00,34.00,23.00
3.00,34.00,34.00,34.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:61"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_505
#AT_START_506
at_fn_group_banner 506 'data-list.at:79' \
  "DATA LIST FREE with SKIP" "                       " 41
at_xfail=no
(
  printf "%s\n" "506. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.pspp <<'_ATEOF'
data list free skip=1/A B C D.
begin data.
# This record is ignored.
,1,2,x
,4,,5
6
7,
8 9
0,1 ,,,
,,,,
2

3
4
5
end data.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:99: pspp -O format=csv data-list.pspp"
at_fn_check_prepare_trace "data-list.at:99"
( $at_check_trace; pspp -O format=csv data-list.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
.  ,1.00,2.00,.  
.  ,4.00,.  ,5.00
6.00,7.00,8.00,9.00
.00,1.00,.  ,.  
.  ,.  ,.  ,.  
2.00,3.00,4.00,5.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:99"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_506
#AT_START_507
at_fn_group_banner 507 'data-list.at:113' \
  "DATA LIST LIST with SKIP and tab delimiter" "     " 41
at_xfail=no
(
  printf "%s\n" "507. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.pspp <<'_ATEOF'
data list list (tab) notable skip=2/A B C D.
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:138: pspp -O format=csv data-list.pspp"
at_fn_check_prepare_trace "data-list.at:138"
( $at_check_trace; pspp -O format=csv data-list.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
.  ,.  ,.  ,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:138"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_507
#AT_START_508
at_fn_group_banner 508 'data-list.at:162' \
  "DATA LIST FREE with explicit delimiter at end of line" "" 41
at_xfail=no
(
  printf "%s\n" "508. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.pspp <<'_ATEOF'
DATA LIST FREE(',')/x y z.
BEGIN DATA.
1,2,3
4,5,6
7,8,9
END DATA.
LIST.

DATA LIST FREE(',')/x y z.
BEGIN DATA.
11,12,13,
14,15,16,
17,18,19,
END DATA.
LIST.

DATA LIST FREE(TAB)/x y z.
BEGIN DATA.
21	22	23
24	25	26
27	28	29
END DATA.
LIST.

DATA LIST FREE(TAB)/x y z.
BEGIN DATA.
31	32	33	
34	35	36	
37	38	39	
END DATA.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:196: pspp -O format=csv data-list.pspp"
at_fn_check_prepare_trace "data-list.at:196"
( $at_check_trace; pspp -O format=csv data-list.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,y,z
1.00,2.00,3.00
4.00,5.00,6.00
7.00,8.00,9.00

Table: Data List
x,y,z
11.00,12.00,13.00
14.00,15.00,16.00
17.00,18.00,19.00

Table: Data List
x,y,z
21.00,22.00,23.00
24.00,25.00,26.00
27.00,28.00,29.00

Table: Data List
x,y,z
31.00,32.00,33.00
34.00,35.00,36.00
37.00,38.00,39.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:196"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_508
#AT_START_509
at_fn_group_banner 509 'data-list.at:223' \
  "DATA LIST FIXED with multiple records per case" " " 41
at_xfail=no
(
  printf "%s\n" "509. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.pspp <<'_ATEOF'
data list fixed notable
        /1 start 1-20 (adate)
        /2 end 1-20 (adate)
        /3 count 1-3.
begin data.
07-22-2007
10-06-2007
x
07-14-1789
08-26-1789
xy
01-01-1972
12-31-1999
682
end data.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:242: pspp -O format=csv data-list.pspp"
at_fn_check_prepare_trace "data-list.at:242"
( $at_check_trace; pspp -O format=csv data-list.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "data-list.pspp:8.1-8.3: warning: Data for variable count is not valid as format F: Field contents are not numeric.

data-list.pspp:11.1-11.3: warning: Data for variable count is not valid as format F: Field contents are not numeric.

Table: Data List
start,end,count
07/22/2007,10/06/2007,.
07/14/1789,08/26/1789,.
01/01/1972,12/31/1999,682
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:242"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_509
#AT_START_510
at_fn_group_banner 510 'data-list.at:255' \
  "DATA LIST FIXED with empty trailing record" "     " 41
at_xfail=no
(
  printf "%s\n" "510. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.pspp <<'_ATEOF'
data list fixed notable records=2/x 1 y 2.
begin data.
12

34

56

78

90

end data.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:272: pspp -O format=csv data-list.pspp"
at_fn_check_prepare_trace "data-list.at:272"
( $at_check_trace; pspp -O format=csv data-list.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,y
1,2
3,4
5,6
7,8
9,0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:272"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_510
#AT_START_511
at_fn_group_banner 511 'data-list.at:285' \
  "DATA LIST with various line-ends" "               " 41
at_xfail=no
(
  printf "%s\n" "511. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.sps <<'_ATEOF'
data list list notable file='input.txt'/a b c.
list.
_ATEOF

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
{ set +x
printf "%s\n" "$at_srcdir/data-list.at:294: cksum input.txt"
at_fn_check_prepare_trace "data-list.at:294"
( $at_check_trace; cksum input.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1732021750 50 input.txt
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:294"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:296: pspp -o pspp.csv data-list.sps"
at_fn_check_prepare_trace "data-list.at:296"
( $at_check_trace; pspp -o pspp.csv data-list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:296"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:297: cat pspp.csv"
at_fn_check_prepare_trace "data-list.at:297"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:297"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_511
#AT_START_512
at_fn_group_banner 512 'data-list.at:309' \
  "DATA LIST properly expands tabs in input" "       " 41
at_xfail=no
(
  printf "%s\n" "512. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:320: sed -n '/12345/l' data-list.sps"
at_fn_check_prepare_trace "data-list.at:320"
( $at_check_trace; sed -n '/12345/l' data-list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\\t1\\t12\\t123\\t1234\\t12345    .\$
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:320"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:323: pspp -o pspp.csv data-list.sps"
at_fn_check_prepare_trace "data-list.at:323"
( $at_check_trace; pspp -o pspp.csv data-list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:323"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:325: cat pspp.csv"
at_fn_check_prepare_trace "data-list.at:325"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1       12      123     1234    12345    . 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:325"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:330: cat print.txt"
at_fn_check_prepare_trace "data-list.at:330"
( $at_check_trace; cat print.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "         1       12      123     1234    12345    . 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:330"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:334: cat write.txt"
at_fn_check_prepare_trace "data-list.at:334"
( $at_check_trace; cat write.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "        1       12      123     1234    12345    .
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:334"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_512
#AT_START_513
at_fn_group_banner 513 'data-list.at:339' \
  "DATA LIST FREE and LIST report missing delimiters" "" 41
at_xfail=no
(
  printf "%s\n" "513. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.sps <<'_ATEOF'
DATA LIST FREE NOTABLE/s (a10).
LIST.
BEGIN DATA.
'y'z
END DATA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:347: pspp -O format=csv data-list.sps"
at_fn_check_prepare_trace "data-list.at:347"
( $at_check_trace; pspp -O format=csv data-list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "data-list.sps:4: warning: Missing delimiter following quoted string.

Table: Data List
s
y
z
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:347"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_513
#AT_START_514
at_fn_group_banner 514 'data-list.at:357' \
  "DATA LIST FREE and LIST assume a width if omitted" "" 41
at_xfail=no
(
  printf "%s\n" "514. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.sps <<'_ATEOF'
DATA LIST FREE TABLE/s (a) d (datetime) f (f).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:361: pspp -O format=csv data-list.sps"
at_fn_check_prepare_trace "data-list.at:361"
( $at_check_trace; pspp -O format=csv data-list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
s,A1
d,DATETIME17.0
f,F1.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:361"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_514
#AT_START_515
at_fn_group_banner 515 'data-list.at:370' \
  "DATA LIST Decimal comma" "                        " 41
at_xfail=no
(
  printf "%s\n" "515. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.sps <<'_ATEOF'
SET DECIMAL=COMMA.

DATA LIST NOTABLE LIST /A *.
BEGIN DATA
1
2
3
3,5
4
4,5
5
6
END DATA

LIST /FORMAT=NUMBERED.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/data-list.at:389: pspp -O format=csv data-list.sps"
at_fn_check_prepare_trace "data-list.at:389"
( $at_check_trace; pspp -O format=csv data-list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
Case Number,A
1,\"1,00\"
2,\"2,00\"
3,\"3,00\"
4,\"3,50\"
5,\"4,00\"
6,\"4,50\"
7,\"5,00\"
8,\"6,00\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:389"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_515
#AT_START_516
at_fn_group_banner 516 'data-list.at:404' \
  "DATA LIST syntax errors" "                        " 41
at_xfail=no
(
  printf "%s\n" "516. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='data-list.sps' ERROR=IGNORE.
_ATEOF

cat >data-list.sps <<'_ATEOF'
DATA LIST FILE=**.
DATA LIST ENCODING=**.
DATA LIST RECORDS=1 RECORDS=2.
DATA LIST RECORDS=0.
DATA LIST SKIP=-1.
DATA LIST END=**.
INPUT PROGRAM.
DATA LIST END=xyzzy END=xyzzy.
END INPUT PROGRAM.
INPUT PROGRAM.
DATA LIST END=**.
END INPUT PROGRAM.
DATA LIST XYZZY.
DATA LIST FREE LIST.
DATA LIST LIST (**).
DATA LIST **.
DATA LIST ENCODING='xyzzy'/x.
INPUT PROGRAM.
DATA LIST LIST END=xyzzy/x.
END INPUT PROGRAM.
DATA LIST FIXED/0.
DATA LIST FIXED/ **.
DATA LIST FIXED/x 1.5.
DATA LIST FIXED/x -1.
DATA LIST FIXED/x 5-3.
DATA LIST FIXED/x y 1-3.
DATA LIST FIXED/x 1-5 (xyzzy).
DATA LIST FIXED/x 1-5 (**).
DATA LIST FIXED/x 1 (F,5).
DATA LIST FIXED/x (2F8.0).
DATA LIST FIXED/x **.
DATA LIST FIXED/x 1 x 2.
INPUT PROGRAM.
DATA LIST FIXED/x 1.
DATA LIST FIXED/x 1 (a).
END INPUT PROGRAM.
INPUT PROGRAM.
DATA LIST FIXED/y 2 (a).
DATA LIST FIXED/y 3-4 (a).
END INPUT PROGRAM.
DATA LIST FIXED RECORDS=1/x y(F2/F3).
DATA LIST FIXED RECORDS=1//.
DATA LIST FIXED RECORDS=1/.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/data-list.at:454: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "data-list.at:454"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"data-list.sps:1.16-1.17: error: DATA LIST: Syntax error expecting a file name or handle name.
    1 | DATA LIST FILE=**.
      |                ^~\"

\"data-list.sps:2.20-2.21: error: DATA LIST: Syntax error expecting string.
    2 | DATA LIST ENCODING=**.
      |                    ^~\"

\"data-list.sps:3.21-3.27: error: DATA LIST: Subcommand RECORDS may only be specified once.
    3 | DATA LIST RECORDS=1 RECORDS=2.
      |                     ^~~~~~~\"

\"data-list.sps:4.20: error: DATA LIST: Syntax error expecting one of the following: FILE, ENCODING, RECORDS, SKIP, END, NOTABLE, TABLE, FIXED, FREE, LIST.
    4 | DATA LIST RECORDS=0.
      |                    ^\"

\"data-list.sps:5.16-5.17: error: DATA LIST: Syntax error expecting non-negative integer for SKIP.
    5 | DATA LIST SKIP=-1.
      |                ^~\"

\"data-list.sps:6.11-6.13: error: DATA LIST: The END subcommand may only be used within INPUT PROGRAM.
    6 | DATA LIST END=**.
      |           ^~~\"

\"data-list.sps:8.21-8.23: error: DATA LIST: Subcommand END may only be specified once.
    8 | DATA LIST END=xyzzy END=xyzzy.
      |                     ^~~\"

\"data-list.sps:11.15-11.16: error: DATA LIST: Syntax error expecting identifier.
   11 | DATA LIST END=**.
      |               ^~\"

\"data-list.sps:13.11-13.15: error: DATA LIST: Syntax error expecting one of the following: FILE, ENCODING, RECORDS, SKIP, END, NOTABLE, TABLE, FIXED, FREE, LIST.
   13 | DATA LIST XYZZY.
      |           ^~~~~\"

\"data-list.sps:14.16-14.19: error: DATA LIST: Only one of FIXED, FREE, or LIST may be specified.
   14 | DATA LIST FREE LIST.
      |                ^~~~\"

\"data-list.sps:15.17-15.18: error: DATA LIST: Syntax error expecting TAB or delimiter string.
   15 | DATA LIST LIST (**).
      |                 ^~\"

\"data-list.sps:16.11-16.12: error: DATA LIST: Syntax error expecting one of the following: FILE, ENCODING, RECORDS, SKIP, END, NOTABLE, TABLE, FIXED, FREE, LIST.
   16 | DATA LIST **.
      |           ^~\"

\"data-list.sps:17.11-17.26: warning: DATA LIST: Encoding should not be specified for inline data. It will be ignored.
   17 | DATA LIST ENCODING='xyzzy'/x.
      |           ^~~~~~~~~~~~~~~~\"

\"data-list.sps:17.29: error: DATA LIST: SPSS-like or Fortran-like format specification expected after variable names.
   17 | DATA LIST ENCODING='xyzzy'/x.
      |                             ^\"

\"data-list.sps:19.16-19.24: error: DATA LIST: The END subcommand may be used only with DATA LIST FIXED.
   19 | DATA LIST LIST END=xyzzy/x.
      |                ^~~~~~~~~\"

\"data-list.sps:21.17: error: DATA LIST: Syntax error expecting positive integer.
   21 | DATA LIST FIXED/0.
      |                 ^\"

\"data-list.sps:22.18-22.19: error: DATA LIST: Syntax error expecting variable name.
   22 | DATA LIST FIXED/ **.
      |                  ^~\"

\"data-list.sps:23.19-23.21: error: DATA LIST: Syntax error expecting integer.
   23 | DATA LIST FIXED/x 1.5.
      |                   ^~~\"

\"data-list.sps:24.19-24.20: error: DATA LIST: Column positions for fields must be positive.
   24 | DATA LIST FIXED/x -1.
      |                   ^~\"

\"data-list.sps:25.19-25.21: error: DATA LIST: The ending column for a field must be greater than the starting column.
   25 | DATA LIST FIXED/x 5-3.
      |                   ^~~\"

\"data-list.sps:26.21-26.23: error: DATA LIST: The 3 columns 1-3 can't be evenly divided into 2 fields.
   26 | DATA LIST FIXED/x y 1-3.
      |                     ^~~\"

\"data-list.sps:27.24-27.28: error: DATA LIST: Unknown format type \`xyzzy'.
   27 | DATA LIST FIXED/x 1-5 (xyzzy).
      |                        ^~~~~\"

\"data-list.sps:28.24-28.25: error: DATA LIST: Syntax error expecting \`)'.
   28 | DATA LIST FIXED/x 1-5 (**).
      |                        ^~\"

\"data-list.sps:29.19-29.25: error: DATA LIST: Input format F1.5 specifies 5 decimal places, but width 1 allows at most 1 decimals.
   29 | DATA LIST FIXED/x 1 (F,5).
      |                   ^~~~~~~\"

\"data-list.sps:30.20-30.25: error: DATA LIST: Number of variables specified (1) differs from number of variable formats (2).
   30 | DATA LIST FIXED/x (2F8.0).
      |                    ^~~~~~\"

\"data-list.sps:31.19-31.20: error: DATA LIST: SPSS-like or Fortran-like format specification expected after variable names.
   31 | DATA LIST FIXED/x **.
      |                   ^~\"

\"data-list.sps:32.21: error: DATA LIST: x is a duplicate variable name.
   32 | DATA LIST FIXED/x 1 x 2.
      |                     ^\"

Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
x,1,1-1,F1.0

\"data-list.sps:35.17-35.23: error: DATA LIST: There is already a variable x of a different type.
   35 | DATA LIST FIXED/x 1 (a).
      |                 ^~~~~~~\"

Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
y,1,2-2,A1

\"data-list.sps:39.17-39.25: error: DATA LIST: There is already a string variable y of a different width.
   39 | DATA LIST FIXED/y 3-4 (a).
      |                 ^~~~~~~~~\"

\"data-list.sps:41.27-41.36: error: DATA LIST: Cannot place variable y on record 2 when RECORDS=1 is specified.
   41 | DATA LIST FIXED RECORDS=1/x y(F2/F3).
      |                           ^~~~~~~~~~\"

\"data-list.sps:42.27: error: DATA LIST: Cannot advance to record 2 when RECORDS=1 is specified.
   42 | DATA LIST FIXED RECORDS=1//.
      |                           ^\"

\"data-list.sps:43.26: error: DATA LIST: No fields were specified.  At least one is required.
   43 | DATA LIST FIXED RECORDS=1/.
      |                          ^\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/data-list.at:454"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_516
#AT_START_517
at_fn_group_banner 517 'data-list.at:593' \
  "DATA LIST FIXED manual example 1" "               " 41
at_xfail=no
(
  printf "%s\n" "517. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.sps <<'_ATEOF'
DATA LIST TABLE /NAME 1-10 (A) INFO1 TO INFO3 12-17 (1).

BEGIN DATA.
John Smith 102311
Bob Arnold 122015
Bill Yates  918 6
END DATA.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:605: pspp data-list.sps -O box=unicode"
at_fn_check_prepare_trace "data-list.at:605"
( $at_check_trace; pspp data-list.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  Reading 1 record from INLINE.
╭────────┬──────┬───────┬──────╮
│Variable│Record│Columns│Format│
├────────┼──────┼───────┼──────┤
│NAME    │     1│1-10   │A10   │
│INFO1   │     1│12-13  │F2.1  │
│INFO2   │     1│14-15  │F2.1  │
│INFO3   │     1│16-17  │F2.1  │
╰────────┴──────┴───────┴──────╯

           Data List
╭──────────┬─────┬─────┬─────╮
│   NAME   │INFO1│INFO2│INFO3│
├──────────┼─────┼─────┼─────┤
│John Smith│  1.0│  2.3│  1.1│
│Bob Arnold│  1.2│  2.0│  1.5│
│Bill Yates│   .9│  1.8│   .6│
╰──────────┴─────┴─────┴─────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:605"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_517
#AT_START_518
at_fn_group_banner 518 'data-list.at:627' \
  "DATA LIST FIXED manual example 2" "               " 41
at_xfail=no
(
  printf "%s\n" "518. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.sps <<'_ATEOF'
DATA LIST
        /ID 1-5 NAME 7-36 (A) SURNAME 38-67 (A) MINITIAL 69 (A)
        /Q01 TO Q50 7-56
        /.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:634: pspp data-list.sps -O box=unicode"
at_fn_check_prepare_trace "data-list.at:634"
( $at_check_trace; pspp data-list.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " Reading 3 records from INLINE.
╭────────┬──────┬───────┬──────╮
│Variable│Record│Columns│Format│
├────────┼──────┼───────┼──────┤
│ID      │     1│1-5    │F5.0  │
│NAME    │     1│7-36   │A30   │
│SURNAME │     1│38-67  │A30   │
│MINITIAL│     1│69-69  │A1    │
│Q01     │     2│7-7    │F1.0  │
│Q02     │     2│8-8    │F1.0  │
│Q03     │     2│9-9    │F1.0  │
│Q04     │     2│10-10  │F1.0  │
│Q05     │     2│11-11  │F1.0  │
│Q06     │     2│12-12  │F1.0  │
│Q07     │     2│13-13  │F1.0  │
│Q08     │     2│14-14  │F1.0  │
│Q09     │     2│15-15  │F1.0  │
│Q10     │     2│16-16  │F1.0  │
│Q11     │     2│17-17  │F1.0  │
│Q12     │     2│18-18  │F1.0  │
│Q13     │     2│19-19  │F1.0  │
│Q14     │     2│20-20  │F1.0  │
│Q15     │     2│21-21  │F1.0  │
│Q16     │     2│22-22  │F1.0  │
│Q17     │     2│23-23  │F1.0  │
│Q18     │     2│24-24  │F1.0  │
│Q19     │     2│25-25  │F1.0  │
│Q20     │     2│26-26  │F1.0  │
│Q21     │     2│27-27  │F1.0  │
│Q22     │     2│28-28  │F1.0  │
│Q23     │     2│29-29  │F1.0  │
│Q24     │     2│30-30  │F1.0  │
│Q25     │     2│31-31  │F1.0  │
│Q26     │     2│32-32  │F1.0  │
│Q27     │     2│33-33  │F1.0  │
│Q28     │     2│34-34  │F1.0  │
│Q29     │     2│35-35  │F1.0  │
│Q30     │     2│36-36  │F1.0  │
│Q31     │     2│37-37  │F1.0  │
│Q32     │     2│38-38  │F1.0  │
│Q33     │     2│39-39  │F1.0  │
│Q34     │     2│40-40  │F1.0  │
│Q35     │     2│41-41  │F1.0  │
│Q36     │     2│42-42  │F1.0  │
│Q37     │     2│43-43  │F1.0  │
│Q38     │     2│44-44  │F1.0  │
│Q39     │     2│45-45  │F1.0  │
│Q40     │     2│46-46  │F1.0  │
│Q41     │     2│47-47  │F1.0  │
│Q42     │     2│48-48  │F1.0  │
│Q43     │     2│49-49  │F1.0  │
│Q44     │     2│50-50  │F1.0  │
│Q45     │     2│51-51  │F1.0  │
│Q46     │     2│52-52  │F1.0  │
│Q47     │     2│53-53  │F1.0  │
│Q48     │     2│54-54  │F1.0  │
│Q49     │     2│55-55  │F1.0  │
│Q50     │     2│56-56  │F1.0  │
╰────────┴──────┴───────┴──────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-list.at:634"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_518
#AT_START_519
at_fn_group_banner 519 'data-list.at:700' \
  "DATA LIST inside LOOP" "                          " 41
at_xfail=no
(
  printf "%s\n" "519. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data-list.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
LOOP.
DATA LIST.
END LOOP.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-list.at:707: pspp data-list.sps"
at_fn_check_prepare_trace "data-list.at:707"
( $at_check_trace; pspp data-list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "data-list.sps:3.1-3.9: error: DATA LIST: DATA LIST is not allowed inside DO IF
or LOOP (except inside INPUT PROGRAM).
    3 | DATA LIST.
      | ^~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/data-list.at:707"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_519
#AT_START_520
at_fn_group_banner 520 'data-reader.at:21' \
  "BEGIN DATA as part of a procedure" "              " 42
at_xfail=no
(
  printf "%s\n" "520. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >begin-data.sps <<'_ATEOF'
TITLE 'Test BEGIN DATA ... END DATA'.

DATA LIST /a b 1-2.
LIST.
BEGIN DATA.
12
34
56
78
90
END DATA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-reader.at:35: pspp -O format=csv begin-data.sps"
at_fn_check_prepare_trace "data-reader.at:35"
( $at_check_trace; pspp -O format=csv begin-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
a,1,1-1,F1.0
b,1,2-2,F1.0

Table: Data List
a,b
1,2
3,4
5,6
7,8
9,0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_520
#AT_START_521
at_fn_group_banner 521 'data-reader.at:52' \
  "BEGIN DATA as an independent command" "           " 42
at_xfail=no
(
  printf "%s\n" "521. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >begin-data.sps <<'_ATEOF'
data list /A B 1-2.
begin data.
09
87
65
43
21
end data.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/data-reader.at:64: pspp -O format=csv begin-data.sps"
at_fn_check_prepare_trace "data-reader.at:64"
( $at_check_trace; pspp -O format=csv begin-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
A,1,1-1,F1.0
B,1,2-2,F1.0

Table: Data List
A,B
0,9
8,7
6,5
4,3
2,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:64"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_521
#AT_START_522
at_fn_group_banner 522 'data-reader.at:263' \
  "read and write files with MODE=BINARY" "          " 42
at_xfail=no
(
  printf "%s\n" "522. $at_setup_line: testing $at_desc ..."
  $at_traceon


   cat >input.txt <<'_ATEOF'
07-22-2007
10-06-2007
321
07-14-1789
08-26-1789
4
01-01-1972
12-31-1999
682
_ATEOF

   cat >make-binary.py <<'_ATEOF'

#! /usr/bin/python3

import struct
import sys

# 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.
def my_rand(modulus):
    global seed
    a = 16807
    m = 2147483647
    tmp = a * seed
    seed = tmp - m * (tmp // m)
    return seed % modulus

# Test the random number generator for reproducibility,
# then reset the seed
seed = 1
for i in range(10000):
    my_rand(1)
assert seed == 1043618065
seed = 1

# ASCII to EBCDIC translation table
ascii2ebcdic = (
    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
    0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
    0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x9a, 0x6d,
    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
    0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0x5f, 0x07,
    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xe1,
    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
    0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
    0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
    0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
    0x76, 0x77, 0x78, 0x80, 0x8a, 0x8b, 0x8c, 0x8d,
    0x8e, 0x8f, 0x90, 0x6a, 0x9b, 0x9c, 0x9d, 0x9e,
    0x9f, 0xa0, 0xaa, 0xab, 0xac, 0x4a, 0xae, 0xaf,
    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xa1, 0xbe, 0xbf,
    0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb,
    0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, 0xed,
    0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff)
assert len(ascii2ebcdic) == 256

def a2e(s):
    return bytearray((ascii2ebcdic[ord(c)] for c in s))

def dump_records(out, records):
    while records:
        n = min(my_rand(5) + 1, len(records))
        r = records[:n]
        records[:n] = []

        count = sum((len(rec) for rec in r))
        out.buffer.write(struct.pack(">H xx", count + 4))
        for rec in r:
            out.buffer.write(rec)

data = []
for line in open('input.txt', 'r'):
    data += [line.rstrip('\r\n')]

# MODE=BINARY
out = open('binary.bin', 'w')
for item in data:
    reclen = struct.pack("<I", len(item))
    out.buffer.write(reclen)
    out.buffer.write(bytearray([ord(c) for c in item]))
    out.buffer.write(reclen)
out.close()

# MODE=360 /RECFORM=FIXED /LRECL=32
out = open('fixed.bin', 'w')
lrecl = 32
for item in data:
    s = item[:lrecl]
    s += ' ' * (lrecl - len(s))
    assert len(s) == 32
    out.buffer.write(a2e(s))
out.close()

# MODE=360 /RECFORM=VARIABLE
out = open('variable.bin', 'w')
records = []
for item in data:
    records += [struct.pack('>H xx', len(item) + 4) + a2e(item)]
dump_records(out, records)
out.close()

# MODE=360 /RECFORM=SPANNED
out = open('spanned.bin', 'w')
records = []
for line in data:
    r = []
    while line:
        n = min(my_rand(5), len(line))
        r += [line[:n]]
        line = line[n:]
    for i, s in enumerate(r):
        scc = (0 if len(r) == 1
               else 1 if i == 0
               else 2 if i == len(r) - 1
               else 3)
        records += [struct.pack('>H B x', len(s) + 4, scc) + a2e(s)]
dump_records(out, records)
out.close()
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:263: \$PYTHON3 make-binary.py"
at_fn_check_prepare_dynamic "$PYTHON3 make-binary.py" "data-reader.at:263"
( $at_check_trace; $PYTHON3 make-binary.py
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:263"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >data-reader.sps <<'_ATEOF'
FILE HANDLE input/NAME='binary.bin'/MODE=BINARY.
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'/MODE=BINARY.
COMPUTE count=count + 1.
PRINT OUTFILE=output/start end count.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:263: pspp -O format=csv data-reader.sps"
at_fn_check_prepare_trace "data-reader.at:263"
( $at_check_trace; pspp -O format=csv data-reader.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:263"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:263: test -s output.bin"
at_fn_check_prepare_trace "data-reader.at:263"
( $at_check_trace; test -s output.bin
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:263"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >data-reader-2.sps <<'_ATEOF'
* Re-read the new data and list it, to verify that it was written correctly.
FILE HANDLE OUTPUT/NAME='output.bin'/MODE=BINARY.
DATA LIST FIXED FILE=output NOTABLE/
	start 2-11 (ADATE)
	end 13-22 (ADATE)
	count 24-26.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:263: pspp -O format=csv data-reader-2.sps"
at_fn_check_prepare_trace "data-reader.at:263"
( $at_check_trace; pspp -O format=csv data-reader-2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:263"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_522
#AT_START_523
at_fn_group_banner 523 'data-reader.at:264' \
  "read and write files with MODE=360 /RECFORM=FIXED /LRECL=32" "" 42
at_xfail=no
(
  printf "%s\n" "523. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/data-reader.at:264: i18n-test supports_encodings EBCDIC-US"
at_fn_check_prepare_trace "data-reader.at:264"
( $at_check_trace; i18n-test supports_encodings EBCDIC-US
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:264"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >input.txt <<'_ATEOF'
07-22-2007
10-06-2007
321
07-14-1789
08-26-1789
4
01-01-1972
12-31-1999
682
_ATEOF

   cat >make-binary.py <<'_ATEOF'

#! /usr/bin/python3

import struct
import sys

# 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.
def my_rand(modulus):
    global seed
    a = 16807
    m = 2147483647
    tmp = a * seed
    seed = tmp - m * (tmp // m)
    return seed % modulus

# Test the random number generator for reproducibility,
# then reset the seed
seed = 1
for i in range(10000):
    my_rand(1)
assert seed == 1043618065
seed = 1

# ASCII to EBCDIC translation table
ascii2ebcdic = (
    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
    0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
    0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x9a, 0x6d,
    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
    0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0x5f, 0x07,
    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xe1,
    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
    0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
    0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
    0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
    0x76, 0x77, 0x78, 0x80, 0x8a, 0x8b, 0x8c, 0x8d,
    0x8e, 0x8f, 0x90, 0x6a, 0x9b, 0x9c, 0x9d, 0x9e,
    0x9f, 0xa0, 0xaa, 0xab, 0xac, 0x4a, 0xae, 0xaf,
    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xa1, 0xbe, 0xbf,
    0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb,
    0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, 0xed,
    0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff)
assert len(ascii2ebcdic) == 256

def a2e(s):
    return bytearray((ascii2ebcdic[ord(c)] for c in s))

def dump_records(out, records):
    while records:
        n = min(my_rand(5) + 1, len(records))
        r = records[:n]
        records[:n] = []

        count = sum((len(rec) for rec in r))
        out.buffer.write(struct.pack(">H xx", count + 4))
        for rec in r:
            out.buffer.write(rec)

data = []
for line in open('input.txt', 'r'):
    data += [line.rstrip('\r\n')]

# MODE=BINARY
out = open('binary.bin', 'w')
for item in data:
    reclen = struct.pack("<I", len(item))
    out.buffer.write(reclen)
    out.buffer.write(bytearray([ord(c) for c in item]))
    out.buffer.write(reclen)
out.close()

# MODE=360 /RECFORM=FIXED /LRECL=32
out = open('fixed.bin', 'w')
lrecl = 32
for item in data:
    s = item[:lrecl]
    s += ' ' * (lrecl - len(s))
    assert len(s) == 32
    out.buffer.write(a2e(s))
out.close()

# MODE=360 /RECFORM=VARIABLE
out = open('variable.bin', 'w')
records = []
for item in data:
    records += [struct.pack('>H xx', len(item) + 4) + a2e(item)]
dump_records(out, records)
out.close()

# MODE=360 /RECFORM=SPANNED
out = open('spanned.bin', 'w')
records = []
for line in data:
    r = []
    while line:
        n = min(my_rand(5), len(line))
        r += [line[:n]]
        line = line[n:]
    for i, s in enumerate(r):
        scc = (0 if len(r) == 1
               else 1 if i == 0
               else 2 if i == len(r) - 1
               else 3)
        records += [struct.pack('>H B x', len(s) + 4, scc) + a2e(s)]
dump_records(out, records)
out.close()
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:264: \$PYTHON3 make-binary.py"
at_fn_check_prepare_dynamic "$PYTHON3 make-binary.py" "data-reader.at:264"
( $at_check_trace; $PYTHON3 make-binary.py
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:264"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >data-reader.sps <<'_ATEOF'
FILE HANDLE input/NAME='fixed.bin'/MODE=360 /RECFORM=FIXED /LRECL=32.
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'/MODE=360 /RECFORM=FIXED /LRECL=32.
COMPUTE count=count + 1.
PRINT OUTFILE=output/start end count.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:264: pspp -O format=csv data-reader.sps"
at_fn_check_prepare_trace "data-reader.at:264"
( $at_check_trace; pspp -O format=csv data-reader.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:264"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:264: test -s output.bin"
at_fn_check_prepare_trace "data-reader.at:264"
( $at_check_trace; test -s output.bin
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:264"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >data-reader-2.sps <<'_ATEOF'
* Re-read the new data and list it, to verify that it was written correctly.
FILE HANDLE OUTPUT/NAME='output.bin'/MODE=360 /RECFORM=FIXED /LRECL=32.
DATA LIST FIXED FILE=output NOTABLE/
	start 2-11 (ADATE)
	end 13-22 (ADATE)
	count 24-26.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:264: pspp -O format=csv data-reader-2.sps"
at_fn_check_prepare_trace "data-reader.at:264"
( $at_check_trace; pspp -O format=csv data-reader-2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:264"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_523
#AT_START_524
at_fn_group_banner 524 'data-reader.at:266' \
  "read and write files with MODE=360 /RECFORM=VARIABLE" "" 42
at_xfail=no
(
  printf "%s\n" "524. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/data-reader.at:266: i18n-test supports_encodings EBCDIC-US"
at_fn_check_prepare_trace "data-reader.at:266"
( $at_check_trace; i18n-test supports_encodings EBCDIC-US
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:266"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >input.txt <<'_ATEOF'
07-22-2007
10-06-2007
321
07-14-1789
08-26-1789
4
01-01-1972
12-31-1999
682
_ATEOF

   cat >make-binary.py <<'_ATEOF'

#! /usr/bin/python3

import struct
import sys

# 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.
def my_rand(modulus):
    global seed
    a = 16807
    m = 2147483647
    tmp = a * seed
    seed = tmp - m * (tmp // m)
    return seed % modulus

# Test the random number generator for reproducibility,
# then reset the seed
seed = 1
for i in range(10000):
    my_rand(1)
assert seed == 1043618065
seed = 1

# ASCII to EBCDIC translation table
ascii2ebcdic = (
    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
    0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
    0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x9a, 0x6d,
    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
    0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0x5f, 0x07,
    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xe1,
    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
    0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
    0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
    0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
    0x76, 0x77, 0x78, 0x80, 0x8a, 0x8b, 0x8c, 0x8d,
    0x8e, 0x8f, 0x90, 0x6a, 0x9b, 0x9c, 0x9d, 0x9e,
    0x9f, 0xa0, 0xaa, 0xab, 0xac, 0x4a, 0xae, 0xaf,
    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xa1, 0xbe, 0xbf,
    0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb,
    0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, 0xed,
    0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff)
assert len(ascii2ebcdic) == 256

def a2e(s):
    return bytearray((ascii2ebcdic[ord(c)] for c in s))

def dump_records(out, records):
    while records:
        n = min(my_rand(5) + 1, len(records))
        r = records[:n]
        records[:n] = []

        count = sum((len(rec) for rec in r))
        out.buffer.write(struct.pack(">H xx", count + 4))
        for rec in r:
            out.buffer.write(rec)

data = []
for line in open('input.txt', 'r'):
    data += [line.rstrip('\r\n')]

# MODE=BINARY
out = open('binary.bin', 'w')
for item in data:
    reclen = struct.pack("<I", len(item))
    out.buffer.write(reclen)
    out.buffer.write(bytearray([ord(c) for c in item]))
    out.buffer.write(reclen)
out.close()

# MODE=360 /RECFORM=FIXED /LRECL=32
out = open('fixed.bin', 'w')
lrecl = 32
for item in data:
    s = item[:lrecl]
    s += ' ' * (lrecl - len(s))
    assert len(s) == 32
    out.buffer.write(a2e(s))
out.close()

# MODE=360 /RECFORM=VARIABLE
out = open('variable.bin', 'w')
records = []
for item in data:
    records += [struct.pack('>H xx', len(item) + 4) + a2e(item)]
dump_records(out, records)
out.close()

# MODE=360 /RECFORM=SPANNED
out = open('spanned.bin', 'w')
records = []
for line in data:
    r = []
    while line:
        n = min(my_rand(5), len(line))
        r += [line[:n]]
        line = line[n:]
    for i, s in enumerate(r):
        scc = (0 if len(r) == 1
               else 1 if i == 0
               else 2 if i == len(r) - 1
               else 3)
        records += [struct.pack('>H B x', len(s) + 4, scc) + a2e(s)]
dump_records(out, records)
out.close()
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:266: \$PYTHON3 make-binary.py"
at_fn_check_prepare_dynamic "$PYTHON3 make-binary.py" "data-reader.at:266"
( $at_check_trace; $PYTHON3 make-binary.py
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:266"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >data-reader.sps <<'_ATEOF'
FILE HANDLE input/NAME='variable.bin'/MODE=360 /RECFORM=VARIABLE.
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'/MODE=360 /RECFORM=VARIABLE.
COMPUTE count=count + 1.
PRINT OUTFILE=output/start end count.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:266: pspp -O format=csv data-reader.sps"
at_fn_check_prepare_trace "data-reader.at:266"
( $at_check_trace; pspp -O format=csv data-reader.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:266"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:266: test -s output.bin"
at_fn_check_prepare_trace "data-reader.at:266"
( $at_check_trace; test -s output.bin
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:266"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >data-reader-2.sps <<'_ATEOF'
* Re-read the new data and list it, to verify that it was written correctly.
FILE HANDLE OUTPUT/NAME='output.bin'/MODE=360 /RECFORM=VARIABLE.
DATA LIST FIXED FILE=output NOTABLE/
	start 2-11 (ADATE)
	end 13-22 (ADATE)
	count 24-26.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:266: pspp -O format=csv data-reader-2.sps"
at_fn_check_prepare_trace "data-reader.at:266"
( $at_check_trace; pspp -O format=csv data-reader-2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:266"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_524
#AT_START_525
at_fn_group_banner 525 'data-reader.at:268' \
  "read and write files with MODE=360 /RECFORM=SPANNED" "" 42
at_xfail=no
(
  printf "%s\n" "525. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/data-reader.at:268: i18n-test supports_encodings EBCDIC-US"
at_fn_check_prepare_trace "data-reader.at:268"
( $at_check_trace; i18n-test supports_encodings EBCDIC-US
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >input.txt <<'_ATEOF'
07-22-2007
10-06-2007
321
07-14-1789
08-26-1789
4
01-01-1972
12-31-1999
682
_ATEOF

   cat >make-binary.py <<'_ATEOF'

#! /usr/bin/python3

import struct
import sys

# 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.
def my_rand(modulus):
    global seed
    a = 16807
    m = 2147483647
    tmp = a * seed
    seed = tmp - m * (tmp // m)
    return seed % modulus

# Test the random number generator for reproducibility,
# then reset the seed
seed = 1
for i in range(10000):
    my_rand(1)
assert seed == 1043618065
seed = 1

# ASCII to EBCDIC translation table
ascii2ebcdic = (
    0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
    0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
    0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
    0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
    0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
    0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
    0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
    0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
    0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
    0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x9a, 0x6d,
    0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
    0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
    0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
    0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0x5f, 0x07,
    0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
    0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
    0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xe1,
    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
    0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
    0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
    0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
    0x76, 0x77, 0x78, 0x80, 0x8a, 0x8b, 0x8c, 0x8d,
    0x8e, 0x8f, 0x90, 0x6a, 0x9b, 0x9c, 0x9d, 0x9e,
    0x9f, 0xa0, 0xaa, 0xab, 0xac, 0x4a, 0xae, 0xaf,
    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xa1, 0xbe, 0xbf,
    0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb,
    0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, 0xed,
    0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff)
assert len(ascii2ebcdic) == 256

def a2e(s):
    return bytearray((ascii2ebcdic[ord(c)] for c in s))

def dump_records(out, records):
    while records:
        n = min(my_rand(5) + 1, len(records))
        r = records[:n]
        records[:n] = []

        count = sum((len(rec) for rec in r))
        out.buffer.write(struct.pack(">H xx", count + 4))
        for rec in r:
            out.buffer.write(rec)

data = []
for line in open('input.txt', 'r'):
    data += [line.rstrip('\r\n')]

# MODE=BINARY
out = open('binary.bin', 'w')
for item in data:
    reclen = struct.pack("<I", len(item))
    out.buffer.write(reclen)
    out.buffer.write(bytearray([ord(c) for c in item]))
    out.buffer.write(reclen)
out.close()

# MODE=360 /RECFORM=FIXED /LRECL=32
out = open('fixed.bin', 'w')
lrecl = 32
for item in data:
    s = item[:lrecl]
    s += ' ' * (lrecl - len(s))
    assert len(s) == 32
    out.buffer.write(a2e(s))
out.close()

# MODE=360 /RECFORM=VARIABLE
out = open('variable.bin', 'w')
records = []
for item in data:
    records += [struct.pack('>H xx', len(item) + 4) + a2e(item)]
dump_records(out, records)
out.close()

# MODE=360 /RECFORM=SPANNED
out = open('spanned.bin', 'w')
records = []
for line in data:
    r = []
    while line:
        n = min(my_rand(5), len(line))
        r += [line[:n]]
        line = line[n:]
    for i, s in enumerate(r):
        scc = (0 if len(r) == 1
               else 1 if i == 0
               else 2 if i == len(r) - 1
               else 3)
        records += [struct.pack('>H B x', len(s) + 4, scc) + a2e(s)]
dump_records(out, records)
out.close()
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:268: \$PYTHON3 make-binary.py"
at_fn_check_prepare_dynamic "$PYTHON3 make-binary.py" "data-reader.at:268"
( $at_check_trace; $PYTHON3 make-binary.py
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >data-reader.sps <<'_ATEOF'
FILE HANDLE input/NAME='spanned.bin'/MODE=360 /RECFORM=SPANNED.
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'/MODE=360 /RECFORM=SPANNED.
COMPUTE count=count + 1.
PRINT OUTFILE=output/start end count.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:268: pspp -O format=csv data-reader.sps"
at_fn_check_prepare_trace "data-reader.at:268"
( $at_check_trace; pspp -O format=csv data-reader.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:268: test -s output.bin"
at_fn_check_prepare_trace "data-reader.at:268"
( $at_check_trace; test -s output.bin
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >data-reader-2.sps <<'_ATEOF'
* Re-read the new data and list it, to verify that it was written correctly.
FILE HANDLE OUTPUT/NAME='output.bin'/MODE=360 /RECFORM=SPANNED.
DATA LIST FIXED FILE=output NOTABLE/
	start 2-11 (ADATE)
	end 13-22 (ADATE)
	count 24-26.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/data-reader.at:268: pspp -O format=csv data-reader-2.sps"
at_fn_check_prepare_trace "data-reader.at:268"
( $at_check_trace; pspp -O format=csv data-reader-2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/data-reader.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_525
#AT_START_526
at_fn_group_banner 526 'dataset.at:19' \
  "DATASET COPY" "                                   " 43
at_xfail=no
(
  printf "%s\n" "526. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dataset.pspp <<'_ATEOF'
DATASET NAME initial.
DATA LIST NOTABLE /x 1.
COMPUTE x = x + 1.
DATASET COPY clone.
BEGIN DATA.
1
2
3
4
5
END DATA.

NEW FILE.
DATA LIST NOTABLE /y 1.
BEGIN DATA.
6
7
8
END DATA.
LIST.
DATASET DISPLAY.

DATASET ACTIVATE clone.
DATASET DISPLAY.
LIST.

DATASET ACTIVATE initial.
DATASET DISPLAY.
LIST.

COMPUTE z=y.
DATASET COPY clone.

DATASET ACTIVATE clone.
LIST.
DATASET COPY clone.
DATASET DISPLAY.

DATASET CLOSE initial.
DATASET DISPLAY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/dataset.at:62: pspp -O format=csv dataset.pspp"
at_fn_check_prepare_trace "dataset.at:62"
( $at_check_trace; pspp -O format=csv dataset.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
y
6
7
8

Table: Datasets
clone
initial (active dataset)

Table: Datasets
clone (active dataset)
initial

Table: Data List
x
2
3
4
5
6

Table: Datasets
clone
initial (active dataset)

Table: Data List
y
6
7
8

Table: Data List
y,z
6,6.00
7,7.00
8,8.00

Table: Datasets
unnamed dataset (active dataset)
initial

Table: Datasets
unnamed dataset (active dataset)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/dataset.at:62"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_526
#AT_START_527
at_fn_group_banner 527 'dataset.at:110' \
  "DATASET DECLARE" "                                " 43
at_xfail=no
(
  printf "%s\n" "527. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dataset.pspp <<'_ATEOF'
DATASET DECLARE second.
DATASET DISPLAY.
DATA LIST NOTABLE/x 1.
BEGIN DATA.
1
END DATA.
LIST.
DATASET ACTIVATE second.
DATASET DISPLAY.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/dataset.at:123: pspp -O format=csv dataset.pspp"
at_fn_check_prepare_trace "dataset.at:123"
( $at_check_trace; pspp -O format=csv dataset.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Datasets
unnamed dataset (active dataset)
second

Table: Data List
x
1

Table: Datasets
second (active dataset)

\"dataset.pspp:10.1-10.4: error: LIST: LIST is allowed only after the active dataset has been defined.
   10 | LIST.
      | ^~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/dataset.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_527
#AT_START_528
at_fn_group_banner 528 'dataset.at:141' \
  "DATASET NAME deletes duplicate name" "            " 43
at_xfail=no
(
  printf "%s\n" "528. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dataset.pspp <<'_ATEOF'
DATASET NAME a.
DATASET DECLARE b.
DATASET DECLARE c.
DATASET DISPLAY.

DATASET NAME b.
DATASET NAME c.
DATASET DISPLAY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/dataset.at:152: pspp -O format=csv dataset.pspp"
at_fn_check_prepare_trace "dataset.at:152"
( $at_check_trace; pspp -O format=csv dataset.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Datasets
a (active dataset)
b
c

Table: Datasets
c (active dataset)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/dataset.at:152"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_528
#AT_START_529
at_fn_group_banner 529 'dataset.at:163' \
  "DATASET ACTIVATE deletes unnamed dataset" "       " 43
at_xfail=no
(
  printf "%s\n" "529. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dataset.pspp <<'_ATEOF'
DATASET DECLARE x.
DATASET DISPLAY.

DATASET ACTIVATE x.
DATASET DISPLAY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/dataset.at:171: pspp -O format=csv dataset.pspp"
at_fn_check_prepare_trace "dataset.at:171"
( $at_check_trace; pspp -O format=csv dataset.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Datasets
unnamed dataset (active dataset)
x

Table: Datasets
x (active dataset)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/dataset.at:171"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_529
#AT_START_530
at_fn_group_banner 530 'dataset.at:181' \
  "DATASET ACTIVATE executes pending transformations" "" 43
at_xfail=no
(
  printf "%s\n" "530. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dataset.pspp <<'_ATEOF'
DATASET NAME one.
DATASET DECLARE another.
DATASET DISPLAY.

DATA LIST NOTABLE /x 1.
PRINT/x.
DATASET ACTIVATE another.
BEGIN DATA.
1
2
3
4
5
END DATA.

LIST.

DATASET ACTIVATE one.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/dataset.at:203: pspp -O format=csv dataset.pspp"
at_fn_check_prepare_trace "dataset.at:203"
( $at_check_trace; pspp -O format=csv dataset.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Datasets
another
one (active dataset)

1 

2 

3 

4 

5 

\"dataset.pspp:16.1-16.4: error: LIST: LIST is allowed only after the active dataset has been defined.
   16 | LIST.
      | ^~~~\"

Table: Data List
x
1
2
3
4
5
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/dataset.at:203"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_530
#AT_START_531
at_fn_group_banner 531 'dataset.at:232' \
  "DATASET CLOSE" "                                  " 43
at_xfail=no
(
  printf "%s\n" "531. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dataset.pspp <<'_ATEOF'
DATASET DISPLAY
DATASET CLOSE *.
DATASET DISPLAY.

DATASET NAME this.
DATASET DISPLAY.
DATASET CLOSE this.
DATASET DISPLAY.

DATASET NAME this.
DATASET DISPLAY.
DATASET CLOSE *.
DATASET DISPLAY.

DATASET DECLARE that.
DATASET DECLARE theother.
DATASET DECLARE yetanother.
DATASET DISPLAY.
DATASET CLOSE ALL.
DATASET DISPLAY.

DATASET NAME this.
DATASET DECLARE that.
DATASET DECLARE theother.
DATASET DECLARE yetanother.
DATASET DISPLAY.
DATASET CLOSE ALL.
DATASET DISPLAY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/dataset.at:263: pspp -O format=csv dataset.pspp"
at_fn_check_prepare_trace "dataset.at:263"
( $at_check_trace; pspp -O format=csv dataset.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Datasets
unnamed dataset (active dataset)

Table: Datasets
unnamed dataset (active dataset)

Table: Datasets
this (active dataset)

Table: Datasets
unnamed dataset (active dataset)

Table: Datasets
this (active dataset)

Table: Datasets
unnamed dataset (active dataset)

Table: Datasets
unnamed dataset (active dataset)
that
theother
yetanother

Table: Datasets
unnamed dataset (active dataset)

Table: Datasets
that
theother
this (active dataset)
yetanother

Table: Datasets
unnamed dataset (active dataset)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/dataset.at:263"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_531
#AT_START_532
at_fn_group_banner 532 'dataset.at:306' \
  "DATASET heap overflow" "                          " 43
at_xfail=no
(
  printf "%s\n" "532. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dataset.pspp <<'_ATEOF'
DATASET DECLARE initial.
DATA LIST /x 1.

DATASET COPY subsq.

DATA LIST /y 2-4.
BEGIN DATA.
7
END DATA.

DATASET ACTIVATE subsq.

LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/dataset.at:323: pspp -O format=csv dataset.pspp"
at_fn_check_prepare_trace "dataset.at:323"
( $at_check_trace; pspp -O format=csv dataset.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
x,1,1-1,F1.0

Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
y,1,2-4,F3.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/dataset.at:323"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_532
#AT_START_533
at_fn_group_banner 533 'dataset.at:335' \
  "DATASET syntax errors" "                          " 43
at_xfail=no
(
  printf "%s\n" "533. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >dataset.sps <<'_ATEOF'
DATASET NAME **.
DATASET NAME xyzzy WINDOW **.

DATASET NAME xyzzy.
DATASET ACTIVATE **.
DATASET ACTIVATE xyzzy WINDOW **.

DATASET COPY **.
DATASET COPY quux WINDOW **.

DATASET DECLARE **.
DATASET DECLARE foo WINDOW **.

DATASET CLOSE **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/dataset.at:352: pspp dataset.sps"
at_fn_check_prepare_trace "dataset.at:352"
( $at_check_trace; pspp dataset.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "dataset.sps:1.14-1.15: error: DATASET NAME: Syntax error expecting identifier.
    1 | DATASET NAME **.
      |              ^~

dataset.sps:2.27-2.28: error: DATASET NAME: Syntax error expecting ASIS or
FRONT.
    2 | DATASET NAME xyzzy WINDOW **.
      |                           ^~

dataset.sps:5.18-5.19: error: DATASET ACTIVATE: Syntax error expecting
identifier.
    5 | DATASET ACTIVATE **.
      |                  ^~

dataset.sps:6.31-6.32: error: DATASET ACTIVATE: Syntax error expecting ASIS or
FRONT.
    6 | DATASET ACTIVATE xyzzy WINDOW **.
      |                               ^~

dataset.sps:8.14-8.15: error: DATASET COPY: Syntax error expecting identifier.
    8 | DATASET COPY **.
      |              ^~

dataset.sps:9.26-9.27: error: DATASET COPY: Syntax error expecting MINIMIZED,
FRONT, or HIDDEN.
    9 | DATASET COPY quux WINDOW **.
      |                          ^~

dataset.sps:11.17-11.18: error: DATASET DECLARE: Syntax error expecting
identifier.
   11 | DATASET DECLARE **.
      |                 ^~

dataset.sps:12.28-12.29: error: DATASET DECLARE: Syntax error expecting
MINIMIZED, FRONT, or HIDDEN.
   12 | DATASET DECLARE foo WINDOW **.
      |                            ^~

dataset.sps:14.15-14.16: error: DATASET CLOSE: Syntax error expecting
identifier.
   14 | DATASET CLOSE **.
      |               ^~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/dataset.at:352"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_533
#AT_START_534
at_fn_group_banner 534 'date.at:19' \
  "USE ALL" "                                        " 44
at_xfail=no
(
  printf "%s\n" "534. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >use.sps <<'_ATEOF'
data list notable /X 1-2.
begin data.
1
2
3
4
5
6
7
8
9
10
end data.
use all.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/date.at:37: pspp -o pspp.csv use.sps"
at_fn_check_prepare_trace "date.at:37"
( $at_check_trace; pspp -o pspp.csv use.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/date.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/date.at:38: cat pspp.csv"
at_fn_check_prepare_trace "date.at:38"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X
1
2
3
4
5
6
7
8
9
10
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/date.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_534
#AT_START_535
at_fn_group_banner 535 'define.at:19' \
  "simple macro expansion" "                         " 45
at_xfail=no
(
  printf "%s\n" "535. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !macro()
a b c d
e f g h.
i j k l
1,2,3,4.
5+6+7.
m(n,o).
"a" "b" "c" 'a' 'b' 'c'.
"x "" y".
!ENDDEFINE.
DEBUG EXPAND.
!macro
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:34: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:34"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a b c d e f g h.
i j k l 1, 2, 3, 4.
5 + 6 + 7.
m(n, o).
\"a\" \"b\" \"c\" 'a' 'b' 'c'.
\"x \"\" y\".
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_535
#AT_START_536
at_fn_group_banner 536 'define.at:44' \
  "redefining a macro" "                             " 45
at_xfail=no
(
  printf "%s\n" "536. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !macro() 0 !ENDDEFINE.
DEFINE !macro() 1 !ENDDEFINE.
DEBUG EXPAND.
!macro.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:51: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:51"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_536
#AT_START_537
at_fn_group_banner 537 'define.at:56' \
  "macro expansion - one !TOKENS(1) positional argument" "" 45
at_xfail=no
(
  printf "%s\n" "537. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !t1(!positional=!tokens(1)) t1 (!1) !ENDDEFINE.
DEBUG EXPAND.
!t1 a.
!t1 b.
!t1 a b.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:66: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:66"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "t1(a)

t1(b)

t1(a)

note: unexpanded token \"b\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:66"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_537
#AT_START_538
at_fn_group_banner 538 'define.at:77' \
  "macro expansion with positional arguments" "      " 45
at_xfail=no
(
  printf "%s\n" "538. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !title(!positional !tokens(1)) !1 !ENDDEFINE.
DEFINE !t1(!positional !tokens(1)) t1 (!1) !ENDDEFINE.
DEFINE !t2(!positional !tokens(2)) t2 (!1) !ENDDEFINE.

DEFINE !ce(!positional=!charend('/')) ce (!1) !ENDDEFINE.
DEFINE !ce2(!positional=!charend('(')
           /!positional !charend(')'))
ce2 (!1, !2)
!ENDDEFINE.

DEFINE !e(!positional !enclose('{','}')) e (!1) !ENDDEFINE.

DEFINE !cmd(!positional !cmdend) cmd(!1) !ENDDEFINE.
DEFINE !cmd2(!positional !cmdend
            /!positional !tokens(1))
cmd2(!1, !2)
!ENDDEFINE.

DEFINE !p(!positional !tokens(1)
         /!positional !tokens(1)
	 /!positional !tokens(1))
p(!1, !2, !3)(!*)
!ENDDEFINE.

DEBUG EXPAND.
!title "!TOKENS(1) argument."
!t1 a.
!t1 b.
!t1 a b.

!title "!TOKENS(2) argument."
!t2 a b.
!t2 b c d.

!title "!CHAREND argument."
!ce/.
!ce x/.
!ce x y/.
!ce x y z/.

!title "Two !CHAREND arguments."
!ce2 x(y).
!ce2 1 2 3 4().

!title "!ENCLOSE argument."
!e {}.
!e {a}.
!e {a b}.

!title "!CMDEND argument."
!cmd 1 2 3 4.
!cmd2 5 6.
7.

!title "Three !TOKENS(1) arguments."
!p a b c.
!p 1 -2 -3.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:137: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:137"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"!TOKENS(1) argument.\"

t1(a)

t1(b)

t1(a)

note: unexpanded token \"b\"

\"!TOKENS(2) argument.\"

t2(a b)

t2(b c)

note: unexpanded token \"d\"

\"!CHAREND argument.\"

ce( )

ce(x)

ce(x y)

ce(x y z)

\"Two !CHAREND arguments.\"

ce2(x, y)

ce2(1 2 3 4, )

\"!ENCLOSE argument.\"

e( )

e(a)

e(a b)

\"!CMDEND argument.\"

cmd(1 2 3 4)

cmd2(5 6, )

note: unexpanded token \"7\"

\"Three !TOKENS(1) arguments.\"

p(a, b, c) (a b c)

p(1, -2, -3) (1 -2 -3)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:137"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_538
#AT_START_539
at_fn_group_banner 539 'define.at:196' \
  "macro call missing positional !TOKENS arguments" "" 45
at_xfail=no
(
  printf "%s\n" "539. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !p(!positional !tokens(1) !default(x)
         /!positional !tokens(1) !default(y)
	 /!positional !tokens(1) !default(z))
(!1, !2, !3)
!ENDDEFINE.
DEBUG EXPAND.
!p a b c.
!p a b.
!p a.
!p.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:210: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:210"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(a, b, c)

(a, b, z)

(a, y, z)

(x, y, z)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:210"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_539
#AT_START_540
at_fn_group_banner 540 'define.at:221' \
  "macro call incomplete positional !TOKENS arguments" "" 45
at_xfail=no
(
  printf "%s\n" "540. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !p(!positional !tokens(2) !default(x)
         /!positional !tokens(2) !default(y)
	 /!positional !tokens(2) !default(z))
(!1, !2, !3)
!ENDDEFINE.
DEBUG EXPAND.
!p a1 a2 b1 b2 c1 c2.
!p a1 a2 b1 b2 c1.
!p a1 a2 b1 b2.
!p a1 a2 b1.
!p a1 a2.
!p a1.
!p.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:238: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:238"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(a1 a2, b1 b2, c1 c2)

define.sps:8.18: error: DEBUG EXPAND: Reached end of command expecting 1 more
token in argument !3 to macro !p.
    8 | !p a1 a2 b1 b2 c1.
      |                  ^

(a1 a2, b1 b2, c1)

(a1 a2, b1 b2, z)

define.sps:10.12: error: DEBUG EXPAND: Reached end of command expecting 1 more
token in argument !2 to macro !p.
   10 | !p a1 a2 b1.
      |            ^

(a1 a2, b1, z)

(a1 a2, y, z)

define.sps:12.6: error: DEBUG EXPAND: Reached end of command expecting 1 more
token in argument !1 to macro !p.
   12 | !p a1.
      |      ^

(a1, y, z)

(x, y, z)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:238"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_540
#AT_START_541
at_fn_group_banner 541 'define.at:270' \
  "macro call empty positional !CHAREND arguments" " " 45
at_xfail=no
(
  printf "%s\n" "541. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !p(!positional !charend(',') !default(x)
         /!positional !charend(';') !default(y)
	 /!positional !charend(':') !default(z))
(!1, !2, !3)
!ENDDEFINE.
DEBUG EXPAND.
!p a,b;c:.
!p a,b;:.
!p a,;c:.
!p a,;:.
!p,b;c:.
!p,b;:.
!p,;c:.
!p,;:.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:288: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:288"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(a, b, c)

(a, b, )

(a, , c)

(a, , )

(, b, c)

(, b, )

(, , c)

(, , )
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:288"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_541
#AT_START_542
at_fn_group_banner 542 'define.at:307' \
  "macro call missing positional !CHAREND arguments" "" 45
at_xfail=no
(
  printf "%s\n" "542. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !p(!positional !charend(',') !default(x)
         /!positional !charend(';') !default(y)
	 /!positional !charend(':') !default(z))
(!1, !2, !3)
!ENDDEFINE.
DEBUG EXPAND.
!p a,b;c:.
!p a,b;.
!p a,;.
!p ,b;.
!p ,;.

!p a,.
!p ,.

!p.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:326: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:326"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(a, b, c)

(a, b, z)

(a, , z)

(, b, z)

(, , z)

(a, y, z)

(, y, z)

(x, y, z)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:326"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_542
#AT_START_543
at_fn_group_banner 543 'define.at:345' \
  "macro call incomplete positional !CHAREND arguments" "" 45
at_xfail=no
(
  printf "%s\n" "543. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !p(!positional !charend(',') !default(x)
         /!positional !charend(';') !default(y)
	 /!positional !charend(':') !default(z))
(!1, !2, !3)
!ENDDEFINE.
DEBUG EXPAND.
!p a,b;c:.
!p a,b;c.
!p a,b;.
!p a,b.
!p a,.
!p a.
!p.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:362: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:362"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(a, b, c)

define.sps:8.9: error: DEBUG EXPAND: Reached end of command expecting \":\" in
argument !3 to macro !p.
    8 | !p a,b;c.
      |         ^

(a, b, c)

(a, b, z)

define.sps:10.7: error: DEBUG EXPAND: Reached end of command expecting \";\" in
argument !2 to macro !p.
   10 | !p a,b.
      |       ^

(a, b, z)

(a, y, z)

define.sps:12.5: error: DEBUG EXPAND: Reached end of command expecting \",\" in
argument !1 to macro !p.
   12 | !p a.
      |     ^

(a, y, z)

(x, y, z)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:362"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_543
#AT_START_544
at_fn_group_banner 544 'define.at:394' \
  "macro call missing positional !ENCLOSE arguments" "" 45
at_xfail=no
(
  printf "%s\n" "544. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !p(!positional !enclose('(',')') !default(x)
         /!positional !enclose('<','>') !default(y)
	 /!positional !enclose('{','}') !default(z))
(!1, !2, !3)
!ENDDEFINE.
DEBUG EXPAND.
!p (a)<b>{c}.
!p (a)<b>.
!p (a).
!p.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:408: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:408"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(a, b, c)

(a, b, z)

(a, y, z)

(x, y, z)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:408"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_544
#AT_START_545
at_fn_group_banner 545 'define.at:419' \
  "macro call incomplete positional !ENCLOSE arguments" "" 45
at_xfail=no
(
  printf "%s\n" "545. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !p(!positional !enclose('(',')') !default(x)
         /!positional !enclose('<','>') !default(y)
	 /!positional !enclose('{','}') !default(z))
(!1, !2, !3)
!ENDDEFINE.
DEBUG EXPAND.
!p (a)<b>{c}.
!p (a)<b>{c.
!p (a)<b>{.
!p (a)<b>.
!p (a)<b.
!p (a)<.
!p (a).
!p (a.
!p (.
!p.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:439: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:439"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(a, b, c)

define.sps:8.12: error: DEBUG EXPAND: Reached end of command expecting \"}\" in
argument !3 to macro !p.
    8 | !p (a)<b>{c.
      |            ^

(a, b, c)

define.sps:9.11: error: DEBUG EXPAND: Reached end of command expecting \"}\" in
argument !3 to macro !p.
    9 | !p (a)<b>{.
      |           ^

(a, b, )

(a, b, z)

define.sps:11.9: error: DEBUG EXPAND: Reached end of command expecting \">\" in
argument !2 to macro !p.
   11 | !p (a)<b.
      |         ^

(a, b, z)

define.sps:12.8: error: DEBUG EXPAND: Reached end of command expecting \">\" in
argument !2 to macro !p.
   12 | !p (a)<.
      |        ^

(a, , z)

(a, y, z)

define.sps:14.6: error: DEBUG EXPAND: Reached end of command expecting \")\" in
argument !1 to macro !p.
   14 | !p (a.
      |      ^

(a, y, z)

define.sps:15.5: error: DEBUG EXPAND: Reached end of command expecting \")\" in
argument !1 to macro !p.
   15 | !p (.
      |     ^

(, y, z)

(x, y, z)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:439"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_545
#AT_START_546
at_fn_group_banner 546 'define.at:492' \
  "keyword macro argument name with ! prefix" "      " 45
at_xfail=no
(
  printf "%s\n" "546. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !macro(!x !TOKENS(1).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:496: pspp -O format=csv define.sps"
at_fn_check_prepare_trace "define.at:496"
( $at_check_trace; pspp -O format=csv define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"define.sps:1.15-1.16: error: DEFINE: Keyword macro parameter must be named in definition without \"\"!\"\" prefix.
    1 | DEFINE !macro(!x !TOKENS(1).
      |               ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:496"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_546
#AT_START_547
at_fn_group_banner 547 'define.at:503' \
  "reserved macro keyword argument name" "           " 45
at_xfail=no
(
  printf "%s\n" "547. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !macro(if=!TOKENS(1).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:507: pspp -O format=csv define.sps"
at_fn_check_prepare_trace "define.at:507"
( $at_check_trace; pspp -O format=csv define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"define.sps:1.15-1.16: error: DEFINE: Cannot use macro keyword \"\"if\"\" as an argument name.
    1 | DEFINE !macro(if=!TOKENS(1).
      |               ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:507"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_547
#AT_START_548
at_fn_group_banner 548 'define.at:514' \
  "macro expansion - one !TOKENS(1) keyword argument" "" 45
at_xfail=no
(
  printf "%s\n" "548. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !k(arg1 = !TOKENS(1)) k(!arg1) !ENDDEFINE.
DEBUG EXPAND.
!k arg1=x.
!k arg1=x y.
!k.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:524: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:524"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "k(x)

k(x)

note: unexpanded token \"y\"

k( )
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:524"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_548
#AT_START_549
at_fn_group_banner 549 'define.at:535' \
  "macro expansion - one !TOKENS(1) keyword argument - negative" "" 45
at_xfail=no
(
  printf "%s\n" "549. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !k(arg1 !TOKENS(1)) k(!arg1) !ENDDEFINE.
DEBUG EXPAND.
!k arg1.
!k arg1=.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:544: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:544"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:3.8: error: DEBUG EXPAND: Found \`.' while expecting \`=' reading
argument !arg1 to macro !k.
    3 | !k arg1.
      |        ^

k( )

define.sps:4.9: error: DEBUG EXPAND: Reached end of command expecting 1 more
token in argument !arg1 to macro !k.
    4 | !k arg1=.
      |         ^

k( )
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:544"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_549
#AT_START_550
at_fn_group_banner 550 'define.at:561' \
  "macro expansion - !CHAREND keyword arguments" "   " 45
at_xfail=no
(
  printf "%s\n" "550. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !k(arg1 = !CHAREND('/')
         /arg2 = !CHAREND('/'))
k(!arg1, !arg2)
!ENDDEFINE.
DEBUG EXPAND.
!k arg1=x/ arg2=y/.
!k arg1=x/.
!k arg2=y/.
!k.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:575: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:575"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "k(x, y)

k(x, )

k(, y)

k(, )
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:575"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_550
#AT_START_551
at_fn_group_banner 551 'define.at:586' \
  "macro expansion - !CHAREND keyword arguments - negative" "" 45
at_xfail=no
(
  printf "%s\n" "551. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !k(arg1 = !CHAREND('/')
         /arg2 = !CHAREND('/'))
k(!arg1, !arg2)
!ENDDEFINE.
DEBUG EXPAND.
!k arg1.
!k arg1=.
!k arg1=x.
!k arg1=x/ arg2=y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:600: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:600"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:6.8: error: DEBUG EXPAND: Found \`.' while expecting \`=' reading
argument !arg1 to macro !k.
    6 | !k arg1.
      |        ^

k(, )

define.sps:7.9: error: DEBUG EXPAND: Reached end of command expecting \"/\" in
argument !arg1 to macro !k.
    7 | !k arg1=.
      |         ^

k(, )

define.sps:8.10: error: DEBUG EXPAND: Reached end of command expecting \"/\" in
argument !arg1 to macro !k.
    8 | !k arg1=x.
      |          ^

k(x, )

define.sps:9.18: error: DEBUG EXPAND: Reached end of command expecting \"/\" in
argument !arg2 to macro !k.
    9 | !k arg1=x/ arg2=y.
      |                  ^

k(x, y)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:600"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_551
#AT_START_552
at_fn_group_banner 552 'define.at:631' \
  "macro expansion - !ENCLOSE keyword arguments" "   " 45
at_xfail=no
(
  printf "%s\n" "552. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !k(arg1 = !ENCLOSE('(',')')
         /arg2 = !ENCLOSE('{','}'))
k(!arg1, !arg2)
!ENDDEFINE.
DEBUG EXPAND.
!k arg1=(x) arg2={y}.
!k arg1=(x).
!k arg2={y}.
!k.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:645: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:645"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "k(x, y)

k(x, )

k(, y)

k(, )
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:645"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_552
#AT_START_553
at_fn_group_banner 553 'define.at:656' \
  "macro expansion - !ENCLOSE keyword arguments - negative" "" 45
at_xfail=no
(
  printf "%s\n" "553. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !k(arg1 = !ENCLOSE('(',')')
         /arg2 = !ENCLOSE('{','}'))
k(!arg1, !arg2)
!ENDDEFINE.
DEBUG EXPAND.
!k arg1.
!k arg1=.
!k arg1=x.
!k arg1=(x.
!k arg1=(x) arg2.
!k arg1=(x) arg2=.
!k arg1=(x) arg2=y.
!k arg1=(x) arg2=(y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:674: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:674"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:6.8: error: DEBUG EXPAND: Found \`.' while expecting \`=' reading
argument !arg1 to macro !k.
    6 | !k arg1.
      |        ^

k(, )

define.sps:7.9: error: DEBUG EXPAND: Found \`.' while expecting \`(' reading
argument !arg1 to macro !k.
    7 | !k arg1=.
      |         ^

k(, )

define.sps:8.9: error: DEBUG EXPAND: Found \`x' while expecting \`(' reading
argument !arg1 to macro !k.
    8 | !k arg1=x.
      |         ^

k(, )

note: unexpanded token \"x\"

define.sps:9.11: error: DEBUG EXPAND: Reached end of command expecting \")\" in
argument !arg1 to macro !k.
    9 | !k arg1=(x.
      |           ^

k(x, )

define.sps:10.17: error: DEBUG EXPAND: Found \`.' while expecting \`=' reading
argument !arg2 to macro !k.
   10 | !k arg1=(x) arg2.
      |                 ^

k(x, )

define.sps:11.18: error: DEBUG EXPAND: Found \`.' while expecting \`{' reading
argument !arg2 to macro !k.
   11 | !k arg1=(x) arg2=.
      |                  ^

k(x, )

define.sps:12.18: error: DEBUG EXPAND: Found \`y' while expecting \`{' reading
argument !arg2 to macro !k.
   12 | !k arg1=(x) arg2=y.
      |                  ^

k(x, )

note: unexpanded token \"y\"

define.sps:13.18: error: DEBUG EXPAND: Found \`(' while expecting \`{' reading
argument !arg2 to macro !k.
   13 | !k arg1=(x) arg2=(y.
      |                  ^

k(x, )

note: unexpanded token \"(\"

note: unexpanded token \"y\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:674"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_553
#AT_START_554
at_fn_group_banner 554 'define.at:742' \
  "macro expansion - !BLANKS" "                      " 45
at_xfail=no
(
  printf "%s\n" "554. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !b()
!BLANKS(0).
!QUOTE(!BLANKS(0)).
!BLANKS(1).
!QUOTE(!BLANKS(1)).
!BLANKS(2).
!QUOTE(!BLANKS(2)).
!BLANKS(5).
!QUOTE(!BLANKS(5)).
!ENDDEFINE.
DEBUG EXPAND.
!b.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:759: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:759"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" ".
''.
.
' '.
.
'  '.
.
'     '.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:759"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_554
#AT_START_555
at_fn_group_banner 555 'define.at:772' \
  "macro expansion - !CONCAT" "                      " 45
at_xfail=no
(
  printf "%s\n" "555. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !c()
!CONCAT(x, y).
!CONCAT('x', 'y').
!CONCAT(12, 34).
!CONCAT(!NULL, 123).
!CONCAT(x, 0).
!CONCAT(x, 0, y).
!CONCAT(0, x).
!CONCAT(0, x, y).
!ENDDEFINE.
DEBUG EXPAND.
!c
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:789: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:789"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xy.
xy.
1234.
123.
x0.
x0y.
0 x.
0 xy.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:789"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_555
#AT_START_556
at_fn_group_banner 556 'define.at:802' \
  "macro expansion - !EVAL" "                        " 45
at_xfail=no
(
  printf "%s\n" "556. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !vars() a b c !ENDDEFINE.

DEFINE !e()
!vars.
!QUOTE(!vars).
!EVAL(!vars).
!QUOTE(!EVAL(!vars)).
!ENDDEFINE

DEFINE !e2(!positional !enclose('(',')'))
!1.
!QUOTE(!1).
!EVAL(!1).
!QUOTE(!EVAL(!1)).
!ENDDEFINE.
DEBUG EXPAND.
!e.
!e2(!vars).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:825: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:825"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a b c.
'!vars'.
a b c.
'a b c'.

a b c.
'!vars'.
a b c.
'a b c'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:825"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_556
#AT_START_557
at_fn_group_banner 557 'define.at:839' \
  "macro expansion - !HEAD" "                        " 45
at_xfail=no
(
  printf "%s\n" "557. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !h()
!HEAD('a b c').
!HEAD('a').
!HEAD(!NULL).
!HEAD('').
!ENDDEFINE.
DEBUG EXPAND.
!h.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:852: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:852"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a.
a.
.
.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:852"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_557
#AT_START_558
at_fn_group_banner 558 'define.at:861' \
  "macro expansion - !TAIL" "                        " 45
at_xfail=no
(
  printf "%s\n" "558. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !t()
!TAIL('a b c').
!TAIL('a').
!TAIL(!NULL).
!TAIL('').
!ENDDEFINE.
DEBUG EXPAND.
!t.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:874: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:874"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "b c.
.
.
.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:874"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_558
#AT_START_559
at_fn_group_banner 559 'define.at:883' \
  "macro expansion - !INDEX" "                       " 45
at_xfail=no
(
  printf "%s\n" "559. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !i()
!INDEX(banana, an).
!INDEX(banana, nan).
!INDEX(banana, apple).
!INDEX("banana", nan).
!INDEX("banana", "nan").
!INDEX(!UNQUOTE("banana"), !UNQUOTE("nan")).
!ENDDEFINE.
DEBUG EXPAND.
!i.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:898: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:898"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "2.
3.
0.
4.
0.
3.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:898"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_559
#AT_START_560
at_fn_group_banner 560 'define.at:909' \
  "macro expansion - !LENGTH" "                      " 45
at_xfail=no
(
  printf "%s\n" "560. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !l()
!LENGTH(123).
!LENGTH(123.00).
!LENGTH( 123 ).
!LENGTH("123").
!LENGTH(xyzzy).
!LENGTH("xyzzy").
!LENGTH("xy""zzy").
!LENGTH(!UNQUOTE("xyzzy")).
!LENGTH(!UNQUOTE("xy""zzy")).
!LENGTH(!NULL).
!ENDDEFINE.
DEFINE !la(!positional !enclose('(',')'))
!LENGTH(!1).
!ENDDEFINE.
DEBUG EXPAND.
!l.
!la(a b c).
!la().
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:933: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:933"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "3.
6.
3.
5.
5.
7.
9.
5.
6.
0.

5.

0.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:933"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_560
#AT_START_561
at_fn_group_banner 561 'define.at:952' \
  "macro expansion - !NULL" "                        " 45
at_xfail=no
(
  printf "%s\n" "561. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !n()
!NULL.
!QUOTE(!NULL).
!ENDDEFINE.
DEBUG EXPAND.
!n.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:963: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:963"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" ".
''.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:963"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_561
#AT_START_562
at_fn_group_banner 562 'define.at:970' \
  "macro expansion - !QUOTE and !UNQUOTE" "          " 45
at_xfail=no
(
  printf "%s\n" "562. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !q(!POS !CMDEND)
!QUOTE(123.0).
!QUOTE( 123 ).
!QUOTE('a b c').
!QUOTE("a b c").
!QUOTE(!1).

!UNQUOTE(123.0).
!UNQUOTE( 123 ).
!UNQUOTE('a b c').
!UNQUOTE("a b c").
!UNQUOTE(!1).

!QUOTE(!UNQUOTE(123.0)).
!QUOTE(!UNQUOTE( 123 )).
!QUOTE(!UNQUOTE('a b c')).
!QUOTE(!UNQUOTE("a b c")).
!QUOTE(!UNQUOTE(!1)).
!ENDDEFINE.
DEBUG EXPAND.
!q a 'b' c.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:996: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:996"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "'123.0'.
'123'.
'a b c'.
\"a b c\".
'a ''b'' c'.

123.0.
123.
a b c.
a b c.
a 'b' c.

'123.0'.
'123'.
'a b c'.
'a b c'.
'a ''b'' c'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:996"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_562
#AT_START_563
at_fn_group_banner 563 'define.at:1018' \
  "macro expansion - !SUBSTR" "                      " 45
at_xfail=no
(
  printf "%s\n" "563. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !s()
!SUBSTR(banana, 3).
!SUBSTR(banana, 3, 3).
!SUBSTR("banana", 1, 3).
!SUBSTR(!UNQUOTE("banana"), 3).
!SUBSTR("banana", 3, 3).
!SUBSTR(banana, 3, 0).
!SUBSTR(banana, 3, 10).
!SUBSTR(banana, 10, 3).
!ENDDEFINE.
DEBUG EXPAND.
!s.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:1035: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1035"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:1-10: At \`\"ba' in the expansion of \`!s',
define.sps:12.1-12.2: error: DEBUG EXPAND: Unterminated string constant.
   12 | !s.
      | ^~

nana.
nan.
.
nana.
ana.
.
nana.
.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1035"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_563
#AT_START_564
at_fn_group_banner 564 'define.at:1054' \
  "macro expansion - !UPCASE" "                      " 45
at_xfail=no
(
  printf "%s\n" "564. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !u()
!UPCASE(freckle).
!UPCASE('freckle').
!UPCASE('a b c').
!UPCASE('A B C').
!ENDDEFINE.
DEBUG EXPAND.
!u.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:1067: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1067"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "FRECKLE.
FRECKLE.
A B C.
A B C.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1067"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_564
#AT_START_565
at_fn_group_banner 565 'define.at:1077' \
  "macro expansion - !*" "                           " 45
at_xfail=no
(
  printf "%s\n" "565. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !m(!POSITIONAL !TOKENS(1)
         /!POSITIONAL !TOKENS(1))
!*/
!LENGTH(!*)/
!SUBSTR(!*, 3)/
!QUOTE(!*).
!ENDDEFINE.
DEBUG EXPAND.
!m 123 b
!m 2 3
!m '' 'b'.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/define.at:1092: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1092"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "123 b / 5 / 3 b / '123 b'.

2 3 / 3 / 3 / '2 3'.

'' 'b' / 6 / 'b' / ''''' ''b'''.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1092"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_565
#AT_START_566
at_fn_group_banner 566 'define.at:1101' \
  "macro maximum nesting level (MNEST)" "            " 45
at_xfail=no
(
  printf "%s\n" "566. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !macro()
!macro
!ENDDEFINE.
!macro.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1109: pspp -O format=csv define.sps"
at_fn_check_prepare_trace "define.at:1109"
( $at_check_trace; pspp -O format=csv define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"define.sps:1-3: In the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:1-3: inside the expansion of \`!macro',
define.sps:4.1-4.6: error: Maximum nesting level 50 exceeded.  (Use SET MNEST to change the limit.)
    4 | !macro.
      | ^~~~~~\"

\"define.sps:4.1-4.6: error: In syntax expanded from \`!macro': Syntax error expecting command name.
    4 | !macro.
      | ^~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1109"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_566
#AT_START_567
at_fn_group_banner 567 'define.at:1171' \
  "macro !IF condition" "                            " 45
at_xfail=no
(
  printf "%s\n" "567. $at_setup_line: testing $at_desc ..."
  $at_traceon


for operators in \
    '!eq !ne !lt !gt !le !ge' \
    '  =  <>   <   >  <=  >='
do
    set $operators
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $operators ##
_ASBOX
    cat > define.sps <<EOF
DEFINE !test(!positional !tokens(1))
!if (!1 $1 1) !then true !else false !ifend
!if (!1 $2 1) !then true !else false !ifend
!if (!1 $3 1) !then true !else false !ifend
!if (!1 $4 1) !then true !else false !ifend
!if (!1 $5 1) !then true !else false !ifend
!if (!1 $6 1) !then true !else false !ifend.
!ENDDEFINE.
DEBUG EXPAND.
!test 0
!test 1
!test 2
!test '1'
!test 1.0
EOF

    { set +x
printf "%s\n" "$at_srcdir/define.at:1196: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1196"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "false true true false true false.

true false false false true true.

false true false true false true.

true false false false true true.

false true false true false true.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1196"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_567
#AT_START_568
at_fn_group_banner 568 'define.at:1210' \
  "macro !IF condition -- case sensitivity" "        " 45
at_xfail=no
(
  printf "%s\n" "568. $at_setup_line: testing $at_desc ..."
  $at_traceon


for operators in \
    '!eq !ne !lt !gt !le !ge' \
    '  =  <>   <   >  <=  >='
do
    set $operators
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $operators ##
_ASBOX
    cat > define.sps <<EOF
DEFINE !test(!positional !tokens(1))
!if (!1 $1 a) !then true !else false !ifend
!if (!1 $1 A) !then true !else false !ifend
!if (!1 $2 a) !then true !else false !ifend
!if (!1 $2 A) !then true !else false !ifend
!if (!1 $3 a) !then true !else false !ifend
!if (!1 $3 A) !then true !else false !ifend
!if (!1 $4 a) !then true !else false !ifend
!if (!1 $4 A) !then true !else false !ifend
!if (!1 $5 a) !then true !else false !ifend
!if (!1 $5 A) !then true !else false !ifend
!if (!1 $6 a) !then true !else false !ifend
!if (!1 $6 A) !then true !else false !ifend
!if (!1 $1 !null) !then true !else false !ifend
!if (!1 $2 !null) !then true !else false !ifend.
!ENDDEFINE.
DEBUG EXPAND.
!test a
!test A
!test b
!test B
EOF

    { set +x
printf "%s\n" "$at_srcdir/define.at:1242: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1242"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "true false false true false false false true true false true true false true.

false true true false true false false false true true false true false true.

false false true true false false true true false false true true false true.

false false true true true false false true true false false true false true.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1242"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_568
#AT_START_569
at_fn_group_banner 569 'define.at:1254' \
  "macro !IF condition -- logical operators" "       " 45
at_xfail=no
(
  printf "%s\n" "569. $at_setup_line: testing $at_desc ..."
  $at_traceon


for operators in \
    '!and !or !not' \
    '   &   |    ~'
do
    set $operators
    sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $operators ##
_ASBOX
    cat > define.sps <<EOF
DEFINE !test_binary(!positional !tokens(1)/!positional !tokens(1))
!if !1 $1 !2 !then true !else false !ifend
!if !1 $2 !2 !then true !else false !ifend.
!ENDDEFINE.

DEFINE !test_unary(!positional !tokens(1))
!if $3 !1 !then true !else false !ifend.
!ENDDEFINE.

* These are:
  ((not A) and B) or C
  not (A and B) or C
  not A and (B or C)
DEFINE !test_prec(!pos !tokens(1)/!pos !tokens(1)/!pos !tokens(1))
!if $3 !1 $1 !2 $2 !3 !then true !else false !ifend
!if $3 (!1 $1 !2) $2 !3 !then true !else false !ifend
!if $3 !1 $1 (!2 $2 !3) !then true !else false !ifend
!ENDDEFINE.

DEBUG EXPAND.
!test_binary 0 0
!test_binary 0 1
!test_binary 1 0
!test_binary 1 1
!test_unary 0
!test_unary 1
!test_prec 0 0 0 !test_prec 0 0 1 !test_prec 0 1 0 !test_prec 0 1 1.
!test_prec 1 0 0 !test_prec 1 0 1 !test_prec 1 1 0 !test_prec 1 1 1.
EOF

    { set +x
printf "%s\n" "$at_srcdir/define.at:1293: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1293"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "false false.

false true.

false true.

true true.

true.

false.

false true false
true true true
true true true
true true true

false true false
true true false
false false false
true true false
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1293"
$at_failed && at_fn_log_failure  \
"define.sps"
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_569
#AT_START_570
at_fn_group_banner 570 'define.at:1319' \
  "macro !LET" "                                     " 45
at_xfail=no
(
  printf "%s\n" "570. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !macro(!POS !CMDEND)
!LET !v1 = !CONCAT('x',!1,'y')
!LET !v2 = !QUOTE(!v1)
!LET !v3 = (!LENGTH(!1) = 1)
!LET !v4 = (!SUBSTR(!1, 3) = !NULL)
v1=!v1.
v2=!v2.
v3=!v3.
v4=!v4.
!ENDDEFINE.
DEBUG EXPAND.
!macro 0.
!macro.
!macro xyzzy.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1337: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1337"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "v1 = x0y.
v2 = x0y.
v3 = 1.
v4 = 1.

v1 = xy.
v2 = xy.
v3 = 0.
v4 = 1.

v1 = xxyzzyy.
v2 = xxyzzyy.
v3 = 0.
v4 = 0.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1337"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_570
#AT_START_571
at_fn_group_banner 571 'define.at:1355' \
  "macro indexed !DO" "                              " 45
at_xfail=no
(
  printf "%s\n" "571. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !title(!POS !TOKENS(1)) !1. !ENDDEFINE.

DEFINE !for(!POS !TOKENS(1) / !POS !TOKENS(1))
!DO !var = !1 !TO !2 !var !DOEND.
!ENDDEFINE.

DEFINE !forby(!POS !TOKENS(1) / !POS !TOKENS(1) / !POS !TOKENS(1))
!DO !var = !1 !TO !2 !BY !3 !var !DOEND.
!ENDDEFINE.

DEBUG EXPAND.
!title "increasing".
!for 1 5.
!forby 1 5 1.
!forby 1 5 2.
!forby 1 5 2.5.
!forby 1 5 -1.

!title "decreasing".
!for 5 1.
!forby 5 1 1.
!forby 5 1 -1.
!forby 5 1 -2.
!forby 5 1 -3.

!title "non-integer".
!for 1.5 3.5.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1386: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1386"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"increasing\".

1 2 3 4 5.

1 2 3 4 5.

1 3 5.

1 3.5.

.

\"decreasing\".

.

.

5 4 3 2 1.

5 3 1.

5 2.

\"non-integer\".

1.5 2.5 3.5.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1386"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_571
#AT_START_572
at_fn_group_banner 572 'define.at:1417' \
  "macro !DO invalid variable names" "               " 45
at_xfail=no
(
  printf "%s\n" "572. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !for(x=!TOKENS(1) / y=!TOKENS(1))
!DO !x = !x !TO !y !var !DOEND.
!ENDDEFINE.

DEFINE !for2(x=!TOKENS(1) / y=!TOKENS(1))
!DO !noexpand = !x !TO !y !var !DOEND.
!ENDDEFINE.

DEBUG EXPAND.
!for x=1 y=5.
!for2 x=1 y=5.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1432: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1432"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:1-3: At \`!x' in the expansion of \`!for',
define.sps:10.1-10.12: error: DEBUG EXPAND: Cannot use argument name or macro
keyword as !DO variable.
   10 | !for x=1 y=5.
      | ^~~~~~~~~~~~

!DO 1 = 1 !TO 5 !var !DOEND.

define.sps:5-7: At \`!noexpand' in the expansion of \`!for2',
define.sps:11.1-11.13: error: DEBUG EXPAND: Cannot use argument name or macro
keyword as !DO variable.
   11 | !for2 x=1 y=5.
      | ^~~~~~~~~~~~~

!DO !noexpand = 1 !TO 5 !var !DOEND.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1432"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_572
#AT_START_573
at_fn_group_banner 573 'define.at:1451' \
  "macro indexed !DO reaches MITERATE" "             " 45
at_xfail=no
(
  printf "%s\n" "573. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !title(!POS !TOKENS(1)) !1. !ENDDEFINE.

DEFINE !for(!POS !TOKENS(1) / !POS !TOKENS(1))
!DO !var = !1 !TO !2 !var !DOEND.
!ENDDEFINE.

DEFINE !forby(!POS !TOKENS(1) / !POS !TOKENS(1) / !POS !TOKENS(1))
!DO !var = !1 !TO !2 !BY !3 !var !DOEND.
!ENDDEFINE.

SET MITERATE=3.
DEBUG EXPAND.
!title "increasing".
!for 1 5.
!forby 1 5 1.
!forby 1 5 2.
!forby 1 5 2.5.
!forby 1 5 -1.

!title "decreasing".
!for 5 1.
!forby 5 1 1.
!forby 5 1 -1.
!forby 5 1 -2.
!forby 5 1 -3.

!title "non-integer".
!for 1.5 3.5.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1483: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1483"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"increasing\".

In the expansion of \`!DO',
define.sps:3-5: inside the expansion of \`!for',
define.sps:14.1-14.8: error: DEBUG EXPAND: Numerical !DO loop exceeded maximum
number of iterations 3.  (Use SET MITERATE to change the limit.)
   14 | !for 1 5.
      | ^~~~~~~~

1 2 3 4.

In the expansion of \`!DO',
define.sps:7-9: inside the expansion of \`!forby',
define.sps:15.1-15.12: error: DEBUG EXPAND: Numerical !DO loop exceeded maximum
number of iterations 3.  (Use SET MITERATE to change the limit.)
   15 | !forby 1 5 1.
      | ^~~~~~~~~~~~

1 2 3 4.

1 3 5.

1 3.5.

.

\"decreasing\".

.

.

In the expansion of \`!DO',
define.sps:7-9: inside the expansion of \`!forby',
define.sps:23.1-23.13: error: DEBUG EXPAND: Numerical !DO loop exceeded maximum
number of iterations 3.  (Use SET MITERATE to change the limit.)
   23 | !forby 5 1 -1.
      | ^~~~~~~~~~~~~

5 4 3 2.

5 3 1.

5 2.

\"non-integer\".

1.5 2.5 3.5.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1483"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_573
#AT_START_574
at_fn_group_banner 574 'define.at:1535' \
  "!BREAK with macro indexed !DO" "                  " 45
at_xfail=no
(
  printf "%s\n" "574. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !title(!POS !TOKENS(1)) !1. !ENDDEFINE.

DEFINE !for(!POS !TOKENS(1) / !POS !TOKENS(1) / !POS !TOKENS(1))
!DO !var = !1 !TO !2
  !var
  !IF 1 !THEN
    !IF !var = !3 !THEN
      x
      !BREAK
      y
    !IFEND
    ,
  !IFEND
!DOEND.
!ENDDEFINE.

DEBUG EXPAND.
!for 1 5 4.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1557: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1557"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1, 2, 3, 4 x.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1557"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_574
#AT_START_575
at_fn_group_banner 575 'define.at:1562' \
  "macro list !DO" "                                 " 45
at_xfail=no
(
  printf "%s\n" "575. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !for(!POS !CMDEND)
(!DO !i !IN (!1) (!i) !DOEND).
!ENDDEFINE.

DEBUG EXPAND.
!for a b c.
!for 'foo bar baz quux'.
!for.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1574: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1574"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "( (a) (b) (c) ).

( (foo) (bar) (baz) (quux) ).

( ).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1574"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_575
#AT_START_576
at_fn_group_banner 576 'define.at:1583' \
  "macro list !DO reaches MITERATE" "                " 45
at_xfail=no
(
  printf "%s\n" "576. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !for(!POS !CMDEND)
(!DO !i !IN (!1) (!i) !DOEND).
!ENDDEFINE.

SET MITERATE=2.
DEBUG EXPAND.
!for a b c.
!for 'foo bar baz quux'.
!for.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1596: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1596"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "In the expansion of \`!DO',
define.sps:1-3: inside the expansion of \`!for',
define.sps:7.1-7.10: error: DEBUG EXPAND: !DO loop over list exceeded maximum
number of iterations 2.  (Use SET MITERATE to change the limit.)
    7 | !for a b c.
      | ^~~~~~~~~~

( (a) (b) ).

In the expansion of \`!DO',
define.sps:1-3: inside the expansion of \`!for',
define.sps:8.1-8.23: error: DEBUG EXPAND: !DO loop over list exceeded maximum
number of iterations 2.  (Use SET MITERATE to change the limit.)
    8 | !for 'foo bar baz quux'.
      | ^~~~~~~~~~~~~~~~~~~~~~~

( (foo) (bar) ).

( ).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1596"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_576
#AT_START_577
at_fn_group_banner 577 'define.at:1619' \
  "!BREAK with macro list !DO" "                     " 45
at_xfail=no
(
  printf "%s\n" "577. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !for(!POS !TOKENS(1) / !POS !CMDEND)
(!DO !i !IN (!2)
  (!i)
  !IF 1 !THEN
    !IF !i = !1 !THEN
      x
      !BREAK
      y
    !IFEND
    ,
  !IFEND
!DOEND).
!ENDDEFINE.

DEBUG EXPAND.
!for d a b c.
!for baz 'foo bar baz quux'.
!for e.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1641: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1641"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "( (a), (b), (c), ).

( (foo), (bar), (baz)x).

( ).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1641"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_577
#AT_START_578
at_fn_group_banner 578 'define.at:1650' \
  "macro !LET" "                                     " 45
at_xfail=no
(
  printf "%s\n" "578. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !macro(!pos !enclose('(',')'))
!LET !x=!1
!LET !y=!QUOTE(!1)
!LET !z=(!y="abc")
!y !z
!ENDDEFINE.

DEBUG EXPAND.
!macro(1+2).
!macro(abc).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1663: pspp --testing-mode define.sps -O format=csv"
at_fn_check_prepare_trace "define.at:1663"
( $at_check_trace; pspp --testing-mode define.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1 + 2 0

abc 1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1663"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_578
#AT_START_579
at_fn_group_banner 579 'define.at:1670' \
  "macro !LET invalid variable names" "              " 45
at_xfail=no
(
  printf "%s\n" "579. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !macro(x=!tokens(1))
!LET !x=!x
!ENDDEFINE.

DEFINE !macro2()
!LET !do=x
!ENDDEFINE.

DEBUG EXPAND.
!macro x=1.
!macro2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1684: pspp --testing-mode define.sps -O format=csv"
at_fn_check_prepare_trace "define.at:1684"
( $at_check_trace; pspp --testing-mode define.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"define.sps:1-3: At \`!x' in the expansion of \`!macro',
define.sps:10.1-10.10: error: DEBUG EXPAND: Cannot use argument name or macro keyword \"\"!x\"\" as !LET variable.
   10 | !macro x=1.
      | ^~~~~~~~~~\"

!LET 1 = 1

\"define.sps:5-7: At \`!do' in the expansion of \`!macro2',
define.sps:11.1-11.7: error: DEBUG EXPAND: Cannot use argument name or macro keyword \"\"!do\"\" as !LET variable.
   11 | !macro2.
      | ^~~~~~~\"

\"define.sps:5-7: At \`=' in the expansion of \`!macro2',
define.sps:11.1-11.7: error: DEBUG EXPAND: Expected macro variable name following !DO.
   11 | !macro2.
      | ^~~~~~~\"

!LET !do = x
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1684"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_579
#AT_START_580
at_fn_group_banner 580 'define.at:1706' \
  "BEGIN DATA inside a macro" "                      " 45
at_xfail=no
(
  printf "%s\n" "580. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !macro()
DATA LIST NOTABLE /x 1.
BEGIN DATA
1
2
3
END DATA.
LIST.
!ENDDEFINE.

!macro
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1720: pspp define.sps -O format=csv"
at_fn_check_prepare_trace "define.at:1720"
( $at_check_trace; pspp define.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x
1
2
3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1720"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_580
#AT_START_581
at_fn_group_banner 581 'define.at:1729' \
  "TITLE and SUBTITLE with macros" "                 " 45
at_xfail=no
(
  printf "%s\n" "581. $at_setup_line: testing $at_desc ..."
  $at_traceon


for command in TITLE SUBTITLE; do
    cat >title.sps <<EOF
DEFINE !paste(!POS !TOKENS(1) / !POS !TOKENS(1))
!CONCAT(!1,!2)
!ENDDEFINE.
$command prefix !paste foo bar suffix.
SHOW $command.
EOF
    cat >expout <<EOF
Table: Settings
$command,prefix foobar suffix
EOF
    { set +x
printf "%s\n" "$at_srcdir/define.at:1743: pspp -O format=csv title.sps"
at_fn_check_prepare_trace "define.at:1743"
( $at_check_trace; pspp -O format=csv title.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1743"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_581
#AT_START_582
at_fn_group_banner 582 'define.at:1747' \
  "error message within macro expansion" "           " 45
at_xfail=no
(
  printf "%s\n" "582. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !vars(!POS !TOKENS(1)) a b C !ENDDEFINE.
DATA LIST NOTABLE /a b 1-2.
COMPUTE x = !vars x.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1753: pspp -O format=csv define.sps"
at_fn_check_prepare_trace "define.at:1753"
( $at_check_trace; pspp -O format=csv define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"define.sps:3.13-3.19: error: COMPUTE: In syntax expanded from \`!vars x': Syntax error expecting end of command.
    3 | COMPUTE x = !vars x.
      |             ^~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1753"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_582
#AT_START_583
at_fn_group_banner 583 'define.at:1763' \
  "macro calls in each others' lookahead" "          " 45
at_xfail=no
(
  printf "%s\n" "583. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !k(x=!DEFAULT(0) !TOKENS(1)/y=!DEFAULT(0) !TOKENS(1))
(x=!x)(y=!y)
!ENDDEFINE.
DEBUG EXPAND.
!k
!k x=1
!k y=2
!k y=2 x=1
!k x=1 y=2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1775: pspp -O format=csv define.sps --testing-mode"
at_fn_check_prepare_trace "define.at:1775"
( $at_check_trace; pspp -O format=csv define.sps --testing-mode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(x = 0) (y = 0)

(x = 1) (y = 0)

(x = 0) (y = 2)
(x = 1) (y = 2)

(x = 1) (y = 2)
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1775"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_583
#AT_START_584
at_fn_group_banner 584 'define.at:1787' \
  "bad token in macro body" "                        " 45
at_xfail=no
(
  printf "%s\n" "584. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !x()
x'123'
!ENDDEFINE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1793: pspp define.sps"
at_fn_check_prepare_trace "define.at:1793"
( $at_check_trace; pspp define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:2.1-2.6: error: DEFINE: String of hex digits has 3 characters, which
is not a multiple of 2.
    2 | x'123'
      | ^~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1793"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_584
#AT_START_585
at_fn_group_banner 585 'define.at:1801' \
  "macro name overlaps with macro function name" "   " 45
at_xfail=no
(
  printf "%s\n" "585. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !len() 5 !ENDDEFINE.
DEFINE !x() !eval(!len) !ENDDEFINE.
DEBUG EXPAND.
!x
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1812: pspp -O format=csv define.sps --testing-mode"
at_fn_check_prepare_trace "define.at:1812"
( $at_check_trace; pspp -O format=csv define.sps --testing-mode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "5
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:1812"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_585
#AT_START_586
at_fn_group_banner 586 'define.at:1817' \
  "generic macro function syntax errors" "           " 45
at_xfail=no
(
  printf "%s\n" "586. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'


DEFINE !c() !SUBSTR(1x) !ENDDEFINE.
DEFINE !d() !SUBSTR(1 !ENDDEFINE.
DEFINE !narg_blanks() !BLANKS() !ENDDEFINE.
DEFINE !narg_concat() !CONCAT() !ENDDEFINE.
DEFINE !narg_eval() !EVAL() !ENDDEFINE.
DEFINE !narg_head() !HEAD() !ENDDEFINE.
DEFINE !narg_index() !INDEX() !ENDDEFINE.
DEFINE !narg_length() !LENGTH() !ENDDEFINE.
DEFINE !narg_null() !NULL() !ENDDEFINE.
DEFINE !narg_quote() !QUOTE() !ENDDEFINE.
DEFINE !narg_substr() !SUBSTR() !ENDDEFINE.
DEFINE !narg_tail() !TAIL() !ENDDEFINE.
DEFINE !narg_unquote() !UNQUOTE() !ENDDEFINE.
DEFINE !narg_upcase() !UPCASE() !ENDDEFINE.
DEBUG EXPAND.


!c.
!d.
!narg_blanks.
!narg_concat.
!narg_eval.
!narg_head.
!narg_index.
!narg_length.
!narg_null.
!narg_quote.
!narg_substr.
!narg_tail.
!narg_unquote.
!narg_upcase.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1854: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1854"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:3: At \`x' in the expansion of \`!c',
define.sps:20.1-20.2: error: DEBUG EXPAND: \`,' or \`)' expected in call to macro
function !SUBSTR.
   20 | !c.
      | ^~

!SUBSTR(1 x)

define.sps:4: In the expansion of \`!d',
define.sps:21.1-21.2: error: DEBUG EXPAND: Missing \`)' in call to macro
function !SUBSTR.
   21 | !d.
      | ^~

!SUBSTR(1

define.sps:5: In the expansion of \`!narg_blanks',
define.sps:22.1-22.12: error: DEBUG EXPAND: Macro function !BLANKS takes one
argument (not 0).
   22 | !narg_blanks.
      | ^~~~~~~~~~~~

!BLANKS( )

define.sps:6: In the expansion of \`!narg_concat',
define.sps:23.1-23.12: error: DEBUG EXPAND: Macro function !CONCAT needs at
least one argument.
   23 | !narg_concat.
      | ^~~~~~~~~~~~

!CONCAT( )

define.sps:7: In the expansion of \`!narg_eval',
define.sps:24.1-24.10: error: DEBUG EXPAND: Macro function !EVAL takes one
argument (not 0).
   24 | !narg_eval.
      | ^~~~~~~~~~

!EVAL( )

define.sps:8: In the expansion of \`!narg_head',
define.sps:25.1-25.10: error: DEBUG EXPAND: Macro function !HEAD takes one
argument (not 0).
   25 | !narg_head.
      | ^~~~~~~~~~

!HEAD( )

define.sps:9: In the expansion of \`!narg_index',
define.sps:26.1-26.11: error: DEBUG EXPAND: Macro function !INDEX takes two
arguments (not 0).
   26 | !narg_index.
      | ^~~~~~~~~~~

!INDEX( )

define.sps:10: In the expansion of \`!narg_length',
define.sps:27.1-27.12: error: DEBUG EXPAND: Macro function !LENGTH takes one
argument (not 0).
   27 | !narg_length.
      | ^~~~~~~~~~~~

!LENGTH( )

( )

define.sps:12: In the expansion of \`!narg_quote',
define.sps:29.1-29.11: error: DEBUG EXPAND: Macro function !QUOTE takes one
argument (not 0).
   29 | !narg_quote.
      | ^~~~~~~~~~~

!QUOTE( )

define.sps:13: In the expansion of \`!narg_substr',
define.sps:30.1-30.12: error: DEBUG EXPAND: Macro function !SUBSTR takes two or
three arguments (not 0).
   30 | !narg_substr.
      | ^~~~~~~~~~~~

!SUBSTR( )

define.sps:14: In the expansion of \`!narg_tail',
define.sps:31.1-31.10: error: DEBUG EXPAND: Macro function !TAIL takes one
argument (not 0).
   31 | !narg_tail.
      | ^~~~~~~~~~

!TAIL( )

define.sps:15: In the expansion of \`!narg_unquote',
define.sps:32.1-32.13: error: DEBUG EXPAND: Macro function !UNQUOTE takes one
argument (not 0).
   32 | !narg_unquote.
      | ^~~~~~~~~~~~~

!UNQUOTE( )

define.sps:16: In the expansion of \`!narg_upcase',
define.sps:33.1-33.12: error: DEBUG EXPAND: Macro function !UPCASE takes one
argument (not 0).
   33 | !narg_upcase.
      | ^~~~~~~~~~~~

!UPCASE( )
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1854"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_586
#AT_START_587
at_fn_group_banner 587 'define.at:1963' \
  "specific macro function syntax errors" "          " 45
at_xfail=no
(
  printf "%s\n" "587. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !a() !BLANKS(x). !ENDDEFINE.
DEFINE !b() !SUBSTR(x, y). !ENDDEFINE.
DEFINE !c() !SUBSTR(x, 1, z). !ENDDEFINE.
DEBUG EXPAND.
!a.
!b.
!c.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:1973: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:1973"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:1: In the expansion of \`!a',
define.sps:5.1-5.2: error: DEBUG EXPAND: Argument to !BLANKS must be non-
negative integer (not \"x\").
    5 | !a.
      | ^~

!BLANKS(x).

define.sps:2: In the expansion of \`!b',
define.sps:6.1-6.2: error: DEBUG EXPAND: Second argument of !SUBSTR must be
positive integer (not \"y\").
    6 | !b.
      | ^~

!SUBSTR(x, y).

define.sps:3: In the expansion of \`!c',
define.sps:7.1-7.2: error: DEBUG EXPAND: Third argument of !SUBSTR must be non-
negative integer (not \"z\").
    7 | !c.
      | ^~

!SUBSTR(x, 1, z).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:1973"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_587
#AT_START_588
at_fn_group_banner 588 'define.at:2000' \
  "macro expression errors" "                        " 45
at_xfail=no
(
  printf "%s\n" "588. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !a() !LET !x = (1. !ENDDEFINE
DEFINE !b() !DO !x = x. !ENDDEFINE.
DEFINE !c() !LET !x = (). !ENDDEFINE.
DEBUG EXPAND.
!a.
!b.
!c.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2011: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:2011"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:1-2: At \`.' in the expansion of \`!a',
define.sps:5.1-5.2: error: DEBUG EXPAND: Expecting ')' in macro expression.
    5 | !a.
      | ^~

!LET !x = (1.

At \`x' in the expansion of \`!DO',
define.sps:2: inside the expansion of \`!b',
define.sps:6.1-6.2: error: DEBUG EXPAND: Macro expression must evaluate to a
number (not \"x\").
    6 | !b.
      | ^~

!DO !x = x.

define.sps:3: At \`)' in the expansion of \`!c',
define.sps:7.1-7.2: error: DEBUG EXPAND: Expecting literal or function
invocation in macro expression.
    7 | !c.
      | ^~

!LET !x = ( ).
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:2011"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_588
#AT_START_589
at_fn_group_banner 589 'define.at:2038' \
  "macro !IF errors" "                               " 45
at_xfail=no
(
  printf "%s\n" "589. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !a() !IF 1 !ENDDEFINE.
DEFINE !b() !IF 1 !THEN !ENDDEFINE.
DEFINE !c() !IF 1 !THEN !ELSE !ENDDEFINE.
DEBUG EXPAND.
!a.
!b.
!c.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2049: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:2049"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:1: In the expansion of \`!a',
define.sps:5.1-5.2: error: DEBUG EXPAND: !THEN expected in macro !IF construct.
    5 | !a.
      | ^~

!IF 1

define.sps:2: In the expansion of \`!b',
define.sps:6.1-6.2: error: DEBUG EXPAND: !ELSE or !IFEND expected in macro !IF
construct.
    6 | !b.
      | ^~

!IF 1 !THEN

define.sps:3: In the expansion of \`!c',
define.sps:7.1-7.2: error: DEBUG EXPAND: !IFEND expected in macro !IF
construct.
    7 | !c.
      | ^~

!IF 1 !THEN !ELSE
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:2049"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_589
#AT_START_590
at_fn_group_banner 590 'define.at:2075' \
  "macro !LET errors" "                              " 45
at_xfail=no
(
  printf "%s\n" "590. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !a() !LET !ENDDEFINE.
DEFINE !b() !LET 0 !ENDDEFINE.
DEFINE !c() !LET !x !ENDDEFINE.
DEFINE !d() !LET !x y !ENDDEFINE.
DEBUG EXPAND.
!a.
!b.
!c.
!d.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2088: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:2088"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:1: In the expansion of \`!a',
define.sps:6.1-6.2: error: DEBUG EXPAND: Expected macro variable name following
!LET.
    6 | !a.
      | ^~

!LET

define.sps:2: At \`0' in the expansion of \`!b',
define.sps:7.1-7.2: error: DEBUG EXPAND: Expected macro variable name following
!LET.
    7 | !b.
      | ^~

!LET 0

define.sps:3: In the expansion of \`!c',
define.sps:8.1-8.2: error: DEBUG EXPAND: Expected \`=' following !LET.
    8 | !c.
      | ^~

!LET !x

define.sps:4: At \`y' in the expansion of \`!d',
define.sps:9.1-9.2: error: DEBUG EXPAND: Expected \`=' following !LET.
    9 | !d.
      | ^~

!LET !x y
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:2088"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_590
#AT_START_591
at_fn_group_banner 591 'define.at:2121' \
  "macro !DO errors" "                               " 45
at_xfail=no
(
  printf "%s\n" "591. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !a() !DO !ENDDEFINE.
DEFINE !b() !DO 0 !ENDDEFINE.
DEFINE !c() !DO !x !ENDDEFINE.
DEFINE !d() !DO !x !in (x) !ENDDEFINE.
DEFINE !e() !DO !x = x. !ENDDEFINE.
DEFINE !f() !DO !x = 5 x !ENDDEFINE.
DEFINE !g() !DO !x = 5 !TO 6 !BY 0 !ENDDEFINE.
DEFINE !h() !DO !x !ENDDEFINE.
DEFINE !i() !DO !x 0 !ENDDEFINE.
DEFINE !j() !BREAK !ENDDEFINE.
DEBUG EXPAND.
!a.
!b.
!c.
!d.
!e.
!f.
!g.
!h.
!i.
!j.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2146: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:2146"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:1: In the expansion of \`!a',
define.sps:12.1-12.2: error: DEBUG EXPAND: Expected macro variable name
following !DO.
   12 | !a.
      | ^~

!DO

define.sps:2: At \`0' in the expansion of \`!b',
define.sps:13.1-13.2: error: DEBUG EXPAND: Expected macro variable name
following !DO.
   13 | !b.
      | ^~

!DO 0

define.sps:3: In the expansion of \`!c',
define.sps:14.1-14.2: error: DEBUG EXPAND: Expected \`=' or !IN in !DO loop.
   14 | !c.
      | ^~

!DO !x

In the expansion of \`!DO',
define.sps:4: inside the expansion of \`!d',
define.sps:15.1-15.2: error: DEBUG EXPAND: Missing !DOEND.
   15 | !d.
      | ^~

!DO !x !in(x)

At \`x' in the expansion of \`!DO',
define.sps:5: inside the expansion of \`!e',
define.sps:16.1-16.2: error: DEBUG EXPAND: Macro expression must evaluate to a
number (not \"x\").
   16 | !e.
      | ^~

!DO !x = x.

At \`x' in the expansion of \`!DO',
define.sps:6: inside the expansion of \`!f',
define.sps:17.1-17.2: error: DEBUG EXPAND: Expected !TO in numerical !DO loop.
   17 | !f.
      | ^~

!DO !x = 5 x

In the expansion of \`!DO',
define.sps:7: inside the expansion of \`!g',
define.sps:18.1-18.2: error: DEBUG EXPAND: !BY value cannot be zero.
   18 | !g.
      | ^~

!DO !x = 5 !TO 6 !BY 0

define.sps:8: In the expansion of \`!h',
define.sps:19.1-19.2: error: DEBUG EXPAND: Expected \`=' or !IN in !DO loop.
   19 | !h.
      | ^~

!DO !x

define.sps:9: At \`0' in the expansion of \`!i',
define.sps:20.1-20.2: error: DEBUG EXPAND: Expected \`=' or !IN in !DO loop.
   20 | !i.
      | ^~

!DO !x 0

define.sps:10: At \`!BREAK' in the expansion of \`!j',
define.sps:21.1-21.2: error: DEBUG EXPAND: !BREAK outside !DO.
   21 | !j.
      | ^~

" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:2146"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_591
#AT_START_592
at_fn_group_banner 592 'define.at:2225' \
  "macros in comments" "                             " 45
at_xfail=no
(
  printf "%s\n" "592. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !macro() x y z !ENDDEFINE.
/* !macro.
*!macro.
DEBUG EXPAND.
!macro.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2234: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:2234"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "x y z
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:2234"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_592
#AT_START_593
at_fn_group_banner 593 'define.at:2239' \
  "DEFINE syntax errors" "                           " 45
at_xfail=no
(
  printf "%s\n" "593. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >define.sps <<'_ATEOF'
DEFINE !macro(!POSITIONAL !CHAREND('x y')) !ENDDEFINE.
DEFINE !macro(a=!TOKENS(1)/!POSITIONAL !TOKENS(1)) !ENDDEFINE.
DEFINE !macro(!a=!TOKENS(1)) !ENDDEFINE.
DEFINE !macro(do=!TOKENS(1)) !ENDDEFINE.
DEFINE 0() !ENDDEFINE.
DEFINE x y () !ENDDEFINE.
DEFINE !macro(1) !ENDDEFINE.
DEFINE !macro(x 2) !ENDDEFINE.
DEFINE !macro(x=!DEFAULT 3) !ENDDEFINE.
DEFINE !macro(x=!TOKENS 4) !ENDDEFINE.
DEFINE !macro(x=!TOKENS(x)) !ENDDEFINE.
DEFINE !macro(x=!TOKENS(1 5)) !ENDDEFINE.
DEFINE !macro(x=!ENCLOSE 6) !ENDDEFINE.
DEFINE !macro(x=!ENCLOSE('x' y)) !ENDDEFINE.
DEFINE !macro(x=!ENCLOSE('x',y)) !ENDDEFINE.
DEFINE !macro(x=!ENCLOSE('x','y' z)) !ENDDEFINE.
DEFINE !macro(x=!CHAREND 7) !ENDDEFINE.
DEFINE !macro(x=!CHAREND(8)) !ENDDEFINE.
DEFINE !macro(x=!CHAREND('x' 9)) !ENDDEFINE.
DEFINE !macro(x=!WTF) !ENDDEFINE.
DEFINE !macro(x=!TOKENS(1) x) !ENDDEFINE.
DEFINE !macro(x=!DEFAULT() !DEFAULT()) !ENDDEFINE.
DEFINE !macro(x=!TOKENS(1) !CMDEND) !ENDDEFINE.
DEFINE !macro()
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2267: pspp define.sps"
at_fn_check_prepare_trace "define.at:2267"
( $at_check_trace; pspp define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "define.sps:1.36-1.40: error: DEFINE: String must contain exactly one token.
    1 | DEFINE !macro(!POSITIONAL !CHAREND('x y')) !ENDDEFINE.
      |                                    ^~~~~

define.sps:2.28-2.38: error: DEFINE: Positional parameters must precede keyword
parameters.
    2 | DEFINE !macro(a=!TOKENS(1)/!POSITIONAL !TOKENS(1)) !ENDDEFINE.
      |                            ^~~~~~~~~~~

define.sps:2.15: note: DEFINE: Here is a previous keyword parameter.
    2 | DEFINE !macro(a=!TOKENS(1)/!POSITIONAL !TOKENS(1)) !ENDDEFINE.
      |               ^

define.sps:3.15-3.16: error: DEFINE: Keyword macro parameter must be named in
definition without \"!\" prefix.
    3 | DEFINE !macro(!a=!TOKENS(1)) !ENDDEFINE.
      |               ^~

define.sps:4.15-4.16: error: DEFINE: Cannot use macro keyword \"do\" as an
argument name.
    4 | DEFINE !macro(do=!TOKENS(1)) !ENDDEFINE.
      |               ^~

define.sps:5.8: error: DEFINE: Syntax error expecting identifier.
    5 | DEFINE 0() !ENDDEFINE.
      |        ^

define.sps:6.10: error: DEFINE: Syntax error expecting \`('.
    6 | DEFINE x y () !ENDDEFINE.
      |          ^

define.sps:7.15: error: DEFINE: Syntax error expecting identifier.
    7 | DEFINE !macro(1) !ENDDEFINE.
      |               ^

define.sps:8.17: error: DEFINE: Syntax error expecting !TOKENS, !CHAREND, !
ENCLOSE, or !CMDEND.
    8 | DEFINE !macro(x 2) !ENDDEFINE.
      |                 ^

define.sps:9.26: error: DEFINE: Syntax error expecting \`('.
    9 | DEFINE !macro(x=!DEFAULT 3) !ENDDEFINE.
      |                          ^

define.sps:10.25: error: DEFINE: Syntax error expecting \`('.
   10 | DEFINE !macro(x=!TOKENS 4) !ENDDEFINE.
      |                         ^

define.sps:11.25: error: DEFINE: Syntax error expecting positive integer for !
TOKENS.
   11 | DEFINE !macro(x=!TOKENS(x)) !ENDDEFINE.
      |                         ^

define.sps:12.27: error: DEFINE: Syntax error expecting \`)'.
   12 | DEFINE !macro(x=!TOKENS(1 5)) !ENDDEFINE.
      |                           ^

define.sps:13.26: error: DEFINE: Syntax error expecting \`('.
   13 | DEFINE !macro(x=!ENCLOSE 6) !ENDDEFINE.
      |                          ^

define.sps:14.30: error: DEFINE: Syntax error expecting \`,'.
   14 | DEFINE !macro(x=!ENCLOSE('x' y)) !ENDDEFINE.
      |                              ^

define.sps:15.30: error: DEFINE: Syntax error expecting string.
   15 | DEFINE !macro(x=!ENCLOSE('x',y)) !ENDDEFINE.
      |                              ^

define.sps:16.34: error: DEFINE: Syntax error expecting \`)'.
   16 | DEFINE !macro(x=!ENCLOSE('x','y' z)) !ENDDEFINE.
      |                                  ^

define.sps:17.26: error: DEFINE: Syntax error expecting \`('.
   17 | DEFINE !macro(x=!CHAREND 7) !ENDDEFINE.
      |                          ^

define.sps:18.26: error: DEFINE: Syntax error expecting string.
   18 | DEFINE !macro(x=!CHAREND(8)) !ENDDEFINE.
      |                          ^

define.sps:19.30: error: DEFINE: Syntax error expecting \`)'.
   19 | DEFINE !macro(x=!CHAREND('x' 9)) !ENDDEFINE.
      |                              ^

define.sps:20.17-20.20: error: DEFINE: Syntax error expecting !TOKENS, !
CHAREND, !ENCLOSE, or !CMDEND.
   20 | DEFINE !macro(x=!WTF) !ENDDEFINE.
      |                 ^~~~

define.sps:21.28: error: DEFINE: Syntax error expecting \`/'.
   21 | DEFINE !macro(x=!TOKENS(1) x) !ENDDEFINE.
      |                            ^

define.sps:22.28-22.35: error: DEFINE: !DEFAULT is allowed only once per
argument.
   22 | DEFINE !macro(x=!DEFAULT() !DEFAULT()) !ENDDEFINE.
      |                            ^~~~~~~~

define.sps:23.28-23.34: error: DEFINE: Only one of !TOKENS, !CHAREND, !ENCLOSE,
or !CMDEND is allowed.
   23 | DEFINE !macro(x=!TOKENS(1) !CMDEND) !ENDDEFINE.
      |                            ^~~~~~~

define.sps:25.1: error: DEFINE: Syntax error expecting macro body or !
ENDDEFINE.
   25 |
      | ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:2267"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_593
#AT_START_594
at_fn_group_banner 594 'define.at:2379' \
  "macro expansion with token merging" "             " 45
at_xfail=no
(
  printf "%s\n" "594. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !foo() "foo" !ENDDEFINE.
DEFINE !bar() "bar" !ENDDEFINE.
DEFINE !plus() + !ENDDEFINE.
DEFINE !minus() - !ENDDEFINE.
DEFINE !one() 1 !ENDDEFINE.
ECHO "foo" + "bar".
ECHO !foo.
ECHO !bar.
ECHO !foo + "quux".
ECHO "baz" + !bar.
ECHO !foo + !bar.
ECHO !foo !plus !bar.
ECHO "two" "strings".
N OF CASES -/**/1.
N OF CASES !minus 1.
N OF CASES - !one.
N OF CASES !minus !one.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2399: pspp define.sps"
at_fn_check_prepare_trace "define.at:2399"
( $at_check_trace; pspp define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "foobar

foo

bar

fooquux

bazbar

foobar

foobar

two

define.sps:13.12-13.20: error: ECHO: Syntax error expecting end of command.
   13 | ECHO \"two\" \"strings\".
      |            ^~~~~~~~~

define.sps:14.12-14.17: error: N OF CASES: Syntax error expecting positive
integer for N OF CASES.
   14 | N OF CASES -/**/1.
      |            ^~~~~~

define.sps:15.12-15.19: error: N OF CASES: Syntax error expecting positive
integer for N OF CASES.
   15 | N OF CASES !minus 1.
      |            ^~~~~~~~

define.sps:16.12-16.17: error: N OF CASES: Syntax error expecting positive
integer for N OF CASES.
   16 | N OF CASES - !one.
      |            ^~~~~~

define.sps:17.12-17.22: error: N OF CASES: Syntax error expecting positive
integer for N OF CASES.
   17 | N OF CASES !minus !one.
      |            ^~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/define.at:2399"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_594
#AT_START_595
at_fn_group_banner 595 'define.at:2442' \
  "one macro calls another" "                        " 45
at_xfail=no
(
  printf "%s\n" "595. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !a(!pos !enclose('(',')')) [!1] !ENDDEFINE.
DEFINE !b(!pos !enclose('{','}')) !a(x !1 z) !ENDDEFINE.
DEFINE !c(!pos !enclose('{','}')) !let !tmp=!quote(!concat('<',!1,'>')) !a(!tmp) !ENDDEFINE.
DEBUG EXPAND.
!b{y}.
!c{y}.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2451: pspp --testing-mode define.sps"
at_fn_check_prepare_trace "define.at:2451"
( $at_check_trace; pspp --testing-mode define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "[x y z]

[ < y > ]
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:2451"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_595
#AT_START_596
at_fn_group_banner 596 'define.at:2458' \
  "DISPLAY MACROS" "                                 " 45
at_xfail=no
(
  printf "%s\n" "596. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >define.sps <<'_ATEOF'
DEFINE !b() 0 !ENDDEFINE.
DEFINE !macro()
a b c d
e f g h.
i j k l
1,2,3,4.
5+6+7.
m(n,o).
"a" "b" "c" 'a' 'b' 'c'.
"x "" y".
!ENDDEFINE.
DEFINE !a() 1 !ENDDEFINE.
DISPLAY MACROS.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/define.at:2474: pspp -O format=csv define.sps"
at_fn_check_prepare_trace "define.at:2474"
( $at_check_trace; pspp -O format=csv define.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Macros
Name,Source Location
!a,define.sps:12
!b,define.sps:1
!macro,define.sps:2-11
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/define.at:2474"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_596
#AT_START_597
at_fn_group_banner 597 'delete-variables.at:20' \
  "DELETE VARIABLES with FILTER" "                   " 46
at_xfail=no
(
  printf "%s\n" "597. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >delete-variables.sps <<'_ATEOF'
DATA LIST LIST /a b.
BEGIN DATA.
1 3
4 6
7 9
END DATA.

FILTER BY b.
DELETE VARIABLES a.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/delete-variables.at:33: pspp -O format=csv delete-variables.sps"
at_fn_check_prepare_trace "delete-variables.at:33"
( $at_check_trace; pspp -O format=csv delete-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
a,F8.0
b,F8.0

Table: Data List
b
3.00
6.00
9.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/delete-variables.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_597
#AT_START_598
at_fn_group_banner 598 'delete-variables.at:49' \
  "DELETE VARIABLES with string variables" "         " 46
at_xfail=no
(
  printf "%s\n" "598. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >delete-variables.sps <<'_ATEOF'
DATA LIST NOTABLE /s1 TO s2 1-2(A).
BEGIN DATA
12
END DATA.
DELETE VARIABLES s1.
NUMERIC n1.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/delete-variables.at:59: pspp -O format=csv delete-variables.sps"
at_fn_check_prepare_trace "delete-variables.at:59"
( $at_check_trace; pspp -O format=csv delete-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s2,n1
2,.  
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/delete-variables.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_598
#AT_START_599
at_fn_group_banner 599 'delete-variables.at:68' \
  "DELETE VARIABLES crash" "                         " 46
at_xfail=no
(
  printf "%s\n" "599. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >delete-variables.sps <<'_ATEOF'
DATA LIST NOTABLE LIST
  /ID (A8) respondent_city_of_birth (A25) respondent_name (A20) respondent_surname (A30) respondent_year_of_birth (F4.0).
BEGIN DATA
195 Amsterdam Floris "van Gelder" 1958
END DATA.
STRING varlist (A64).
COMPUTE found = 0.
EXECUTE.
MATCH FILES FILE= * /KEEP = ID TO respondent_name ALL.
EXECUTE.
DELETE VARIABLES respondent_surname found .
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/delete-variables.at:83: pspp --testing-mode -O format=csv delete-variables.sps"
at_fn_check_prepare_trace "delete-variables.at:83"
( $at_check_trace; pspp --testing-mode -O format=csv delete-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ID,respondent_city_of_birth,respondent_name,respondent_year_of_birth,varlist
195,Amsterdam,Floris,1958,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/delete-variables.at:83"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_599
#AT_START_600
at_fn_group_banner 600 'delete-variables.at:92' \
  "DELETE VARIABLES crash 2" "                       " 46
at_xfail=no
(
  printf "%s\n" "600. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >delete-variables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /foo (A5).
STRING bar (A8).
DELETE VARIABLES foo.
LIST.
BEGIN DATA.
asdf
END DATA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/delete-variables.at:102: pspp -O format=csv delete-variables.sps"
at_fn_check_prepare_trace "delete-variables.at:102"
( $at_check_trace; pspp -O format=csv delete-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
bar

" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/delete-variables.at:102"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_600
#AT_START_601
at_fn_group_banner 601 'delete-variables.at:109' \
  "DELETE VARIABLES syntax errors" "                 " 46
at_xfail=no
(
  printf "%s\n" "601. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >delete-variables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
BEGIN DATA.
1 2 3
END DATA.
DELETE VARIABLES x y z.
TEMPORARY.
DELETE VARIABLES x.
COMPUTE y=0.
DELETE VARIABLES x.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='delete-variables.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/delete-variables.at:124: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "delete-variables.at:124"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"delete-variables.sps:5.1-5.22: error: DELETE VARIABLES: DELETE VARIABLES may not be used to delete all variables from the active dataset dictionary.  Use NEW FILE instead.
    5 | DELETE VARIABLES x y z.
      | ^~~~~~~~~~~~~~~~~~~~~~\"

\"delete-variables.sps:7.1-7.16: error: DELETE VARIABLES: DELETE VARIABLES may not be used after TEMPORARY.
    7 | DELETE VARIABLES x.
      | ^~~~~~~~~~~~~~~~\"

\"delete-variables.sps:9.1-9.16: error: DELETE VARIABLES: DELETE VARIABLES may not be used when there are pending transformations (use EXECUTE to execute transformations).
    9 | DELETE VARIABLES x.
      | ^~~~~~~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/delete-variables.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_601
#AT_START_602
at_fn_group_banner 602 'descriptives.at:19' \
  "DESCRIPTIVES basics" "                            " 47
at_xfail=no
(
  printf "%s\n" "602. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
title 'Test DESCRIPTIVES procedure'.

data list / V0 to V16 1-17.
begin data.
12128989012389023
34128080123890128
56127781237893217
78127378123793112
90913781237892318
37978547878935789
52878237892378279
12377912789378932
26787654347894348
29137178947891888
end data.

descript all/stat=all/format=serial.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:39: pspp -O format=csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:39"
( $at_check_trace; pspp -O format=csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
V0,1,1-1,F1.0
V1,1,2-2,F1.0
V2,1,3-3,F1.0
V3,1,4-4,F1.0
V4,1,5-5,F1.0
V5,1,6-6,F1.0
V6,1,7-7,F1.0
V7,1,8-8,F1.0
V8,1,9-9,F1.0
V9,1,10-10,F1.0
V10,1,11-11,F1.0
V11,1,12-12,F1.0
V12,1,13-13,F1.0
V13,1,14-14,F1.0
V14,1,15-15,F1.0
V15,1,16-16,F1.0
V16,1,17-17,F1.0

Table: Descriptive Statistics
,N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
V0,10,3.80,.84,2.66,7.07,-.03,1.33,.89,.69,8.00,1,9,38.00
V1,10,4.60,.96,3.03,9.16,-1.39,1.33,-.03,.69,9.00,0,9,46.00
V2,10,4.10,1.16,3.67,13.43,-2.02,1.33,.48,.69,8.00,1,9,41.00
V3,10,4.10,.87,2.77,7.66,-2.05,1.33,.42,.69,7.00,1,8,41.00
V4,10,7.00,.47,1.49,2.22,7.15,1.33,-2.52,.69,5.00,3,8,70.00
V5,10,4.90,1.03,3.25,10.54,-1.40,1.33,-.20,.69,9.00,0,9,49.00
V6,10,5.90,.80,2.51,6.32,-.29,1.33,-.96,.69,7.00,1,8,59.00
V7,10,4.70,1.10,3.47,12.01,-1.99,1.33,-.16,.69,9.00,0,9,47.00
V8,10,4.10,1.10,3.48,12.10,-1.93,1.33,.37,.69,9.00,0,9,41.00
V9,10,4.30,.87,2.75,7.57,-.87,1.33,.73,.69,8.00,1,9,43.00
V10,10,5.50,.85,2.68,7.17,-1.84,1.33,-.33,.69,7.00,2,9,55.00
V11,10,6.50,.78,2.46,6.06,-1.28,1.33,-.89,.69,6.00,3,9,65.00
V12,10,7.90,.60,1.91,3.66,5.24,1.33,-2.21,.69,6.00,3,9,79.00
V13,10,4.30,.99,3.13,9.79,-1.25,1.33,.33,.69,9.00,0,9,43.00
V14,10,3.60,1.01,3.20,10.27,-.96,1.33,.81,.69,9.00,0,9,36.00
V15,10,3.70,.92,2.91,8.46,-1.35,1.33,.71,.69,7.00,1,8,37.00
V16,10,6.40,.91,2.88,8.27,-1.14,1.33,-.92,.69,7.00,2,9,64.00
Valid N (listwise),10,,,,,,,,,,,,
Missing N (listwise),0,,,,,,,,,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_602
#AT_START_603
at_fn_group_banner 603 'descriptives.at:98' \
  "DESCRIPTIVES -- excluding missing data" "         " 47
at_xfail=no
(
  printf "%s\n" "603. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
data list notable / V1 TO V3 1-3.
mis val v1 to v3 (1).
begin data.
111

 1
1 1
112
123
234
end data.

descript all/stat=all/format=serial.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:103: pspp -O format=csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:103"
( $at_check_trace; pspp -O format=csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
V1,1,2.00,.  ,.  ,.  ,.  ,.  ,.  ,.  ,.00,2,2,2.00
V2,2,2.50,.50,.71,.50,.  ,.  ,.  ,.  ,1.00,2,3,5.00
V3,3,3.00,.58,1.00,1.00,.  ,.  ,.00,1.22,2.00,2,4,9.00
Valid N (listwise),7,,,,,,,,,,,,
Missing N (listwise),6,,,,,,,,,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:103"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_603
#AT_START_604
at_fn_group_banner 604 'descriptives.at:114' \
  "DESCRIPTIVES -- including missing data" "         " 47
at_xfail=no
(
  printf "%s\n" "604. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
data list notable / V1 TO V3 1-3.
mis val v1 to v3 (1).
begin data.
111

 1
1 1
112
123
234
end data.

descript all/stat=all/format=serial/missing=include.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:119: pspp -O format=csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:119"
( $at_check_trace; pspp -O format=csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
V1,5,1.20,.20,.45,.20,5.00,2.00,2.24,.91,1.00,1,2,6.00
V2,5,1.60,.40,.89,.80,.31,2.00,1.26,.91,2.00,1,3,8.00
V3,5,2.20,.58,1.30,1.70,-1.49,2.00,.54,.91,3.00,1,4,11.00
Valid N (listwise),7,,,,,,,,,,,,
Missing N (listwise),3,,,,,,,,,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:119"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_604
#AT_START_605
at_fn_group_banner 605 'descriptives.at:130' \
  "DESCRIPTIVES -- excluding missing data listwise" "" 47
at_xfail=no
(
  printf "%s\n" "605. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
data list notable / V1 TO V3 1-3.
mis val v1 to v3 (1).
begin data.
111

 1
1 1
112
123
234
end data.

descript all/stat=all/format=serial/missing=listwise.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:135: pspp -O format=csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:135"
( $at_check_trace; pspp -O format=csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
V1,1,2.00,.  ,.  ,.  ,.  ,.  ,.  ,.  ,.00,2,2,2.00
V2,1,3.00,.  ,.  ,.  ,.  ,.  ,.  ,.  ,.00,3,3,3.00
V3,1,4.00,.  ,.  ,.  ,.  ,.  ,.  ,.  ,.00,4,4,4.00
Valid N (listwise),1,,,,,,,,,,,,
Missing N (listwise),6,,,,,,,,,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:135"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_605
#AT_START_606
at_fn_group_banner 606 'descriptives.at:146' \
  "DESCRIPTIVES -- including missing data listwise" "" 47
at_xfail=no
(
  printf "%s\n" "606. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
data list notable / V1 TO V3 1-3.
mis val v1 to v3 (1).
begin data.
111

 1
1 1
112
123
234
end data.

descript all/stat=all/format=serial/missing=listwise include.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:151: pspp -O format=csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:151"
( $at_check_trace; pspp -O format=csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
V1,4,1.25,.25,.50,.25,4.00,2.62,2.00,1.01,1.00,1,2,5.00
V2,4,1.75,.48,.96,.92,-1.29,2.62,.85,1.01,2.00,1,3,7.00
V3,4,2.50,.65,1.29,1.67,-1.20,2.62,.00,1.01,3.00,1,4,10.00
Valid N (listwise),4,,,,,,,,,,,,
Missing N (listwise),3,,,,,,,,,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:151"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_606
#AT_START_607
at_fn_group_banner 607 'descriptives.at:162' \
  "DESCRIPTIVES bug calculating mean only" "         " 47
at_xfail=no
(
  printf "%s\n" "607. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
SET FORMAT F8.3.

data list notable / X 1.
begin data.
0
1
2
3
4
5
end data.

descript all/stat=mean.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:178: pspp -O format=csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:178"
( $at_check_trace; pspp -O format=csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,N,Mean
X,6,2.500
Valid N (listwise),6,
Missing N (listwise),0,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:178"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_607
#AT_START_608
at_fn_group_banner 608 'descriptives.at:190' \
  "DESCRIPTIVES bug with TEMPORARY" "                " 47
at_xfail=no
(
  printf "%s\n" "608. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:208: pspp -O format=csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:208"
( $at_check_trace; pspp -O format=csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
abc,6,3.00,.84,2.00,4.00
Valid N (listwise),6,,,,
Missing N (listwise),0,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:208"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_608
#AT_START_609
at_fn_group_banner 609 'descriptives.at:217' \
  "DESCRIPTIVES -- Z scores" "                       " 47
at_xfail=no
(
  printf "%s\n" "609. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /a b.
BEGIN DATA.
1 50
2 60
3 70
END DATA.

DESCRIPTIVES /VAR=a b /SAVE.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:229: pspp -O format=csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:229"
( $at_check_trace; pspp -O format=csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Mapping of Variables to Z-scores
Source,Target
a,Za
b,Zb

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
a,3,2.00,1.00,1.00,3.00
b,3,60.00,10.00,50.00,70.00
Valid N (listwise),3,,,,
Missing N (listwise),0,,,,

Table: Data List
a,b,Za,Zb
1.00,50.00,-1.00,-1.00
2.00,60.00,.00,.00
3.00,70.00,1.00,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:229"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_609
#AT_START_610
at_fn_group_banner 610 'descriptives.at:250' \
  "DESCRIPTIVES -- Z scores with SPLIT FILE" "       " 47
at_xfail=no
(
  printf "%s\n" "610. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /group a b.
BEGIN DATA.
1 1 50
1 2 60
1 3 70
2 100 6000
2 200 7000
2 400 9000
2 500 10000
END DATA.

SPLIT FILE BY group.
DESCRIPTIVES /VAR=a b /SAVE.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:267: pspp -o pspp.csv -o pspp.txt descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:267"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:267"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:268: cat pspp.csv"
at_fn_check_prepare_trace "descriptives.at:268"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Mapping of Variables to Z-scores
Source,Target
a,Za
b,Zb

Table: Split Values
Variable,Value
group,1.00

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
a,3,2.00,1.00,1.00,3.00
b,3,60.00,10.00,50.00,70.00
Valid N (listwise),3,,,,
Missing N (listwise),0,,,,

Table: Split Values
Variable,Value
group,2.00

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
a,4,300.00,182.57,100.00,500.00
b,4,8000.00,1825.74,6000.00,10000.00
Valid N (listwise),4,,,,
Missing N (listwise),0,,,,

Table: Split Values
Variable,Value
group,1.00

Table: Data List
group,a,b,Za,Zb
1.00,1.00,50.00,-1.00,-1.00
1.00,2.00,60.00,.00,.00
1.00,3.00,70.00,1.00,1.00

Table: Split Values
Variable,Value
group,2.00

Table: Data List
group,a,b,Za,Zb
2.00,100.00,6000.00,-1.10,-1.10
2.00,200.00,7000.00,-.55,-.55
2.00,400.00,9000.00,.55,.55
2.00,500.00,10000.00,1.10,1.10
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_610
#AT_START_611
at_fn_group_banner 611 'descriptives.at:323' \
  "DESCRIPTIVES -- Z scores bug with TEMPORARY" "    " 47
at_xfail=no
(
  printf "%s\n" "611. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
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/SAVE.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:342: pspp -o pspp.csv -o pspp.txt descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:342"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "descriptives.sps:15.23-15.26: warning: DESCRIPTIVES: DESCRIPTIVES with Z scores ignores TEMPORARY.  Temporary transformations will be made permanent.
   15 | DESCRIPTIVES /VAR=abc/SAVE.
      |                       ^~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:342"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:347: cat pspp.csv"
at_fn_check_prepare_trace "descriptives.at:347"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"descriptives.sps:15.23-15.26: warning: DESCRIPTIVES: DESCRIPTIVES with Z scores ignores TEMPORARY.  Temporary transformations will be made permanent.
   15 | DESCRIPTIVES /VAR=abc/SAVE.
      |                       ^~~~\"

Table: Mapping of Variables to Z-scores
Source,Target
abc,Zabc

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
abc,6,3.00,.84,2.00,4.00
Valid N (listwise),6,,,,
Missing N (listwise),0,,,,

Table: Data List
id,abc,Zabc
1.00,3.50,.60
2.00,2.00,-1.20
3.00,2.00,-1.20
4.00,3.50,.60
5.00,3.00,.00
6.00,4.00,1.20
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:347"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_611
#AT_START_612
at_fn_group_banner 612 'descriptives.at:374' \
  "DESCRIPTIVES -- Z scores with FILTER" "           " 47
at_xfail=no
(
  printf "%s\n" "612. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
DATA LIST LIST/filter1 filter2 x.
BEGIN DATA.
0,0,300
0,1,200
0,1,100
1,0,5
1,0,4
1,1,3
1,1,2
1,1,1
END DATA.

FILTER OFF.
SPLIT FILE OFF.
DESCRIPTIVES /VARIABLES=X /SAVE.

FILTER BY filter1.
SPLIT FILE OFF.
DESCRIPTIVES /VARIABLES=X /SAVE.

FILTER OFF.
SORT CASES BY filter1.
SPLIT FILE BY filter1.
DESCRIPTIVES /VARIABLES=X /SAVE.

FILTER BY filter2.
SPLIT FILE BY filter1.
DESCRIPTIVES /VARIABLES=X /SAVE.

FILTER OFF.
SORT CASES BY filter1 filter2.
SPLIT FILE BY filter1 filter2.
DESCRIPTIVES /VARIABLES=X /SAVE.
EXECUTE.

SPLIT FILE OFF.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:414: pspp -o pspp.csv descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:414"
( $at_check_trace; pspp -o pspp.csv descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:414"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:415: sed -n '/Table: Data List/,\$p' < pspp.csv"
at_fn_check_prepare_dynamic "sed -n '/Table: Data List/,$p' < pspp.csv" "descriptives.at:415"
( $at_check_trace; sed -n '/Table: Data List/,$p' < pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
filter1,filter2,x,Zx,ZSC001,ZSC002,ZSC003,ZSC004
.00,.00,300.00,1.94,.  ,1.00,.  ,.  
.00,1.00,200.00,1.07,.  ,.00,.71,.71
.00,1.00,100.00,.20,.  ,-1.00,-.71,-.71
1.00,.00,5.00,-.62,1.26,1.26,.  ,.71
1.00,.00,4.00,-.63,.63,.63,.  ,-.71
1.00,1.00,3.00,-.64,.00,.00,1.00,1.00
1.00,1.00,2.00,-.65,-.63,-.63,.00,.00
1.00,1.00,1.00,-.66,-1.26,-1.26,-1.00,-1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:415"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_612
#AT_START_613
at_fn_group_banner 613 'descriptives.at:432' \
  "DESCRIPTIVES tutorial example" "                  " 47
at_xfail=no
(
  printf "%s\n" "613. $at_setup_line: testing $at_desc ..."
  $at_traceon

cp $top_srcdir/examples/physiology.sav .
cat >descriptives.sps <<'_ATEOF'
GET FILE='physiology.sav'.
DESCRIPTIVES sex, weight, height.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:438: pspp -o pspp.csv -o pspp.txt descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:438"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:438"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:439: cat pspp.csv"
at_fn_check_prepare_trace "descriptives.at:439"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
Sex of subject  ,40,.45,.50,Male,Female
Weight in kilograms ,40,72.12,26.70,-55.6,92.1
Height in millimeters   ,40,1677.12,262.87,179,1903
Valid N (listwise),40,,,,
Missing N (listwise),0,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/descriptives.at:439"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_613
#AT_START_614
at_fn_group_banner 614 'descriptives.at:450' \
  "DESCRIPTIVES syntax errors" "                     " 47
at_xfail=no
(
  printf "%s\n" "614. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >descriptives.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
DESCRIPTIVES MISSING=**.
DESCRIPTIVES FORMAT=**.
DESCRIPTIVES STATISTICS=**.
DESCRIPTIVES SORT=**.
DESCRIPTIVES SORT=NAME (**).
DESCRIPTIVES SORT=NAME (A **).
DESCRIPTIVES **.
DESCRIPTIVES x/ **.
DESCRIPTIVES MISSING=INCLUDE.
TEMPORARY.
NUMERIC Zx ZSC001 TO ZSC099 STDZ01 TO STDZ09 ZZZZ01 TO ZZZZ09 ZQZQ01 TO ZQZQ09.
DESCRIPTIVES x/SAVE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/descriptives.at:466: pspp descriptives.sps"
at_fn_check_prepare_trace "descriptives.at:466"
( $at_check_trace; pspp descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "descriptives.sps:2.22-2.23: error: DESCRIPTIVES: Syntax error expecting
VARIABLE, LISTWISE, or INCLUDE.
    2 | DESCRIPTIVES MISSING=**.
      |                      ^~

descriptives.sps:3.21-3.22: error: DESCRIPTIVES: Syntax error expecting LABELS,
NOLABELS, INDEX, NOINDEX, LINE, or SERIAL.
    3 | DESCRIPTIVES FORMAT=**.
      |                     ^~

descriptives.sps:5.19-5.20: error: DESCRIPTIVES: Syntax error expecting
variable name.
    5 | DESCRIPTIVES SORT=**.
      |                   ^~

descriptives.sps:6.25-6.26: error: DESCRIPTIVES: Syntax error expecting A or D.
    6 | DESCRIPTIVES SORT=NAME (**).
      |                         ^~

descriptives.sps:7.27-7.28: error: DESCRIPTIVES: Syntax error expecting \`)'.
    7 | DESCRIPTIVES SORT=NAME (A **).
      |                           ^~

descriptives.sps:8.14-8.15: error: DESCRIPTIVES: Syntax error expecting
variable name.
    8 | DESCRIPTIVES **.
      |              ^~

descriptives.sps:9.17-9.18: error: DESCRIPTIVES: Syntax error expecting
MISSING, SAVE, FORMAT, STATISTICS, SORT, or VARIABLES.
    9 | DESCRIPTIVES x/ **.
      |                 ^~

descriptives.sps:10: error: DESCRIPTIVES: No variables specified.

descriptives.sps:13: error: DESCRIPTIVES: Ran out of generic names for Z-score
variables.  There are only 126 generic names: ZSC001-ZSC099, STDZ01-STDZ09,
ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/descriptives.at:466"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_614
#AT_START_615
at_fn_group_banner 615 'do-if.at:19' \
  "DO IF" "                                          " 48
at_xfail=no
(
  printf "%s\n" "615. $at_setup_line: testing $at_desc ..."
  $at_traceon

(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
cat >do-if.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-if.at:64: pspp do-if.sps"
at_fn_check_prepare_trace "do-if.at:64"
( $at_check_trace; pspp do-if.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/do-if.at:64"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/do-if.at:65: cat do-if.out"
at_fn_check_prepare_trace "do-if.at:65"
( $at_check_trace; cat do-if.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-if.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_615
#AT_START_616
at_fn_group_banner 616 'do-if.at:68' \
  "DO IF - negative" "                               " 48
at_xfail=no
(
  printf "%s\n" "616. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >do-if.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/a b c.
BEGIN DATA.
1 2 3
END DATA.

END IF.
ELSE.
ELSE IF 1.

DO IF 0.
ELSE.
ELSE.
END IF.

DO IF 0.
ELSE.
ELSE IF 0.
END IF.

DO IF !.
END IF.

DO IF 0.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-if.at:94: pspp -O format=csv do-if.sps"
at_fn_check_prepare_trace "do-if.at:94"
( $at_check_trace; pspp -O format=csv do-if.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"do-if.sps:6.1-6.6: error: END IF: This command cannot appear outside DO IF...END IF.
    6 | END IF.
      | ^~~~~~\"

\"do-if.sps:7.1-7.4: error: ELSE: This command cannot appear outside DO IF...END IF.
    7 | ELSE.
      | ^~~~\"

\"do-if.sps:8.1-8.7: error: ELSE IF: This command cannot appear outside DO IF...END IF.
    8 | ELSE IF 1.
      | ^~~~~~~\"

\"do-if.sps:12.1-12.4: error: DO IF: Only one ELSE is allowed within DO IF...END IF.
   12 | ELSE.
      | ^~~~\"

\"do-if.sps:11.1-11.5: note: DO IF: This is the location of the previous ELSE clause.
   11 | ELSE.
      | ^~~~~\"

\"do-if.sps:10.1-10.8: note: DO IF: This is the location of the DO IF command.
   10 | DO IF 0.
      | ^~~~~~~~\"

\"do-if.sps:17.1-17.7: error: DO IF: ELSE IF is not allowed following ELSE within DO IF...END IF.
   17 | ELSE IF 0.
      | ^~~~~~~\"

\"do-if.sps:16.1-16.5: note: DO IF: This is the location of the previous ELSE clause.
   16 | ELSE.
      | ^~~~~\"

\"do-if.sps:15.1-15.8: note: DO IF: This is the location of the DO IF command.
   15 | DO IF 0.
      | ^~~~~~~~\"

\"do-if.sps:20.7: error: DO IF: Syntax error parsing expression.
   20 | DO IF !.
      |       ^\"

error: DO IF: At end of input: Syntax error expecting END IF.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/do-if.at:94"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_616
#AT_START_617
at_fn_group_banner 617 'do-repeat.at:19' \
  "DO REPEAT -- simple" "                            " 49
at_xfail=no
(
  printf "%s\n" "617. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >do-repeat.sps <<'_ATEOF'
INPUT PROGRAM.
STRING y(A1).
DO REPEAT xval = 1 2 3 / yval = 'a' 'b' 'c' / var = a b c.
COMPUTE x=xval.
COMPUTE y=yval.
COMPUTE var=xval.
END CASE.
END REPEAT PRINT.
END FILE.
END INPUT PROGRAM.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:33: pspp -o pspp.csv do-repeat.sps"
at_fn_check_prepare_trace "do-repeat.at:33"
( $at_check_trace; pspp -o pspp.csv do-repeat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:34: cat pspp.csv"
at_fn_check_prepare_trace "do-repeat.at:34"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "COMPUTE x=1.
COMPUTE y='a'.
COMPUTE a=1.
END CASE.

COMPUTE x=2.
COMPUTE y='b'.
COMPUTE b=2.
END CASE.

COMPUTE x=3.
COMPUTE y='c'.
COMPUTE c=3.
END CASE.

Table: Data List
y,x,a,b,c
a,1.00,1.00,.  ,.  
b,2.00,.  ,2.00,.  
c,3.00,.  ,.  ,3.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_617
#AT_START_618
at_fn_group_banner 618 'do-repeat.at:58' \
  "DO REPEAT -- containing BEGIN DATA" "             " 49
at_xfail=no
(
  printf "%s\n" "618. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >do-repeat.sps <<'_ATEOF'
DO REPEAT offset = 1 2 3.
DATA LIST NOTABLE /x 1-2.
BEGIN DATA.
10
20
30
END DATA.
COMPUTE x = x + offset.
LIST.
END REPEAT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:71: pspp -o pspp.csv do-repeat.sps"
at_fn_check_prepare_trace "do-repeat.at:71"
( $at_check_trace; pspp -o pspp.csv do-repeat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:72: cat pspp.csv"
at_fn_check_prepare_trace "do-repeat.at:72"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x
11
21
31

Table: Data List
x
12
22
32

Table: Data List
x
13
23
33
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:72"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_618
#AT_START_619
at_fn_group_banner 619 'do-repeat.at:93' \
  "DO REPEAT -- dummy vars not expanded in include files" "" 49
at_xfail=no
(
  printf "%s\n" "619. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >include.sps <<'_ATEOF'
COMPUTE y = y + x + 10.
_ATEOF

cat >do-repeat.sps <<'_ATEOF'
INPUT PROGRAM.
COMPUTE x = 0.
COMPUTE y = 0.
END CASE.
END FILE.
END INPUT PROGRAM.

DO REPEAT x = 1 2 3.
INCLUDE include.sps.
END REPEAT.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:111: pspp -o pspp.csv do-repeat.sps"
at_fn_check_prepare_trace "do-repeat.at:111"
( $at_check_trace; pspp -o pspp.csv do-repeat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "do-repeat.sps:8.11: warning: DO REPEAT: Dummy variable name \`x' hides dictionary variable \`x'.
    8 | DO REPEAT x = 1 2 3.
      |           ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:111"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:116: cat pspp.csv"
at_fn_check_prepare_trace "do-repeat.at:116"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"do-repeat.sps:8.11: warning: DO REPEAT: Dummy variable name \`x' hides dictionary variable \`x'.
    8 | DO REPEAT x = 1 2 3.
      |           ^\"

Table: Data List
x,y
.00,30.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_619
#AT_START_620
at_fn_group_banner 620 'do-repeat.at:127' \
  "DO REPEAT -- nested" "                            " 49
at_xfail=no
(
  printf "%s\n" "620. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >do-repeat.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:150: pspp -o pspp.csv do-repeat.sps"
at_fn_check_prepare_trace "do-repeat.at:150"
( $at_check_trace; pspp -o pspp.csv do-repeat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:150"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:151: cat pspp.csv"
at_fn_check_prepare_trace "do-repeat.at:151"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:151"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_620
#AT_START_621
at_fn_group_banner 621 'do-repeat.at:160' \
  "DO REPEAT -- empty" "                             " 49
at_xfail=no
(
  printf "%s\n" "621. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >do-repeat.sps <<'_ATEOF'
DATA LIST NOTABLE /a 1.
BEGIN DATA.
0
END DATA.

DO REPEAT h = a.
END REPEAT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:170: pspp -o pspp.csv do-repeat.sps"
at_fn_check_prepare_trace "do-repeat.at:170"
( $at_check_trace; pspp -o pspp.csv do-repeat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:170"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:171: cat pspp.csv"
at_fn_check_prepare_trace "do-repeat.at:171"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:171"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_621
#AT_START_622
at_fn_group_banner 622 'do-repeat.at:177' \
  "DO REPEAT -- missing END REPEAT" "                " 49
at_xfail=no
(
  printf "%s\n" "622. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >do-repeat.sps <<'_ATEOF'
DATA LIST NOTABLE /x 1.
DO REPEAT y = 1 TO 10.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:182: pspp -O format=csv do-repeat.sps"
at_fn_check_prepare_trace "do-repeat.at:182"
( $at_check_trace; pspp -O format=csv do-repeat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: DO REPEAT: At end of input: Syntax error expecting END REPEAT.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/do-repeat.at:182"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_622
#AT_START_623
at_fn_group_banner 623 'do-repeat.at:187' \
  "DO REPEAT -- syntax errors" "                     " 49
at_xfail=no
(
  printf "%s\n" "623. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >do-repeat.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x.
DO REPEAT **.
END REPEAT.
DO REPEAT x **.
END REPEAT.
DO REPEAT y=1/y=2.
END REPEAT.
DO REPEAT y=a b c **.
END REPEAT.
DO REPEAT y=1 2 **.
END REPEAT.
DO REPEAT y='a' 'b' **.
END REPEAT.
DO REPEAT y=**.
END REPEAT.
DO REPEAT y=1 2 3/z=4.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='do-repeat.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:209: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "do-repeat.at:209"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"do-repeat.sps:2.11-2.12: error: DO REPEAT: Syntax error expecting identifier.
    2 | DO REPEAT **.
      |           ^~\"

\"do-repeat.sps:4.11: warning: DO REPEAT: Dummy variable name \`x' hides dictionary variable \`x'.
    4 | DO REPEAT x **.
      |           ^\"

\"do-repeat.sps:4.13-4.14: error: DO REPEAT: Syntax error expecting \`='.
    4 | DO REPEAT x **.
      |             ^~\"

\"do-repeat.sps:6.15: error: DO REPEAT: Dummy variable name \`y' is given twice.
    6 | DO REPEAT y=1/y=2.
      |               ^\"

\"do-repeat.sps:8.19-8.20: error: DO REPEAT: Syntax error expecting \`/' or end of command.
    8 | DO REPEAT y=a b c **.
      |                   ^~\"

\"do-repeat.sps:10.17-10.18: error: DO REPEAT: Syntax error expecting number.
   10 | DO REPEAT y=1 2 **.
      |                 ^~\"

\"do-repeat.sps:12.21-12.22: error: DO REPEAT: Syntax error expecting string.
   12 | DO REPEAT y='a' 'b' **.
      |                     ^~\"

\"do-repeat.sps:14.13-14.14: error: DO REPEAT: Syntax error expecting substitution values.
   14 | DO REPEAT y=**.
      |             ^~\"

do-repeat.sps:16: error: DO REPEAT: Each dummy variable must have the same number of substitutions.

\"do-repeat.sps:16.11-16.17: note: DO REPEAT: Dummy variable y had 3 substitutions.
   16 | DO REPEAT y=1 2 3/z=4.
      |           ^~~~~~~\"

\"do-repeat.sps:16.19-16.21: note: DO REPEAT: Dummy variable z had 1 substitution.
   16 | DO REPEAT y=1 2 3/z=4.
      |                   ^~~\"

error: DO REPEAT: At end of input: Syntax error expecting END REPEAT.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/do-repeat.at:209"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_623
#AT_START_624
at_fn_group_banner 624 'do-repeat.at:256' \
  "DO REPEAT -- duplicate substitutions" "           " 49
at_xfail=no
(
  printf "%s\n" "624. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >do-repeat.sps <<'_ATEOF'
DATA LIST LIST NOTABLE / numer1 numer2 denom1.
BEGIN DATA
30 25 100
20 15 100
10 40 100
20 10 100
END DATA.

* Check that duplicates are OK for both existing (denom1)
  and nonexistent (perc1) variables.
DO REPEAT n=numer1 numer2
     /d = denom1 denom1
     /p = perc1 perc1.
   COMPUTE p = n / d * 100.
END REPEAT PRINT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/do-repeat.at:274: pspp do-repeat.sps"
at_fn_check_prepare_trace "do-repeat.at:274"
( $at_check_trace; pspp do-repeat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "   COMPUTE perc1 = numer1 / denom1 * 100.

   COMPUTE perc1 = numer2 / denom1 * 100.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/do-repeat.at:274"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_624
#AT_START_625
at_fn_group_banner 625 'examine.at:19' \
  "EXAMINE" "                                        " 50
at_xfail=no
(
  printf "%s\n" "625. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'

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)
	.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/examine.at:60: pspp -O format=csv examine.sps"
at_fn_check_prepare_trace "examine.at:60"
( $at_check_trace; pspp -O format=csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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.0%,.00,.0%,24.00,100.0%

Table: Extreme Values
,,,Case Number,Value
Breaking Strain,Highest,1,12,7.00
,,2,16,6.00
,,3,14,5.00
,Lowest,1,3,1.00
,,2,4,1.00
,,3,2,2.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
,Manufacturer,Cases,,,,,
,,Valid,,Missing,,Total,
,,N,Percent,N,Percent,N,Percent
Breaking Strain,Aspeger,8.00,100.0%,.00,.0%,8.00,100.0%
,Bloggs,8.00,100.0%,.00,.0%,8.00,100.0%
,Charlies,8.00,100.0%,.00,.0%,8.00,100.0%

Table: Extreme Values
,Manufacturer,,,Case Number,Value
Breaking Strain,Aspeger,Highest,1,6,4.00
,,,2,5,4.00
,,,3,1,3.00
,,Lowest,1,3,1.00
,,,2,4,1.00
,,,3,2,2.00
,Bloggs,Highest,1,7,5.00
,,,2,9,4.00
,,,3,11,3.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,14,5.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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_625
#AT_START_626
at_fn_group_banner 626 'examine.at:191' \
  "EXAMINE -- extremes" "                            " 50
at_xfail=no
(
  printf "%s\n" "626. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
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)
 .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:226: pspp -O format=csv examine.sps"
at_fn_check_prepare_trace "examine.at:226"
( $at_check_trace; pspp -O format=csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
V1,23.00,100.0%,.00,.0%,23.00,100.0%

Table: Extreme Values
,,,Case Number,Value
V1,Highest,1,21,20.00
,,2,20,19.00
,,3,19,18.00
,,4,18,17.00
,,5,17,16.00
,,6,16,15.00
,Lowest,1,1,1.00
,,2,2,2.00
,,3,3,3.00
,,4,4,3.00
,,5,5,4.00
,,6,6,5.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:226"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_626
#AT_START_627
at_fn_group_banner 627 'examine.at:252' \
  "EXAMINE -- extremes with fractional weights" "    " 50
at_xfail=no
(
  printf "%s\n" "627. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >extreme.sps <<'_ATEOF'
set format=F20.3.
data list notable list /w * x *.
begin data.
 0.88  300000
 0.86  320000
 0.98  480000
 0.93  960000
 1.35  960000
 1.31  960000
 0.88  960000
 0.88  1080000
 0.88  1080000
 0.95  1200000
 1.47  1200000
 0.93  1200000
 0.98  1320000
 1.31  1380000
 0.93  1440000
 0.88  1560000
 1.56  1560000
 1.47  1560000
end data.

weight by w.


EXAMINE
        x
        /STATISTICS = DESCRIPTIVES EXTREME (5)
        .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:287: pspp -O format=csv  extreme.sps"
at_fn_check_prepare_trace "examine.at:287"
( $at_check_trace; pspp -O format=csv  extreme.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x,19.430,100.0%,.000,.0%,19.430,100.0%

Table: Extreme Values
,,,Case Number,Value
x,Highest,1,18,1560000.000
,,2,17,1560000.000
,,3,16,1560000.000
,,4,15,1440000.000
,,5,14,1380000.000
,Lowest,1,1,300000.000
,,2,2,320000.000
,,3,3,480000.000
,,4,4,960000.000
,,5,5,960000.000

Table: Descriptives
,,,Statistic,Std. Error
x,Mean,,1120010.293,86222.178
,95% Confidence Interval for Mean,Lower Bound,939166.693,
,,Upper Bound,1300853.894,
,5% Trimmed Mean,,1141017.899,
,Median,,1200000.000,
,Variance,,144447748124.869,
,Std. Deviation,,380062.821,
,Minimum,,300000.000,
,Maximum,,1560000.000,
,Range,,1260000.000,
,Interquartile Range,,467258.065,
,Skewness,,-.887,.519
,Kurtosis,,.340,1.005
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:287"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_627
#AT_START_628
at_fn_group_banner 628 'examine.at:329' \
  "EXAMINE -- percentiles" "                         " 50
at_xfail=no
(
  printf "%s\n" "628. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:354: pspp -o pspp.csv -o pspp.txt examine.sps"
at_fn_check_prepare_trace "examine.at:354"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:354"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/examine.at:355: cat pspp.csv"
at_fn_check_prepare_trace "examine.at:355"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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,.0%,3,100.0%

Table: Percentiles
,,Percentiles,,,,,,
,,5,10,25,50,75,90,95
X,Weighted Average,.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,.0%,3,100.0%

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,.0%,3,100.0%

Table: Percentiles
,,Percentiles,,,,,,
,,5,10,25,50,75,90,95
X,Weighted Average,.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,.0%,3,100.0%

Table: Percentiles
,,Percentiles,,,,,,
,,5,10,25,50,75,90,95
X,Weighted Average,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,.0%,3,100.0%

Table: Percentiles
,,Percentiles,,,,,,
,,5,10,25,50,75,90,95
X,Weighted Average,2.00,2.00,2.00,5.00,8.00,8.00,8.00
,Tukey's Hinges,,,3.50,5.00,6.50,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:355"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_628
#AT_START_629
at_fn_group_banner 629 'examine.at:422' \
  "EXAMINE -- missing values" "                      " 50
at_xfail=no
(
  printf "%s\n" "629. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
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
        /MISSING = PAIRWISE
        .
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:440: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:440"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:440"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/examine.at:441: cat pspp.csv"
at_fn_check_prepare_trace "examine.at:441"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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.7%,1,14.3%,7,100.0%

Table: Case Processing Summary
,y,Cases,,,,,
,,Valid,,Missing,,Total,
,,N,Percent,N,Percent,N,Percent
x,1.00,4,100.0%,0,.0%,4,100.0%
,2.00,2,66.7%,1,33.3%,3,100.0%
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:441"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_629
#AT_START_630
at_fn_group_banner 630 'examine.at:463' \
  "EXAMINE -- user missing values" "                 " 50
at_xfail=no
(
  printf "%s\n" "630. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine-m.sps <<'_ATEOF'
DATA LIST notable LIST /x * y *.
BEGIN DATA.
1                   2
9999999999          2
9999999999          99
END DATA.

MISSING VALUES x (9999999999).
MISSING VALUES y (99).

EXAMINE
	/VARIABLES= x y
	/MISSING=PAIRWISE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:480: pspp -O format=csv examine-m.sps"
at_fn_check_prepare_trace "examine.at:480"
( $at_check_trace; pspp -O format=csv examine-m.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x,1,33.3%,2,66.7%,3,100.0%
y,2,66.7%,1,33.3%,3,100.0%
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:480"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_630
#AT_START_631
at_fn_group_banner 631 'examine.at:490' \
  "EXAMINE -- missing values and percentiles" "      " 50
at_xfail=no
(
  printf "%s\n" "631. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
DATA LIST LIST /X *.
BEGIN DATA.
99
99
5.00
END DATA.

MISSING VALUE X (99).

EXAMINE /x
        /PERCENTILES=HAVERAGE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:505: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:505"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:505"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_631
#AT_START_632
at_fn_group_banner 632 'examine.at:511' \
  "EXAMINE -- trimmed mean" "                        " 50
at_xfail=no
(
  printf "%s\n" "632. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
DATA LIST LIST /X * C *.
BEGIN DATA.
1 1
2 49
3 2
END DATA.

WEIGHT BY c.

EXAMINE
	x
	/STATISTICS=DESCRIPTIVES
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:528: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:528"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:528"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/examine.at:529: cat pspp.csv"
at_fn_check_prepare_trace "examine.at:529"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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.0%,.00,.0%,52.00,100.0%

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:529"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_632
#AT_START_633
at_fn_group_banner 633 'examine.at:559' \
  "EXAMINE -- crash bug" "                           " 50
at_xfail=no
(
  printf "%s\n" "633. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:573: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:573"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:573"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_633
#AT_START_634
at_fn_group_banner 634 'examine.at:578' \
  "EXAMINE -- consecutive runs don't crash" "        " 50
at_xfail=no
(
  printf "%s\n" "634. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
data list list /y * z *.
begin data.
6 4
5 3
7 6
end data.

EXAMINE /VARIABLES= z BY y.

EXAMINE /VARIABLES= z.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:592: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:592"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:592"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_634
#AT_START_635
at_fn_group_banner 635 'examine.at:597' \
  "EXAMINE -- missing values don't crash" "          " 50
at_xfail=no
(
  printf "%s\n" "635. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
data list list /x * y *.
begin data.
1 0
2 0
. 0
3 1
4 1
end data.
examine x by y /statistics=descriptives.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:610: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:610"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:610"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_635
#AT_START_636
at_fn_group_banner 636 'examine.at:615' \
  "EXAMINE -- single case doesn't crash" "           " 50
at_xfail=no
(
  printf "%s\n" "636. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
DATA LIST LIST /quality * .
BEGIN DATA
3
END DATA


EXAMINE
	quality
	/STATISTICS descriptives
        /PLOT = histogram
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:630: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:630"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:630"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_636
#AT_START_637
at_fn_group_banner 637 'examine.at:635' \
  "EXAMINE -- all-missing data doesn't crash" "      " 50
at_xfail=no
(
  printf "%s\n" "637. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
DATA LIST LIST /x *.
BEGIN DATA.
.
.
.
.
END DATA.

EXAMINE /x
	PLOT=HISTOGRAM BOXPLOT NPPLOT SPREADLEVEL(1) ALL
	/ID=x
        /STATISTICS = DESCRIPTIVES EXTREME (5) ALL
	/PERCENTILE=AEMPIRICAL
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:653: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:653"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:653"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_637
#AT_START_638
at_fn_group_banner 638 'examine.at:658' \
  "EXAMINE -- big input doesn't crash" "             " 50
at_xfail=no
(
  printf "%s\n" "638. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >examine.sps <<'_ATEOF'
INPUT PROGRAM.
	LOOP #I=1 TO 50000.
		COMPUTE X=NORMAL(10).
		END CASE.
	END LOOP.
	END FILE.
END INPUT PROGRAM.


EXAMINE /x
	/STATISTICS=DESCRIPTIVES.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:673: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:673"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:673"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_638
#AT_START_639
at_fn_group_banner 639 'examine.at:679' \
  "EXAMINE -- big input doesn't crash 2" "           " 50
at_xfail=no
(
  printf "%s\n" "639. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/examine.at:681: \$PYTHON3 -c '
for i in range(100000): print(\"AB12\")
for i in range(100000): print(\"AB04\")
' > large.txt"
at_fn_check_prepare_notrace 'an embedded newline' "examine.at:681"
( $at_check_trace; $PYTHON3 -c '
for i in range(100000): print("AB12")
for i in range(100000): print("AB04")
' > large.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:681"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >examine.sps <<'_ATEOF'
DATA LIST FILE='large.txt' /S 1-2 (A) X 3 .


AGGREGATE OUTFILE=* /BREAK=X /A=N.


EXAMINE /A BY X.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:694: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:694"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:694"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/examine.at:696: \$PYTHON3 -c 'for i in range(25000): print(\"AB04\\nAB12\")' >> large.txt"
at_fn_check_prepare_dynamic "$PYTHON3 -c 'for i in range(25000): print(\"AB04\\nAB12\")' >> large.txt" "examine.at:696"
( $at_check_trace; $PYTHON3 -c 'for i in range(25000): print("AB04\nAB12")' >> large.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:696"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/examine.at:697: pspp -o pspp.csv examine.sps"
at_fn_check_prepare_trace "examine.at:697"
( $at_check_trace; pspp -o pspp.csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:697"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_639
#AT_START_640
at_fn_group_banner 640 'examine.at:703' \
  "EXAMINE -- non-numeric ID" "                      " 50
at_xfail=no
(
  printf "%s\n" "640. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >examine-id.sps <<'_ATEOF'
data list notable list /x * y (a12).
begin data.
1  one
2  two
3  three
4  four
5  five
6  six
7  seven
8  eight
9  nine
10 ten
11 eleven
12 twelve
30 thirty
300 threehundred
end data.

set small=0.
examine x
	/statistics = extreme
	/id = y
	/plot = boxplot
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:733: pspp -O format=csv examine-id.sps"
at_fn_check_prepare_trace "examine.at:733"
( $at_check_trace; pspp -O format=csv examine-id.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x,14,100.0%,0,.0%,14,100.0%

Table: Extreme Values
,,,y,Value
x,Highest,1,threehundred,300.00
,,2,thirty,30.00
,,3,twelve,12.00
,,4,eleven,11.00
,,5,ten,10.00
,Lowest,1,one,1.00
,,2,two,2.00
,,3,three,3.00
,,4,four,4.00
,,5,five,5.00

Table: Tests of Normality
,Shapiro-Wilk,,
,Statistic,df,Sig.
x,.37,14,.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:733"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_640
#AT_START_641
at_fn_group_banner 641 'examine.at:762' \
  "EXAMINE -- Bad Input" "                           " 50
at_xfail=no
(
  printf "%s\n" "641. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >examine-bad.sps <<'_ATEOF'
data list list /h * g *.
begin data.
1 1
2 1
3 1
4 1
5 2
6 2
7 2
8 2
9 2
end data.

EXAMINE
	/VARIABLES= h
	BY  g
	/STATISTICS = DESCRIPTIVES EXTREME
        /PLOT = lkajsdas
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:787: pspp -o pspp.csv examine-bad.sps"
at_fn_check_prepare_trace "examine.at:787"
( $at_check_trace; pspp -o pspp.csv examine-bad.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/examine.at:787"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_641
#AT_START_642
at_fn_group_banner 642 'examine.at:793' \
  "EXAMINE -- MISSING=REPORT" "                      " 50
at_xfail=no
(
  printf "%s\n" "642. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >examine-report.sps <<'_ATEOF'
set format = F22.0.
data list list /x * g *.
begin data.
1   1
2   1
3   1
4   1
5   1
6   1
7   1
8   1
9   1
10   2
20   2
30   2
40   2
50   2
60   2
70   2
80   2
90   2
101   9
201   9
301   9
401   9
501   99
601   99
701   99
801   99
901   99
1001  .
2002  .
3003  .
4004  .
end data.

MISSING VALUES g (9, 99, 999).

EXAMINE
        /VARIABLES = x
        BY  g
        /STATISTICS = EXTREME
        /NOTOTAL
        /MISSING = REPORT.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/examine.at:844: pspp -o pspp.csv -o pspp.txt examine-report.sps"
at_fn_check_prepare_trace "examine.at:844"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt examine-report.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:844"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/examine.at:845: cat pspp.csv"
at_fn_check_prepare_trace "examine.at:845"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0
g,F8.0

Table: Case Processing Summary
,g,Cases,,,,,
,,Valid,,Missing,,Total,
,,N,Percent,N,Percent,N,Percent
x,.,4,100.0%,0,.0%,4,100.0%
,1,9,100.0%,0,.0%,9,100.0%
,2,9,100.0%,0,.0%,9,100.0%
,9[a],4,100.0%,0,.0%,4,100.0%
,99[a],5,100.0%,0,.0%,5,100.0%
Footnote: a. User-missing value.

Table: Extreme Values
,g,,,Case Number,Value
x,.,Highest,1,31,4004
,,,2,30,3003
,,,3,29,2002
,,,4,28,1001
,,,5,0,0
,,Lowest,1,28,1001
,,,2,29,2002
,,,3,30,3003
,,,4,31,4004
,,,5,31,4004
,1,Highest,1,9,9
,,,2,8,8
,,,3,7,7
,,,4,6,6
,,,5,5,5
,,Lowest,1,1,1
,,,2,2,2
,,,3,3,3
,,,4,4,4
,,,5,5,5
,2,Highest,1,18,90
,,,2,17,80
,,,3,16,70
,,,4,15,60
,,,5,14,50
,,Lowest,1,10,10
,,,2,11,20
,,,3,12,30
,,,4,13,40
,,,5,14,50
,9[a],Highest,1,22,401
,,,2,21,301
,,,3,20,201
,,,4,19,101
,,,5,0,0
,,Lowest,1,19,101
,,,2,20,201
,,,3,21,301
,,,4,22,401
,,,5,22,401
,99[a],Highest,1,27,901
,,,2,26,801
,,,3,25,701
,,,4,24,601
,,,5,23,501
,,Lowest,1,23,501
,,,2,24,601
,,,3,25,701
,,,4,26,801
,,,5,27,901
Footnote: a. User-missing value.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:845"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_642
#AT_START_643
at_fn_group_banner 643 'examine.at:923' \
  "EXAMINE -- sample unweighted" "                   " 50
at_xfail=no
(
  printf "%s\n" "643. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >sample.sps <<'_ATEOF'
set format = F22.4.
DATA LIST notable LIST /X *
BEGIN DATA.
461.19000000
466.38000000
479.46000000
480.10000000
483.43000000
488.30000000
489.00000000
491.62000000
505.62000000
511.30000000
521.53000000
526.70000000
528.25000000
538.70000000
540.22000000
540.58000000
546.10000000
548.17000000
553.99000000
566.21000000
575.90000000
584.38000000
593.40000000
357.05000000
359.73000000
360.48000000
373.98000000
374.13000000
381.45000000
383.72000000
390.00000000
400.34000000
415.32000000
415.91000000
418.30000000
421.03000000
422.43000000
426.93000000
433.25000000
436.89000000
445.33000000
446.33000000
446.55000000
456.44000000
689.49000000
691.92000000
695.00000000
695.36000000
698.21000000
699.46000000
706.61000000
710.69000000
715.82000000
715.82000000
741.39000000
752.27000000
756.73000000
757.74000000
759.57000000
796.07000000
813.78000000
817.25000000
825.48000000
831.28000000
849.24000000
890.00000000
894.78000000
935.65000000
935.90000000
945.90000000
1012.8600000
1022.6000000
1061.8100000
1063.5000000
1077.2300000
1151.6300000
1355.2800000
598.88000000
606.91000000
621.60000000
624.80000000
636.13000000
637.38000000
640.32000000
649.35000000
656.51000000
662.55000000
664.69000000
106.22000000
132.24000000
174.76000000
204.85000000
264.93000000
264.99000000
269.84000000
325.12000000
331.67000000
337.26000000
347.68000000
354.91000000
END DATA.

EXAMINE
	x
	/STATISTICS=DESCRIPTIVES
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:1038: pspp -O format=csv sample.sps"
at_fn_check_prepare_trace "examine.at:1038"
( $at_check_trace; pspp -O format=csv sample.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
X,100,100.0%,0,.0%,100,100.0%

Table: Descriptives
,,,Statistic,Std. Error
X,Mean,,587.6603,23.2665
,95% Confidence Interval for Mean,Lower Bound,541.4946,
,,Upper Bound,633.8260,
,5% Trimmed Mean,,579.7064,
,Median,,547.1350,
,Variance,,54132.8466,
,Std. Deviation,,232.6647,
,Minimum,,106.2200,
,Maximum,,1355.2800,
,Range,,1249.0600,
,Interquartile Range,,293.1575,
,Skewness,,.6331,.2414
,Kurtosis,,.5300,.4783
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:1038"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_643
#AT_START_644
at_fn_group_banner 644 'examine.at:1067' \
  "EXAMINE -- Empty Parentheses" "                   " 50
at_xfail=no
(
  printf "%s\n" "644. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >examine-empty-parens.sps <<'_ATEOF'
DATA LIST notable LIST /X *
BEGIN DATA.
2
3
END DATA.


EXAMINE
	x
	/PLOT = SPREADLEVEL()
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:1084: pspp -o pspp.csv examine-empty-parens.sps"
at_fn_check_prepare_trace "examine.at:1084"
( $at_check_trace; pspp -o pspp.csv examine-empty-parens.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/examine.at:1084"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_644
#AT_START_645
at_fn_group_banner 645 'examine.at:1092' \
  "EXAMINE -- Bad variable" "                        " 50
at_xfail=no
(
  printf "%s\n" "645. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >examine-bad-variable.sps <<'_ATEOF'
data list list /h * g *.
begin data.
3 1
4 1
5 2
end data.

EXAMINE
        /VARIABLES/ h
        BY  g
        .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:1109: pspp -o pspp.csv examine-bad-variable.sps"
at_fn_check_prepare_trace "examine.at:1109"
( $at_check_trace; pspp -o pspp.csv examine-bad-variable.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/examine.at:1109"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_645
#AT_START_646
at_fn_group_banner 646 'examine.at:1116' \
  "EXAMINE -- Extremes vs. Missing Weights" "        " 50
at_xfail=no
(
  printf "%s\n" "646. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >examine-missing-weights.sps <<'_ATEOF'
data list notable list /h * g *.
begin data.
3 1
4 .
5 1
2 1
end data.

WEIGHT BY g.

EXAMINE h
	/STATISTICS extreme(3)
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:1135: pspp -O format=csv  examine-missing-weights.sps"
at_fn_check_prepare_trace "examine.at:1135"
( $at_check_trace; pspp -O format=csv  examine-missing-weights.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"examine-missing-weights.sps:13: warning: EXAMINE: 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.\"

Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
h,3.00,100.0%,.00,.0%,3.00,100.0%

Table: Extreme Values
,,,Case Number,Value
h,Highest,1,3,5.00
,,2,2,4.00
,,3,1,3.00
,Lowest,1,4,2.00
,,2,1,3.00
,,3,2,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:1135"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_646
#AT_START_647
at_fn_group_banner 647 'examine.at:1159' \
  "EXAMINE tutorial example 1" "                     " 50
at_xfail=no
(
  printf "%s\n" "647. $at_setup_line: testing $at_desc ..."
  $at_traceon

cp $top_srcdir/examples/repairs.sav .
cat >repairs.sps <<'_ATEOF'
GET FILE='repairs.sav'.
EXAMINE mtbf /STATISTICS=DESCRIPTIVES.
COMPUTE mtbf_ln = LN (mtbf).
EXAMINE mtbf_ln /STATISTICS=DESCRIPTIVES.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:1168: pspp -O format=csv repairs.sps"
at_fn_check_prepare_trace "examine.at:1168"
( $at_check_trace; pspp -O format=csv repairs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
Mean time between failures (months) ,30,100.0%,0,.0%,30,100.0%

Table: Descriptives
,,,Statistic,Std. Error
Mean time between failures (months) ,Mean,,8.78,1.10
,95% Confidence Interval for Mean,Lower Bound,6.53,
,,Upper Bound,11.04,
,5% Trimmed Mean,,8.20,
,Median,,8.29,
,Variance,,36.34,
,Std. Deviation,,6.03,
,Minimum,,1.63,
,Maximum,,26.47,
,Range,,24.84,
,Interquartile Range,,6.03,
,Skewness,,1.65,.43
,Kurtosis,,3.41,.83

Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
mtbf_ln,30,100.0%,0,.0%,30,100.0%

Table: Descriptives
,,,Statistic,Std. Error
mtbf_ln,Mean,,1.95,.13
,95% Confidence Interval for Mean,Lower Bound,1.69,
,,Upper Bound,2.22,
,5% Trimmed Mean,,1.96,
,Median,,2.11,
,Variance,,.49,
,Std. Deviation,,.70,
,Minimum,,.49,
,Maximum,,3.28,
,Range,,2.79,
,Interquartile Range,,.88,
,Skewness,,-.37,.43
,Kurtosis,,.01,.83
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:1168"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_647
#AT_START_648
at_fn_group_banner 648 'examine.at:1219' \
  "EXAMINE tutorial example 2" "                     " 50
at_xfail=no
(
  printf "%s\n" "648. $at_setup_line: testing $at_desc ..."
  $at_traceon

cp $top_srcdir/examples/physiology.sav .
cat >examine.sps <<'_ATEOF'
GET FILE='physiology.sav'.
EXAMINE height, weight /STATISTICS=EXTREME(3).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:1225: pspp -o pspp.csv -o pspp.txt examine.sps"
at_fn_check_prepare_trace "examine.at:1225"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:1225"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/examine.at:1226: cat pspp.csv"
at_fn_check_prepare_trace "examine.at:1226"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
Height in millimeters   ,40,100.0%,0,.0%,40,100.0%
Weight in kilograms ,40,100.0%,0,.0%,40,100.0%

Table: Extreme Values
,,,Case Number,Value
Height in millimeters   ,Highest,1,14,1903
,,2,15,1884
,,3,12,1802
,Lowest,1,30,179
,,2,31,1598
,,3,28,1601
Weight in kilograms ,Highest,1,13,92.1
,,2,5,92.1
,,3,17,91.7
,Lowest,1,38,-55.6
,,2,39,54.5
,,3,33,55.4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:1226"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_648
#AT_START_649
at_fn_group_banner 649 'examine.at:1253' \
  "EXAMINE -- Crash on unrepresentable graphs" "     " 50
at_xfail=no
(
  printf "%s\n" "649. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >examine.sps <<'_ATEOF'
data list notable list /x * g *.
begin data.
96 1
end data.

examine x  by g
        /nototal
        /plot = all.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:1265: pspp -O format=pdf examine.sps"
at_fn_check_prepare_trace "examine.at:1265"
( $at_check_trace; pspp -O format=pdf examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:1265"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_649
#AT_START_650
at_fn_group_banner 650 'examine.at:1271' \
  "EXAMINE -- shapiro-wilk 1" "                      " 50
at_xfail=no
(
  printf "%s\n" "650. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >shapiro-wilk.sps <<'_ATEOF'
data list notable list /x * g *.
begin data.
96 1
98 1
95 1
89 1
90 1
92 1
94 1
93 1
97 1
100 1
99 2
96 2
80 2
89 2
91 2
92 2
93 2
94 2
99 2
80 2
end data.

set format F22.3.

examine x  by g
	/nototal
	/plot = all.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:1305: pspp -O format=csv shapiro-wilk.sps"
at_fn_check_prepare_trace "examine.at:1305"
( $at_check_trace; pspp -O format=csv shapiro-wilk.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,g,Cases,,,,,
,,Valid,,Missing,,Total,
,,N,Percent,N,Percent,N,Percent
x,1.00,10,100.0%,0,.0%,10,100.0%
,2.00,10,100.0%,0,.0%,10,100.0%

Table: Tests of Normality
,g,Shapiro-Wilk,,
,,Statistic,df,Sig.
x,1.00,.984,10,.983
,2.00,.882,10,.136
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:1305"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_650
#AT_START_651
at_fn_group_banner 651 'examine.at:1327' \
  "EXAMINE -- shapiro-wilk 2" "                      " 50
at_xfail=no
(
  printf "%s\n" "651. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >shapiro-wilk2.sps <<'_ATEOF'
data list notable list /x *.
begin data.
65
61
63
86
70
55
74
35
72
68
45
58
end data.

set format F22.3.

examine x
	/plot = boxplot.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/examine.at:1352: pspp -O format=csv shapiro-wilk2.sps"
at_fn_check_prepare_trace "examine.at:1352"
( $at_check_trace; pspp -O format=csv shapiro-wilk2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Valid,,Missing,,Total,
,N,Percent,N,Percent,N,Percent
x,12,100.0%,0,.0%,12,100.0%

Table: Tests of Normality
,Shapiro-Wilk,,
,Statistic,df,Sig.
x,.971,12,.922
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/examine.at:1352"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_651
#AT_START_652
at_fn_group_banner 652 'examine.at:1367' \
  "EXAMINE syntax errors" "                          " 50
at_xfail=no
(
  printf "%s\n" "652. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >examine.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
EXAMINE VARIABLES **.
EXAMINE **.
EXAMINE x BY **.
EXAMINE x/STATISTICS EXTREME (**).
EXAMINE x/STATISTICS EXTREME (5 **).
EXAMINE x/STATISTICS **.
EXAMINE x/PERCENTILES(111).
EXAMINE x/PERCENTILES(**).
EXAMINE x/PERCENTILES **.
EXAMINE x/MISSING **.
EXAMINE x/COMPARE **.
EXAMINE x/PLOT SPREADLEVEL(**).
EXAMINE x/PLOT SPREADLEVEL(123 **).
EXAMINE x/PLOT **.
EXAMINE x/CINTERVAL **.
EXAMINE x/ **.
EXAMINE x/TOTAL/NOTOTAL.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/examine.at:1388: pspp -O format=csv examine.sps"
at_fn_check_prepare_trace "examine.at:1388"
( $at_check_trace; pspp -O format=csv examine.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"examine.sps:2.19-2.20: error: EXAMINE: Syntax error expecting \`='.
    2 | EXAMINE VARIABLES **.
      |                   ^~\"

\"examine.sps:3.9-3.10: error: EXAMINE: Syntax error expecting variable name.
    3 | EXAMINE **.
      |         ^~\"

\"examine.sps:4.14-4.15: error: EXAMINE: Syntax error expecting one of the following: STATISTICS, PERCENTILES, TOTAL, NOTOTAL, MISSING, COMPARE, PLOT, CINTERVAL, ID.
    4 | EXAMINE x BY **.
      |              ^~\"

\"examine.sps:5.31-5.32: error: EXAMINE: Syntax error expecting non-negative integer for EXTREME.
    5 | EXAMINE x/STATISTICS EXTREME (**).
      |                               ^~\"

\"examine.sps:6.33-6.34: error: EXAMINE: Syntax error expecting \`)'.
    6 | EXAMINE x/STATISTICS EXTREME (5 **).
      |                                 ^~\"

\"examine.sps:7.22-7.23: error: EXAMINE: Syntax error expecting DESCRIPTIVES, EXTREME, NONE, or ALL.
    7 | EXAMINE x/STATISTICS **.
      |                      ^~\"

\"examine.sps:8.23-8.25: error: EXAMINE: Syntax error expecting number in (0,100) for PERCENTILES.
    8 | EXAMINE x/PERCENTILES(111).
      |                       ^~~\"

\"examine.sps:9.23-9.24: error: EXAMINE: Syntax error expecting \`)'.
    9 | EXAMINE x/PERCENTILES(**).
      |                       ^~\"

\"examine.sps:10.23-10.24: error: EXAMINE: Syntax error expecting HAVERAGE, WAVERAGE, ROUND, EMPIRICAL, AEMPIRICAL, or NONE.
   10 | EXAMINE x/PERCENTILES **.
      |                       ^~\"

\"examine.sps:11.19-11.20: error: EXAMINE: Syntax error expecting LISTWISE, PAIRWISE, EXCLUDE, INCLUDE, REPORT, or NOREPORT.
   11 | EXAMINE x/MISSING **.
      |                   ^~\"

\"examine.sps:12.19-12.20: error: EXAMINE: Syntax error expecting VARIABLES or GROUPS.
   12 | EXAMINE x/COMPARE **.
      |                   ^~\"

\"examine.sps:13.28-13.29: error: EXAMINE: Syntax error expecting number.
   13 | EXAMINE x/PLOT SPREADLEVEL(**).
      |                            ^~\"

\"examine.sps:13.28-13.29: error: EXAMINE: Syntax error expecting BOXPLOT, NPPLOT, HISTOGRAM, SPREADLEVEL, NONE, or ALL.
   13 | EXAMINE x/PLOT SPREADLEVEL(**).
      |                            ^~\"

\"examine.sps:14.32-14.33: error: EXAMINE: Syntax error expecting \`)'.
   14 | EXAMINE x/PLOT SPREADLEVEL(123 **).
      |                                ^~\"

\"examine.sps:15.16-15.17: error: EXAMINE: Syntax error expecting BOXPLOT, NPPLOT, HISTOGRAM, SPREADLEVEL, NONE, or ALL.
   15 | EXAMINE x/PLOT **.
      |                ^~\"

\"examine.sps:16.21-16.22: error: EXAMINE: Syntax error expecting number.
   16 | EXAMINE x/CINTERVAL **.
      |                     ^~\"

\"examine.sps:17.12-17.13: error: EXAMINE: Syntax error expecting one of the following: STATISTICS, PERCENTILES, TOTAL, NOTOTAL, MISSING, COMPARE, PLOT, CINTERVAL, ID.
   17 | EXAMINE x/ **.
      |            ^~\"

\"examine.sps:18.17-18.23: error: EXAMINE: TOTAL and NOTOTAL are mutually exclusive.
   18 | EXAMINE x/TOTAL/NOTOTAL.
      |                 ^~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/examine.at:1388"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_652
#AT_START_653
at_fn_group_banner 653 'factor.at:19' \
  "FACTOR extraction=paf method=correlation" "       " 51
at_xfail=no
(
  printf "%s\n" "653. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >factor.sps <<'_ATEOF'
set format = F11.3.

data list notable fixed /question13 to question24 1-12.
begin data.
555555535543
544453434443
545555544444
444442444433
554545554554
554455454455
555554555244
554455544443
555554434344
544454544344
555545555555
555454544455
555445544455
455544443343
544454344344
555555555455
555554454455
555555554445
555555554555
545534553343
555555535554
555544444445
545544334433
554555434443
555555544454
555445545453
555554434244
444444433233
545555454443
554443434243
444534334333
454534444332
555455353444
555544443243
555554543243
555544444343
445444434443
555555555544
444444434340
455044434334
555555533433
554554535040
434533334232
443232444432
555555555555
555555554544
555544444445
444224343344
444554454355
444434332433
555555555555
043243432433
444443334333
453443433434
443342332232
554434434533
444344434443
444444434443
554552434133
453334332432
444445554444
431232332223
555555555544
544445543443
444455535543
444444444433
444444543243
555431443333
444443433433
444433433443
454334444433
111111111544
444423442433
555443333353
555543334344
055454400000
555454444355
555555555555
055544533333
555554555554
555555535554
555555545355
555555555455
555544545543
555554404455
555454435454
555555535554
555555555555
555443433544
555554435454
555555545344
555555535454
555445535453
444444333544
555554434444
455454434454
555555535555
554545534455
555555555443
454443434444
555553334444
555554545454
555555555555
555554554454
555555555555
544545534544
555555534454
555555555455
555554535544
555555535555
555451234443
555444444544
555544434354
555545533444
555554534443
545554434554
554433444433
544432233524
411111111111
445423442233
555543433344
444443342233
555555534455
545442434223
554553352333
544554554445
555555435455
444334304234
455453444434
444443443245
555552232132
555434324345
544444434344
534344344444
445555555344
444343442132
444444434344
444444554334
444545444333
434442343224
443443433233
555551555554
544544434444
454544434433
555555535434
555555555555
455544444444
454444434233
555555544344
454445544445
444444554434
555455455443
555454425444
444454434443
544443433233
444543434433
555553545354
544444444433
444445434433
555533353333
555434234333
444314222411
555555555555
455545534443
455045534433
555545444444
455544243543
444421113343
554444534444
555555544554
555334434452
555544543455
555554434554
555445554454
555555545344
555555555555
554543334245
554441233333
555554334545
555555535544
555555554554
555445444543
444424544432
444425544333
555434344443
555533233223
544433442343
555555555555
555445452234
555444555444
555444544455
555544354554
545445555555
555555555555
455443342232
555555544454
455534443455
555555555055
444554333244
444445434543
555554544455
444443444434
444444434445
334231314323
444444434433
555554444443
444444434443
555455434444
444444444444
555455435455
444444434344
444543433232
544443334454
555544433244
534443324224
555555544444
444443434444
555553444344
443434443333
444444434333
554445444343
444443344434
445555544543
555554443443
322232403322
444444444433
444445444443
444454534445
544344444344
554445534544
555555555554
555544432333
444444444443
555555555554
455555555554
555555555543
555555555544
555554445555
444335544455
555555555555
555454444454
555455544454
444445444444
555555555555
555455454554
555454544554
555555555455
555555554444
444444544434
334334443333
422224222211
121512011111
443444432332
434335533344
444443543433
554454443453
555555545454
555555555344
555555555554
555555334555
454445554444
454545534444
555554555444
455444534455
555544554544
444444444444
555424423133
222433443224
544544532344
545554544544
555532544144
444432343433
434545554545
444344505443
555555555544
555554555344
444531113112
555554333133
455433233233
354354434345
454534433433
433112332321
555445433333
454343434143
555554445555
455423334322
443333332222
444443444443
553432224134
444223432233
454324425444
344434514443
555552415255
354332543353
444531333233
443433334133
444444444433
444444445533
445133212223
343433432213
442333333332
345455535244
443211121122
555445444444
555555544344
453243332232
443543422533
554444434344
554444333444
555555335343
444231121133
454433332233
455524434244
554433224354
555455555444
454444424444
554242232134
555553315443
555553333454
455421434211
111111151111
454443203123
454243334132
355332213144
554534334134
555543434355
555543433255
444441223334
555443143255
444444444454
444442323544
454443434343
445453434444
454455554433
554532342234
444442243233
444442343334
555443433444
555543253444
554554444455
555543355344
555444445444
434443204222
444432444234
222142441111
111111141111
334334454433
555354552543
433411122112
455534504444
543211224233
344333332532
344443233333
444424432434
555555544454
555555554544
555444444444
555443533443
555554544344
555554444444
544543433343
444445434444
555555555555
555443333233
545444534454
555454434343
555453434544
544334444333
555443443444
555555534544
444444444433
555543433343
555444445334
555543442433
455444334443
554443434443
555254500544
555444433344
555555535544
444443532232
544443433433
555555535544
555455454444
555455445544
544444534433
555555555554
555553533444
555555555554
555554434343
555455544443
555554444443
555454444445
333222333223
444443544233
543443534433
555545454533
444444404033
455454504543
455555555454
454443344343
555553435244
555543544444
555553343044
444443444433
445543434434
555554433545
555554455445
455553333234
555552344243
444141212213
444443504234
445544253444
555554354555
534552234543
555554544544
444233404224
555554534444
444443444344
422442434324
554434434344
444444434334
443433432444
555454435344
252423332214
454544434434
444444444244
555554544445
443222432333
555544444332
545555543445
554544334444
555445555544
554343434433
555555535554
444554444333
553544343534
555553254433
555555554554
544443443344
555443444344
544432144123
555555555555
555555555354
555555535545
455454434444
455455534445
455555554455
555553545445
445545544444
545345553555
444445444433
443435433433
555554545353
444443232223
444444434433
555555545454
555554444343
555554444443
434544333422
444443434343
555555455443
555544434343
455545534444
555555555553
444443343434
555555555445
433444444434
344221512132
333421132223
333444443444
435544545533
444335544443
333323223323
334434332333
444422323213
324433443423
555555554555
555452424444
555544434444
555544443343
555445545453
555555344453
555544545550
454443434334
444332233344
555554332344
554444433444
555554555554
555555543544
444442443132
555555545555
544553435533
044044444444
444443434533
555454433434
555555555454
555555555555
454544434444
444444434333
554555455554
555555543444
423331124132
445445534455
555555555554
444535554434
555555555554
354443422232
555545535443
555555555555
555455444453
455434443333
455444443233
343322434411
555555555534
453442432333
445554434544
345444443333
454554554355
444434453434
555555454443
555443343341
545553343433
222343222201
444433434443
535555555544
552541442423
545433343334
455445433443
444444433433
455543343433
434444432333
444545444444
555554534444
452444434433
454443432533
555453334433
444442233432
555555553433
545555545445
335543222333
554554344445
243424442212
133222432411
343434534233
222222212211
445455554434
455554453344
223334424434
555355555544
455544554434
544455555444
444444444444
444444444344
444334444444
444444444434
555455534243
555555545555
555555555555
444443534343
555554544444
555555555454
444434433433
455445544444
555544544455
444333433333
455443445343
444432442444
443334451543
555554455555
555444444444
555555555455
555555555554
555454345154
555555555555
555555555455
555554454544
454444454544
554443334544
455555402535
555554531534
455545544554
444423444223
555444334533
455554445243
453444334344
555555555554
555555555455
555555555554
455443334344
555555253555
555554433454
555444344455
550030034433
555444233343
555343222133
555555555554
555555243243
555555555355
555554345555
555443434454
545543133133
555443334154
444444344454
555555242254
555554444344
545443334454
554444132454
555455143154
555554453044
555555555455
555534335454
555555245555
545543333444
555555355454
555353145133
555553043454
555555354554
555543434454
555444324454
444444203443
555552233355
555555445455
555500034354
555354354444
555555555555
555543334144
555555005254
454444344254
555555555554
555555555255
555555555455
444444242243
555554445154
444444234333
555555553455
444422224243
555545443344
545552133143
555455044344
555555455555
555555545454
454433343144
555555555555
555455255155
555555454455
555555424455
555555355555
555444444455
555555454455
544411211314
223322441123
444223434233
444441121232
555555535555
454445533444
434442434433
545355554454
555542544333
445545555444
321000001011
444444444444
333223321322
444232433233
425432523122
455555555544
555555545555
555555534354
554554444243
555554343443
444443434333
555224252443
555544433433
344544434423
555554434344
555542134233
444344434444
445443433233
455343333434
455443333445
355344434433
234234433333
445444444445
455535535545
443423234443
455544334544
345441333323
445444533433
455554443355
445444433243
455454453444
444244444444
554244544154
555555555555
454343444444
555444444344
545455534454
555555555555
555554534454
555254555444
544354544453
553454534445
555454445355
545253554454
433342322233
544444444443
555455445544
424322433233
444424222233
555355555544
000000000000
555455345344
000055505450
434333444333
444445444444
555555555545
555554455545
555455435533
544544444243
444331232323
555555554444
443332323233
444224342433
555555555544
433443342333
555445504554
555545555544
555555535555
555555535345
454443433333
555444444555
444443232435
555433444443
555443434543
555555535555
555555533544
555543234444
433432332221
443433544233
443443333334
444424433444
552444333123
233332232211
223422221122
434433414133
332323333102
552544223222
542423343232
555552534132
455554544134
433523533132
433333433433
435434543333
434553433444
555544434345
443543443433
555555542344
544444553144
555544544243
535443441342
344555444333
444444443333
443443433432
545554534544
443533433433
333443432223
333333433123
322432122213
555555555555
554555444433
444543443234
444444433433
452555534433
244444444233
433442422232
555555535555
555555554455
555554545244
555555355455
555555555555
555555555555
444433323233
555455455455
434445444433
555554444455
454444543445
555555535455
555545554455
555555555555
555555555555
555443344353
455543304132
444443444433
555555555355
434433443333
444434444433
444444444433
555555555555
445553443323
445444444444
555554444054
455555554543
555555535555
555554445454
555444444443
555555555454
555554344455
555555454454
554444444454
555555555353
555545544454
553545332223
444424444332
545555543433
555444433444
555555444445
444444424433
444444543434
124113531311
555554534543
555343333333
545444544344
555444534444
555544543444
555455544443
444324402121
555554534544
555455544444
555555544454
444334404433
555443534444
555545554444
555555555555
455333233433
455444433433
455444444444
444235442443
555443343433
444445453444
454345453432
555555453444
344433322323
444443444244
444442343133
554445432233
555555544444
555555534444
555554455554
454443334244
544443333233
444445534445
444432134121
555555332243
555555544433
555554434444
454543534233
454432432343
444424432433
545553335344
555443434344
454443433333
555553534444
554544434355
552532421235
454543433434
544544343234
555552334125
555543455555
443442334222
554443444344
555554543334
555552342444
554443433333
443444434445
555554533344
442412242121
454543343244
445554433344
444443333433
444443433333
444433333334
444444334444
432321102223
444444434443
444444434343
454531432331
445543433434
554554434554
334253232333
444443434244
444433443234
444433334334
444443433333
553434303222
454443434244
444445544444
443441133433
444432232133
444444404344
444444333243
455543124243
555544532344
444432333132
554553434244
454443443333
433111121111
555555555544
444432433222
444443433233
443332332133
445344453243
444444405434
554554434343
455344534443
444444400434
444444344344
544554533443
555554443455
555555544544
555554534444
323123232311
444344344443
555554555544
343323332333
444443434444
444442214340
555434434444
455543343444
445432434433
455553434455
243321332322
444422332332
555533454444
555544443433
354422431422
333322421211
444443432434
344422431322
333342222321
444443454433
443443444433
553434531334
554434552343
545455553544
554455554443
555555555533
555555554543
454454544433
555444532143
554545544443
444233442434
544444434234
554344432233
555345533355
554554544433
455444444344
555554554554
555554545555
444433534434
444444421134
334333333333
334443443343
122333441413
434444333333
444344433233
444333332143
555154344133
324344333223
244444402233
454443433543
444344433344
455555445555
555555544433
454544434443
344535554533
333435443433
444444554544
343434443333
544553544455
555444444455
244333332222
333441232233
544433433433
555544343344
344211142124
442442232113
433432332223
333424322222
444443333233
344321232223
442434342422
545555535555
455454434454
455355544444
454444444445
555554432430
555444344144
455534342234
555555554354
213332443111
555545434433
555554424444
443434443433
555555554443
555555555544
435535554433
555455545443
555555554533
554545443455
555553333233
434432232323
443443333433
443544231534
434533334334
555555535544
555544444445
555555555555
555555555555
555555555555
555555555555
544555544544
555555545555
545555534354
445444344344
555555555555
444443343334
555444440000
555555555554
555555545455
454434444345
555445544443
555554535433
454445555555
555444444355
555555555555
555555555555
555555555555
555555554555
555455554455
454435544255
545543342243
555544355345
555555455354
435553244333
555555443454
444444433445
121422433111
555554543244
555444554444
444203444433
344342553322
554445554344
545445454454
444245504233
334335555533
554355544444
444445545444
555555555344
454544543233
444455532434
555544354243
535444554433
444444444444
455555553243
244442343235
554544504043
444435553433
455553434354
555444343314
555553344453
555555555544
544444444433
434434550033
555455544444
455445534344
454445444554
555555555555
555555555555
555555555454
555455545412
334433343132
555454455455
555554454443
555555555555
555555553433
555555555555
555555445555
555545445455
555555545554
555555555555
445455554443
555445554433
555555554445
555553333144
555554455143
554454445444
555555554533
334422433422
555554434444
433531133222
443432342224
555544554433
553434333333
555543334443
444443344323
555555555555
555554545344
555555545554
555342434333
444443333233
444544435444
555555555555
555455554354
555555405054
555555555555
554555545545
555555555544
555545454344
555555455555
433444444343
454555554444
453555554544
444445554444
544455555455
555343434343
555553444454
555444434443
555555555444
555555545443
555444534455
555555555555
444443443434
555445533543
555555555444
555544444354
445444544243
555554555455
555555455444
555555555544
555555555454
554445545454
555555555543
344444434443
555555454453
455444443433
344244434433
355234452132
555445545455
444444444444
455444454433
555555555555
344233341155
333334433233
444433434333
444233443334
454344544444
555554245253
444444333344
554544434333
555444443343
555554555445
005555555544
554444445244
555455555555
555555555444
444444444433
555555555444
555555544454
555555555544
444444434444
555555535553
545534543334
554554534533
555555555554
554554544544
454541231221
555555535544
445344334432
444444344333
555555534444
555555545555
443434544232
545544433343
343234434333
444444443233
555454444455
555455535455
554433442243
444444544454
554545554544
454444444444
554455534455
555555544355
555445555555
555444534444
455454534444
555555555544
444444444455
454455554344
443244442233
350554554434
455444535343
344233443433
454444535545
244222232232
245345554344
355344444443
555455555444
444434444233
334323444322
333234443233
455455554454
555554544434
555355555444
444444544443
555554555544
344231224131
444443434433
454344444431
555554555553
454544444443
444443443532
334323423222
455555545554
555542434443
554444444443
554444534344
555443454555
555555534554
444434443343
444234432233
334323311333
444443443233
355424552242
233335323322
234233443333
123353532334
444345555244
332222433422
545445555443
555555555555
555554444443
455445554455
455455555455
555555555555
444443433445
555455555544
355453434232
555555554344
444433433433
434322242112
444444433433
444445444544
555444535444
544444444443
454544344334
454444334333
434433433332
334434423423
444455552233
442442342233
445433433343
555555444355
555555555555
455554555545
555445544444
544444434443
555555535333
554444444344
555554554445
345433334121
555555555554
545444444233
555555544455
555554545555
555555455555
555555545555
555554544455
444444444333
544544544445
555445544544
555455444455
555455555454
554455535444
453423442244
444443444444
454444333333
555555555542
555555555543
555555555544
555555535534
555555555444
444443423333
555444444444
555445544453
444444444443
555555443444
444443444333
554554154344
555543353333
554445443333
555555553455
554534444243
554555554545
555544443443
555554555555
555425552422
555555555555
454421121321
555454453433
555555554443
244224431223
455444453444
454345544455
344235545044
555555555544
555553325554
554554444244
555545544544
454555554545
444444545444
545544444455
454344445443
545555554453
444444444443
545554554453
555453434444
005434434454
455555455544
555555555554
455542444433
545543444555
445545445444
555553325454
555554555554
444544444443
555555444454
443332443222
454444443444
344333433332
555455444455
555555555445
555555534454
445433432343
555554434444
555555545444
544545434455
454435543444
555555555555
555455554555
555555544554
555553554455
555555555555
545454545444
555555445555
554534343444
555545443343
545454334444
554445544544
555455354344
555555555355
554445544354
455554444444
555555553543
555554444444
555543233444
555554344433
333334441223
543554344434
055541243244
555555555544
555555533444
555445444544
444335343433
544434344333
544435533333
444444443333
555555555554
555552343233
444444444433
544444434444
555555545555
555555555554
445244434444
445444434444
445555554521
443444543343
444433343434
355444433442
555543444455
555444334544
555555555555
554555545555
555555554555
555555555555
454444343445
444444433444
354445443444
555334242132
455445555543
254153343433
354244443333
554455444344
343255535444
455454555553
555455545555
444343433343
343323443323
455444444424
555544444455
343434543444
555555555544
555554534243
555554543344
555455555544
555443344343
444445533133
555543534555
444554444444
444002323320
444232322222
244344424441
555443344334
555555555555
555444534443
555555555555
555555555550
455555554555
555555555555

end data.

missing values
	question13 question14 question15 question16 question17 question18 question19 question20 question21 question22 question23 question24 (0).

factor
 /variables question13 question14 question15 question16 question17 question18 question19 question20 question21 question22 question23 question24
 /analysis all
 /print univariate det correlation
 /format blank(.30)
 /plot eigen
 /criteria factors(3)
 /extraction paf
 /method = correlation.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:1472: pspp -O format=csv factor.sps"
at_fn_check_prepare_trace "factor.at:1472"
( $at_check_trace; pspp -O format=csv factor.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,Mean,Std. Deviation,Analysis N
question13,4.462,.729,1365
question14,4.525,.700,1365
question15,4.445,.732,1365
question16,4.281,.829,1365
question17,4.166,.895,1365
question18,3.930,1.034,1365
question19,4.077,.963,1365
question20,3.777,.909,1365
question21,3.774,.984,1365
question22,3.607,1.116,1365
question23,3.813,.957,1365
question24,3.666,.926,1365

Table: Correlation Matrix
,,question13,question14,question15,question16,question17,question18,question19,question20,question21,question22,question23,question24
Correlation,question13,1.000,.661,.600,.566,.577,.409,.286,.304,.476,.333,.564,.454
,question14,.661,1.000,.635,.500,.552,.433,.320,.315,.449,.333,.565,.443
,question15,.600,.635,1.000,.505,.587,.457,.359,.356,.509,.369,.582,.435
,question16,.566,.500,.505,1.000,.586,.405,.335,.317,.452,.363,.459,.430
,question17,.577,.552,.587,.586,1.000,.555,.449,.417,.595,.450,.613,.521
,question18,.409,.433,.457,.405,.555,1.000,.627,.521,.554,.536,.569,.474
,question19,.286,.320,.359,.335,.449,.627,1.000,.446,.499,.484,.444,.374
,question20,.304,.315,.356,.317,.417,.521,.446,1.000,.425,.383,.410,.357
,question21,.476,.449,.509,.452,.595,.554,.499,.425,1.000,.507,.598,.500
,question22,.333,.333,.369,.363,.450,.536,.484,.383,.507,1.000,.493,.444
,question23,.564,.565,.582,.459,.613,.569,.444,.410,.598,.493,1.000,.705
,question24,.454,.443,.435,.430,.521,.474,.374,.357,.500,.444,.705,1.000
Caption: Determinant: 0.00

Table: Factor Matrix
,Factor,,
,1,2,3
question13,.713,.398,
question14,.703,.339,
question15,.721,,
question16,.648,,
question17,.783,,
question18,.740,-.345,
question19,.616,-.415,
question20,.550,,
question21,.732,,
question22,.613,,
question23,.819,,.345
question24,.695,,.386

Table: Rotated Factor Matrix
,Factor,,
,1,2,3
question13,.771,,
question14,.726,,
question15,.676,,
question16,.591,,
question17,.587,.446,
question18,,.739,
question19,,.727,
question20,,.540,
question21,.402,.533,.321
question22,,.559,
question23,.449,.377,.668
question24,.324,.321,.652
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:1472"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_653
#AT_START_654
at_fn_group_banner 654 'factor.at:1539' \
  "FACTOR extraction=pc method=correlation" "        " 51
at_xfail=no
(
  printf "%s\n" "654. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >factor2.sps <<'_ATEOF'
set format = F11.3.


data list notable list /id female race ses schtyp prog read write math science socst.
begin data.
 70.00      .00  4.00     1.00     1.00     1.00    57.00    52.00    41.00    47.00    57.00
121.00     1.00  4.00     2.00     1.00     3.00    68.00    59.00    53.00    63.00    61.00
 86.00      .00  4.00     3.00     1.00     1.00    44.00    33.00    54.00    58.00    31.00
141.00      .00  4.00     3.00     1.00     3.00    63.00    44.00    47.00    53.00    56.00
172.00      .00  4.00     2.00     1.00     2.00    47.00    52.00    57.00    53.00    61.00
113.00      .00  4.00     2.00     1.00     2.00    44.00    52.00    51.00    63.00    61.00
 50.00      .00  3.00     2.00     1.00     1.00    50.00    59.00    42.00    53.00    61.00
 11.00      .00  1.00     2.00     1.00     2.00    34.00    46.00    45.00    39.00    36.00
 84.00      .00  4.00     2.00     1.00     1.00    63.00    57.00    54.00    58.00    51.00
 48.00      .00  3.00     2.00     1.00     2.00    57.00    55.00    52.00    50.00    51.00
 75.00      .00  4.00     2.00     1.00     3.00    60.00    46.00    51.00    53.00    61.00
 60.00      .00  4.00     2.00     1.00     2.00    57.00    65.00    51.00    63.00    61.00
 95.00      .00  4.00     3.00     1.00     2.00    73.00    60.00    71.00    61.00    71.00
104.00      .00  4.00     3.00     1.00     2.00    54.00    63.00    57.00    55.00    46.00
 38.00      .00  3.00     1.00     1.00     2.00    45.00    57.00    50.00    31.00    56.00
115.00      .00  4.00     1.00     1.00     1.00    42.00    49.00    43.00    50.00    56.00
 76.00      .00  4.00     3.00     1.00     2.00    47.00    52.00    51.00    50.00    56.00
195.00      .00  4.00     2.00     2.00     1.00    57.00    57.00    60.00    58.00    56.00
114.00      .00  4.00     3.00     1.00     2.00    68.00    65.00    62.00    55.00    61.00
 85.00      .00  4.00     2.00     1.00     1.00    55.00    39.00    57.00    53.00    46.00
167.00      .00  4.00     2.00     1.00     1.00    63.00    49.00    35.00    66.00    41.00
143.00      .00  4.00     2.00     1.00     3.00    63.00    63.00    75.00    72.00    66.00
 41.00      .00  3.00     2.00     1.00     2.00    50.00    40.00    45.00    55.00    56.00
 20.00      .00  1.00     3.00     1.00     2.00    60.00    52.00    57.00    61.00    61.00
 12.00      .00  1.00     2.00     1.00     3.00    37.00    44.00    45.00    39.00    46.00
 53.00      .00  3.00     2.00     1.00     3.00    34.00    37.00    46.00    39.00    31.00
154.00      .00  4.00     3.00     1.00     2.00    65.00    65.00    66.00    61.00    66.00
178.00      .00  4.00     2.00     2.00     3.00    47.00    57.00    57.00    58.00    46.00
196.00      .00  4.00     3.00     2.00     2.00    44.00    38.00    49.00    39.00    46.00
 29.00      .00  2.00     1.00     1.00     1.00    52.00    44.00    49.00    55.00    41.00
126.00      .00  4.00     2.00     1.00     1.00    42.00    31.00    57.00    47.00    51.00
103.00      .00  4.00     3.00     1.00     2.00    76.00    52.00    64.00    64.00    61.00
192.00      .00  4.00     3.00     2.00     2.00    65.00    67.00    63.00    66.00    71.00
150.00      .00  4.00     2.00     1.00     3.00    42.00    41.00    57.00    72.00    31.00
199.00      .00  4.00     3.00     2.00     2.00    52.00    59.00    50.00    61.00    61.00
144.00      .00  4.00     3.00     1.00     1.00    60.00    65.00    58.00    61.00    66.00
200.00      .00  4.00     2.00     2.00     2.00    68.00    54.00    75.00    66.00    66.00
 80.00      .00  4.00     3.00     1.00     2.00    65.00    62.00    68.00    66.00    66.00
 16.00      .00  1.00     1.00     1.00     3.00    47.00    31.00    44.00    36.00    36.00
153.00      .00  4.00     2.00     1.00     3.00    39.00    31.00    40.00    39.00    51.00
176.00      .00  4.00     2.00     2.00     2.00    47.00    47.00    41.00    42.00    51.00
177.00      .00  4.00     2.00     2.00     2.00    55.00    59.00    62.00    58.00    51.00
168.00      .00  4.00     2.00     1.00     2.00    52.00    54.00    57.00    55.00    51.00
 40.00      .00  3.00     1.00     1.00     1.00    42.00    41.00    43.00    50.00    41.00
 62.00      .00  4.00     3.00     1.00     1.00    65.00    65.00    48.00    63.00    66.00
169.00      .00  4.00     1.00     1.00     1.00    55.00    59.00    63.00    69.00    46.00
 49.00      .00  3.00     3.00     1.00     3.00    50.00    40.00    39.00    49.00    47.00
136.00      .00  4.00     2.00     1.00     2.00    65.00    59.00    70.00    63.00    51.00
189.00      .00  4.00     2.00     2.00     2.00    47.00    59.00    63.00    53.00    46.00
  7.00      .00  1.00     2.00     1.00     2.00    57.00    54.00    59.00    47.00    51.00
 27.00      .00  2.00     2.00     1.00     2.00    53.00    61.00    61.00    57.00    56.00
128.00      .00  4.00     3.00     1.00     2.00    39.00    33.00    38.00    47.00    41.00
 21.00      .00  1.00     2.00     1.00     1.00    44.00    44.00    61.00    50.00    46.00
183.00      .00  4.00     2.00     2.00     2.00    63.00    59.00    49.00    55.00    71.00
132.00      .00  4.00     2.00     1.00     2.00    73.00    62.00    73.00    69.00    66.00
 15.00      .00  1.00     3.00     1.00     3.00    39.00    39.00    44.00    26.00    42.00
 67.00      .00  4.00     1.00     1.00     3.00    37.00    37.00    42.00    33.00    32.00
 22.00      .00  1.00     2.00     1.00     3.00    42.00    39.00    39.00    56.00    46.00
185.00      .00  4.00     2.00     2.00     2.00    63.00    57.00    55.00    58.00    41.00
  9.00      .00  1.00     2.00     1.00     3.00    48.00    49.00    52.00    44.00    51.00
181.00      .00  4.00     2.00     2.00     2.00    50.00    46.00    45.00    58.00    61.00
170.00      .00  4.00     3.00     1.00     2.00    47.00    62.00    61.00    69.00    66.00
134.00      .00  4.00     1.00     1.00     1.00    44.00    44.00    39.00    34.00    46.00
108.00      .00  4.00     2.00     1.00     1.00    34.00    33.00    41.00    36.00    36.00
197.00      .00  4.00     3.00     2.00     2.00    50.00    42.00    50.00    36.00    61.00
140.00      .00  4.00     2.00     1.00     3.00    44.00    41.00    40.00    50.00    26.00
171.00      .00  4.00     2.00     1.00     2.00    60.00    54.00    60.00    55.00    66.00
107.00      .00  4.00     1.00     1.00     3.00    47.00    39.00    47.00    42.00    26.00
 81.00      .00  4.00     1.00     1.00     2.00    63.00    43.00    59.00    65.00    44.00
 18.00      .00  1.00     2.00     1.00     3.00    50.00    33.00    49.00    44.00    36.00
155.00      .00  4.00     2.00     1.00     1.00    44.00    44.00    46.00    39.00    51.00
 97.00      .00  4.00     3.00     1.00     2.00    60.00    54.00    58.00    58.00    61.00
 68.00      .00  4.00     2.00     1.00     2.00    73.00    67.00    71.00    63.00    66.00
157.00      .00  4.00     2.00     1.00     1.00    68.00    59.00    58.00    74.00    66.00
 56.00      .00  4.00     2.00     1.00     3.00    55.00    45.00    46.00    58.00    51.00
  5.00      .00  1.00     1.00     1.00     2.00    47.00    40.00    43.00    45.00    31.00
159.00      .00  4.00     3.00     1.00     2.00    55.00    61.00    54.00    49.00    61.00
123.00      .00  4.00     3.00     1.00     1.00    68.00    59.00    56.00    63.00    66.00
164.00      .00  4.00     2.00     1.00     3.00    31.00    36.00    46.00    39.00    46.00
 14.00      .00  1.00     3.00     1.00     2.00    47.00    41.00    54.00    42.00    56.00
127.00      .00  4.00     3.00     1.00     2.00    63.00    59.00    57.00    55.00    56.00
165.00      .00  4.00     1.00     1.00     3.00    36.00    49.00    54.00    61.00    36.00
174.00      .00  4.00     2.00     2.00     2.00    68.00    59.00    71.00    66.00    56.00
  3.00      .00  1.00     1.00     1.00     2.00    63.00    65.00    48.00    63.00    56.00
 58.00      .00  4.00     2.00     1.00     3.00    55.00    41.00    40.00    44.00    41.00
146.00      .00  4.00     3.00     1.00     2.00    55.00    62.00    64.00    63.00    66.00
102.00      .00  4.00     3.00     1.00     2.00    52.00    41.00    51.00    53.00    56.00
117.00      .00  4.00     3.00     1.00     3.00    34.00    49.00    39.00    42.00    56.00
133.00      .00  4.00     2.00     1.00     3.00    50.00    31.00    40.00    34.00    31.00
 94.00      .00  4.00     3.00     1.00     2.00    55.00    49.00    61.00    61.00    56.00
 24.00      .00  2.00     2.00     1.00     2.00    52.00    62.00    66.00    47.00    46.00
149.00      .00  4.00     1.00     1.00     1.00    63.00    49.00    49.00    66.00    46.00
 82.00     1.00  4.00     3.00     1.00     2.00    68.00    62.00    65.00    69.00    61.00
  8.00     1.00  1.00     1.00     1.00     2.00    39.00    44.00    52.00    44.00    48.00
129.00     1.00  4.00     1.00     1.00     1.00    44.00    44.00    46.00    47.00    51.00
173.00     1.00  4.00     1.00     1.00     1.00    50.00    62.00    61.00    63.00    51.00
 57.00     1.00  4.00     2.00     1.00     2.00    71.00    65.00    72.00    66.00    56.00
100.00     1.00  4.00     3.00     1.00     2.00    63.00    65.00    71.00    69.00    71.00
  1.00     1.00  1.00     1.00     1.00     3.00    34.00    44.00    40.00    39.00    41.00
194.00     1.00  4.00     3.00     2.00     2.00    63.00    63.00    69.00    61.00    61.00
 88.00     1.00  4.00     3.00     1.00     2.00    68.00    60.00    64.00    69.00    66.00
 99.00     1.00  4.00     3.00     1.00     1.00    47.00    59.00    56.00    66.00    61.00
 47.00     1.00  3.00     1.00     1.00     2.00    47.00    46.00    49.00    33.00    41.00
120.00     1.00  4.00     3.00     1.00     2.00    63.00    52.00    54.00    50.00    51.00
166.00     1.00  4.00     2.00     1.00     2.00    52.00    59.00    53.00    61.00    51.00
 65.00     1.00  4.00     2.00     1.00     2.00    55.00    54.00    66.00    42.00    56.00
101.00     1.00  4.00     3.00     1.00     2.00    60.00    62.00    67.00    50.00    56.00
 89.00     1.00  4.00     1.00     1.00     3.00    35.00    35.00    40.00    51.00    33.00
 54.00     1.00  3.00     1.00     2.00     1.00    47.00    54.00    46.00    50.00    56.00
180.00     1.00  4.00     3.00     2.00     2.00    71.00    65.00    69.00    58.00    71.00
162.00     1.00  4.00     2.00     1.00     3.00    57.00    52.00    40.00    61.00    56.00
  4.00     1.00  1.00     1.00     1.00     2.00    44.00    50.00    41.00    39.00    51.00
131.00     1.00  4.00     3.00     1.00     2.00    65.00    59.00    57.00    46.00    66.00
125.00     1.00  4.00     1.00     1.00     2.00    68.00    65.00    58.00    59.00    56.00
 34.00     1.00  1.00     3.00     2.00     2.00    73.00    61.00    57.00    55.00    66.00
106.00     1.00  4.00     2.00     1.00     3.00    36.00    44.00    37.00    42.00    41.00
130.00     1.00  4.00     3.00     1.00     1.00    43.00    54.00    55.00    55.00    46.00
 93.00     1.00  4.00     3.00     1.00     2.00    73.00    67.00    62.00    58.00    66.00
163.00     1.00  4.00     1.00     1.00     2.00    52.00    57.00    64.00    58.00    56.00
 37.00     1.00  3.00     1.00     1.00     3.00    41.00    47.00    40.00    39.00    51.00
 35.00     1.00  1.00     1.00     2.00     1.00    60.00    54.00    50.00    50.00    51.00
 87.00     1.00  4.00     2.00     1.00     1.00    50.00    52.00    46.00    50.00    56.00
 73.00     1.00  4.00     2.00     1.00     2.00    50.00    52.00    53.00    39.00    56.00
151.00     1.00  4.00     2.00     1.00     3.00    47.00    46.00    52.00    48.00    46.00
 44.00     1.00  3.00     1.00     1.00     3.00    47.00    62.00    45.00    34.00    46.00
152.00     1.00  4.00     3.00     1.00     2.00    55.00    57.00    56.00    58.00    61.00
105.00     1.00  4.00     2.00     1.00     2.00    50.00    41.00    45.00    44.00    56.00
 28.00     1.00  2.00     2.00     1.00     1.00    39.00    53.00    54.00    50.00    41.00
 91.00     1.00  4.00     3.00     1.00     3.00    50.00    49.00    56.00    47.00    46.00
 45.00     1.00  3.00     1.00     1.00     3.00    34.00    35.00    41.00    29.00    26.00
116.00     1.00  4.00     2.00     1.00     2.00    57.00    59.00    54.00    50.00    56.00
 33.00     1.00  2.00     1.00     1.00     2.00    57.00    65.00    72.00    54.00    56.00
 66.00     1.00  4.00     2.00     1.00     3.00    68.00    62.00    56.00    50.00    51.00
 72.00     1.00  4.00     2.00     1.00     3.00    42.00    54.00    47.00    47.00    46.00
 77.00     1.00  4.00     1.00     1.00     2.00    61.00    59.00    49.00    44.00    66.00
 61.00     1.00  4.00     3.00     1.00     2.00    76.00    63.00    60.00    67.00    66.00
190.00     1.00  4.00     2.00     2.00     2.00    47.00    59.00    54.00    58.00    46.00
 42.00     1.00  3.00     2.00     1.00     3.00    46.00    52.00    55.00    44.00    56.00
  2.00     1.00  1.00     2.00     1.00     3.00    39.00    41.00    33.00    42.00    41.00
 55.00     1.00  3.00     2.00     2.00     2.00    52.00    49.00    49.00    44.00    61.00
 19.00     1.00  1.00     1.00     1.00     1.00    28.00    46.00    43.00    44.00    51.00
 90.00     1.00  4.00     3.00     1.00     2.00    42.00    54.00    50.00    50.00    52.00
142.00     1.00  4.00     2.00     1.00     3.00    47.00    42.00    52.00    39.00    51.00
 17.00     1.00  1.00     2.00     1.00     2.00    47.00    57.00    48.00    44.00    41.00
122.00     1.00  4.00     2.00     1.00     2.00    52.00    59.00    58.00    53.00    66.00
191.00     1.00  4.00     3.00     2.00     2.00    47.00    52.00    43.00    48.00    61.00
 83.00     1.00  4.00     2.00     1.00     3.00    50.00    62.00    41.00    55.00    31.00
182.00     1.00  4.00     2.00     2.00     2.00    44.00    52.00    43.00    44.00    51.00
  6.00     1.00  1.00     1.00     1.00     2.00    47.00    41.00    46.00    40.00    41.00
 46.00     1.00  3.00     1.00     1.00     2.00    45.00    55.00    44.00    34.00    41.00
 43.00     1.00  3.00     1.00     1.00     2.00    47.00    37.00    43.00    42.00    46.00
 96.00     1.00  4.00     3.00     1.00     2.00    65.00    54.00    61.00    58.00    56.00
138.00     1.00  4.00     2.00     1.00     3.00    43.00    57.00    40.00    50.00    51.00
 10.00     1.00  1.00     2.00     1.00     1.00    47.00    54.00    49.00    53.00    61.00
 71.00     1.00  4.00     2.00     1.00     1.00    57.00    62.00    56.00    58.00    66.00
139.00     1.00  4.00     2.00     1.00     2.00    68.00    59.00    61.00    55.00    71.00
110.00     1.00  4.00     2.00     1.00     3.00    52.00    55.00    50.00    54.00    61.00
148.00     1.00  4.00     2.00     1.00     3.00    42.00    57.00    51.00    47.00    61.00
109.00     1.00  4.00     2.00     1.00     1.00    42.00    39.00    42.00    42.00    41.00
 39.00     1.00  3.00     3.00     1.00     2.00    66.00    67.00    67.00    61.00    66.00
147.00     1.00  4.00     1.00     1.00     2.00    47.00    62.00    53.00    53.00    61.00
 74.00     1.00  4.00     2.00     1.00     2.00    57.00    50.00    50.00    51.00    58.00
198.00     1.00  4.00     3.00     2.00     2.00    47.00    61.00    51.00    63.00    31.00
161.00     1.00  4.00     1.00     1.00     2.00    57.00    62.00    72.00    61.00    61.00
112.00     1.00  4.00     2.00     1.00     2.00    52.00    59.00    48.00    55.00    61.00
 69.00     1.00  4.00     1.00     1.00     3.00    44.00    44.00    40.00    40.00    31.00
156.00     1.00  4.00     2.00     1.00     2.00    50.00    59.00    53.00    61.00    61.00
111.00     1.00  4.00     1.00     1.00     1.00    39.00    54.00    39.00    47.00    36.00
186.00     1.00  4.00     2.00     2.00     2.00    57.00    62.00    63.00    55.00    41.00
 98.00     1.00  4.00     1.00     1.00     3.00    57.00    60.00    51.00    53.00    37.00
119.00     1.00  4.00     1.00     1.00     1.00    42.00    57.00    45.00    50.00    43.00
 13.00     1.00  1.00     2.00     1.00     3.00    47.00    46.00    39.00    47.00    61.00
 51.00     1.00  3.00     3.00     1.00     1.00    42.00    36.00    42.00    31.00    39.00
 26.00     1.00  2.00     3.00     1.00     2.00    60.00    59.00    62.00    61.00    51.00
 36.00     1.00  3.00     1.00     1.00     1.00    44.00    49.00    44.00    35.00    51.00
135.00     1.00  4.00     1.00     1.00     2.00    63.00    60.00    65.00    54.00    66.00
 59.00     1.00  4.00     2.00     1.00     2.00    65.00    67.00    63.00    55.00    71.00
 78.00     1.00  4.00     2.00     1.00     2.00    39.00    54.00    54.00    53.00    41.00
 64.00     1.00  4.00     3.00     1.00     3.00    50.00    52.00    45.00    58.00    36.00
 63.00     1.00  4.00     1.00     1.00     1.00    52.00    65.00    60.00    56.00    51.00
 79.00     1.00  4.00     2.00     1.00     2.00    60.00    62.00    49.00    50.00    51.00
193.00     1.00  4.00     2.00     2.00     2.00    44.00    49.00    48.00    39.00    51.00
 92.00     1.00  4.00     3.00     1.00     1.00    52.00    67.00    57.00    63.00    61.00
160.00     1.00  4.00     2.00     1.00     2.00    55.00    65.00    55.00    50.00    61.00
 32.00     1.00  2.00     3.00     1.00     3.00    50.00    67.00    66.00    66.00    56.00
 23.00     1.00  2.00     1.00     1.00     2.00    65.00    65.00    64.00    58.00    71.00
158.00     1.00  4.00     2.00     1.00     1.00    52.00    54.00    55.00    53.00    51.00
 25.00     1.00  2.00     2.00     1.00     1.00    47.00    44.00    42.00    42.00    36.00
188.00     1.00  4.00     3.00     2.00     2.00    63.00    62.00    56.00    55.00    61.00
 52.00     1.00  3.00     1.00     1.00     2.00    50.00    46.00    53.00    53.00    66.00
124.00     1.00  4.00     1.00     1.00     3.00    42.00    54.00    41.00    42.00    41.00
175.00     1.00  4.00     3.00     2.00     1.00    36.00    57.00    42.00    50.00    41.00
184.00     1.00  4.00     2.00     2.00     3.00    50.00    52.00    53.00    55.00    56.00
 30.00     1.00  2.00     3.00     1.00     2.00    41.00    59.00    42.00    34.00    51.00
179.00     1.00  4.00     2.00     2.00     2.00    47.00    65.00    60.00    50.00    56.00
 31.00     1.00  2.00     2.00     2.00     1.00    55.00    59.00    52.00    42.00    56.00
145.00     1.00  4.00     2.00     1.00     3.00    42.00    46.00    38.00    36.00    46.00
187.00     1.00  4.00     2.00     2.00     1.00    57.00    41.00    57.00    55.00    52.00
118.00     1.00  4.00     2.00     1.00     1.00    55.00    62.00    58.00    58.00    61.00
137.00     1.00  4.00     3.00     1.00     2.00    63.00    65.00    65.00    53.00    61.00
end data.

factor
  /variables read write math science socst
  /analysis read write math science socst
  /extraction pc
  /plot eigen
  /criteria mineigen (.557)
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:1759: pspp -O format=csv factor2.sps"
at_fn_check_prepare_trace "factor.at:1759"
( $at_check_trace; pspp -O format=csv factor2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Communalities
,Initial,Extraction
read,1.000,.736
write,1.000,.704
math,1.000,.750
science,1.000,.849
socst,1.000,.900

Table: Total Variance Explained
,Initial Eigenvalues,,,Extraction Sums of Squared Loadings,,,Rotation Sums of Squared Loadings,,
,Total,% of Variance,Cumulative %,Total,% of Variance,Cumulative %,Total,% of Variance,Cumulative %
1,3.381,67.6%,67.6%,3.381,67.6%,67.6%,2.113,42.3%,42.3%
2,.557,11.1%,78.8%,.557,11.1%,78.8%,1.825,36.5%,78.8%
3,.407,8.1%,86.9%,,,,,,
4,.356,7.1%,94.0%,,,,,,
5,.299,6.0%,100.0%,,,,,,

Table: Component Matrix
,Component,
,1,2
read,.858,.020
write,.824,-.155
math,.844,.195
science,.801,.456
socst,.783,-.536

Table: Rotated Component Matrix
,Component,
,1,2
read,.650,.559
write,.508,.667
math,.757,.421
science,.900,.198
socst,.222,.922
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:1759"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_654
#AT_START_655
at_fn_group_banner 655 'factor.at:1800' \
  "FACTOR empty dataset" "                           " 51
at_xfail=no
(
  printf "%s\n" "655. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >factor-empty.sps <<'_ATEOF'
data list notable list /x * y * z *.
begin data.
3.4        .     92.9
.        32.09   34.2
1.00     19.80     .
2.00       .      3.6
end data.

factor /variables = ALL.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:1815: pspp -O format=csv factor-empty.sps"
at_fn_check_prepare_trace "factor.at:1815"
( $at_check_trace; pspp -O format=csv factor-empty.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:1815"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_655
#AT_START_656
at_fn_group_banner 656 'factor.at:1821' \
  "FACTOR /ROTATION=NOROTATE" "                      " 51
at_xfail=no
(
  printf "%s\n" "656. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >factor-norotate.sps <<'_ATEOF'
DATA LIST FREE / TRAIT1 TO TRAIT5 (F8.2).
BEGIN DATA
1 5 5 1 1
8 9 7 9 8
9 8 9 9 8
9 9 9 9 9
1 9 1 1 9
9 7 7 9 9
9 7 9 9 7
END DATA

SET SMALL=0.
FACTOR /VARIABLES=TRAIT1 TO TRAIT5
    /ROTATION=NOROTATE /* NOROTATE may have caused the problem. */
    /EXTRACTION=PC
    /PRINT=DEFAULT DET UNIVARIATE ROTATION SIG CORRELATION.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:1841: pspp -O format=csv factor-norotate.sps"
at_fn_check_prepare_trace "factor.at:1841"
( $at_check_trace; pspp -O format=csv factor-norotate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,Mean,Std. Deviation,Analysis N
TRAIT1,6.57,3.54,7
TRAIT2,7.71,1.39,7
TRAIT3,6.71,2.71,7
TRAIT4,6.71,3.61,7
TRAIT5,7.29,2.66,7

Table: Correlation Matrix
,,TRAIT1,TRAIT2,TRAIT3,TRAIT4,TRAIT5
Correlation,TRAIT1,1.000,.296,.881,.995,.545
,TRAIT2,.296,1.000,-.022,.326,.837
,TRAIT3,.881,-.022,1.000,.867,.130
,TRAIT4,.995,.326,.867,1.000,.544
,TRAIT5,.545,.837,.130,.544,1.000
Sig. (1-tailed),TRAIT1,,.260,.004,.000,.103
,TRAIT2,.260,,.482,.238,.009
,TRAIT3,.004,.482,,.006,.390
,TRAIT4,.000,.238,.006,,.103
,TRAIT5,.103,.009,.390,.103,
Caption: Determinant: 0.00

Table: Communalities
,Initial,Extraction
TRAIT1,1.00,1.00
TRAIT2,1.00,1.00
TRAIT3,1.00,.99
TRAIT4,1.00,.99
TRAIT5,1.00,.99

Table: Total Variance Explained
,Initial Eigenvalues,,,Extraction Sums of Squared Loadings,,
,Total,% of Variance,Cumulative %,Total,% of Variance,Cumulative %
1,3.26,65.3%,65.3%,3.26,65.3%,65.3%
2,1.54,30.8%,96.0%,1.54,30.8%,96.0%
3,.17,3.4%,99.4%,.17,3.4%,99.4%
4,.03,.6%,100.0%,.03,.6%,100.0%
5,.00,.0%,100.0%,,,

Table: Component Matrix
,Component,,,
,1,2,3,4
TRAIT1,.97,.23,-.08,.00
TRAIT2,.52,-.81,.28,.00
TRAIT3,.78,.59,.17,.00
TRAIT4,.97,.21,-.04,.00
TRAIT5,.70,-.67,-.23,.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:1841"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_656
#AT_START_657
at_fn_group_banner 657 'factor.at:1896' \
  "FACTOR /CRITERIA=ITERATE" "                       " 51
at_xfail=no
(
  printf "%s\n" "657. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >factor-iterate.sps <<'_ATEOF'
set format = F20.3.
data list notable list /x y z *.
begin data.
1.00    5.00    3.00
2.00    2.00    2.00
3.00    1.00    1.00
4.00    4.00    5.00
5.00    3.00    9.00
6.00    6.00    4.00
7.00    7.00    6.00
8.00    8.00    8.00
9.00    9.00    7.00
end data.

FACTOR
 /VARIABLES= x y z
 /CRITERIA = MINEIGEN (1) ITERATE (25)
 /EXTRACTION =PAF
 /METHOD = CORRELATION
 /PRINT = INITIAL EXTRACTION
 /CRITERIA = ITERATE (0)
 /ROTATION = NOROTATE.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:1922: pspp -O format=csv factor-iterate.sps"
at_fn_check_prepare_trace "factor.at:1922"
( $at_check_trace; pspp -O format=csv factor-iterate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Communalities
,Initial,Extraction
x,.735,.979
y,.640,.653
z,.514,.523

Table: Total Variance Explained
,Initial Eigenvalues,,,Extraction Sums of Squared Loadings,,
,Total,% of Variance,Cumulative %,Total,% of Variance,Cumulative %
1,2.404,80.1%,80.1%,2.155,71.8%,71.8%
2,.425,14.2%,94.3%,,,
3,.171,5.7%,100.0%,,,

Table: Factor Matrix
,Factor
,1
x,.990
y,.808
z,.723
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:1922"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_657
#AT_START_658
at_fn_group_banner 658 'factor.at:1946' \
  "FACTOR promax" "                                  " 51
at_xfail=no
(
  printf "%s\n" "658. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >factor-promax.sps <<'_ATEOF'
set decimal=dot.
set format=F22.3.

get file='llz.zsav'.

factor
	/variables pz pn ps nz nn ns tz tn ts oz on os sz sn ss zz zn zs
	/missing listwise
	/print initial extraction rotation
	/criteria mineigen(1) iterate(25)
	/extraction paf
	/method correlation
	/rotation promax (5).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:1963: ln -s \$top_srcdir/tests/language/commands/llz.zsav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/tests/language/commands/llz.zsav ." "factor.at:1963"
( $at_check_trace; ln -s $top_srcdir/tests/language/commands/llz.zsav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:1963"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/factor.at:1965: pspp -O format=csv factor-promax.sps"
at_fn_check_prepare_trace "factor.at:1965"
( $at_check_trace; pspp -O format=csv factor-promax.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Communalities
,Initial,Extraction
PZ,.191,.375
PN,.042,.102
PS,.458,.623
NZ,.100,.163
NN,.065,.079
NS,.129,.148
TZ,.181,.344
TN,.102,.142
TS,.310,.372
OZ,.097,.158
ON,.323,.410
OS,.469,.617
SZ,.104,.170
SN,.154,.267
SS,.081,.180
ZZ,.123,.192
ZN,.208,.412
ZS,.130,.158

Table: Total Variance Explained
,Initial Eigenvalues,,,Extraction Sums of Squared Loadings,,,Rotation Sums of Squared Loadings,,
,Total,% of Variance,Cumulative %,Total,% of Variance,Cumulative %,Total,% of Variance,Cumulative %
1,2.968,16.5%,16.5%,2.411,13.4%,13.4%,.   ,.  ,.  
2,2.026,11.3%,27.7%,1.271,7.1%,20.5%,.   ,.  ,-Infinity
3,1.622,9.0%,36.8%,.948,5.3%,25.7%,.   ,.  ,-Infinity
4,1.086,6.0%,42.8%,.283,1.6%,27.3%,.   ,.  ,-Infinity
5,.996,5.5%,48.3%,,,,,,
6,.923,5.1%,53.5%,,,,,,
7,.873,4.9%,58.3%,,,,,,
8,.856,4.8%,63.1%,,,,,,
9,.836,4.6%,67.7%,,,,,,
10,.816,4.5%,72.2%,,,,,,
11,.785,4.4%,76.6%,,,,,,
12,.740,4.1%,80.7%,,,,,,
13,.713,4.0%,84.7%,,,,,,
14,.653,3.6%,88.3%,,,,,,
15,.633,3.5%,91.8%,,,,,,
16,.604,3.4%,95.2%,,,,,,
17,.484,2.7%,97.9%,,,,,,
18,.386,2.1%,100.0%,,,,,,

Table: Factor Matrix
,Factor,,,
,1,2,3,4
PZ,-.276,.154,.510,.124
PN,.096,.129,-.091,.261
PS,.746,-.085,.234,.063
NZ,-.111,.323,.206,-.058
NN,.007,.260,-.083,-.069
NS,.366,.096,.046,.051
TZ,-.228,.172,.509,.059
TN,.131,.345,-.074,.029
TS,.601,-.005,.098,.030
OZ,-.145,.166,.322,-.081
ON,.607,.082,.073,-.173
OS,.757,-.059,.171,-.104
SZ,-.142,.307,.226,-.066
SN,.175,.436,-.183,.115
SS,.199,.206,-.083,.302
ZZ,-.074,.411,-.080,-.104
ZN,.015,.580,-.252,-.114
ZS,.365,.156,-.004,.015

Table: Pattern Matrix
,Factor,,,
,1,2,3,4
PZ,-.063,-.126,.599,.085
PN,-.035,.000,-.033,.325
PS,.762,-.175,.058,.081
NZ,.027,.230,.327,-.044
NN,.008,.289,.008,-.026
NS,.344,.044,.015,.091
TZ,.004,-.074,.589,.020
TN,.097,.307,.033,.103
TS,.585,-.043,-.017,.062
OZ,.046,.067,.382,-.109
ON,.654,.151,-.029,-.145
OS,.803,-.037,-.009,-.092
SZ,.009,.213,.345,-.060
SN,.065,.376,-.036,.227
SS,.054,.042,-.013,.388
ZZ,-.044,.434,.078,-.046
ZN,-.025,.646,-.041,-.006
ZS,.337,.133,-.013,.067

Table: Structure Matrix
,Factor,,,
,1,2,3,4
PZ,-.177,-.058,.598,-.022
PN,.068,.110,-.049,.317
PS,.771,-.138,-.136,.240
NZ,-.060,.236,.339,.019
NN,.000,.281,.027,.076
NS,.368,.080,-.068,.207
TZ,-.127,-.028,.582,-.049
TN,.122,.345,.023,.235
TS,.607,-.018,-.160,.221
OZ,-.074,.055,.384,-.101
ON,.619,.104,-.160,.102
OS,.778,-.064,-.190,.132
SZ,-.086,.215,.361,-.009
SN,.143,.453,-.044,.380
SS,.171,.176,-.052,.420
ZZ,-.073,.422,.120,.085
ZN,-.013,.641,.008,.214
ZS,.361,.158,-.088,.213

Table: Factor Correlation Matrix
Factor,1,2,3,4
1,1.000,.008,-.232,.294
2,.008,1.000,.065,.347
3,-.232,.065,1.000,-.076
4,.294,.347,-.076,1.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:1965"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_658
#AT_START_659
at_fn_group_banner 659 'factor.at:2091' \
  "FACTOR covariance matrix" "                       " 51
at_xfail=no
(
  printf "%s\n" "659. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >covariance-matrix.sps <<'_ATEOF'
set format = F10.3.
matrix data
    variables = rowtype_  var01 var02 var03 var04 var05 var06 var07 var08
    / format = lower diagonal .
begin data
mean     24.3  5.4  69.7  20.1  13.4  2.7  27.9  3.7
sd        5.7  1.5  23.5  5.8    2.8  4.5   5.4  1.5
n        92   92    92   92     92   92    92   92
cov   32.490000
cov   1.539000 2.250000
cov   -29.469000 -5.992500 552.250000
cov   11.901600 2.697000 -19.082000 33.640000
cov   4.309200 0.672000 -7.896000 3.572800 7.840000
cov   8.464500 1.012500 -17.977500 6.264000 2.646000 20.250000
cov   15.390000 2.349000 -25.380000 10.022400 1.814400 9.234000 29.160000
cov   1.453500 0.652500 -1.762500 1.740000 1.134000 1.350000 0.324000 2.250000
end data.

factor matrix in (cov = *)
    / method = covariance
    / print = initial covariance
    / extraction = pc
    / rotation = norotate.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:2119: pspp -O format=csv covariance-matrix.sps"
at_fn_check_prepare_trace "factor.at:2119"
( $at_check_trace; pspp -O format=csv covariance-matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Covariance Matrix
,var01,var02,var03,var04,var05,var06,var07,var08
var01,32.490,1.539,-29.469,11.902,4.309,8.464,15.390,1.454
var02,1.539,2.250,-5.992,2.697,.672,1.013,2.349,.653
var03,-29.469,-5.992,552.250,-19.082,-7.896,-17.977,-25.380,-1.763
var04,11.902,2.697,-19.082,33.640,3.573,6.264,10.022,1.740
var05,4.309,.672,-7.896,3.573,7.840,2.646,1.814,1.134
var06,8.464,1.013,-17.977,6.264,2.646,20.250,9.234,1.350
var07,15.390,2.349,-25.380,10.022,1.814,9.234,29.160,.324
var08,1.454,.653,-1.763,1.740,1.134,1.350,.324,2.250

Table: Communalities
,Initial
var01,32.490
var02,2.250
var03,552.250
var04,33.640
var05,7.840
var06,20.250
var07,29.160
var08,2.250

Table: Total Variance Explained
,Initial Eigenvalues,,
,Total,% of Variance,Cumulative %
1,556.895,81.9%,81.9%
2,57.963,8.5%,90.4%
3,23.576,3.5%,93.9%
4,16.446,2.4%,96.3%
5,14.603,2.1%,98.4%
6,6.831,1.0%,99.4%
7,2.375,.3%,99.8%
8,1.440,.2%,100.0%

Table: Component Matrix
,Component,,,,,,
,1,2,3,4,5,6,7
var01,1.394,4.388,1.513,-2.851,.849,.396,.033
var02,.269,.460,-.173,.147,-.146,-.213,.872
var03,-23.489,.725,.058,.003,.022,-.012,.006
var04,.926,4.007,-4.068,.241,-.253,.218,-.026
var05,.363,.829,-.172,-.255,.805,-2.492,.058
var06,.843,2.354,.971,2.425,2.649,.392,.046
var07,1.205,3.948,1.926,1.515,-2.450,-.317,-.087
var08,.085,.319,-.157,-.011,.353,-.341,-.816
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:2119"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_659
#AT_START_660
at_fn_group_banner 660 'factor.at:2172' \
  "FACTOR correlation matrix" "                      " 51
at_xfail=no
(
  printf "%s\n" "660. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >correlation-matrix.sps <<'_ATEOF'
set format = F10.3.

matrix data
    variables = rowtype_
    cdi_actws_16  cdi_maxzin_16  rdls_passws_16  rdls_actws_16  cdi_actws_20  cdi_maxzin_20  cdi_actws_26  cdi_maxzin_26  rdls_passws_26  rdls_actws_26
    nepsy_passws_36  morf_verv_36  bnt_actws_36  klankgr_id_36  snelnoe_36  letters_36  ppvt_passws_50  morf_verv_50
    nepsy_passws_56  bnt_actws_56  klank_gr_weg_56  snelnoe_56  letters_56
    leesacc_wo_owo_811  leesacc_tekst_811  leesacc_otekst_811  leessne_wo_owo_811  leesvl_tekst_811  leesvl_otekst_811  leessne_wo_811  spel_wo_owo_811
    / format = upper diagonal .
begin data
mean  64.44  1.74  15.30  11.50  269.03  5.37  441.90  8.57  36.59  33.99  11.68  14.74  18.67  6.70  71.57  2.28  70.45  51.82  18.82  34.57  11.68  45.63  12.94  35.08  92.60  79.28  2.78  61.71  29.44  9.46  13.17
sd   74.93  1.36  5.51  4.17  159.26  2.76  128.77  3.50  6.20  6.50  3.55  8.37  5.90  3.01  24.81  4.09  24.44  18.55  2.90  6.46  3.01  14.06  7.69  4.36  7.10  17.57  1.27  25.68  11.75  3.36  4.13
n     150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150 150
corr    1.00  .784  .397  .862  .692  .625  .490  .374  .406  .371  .260  .257  .306  .118  -.148  .072  .202  .234  .198  .241  .205  -.054  .246  .166  .143  .155  -.122  .144  -.010  .135  .241
corr    1.00  .333  .751  .549  .553  .447  .313  .304  .377  .204  .249  .258  .193  -.158  .119  .150  .216  .127  .209  .242  .046  .233  .120  .155  .107  -.126  .147  -.009  .134  .208
corr    1.00  .469  .433  .381  .442  .307  .462  .391  .378  .293  .369  .191  -.306  .238  .204  .215  .295  .285  .157  .069  .241  .029  .060  .054  -.043  .124  -.069  .054  .136
corr    1.00  .708  .663  .509  .419  .434  .432  .267  .255  .342  .132  -.192  .142  .228  .203  .248  .260  .200  -.051  .254  .136  .156  .109  -.126  .172  -.004  .157  .268
corr    1.00  .787  .710  .567  .402  .511  .274  .285  .332  .154  -.096  .247  .253  .235  .245  .257  .261  -.048  .243  .119  .194  .164  -.108  .184  .011  .157  .235
corr    1.00  .590  .646  .449  .505  .313  .322  .405  .148  -.117  .152  .294  .322  .252  .321  .267  -.055  .255  .118  .178  .137  -.110  .182  .004  .146  .216
corr    1.00  .548  .343  .619  .296  .260  .456  .149  -.098  .252  .279  .267  .342  .361  .186  -.066  .215  .107  .148  .059  -.114  .156  -.035  .095  .220
corr    1.00  .406  .509  .397  .236  .416  .037  -.179  .192  .334  .293  .277  .367  .162  -.150  .306  .171  .307  .173  -.128  .255  .075  .224  .315
corr    1.00  .410  .497  .560  .574  .240  -.301  .204  .508  .351  .457  .428  .242  -.117  .367  .136  .191  .191  -.102  .215  .053  .185  .273
corr    1.00  .328  .258  .534  .236  -.202  .200  .333  .209  .352  .375  .302  -.119  .272  .062  .203  .042  -.092  .220  .020  .158  .227
corr    1.00  .439  .488  .323  -.213  .287  .507  .427  .493  .522  .298  -.142  .371  .109  .215  .213  -.048  .228  .009  .133  .267
corr    1.00  .437  .381  -.158  .153  .403  .430  .383  .379  .150  -.141  .303  .115  .131  .155  -.170  .206  .039  .193  .254
corr    1.00  .247  -.143  .182  .521  .364  .415  .688  .304  -.185  .327  .188  .211  .202  -.111  .272  .122  .226  .301
corr    1.00  -.150  .229  .296  .249  .329  .255  .210  -.036  .252  .141  .230  .112  -.195  .309  .135  .250  .195
corr    1.00  -.132  -.204  -.162  -.284  -.166  -.189  .294  -.339  -.094  -.218  -.144  .153  -.246  -.128  -.192  -.239
corr    1.00  .151  .132  .166  .195  .387  -.214  .476  .154  .187  .167  -.236  .410  .316  .370  .245
corr    1.00  .388  .479  .591  .294  -.171  .351  .102  .245  .180  .003  .274  .059  .178  .236
corr    1.00  .408  .437  .276  -.153  .353  .251  .318  .229  -.111  .263  .042  .203  .349
corr    1.00  .467  .234  -.249  .382  .199  .313  .197  -.117  .263  .047  .215  .318
corr    1.00  .368  -.199  .441  .198  .224  .197  -.099  .329  .105  .256  .322
corr    1.00  -.211  .473  .233  .253  .268  -.198  .397  .229  .309  .277
corr    1.00  -.310  -.217  -.312  -.203  .227  -.296  -.260  -.276  -.321
corr    1.00  .368  .350  .311  -.313  .578  .338  .521  .458
corr    1.00  .415  .580  -.588  .545  .497  .635  .683
corr    1.00  .570  -.386  .494  .340  .538  .524
corr    1.00  -.366  .427  .299  .498  .506
corr    1.00  -.684  -.620  -.746  -.568
corr    1.00  .759  .900  .555
corr    1.00  .814  .400
corr    1.00  .621
corr    1.00
end data .

factor  matrix in (cor = *)
    / analysis = cdi_actws_16 rdls_actws_16 cdi_actws_20 cdi_actws_26 rdls_actws_26 bnt_actws_36 bnt_actws_56
    / format = default
    / criteria = factors (1)
    / extraction = pc
    / rotation = norotate
    / print = initial extraction .

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:2231: pspp -O format=csv correlation-matrix.sps"
at_fn_check_prepare_trace "factor.at:2231"
( $at_check_trace; pspp -O format=csv correlation-matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Communalities
,Initial,Extraction
cdi_actws_16,1.000,.614
rdls_actws_16,1.000,.660
cdi_actws_20,1.000,.695
cdi_actws_26,1.000,.650
rdls_actws_26,1.000,.536
bnt_actws_36,1.000,.443
bnt_actws_56,1.000,.316

Table: Total Variance Explained
,Initial Eigenvalues,,,Extraction Sums of Squared Loadings,,
,Total,% of Variance,Cumulative %,Total,% of Variance,Cumulative %
1,3.914,55.9%,55.9%,3.914,55.9%,55.9%
2,1.320,18.9%,74.8%,,,
3,.716,10.2%,85.0%,,,
4,.422,6.0%,91.0%,,,
5,.278,4.0%,95.0%,,,
6,.216,3.1%,98.1%,,,
7,.135,1.9%,100.0%,,,

Table: Component Matrix
,Component
,1
cdi_actws_16,.784
rdls_actws_16,.812
cdi_actws_20,.834
cdi_actws_26,.806
rdls_actws_26,.732
bnt_actws_36,.666
bnt_actws_56,.562
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:2231"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_660
#AT_START_661
at_fn_group_banner 661 'factor.at:2268' \
  "FACTOR bad input" "                               " 51
at_xfail=no
(
  printf "%s\n" "661. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >bad-input.sps <<'_ATEOF'
set format = F10.3.
MATRIX DATA VARIABLES S1 ROWTYPE_ V1 TO V3 /SPLIT=S1.
BEGIN DATA
0 MEAN 2 4 3
0 SD 1 2 3
0 N 9 9 9
0 KORR 1
0 CORV .6 1
0 CORR .7 .8 1
1 MEAN 9 8 7
1 SD 5 6 7
1 N 9 9 9
1 CORR 1
X CORR .4 1
1 CORR .3 .2 1
END DATA.

EXECUTE.

FACTOR MATRIX IN (CORR =!*)
       /PRINT = CORRELATION
       .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:2296: pspp -O format=csv bad-input.sps"
at_fn_check_prepare_trace "factor.at:2296"
( $at_check_trace; pspp -O format=csv bad-input.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/factor.at:2296"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_661
#AT_START_662
at_fn_group_banner 662 'factor.at:2301' \
  "FACTOR anti-image matrix" "                       " 51
at_xfail=no
(
  printf "%s\n" "662. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >anti-image-matrix.sps <<'_ATEOF'
SET FORMAT=F20.3 .
matrix data
 variables = rowtype_ viq piq pa ran piatwr  piatc
 / n = 476
 / format = lower diagonal .
begin data
mean  96.88  100.51  -1.73  -0.94  -2.52 -1.85
sd    10.97   11.19   1.19   0.88   0.85  0.97
corr    1.00
corr    0.38  1.00
corr    0.26  0.24  1.00
corr    0.16  0.17  0.34  1.00
corr    0.25  0.07  0.46  0.38  1.00
corr    0.37  0.22  0.39  0.30  0.59   1.00
end data.

factor matrix = in (cor = *)
 / analysis = viq piq pa ran piatwr piatc
 / format = sort
 / extraction = pc
 / rotation = norotate
 / print = aic
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:2328: pspp -O format=csv anti-image-matrix.sps"
at_fn_check_prepare_trace "factor.at:2328"
( $at_check_trace; pspp -O format=csv anti-image-matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Anti-Image Matrices
,,viq,piq,pa,ran,piatwr,piatc
Anti-image Covariance,viq,.762,-.248,-.048,.008,-.031,-.143
,piq,-.248,.807,-.117,-.081,.108,-.071
,pa,-.048,-.117,.711,-.125,-.173,-.060
,ran,.008,-.081,-.125,.808,-.143,-.035
,piatwr,-.031,.108,-.173,-.143,.551,-.265
,piatc,-.143,-.071,-.060,-.035,-.265,.581
Anti-image Correlation,viq,.741,-.316,-.066,.011,-.048,-.215
,piq,-.316,.624,-.154,-.100,.163,-.103
,pa,-.066,-.154,.811,-.165,-.277,-.093
,ran,.011,-.100,-.165,.825,-.214,-.051
,piatwr,-.048,.163,-.277,-.214,.675,-.469
,piatc,-.215,-.103,-.093,-.051,-.469,.729

Table: Component Matrix
,Component,,,,
,1,2,3,4,5
piatc,.774,.122,-.368,.365,-.322
piatwr,.754,.418,.442,.219,-.115
pa,.707,.124,-.117,-.161,.256
piq,.456,-.733,.122,-.289,-.377
viq,.589,-.539,.033,.298,.457
ran,.592,.262,-.069,-.638,.096
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:2328"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_662
#AT_START_663
at_fn_group_banner 663 'factor.at:2358' \
  "FACTOR Kaiser-Meyer-Olkin" "                      " 51
at_xfail=no
(
  printf "%s\n" "663. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >kmo.sps <<'_ATEOF'
SET FORMAT=F20.3 .
matrix data
 variables = rowtype_ viq piq pa ran piatwr  piatc
 / n = 476
 / format = lower diagonal .
begin data
mean  96.88  100.51  -1.73  -0.94  -2.52 -1.85
sd    10.97   11.19   1.19   0.88   0.85  0.97
corr    1.00
corr    0.38  1.00
corr    0.26  0.24  1.00
corr    0.16  0.17  0.34  1.00
corr    0.25  0.07  0.46  0.38  1.00
corr    0.37  0.22  0.39  0.30  0.59   1.00
end data.

factor matrix = in (cor = *)
 / analysis = viq piq pa ran piatwr piatc
 / extraction = pc
 / rotation = norotate
 / print = kmo
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/factor.at:2384: pspp -O format=csv kmo.sps"
at_fn_check_prepare_trace "factor.at:2384"
( $at_check_trace; pspp -O format=csv kmo.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: KMO and Bartlett's Test
Kaiser-Meyer-Olkin Measure of Sampling Adequacy,,.730
Bartlett's Test of Sphericity,Approx. Chi-Square,602.673
,df,15
,Sig.,.000

Table: Component Matrix
,Component,,,,
,1,2,3,4,5
viq,.589,-.539,.033,.298,.457
piq,.456,-.733,.122,-.289,-.377
pa,.707,.124,-.117,-.161,.256
ran,.592,.262,-.069,-.638,.096
piatwr,.754,.418,.442,.219,-.115
piatc,.774,.122,-.368,.365,-.322
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/factor.at:2384"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_663
#AT_START_664
at_fn_group_banner 664 'factor.at:2404' \
  "FACTOR syntax errors" "                           " 51
at_xfail=no
(
  printf "%s\n" "664. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >factor.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y.
FACTOR VARIABLES=**.
FACTOR MATRIX=**.
FACTOR MATRIX=IN **.
FACTOR MATRIX=IN(**).
FACTOR MATRIX=IN(CORR **).
FACTOR MATRIX=IN(CORR=**).
FACTOR MATRIX=IN(CORR=* **).
FACTOR **.
FACTOR VARIABLES=x/ANALYSIS=**.
FACTOR VARIABLES=x/PLOT=**.
FACTOR VARIABLES=x/METHOD=**.
FACTOR VARIABLES=x/ROTATION=PROMAX(**).
FACTOR VARIABLES=x/ROTATION=PROMAX(123 **).
FACTOR VARIABLES=x/ROTATION=**.
FACTOR VARIABLES=x/CRITERIA=FACTORS **.
FACTOR VARIABLES=x/CRITERIA=FACTORS(**).
FACTOR VARIABLES=x/CRITERIA=FACTORS(123 **).
FACTOR VARIABLES=x/CRITERIA=MINEIGEN **.
FACTOR VARIABLES=x/CRITERIA=MINEIGEN(**).
FACTOR VARIABLES=x/CRITERIA=MINEIGEN(123 **).
FACTOR VARIABLES=x/CRITERIA=ECONVERGE **.
FACTOR VARIABLES=x/CRITERIA=ECONVERGE(**).
FACTOR VARIABLES=x/CRITERIA=ECONVERGE(123 **).
FACTOR VARIABLES=x/CRITERIA=RCONVERGE **.
FACTOR VARIABLES=x/CRITERIA=RCONVERGE(**).
FACTOR VARIABLES=x/CRITERIA=RCONVERGE(123 **).
FACTOR VARIABLES=x/CRITERIA=**.
FACTOR VARIABLES=x/EXTRACTION=**.
FACTOR VARIABLES=x/FORMAT=BLANK **.
FACTOR VARIABLES=x/FORMAT=BLANK(**).
FACTOR VARIABLES=x/FORMAT=BLANK(123 **).
FACTOR VARIABLES=x/FORMAT=**.
FACTOR VARIABLES=x/PRINT=**.
FACTOR VARIABLES=x/MISSING=**.
FACTOR VARIABLES=x/ **.
FACTOR VARIABLES=x.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/factor.at:2444: pspp -O format=csv factor.sps"
at_fn_check_prepare_trace "factor.at:2444"
( $at_check_trace; pspp -O format=csv factor.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"factor.sps:2.18-2.19: error: FACTOR: Syntax error expecting variable name.
    2 | FACTOR VARIABLES=**.
      |                  ^~\"

\"factor.sps:3.15-3.16: error: FACTOR: Syntax error expecting \`IN('.
    3 | FACTOR MATRIX=**.
      |               ^~\"

\"factor.sps:4.15-4.19: error: FACTOR: Syntax error expecting \`IN('.
    4 | FACTOR MATRIX=IN **.
      |               ^~~~~\"

\"factor.sps:5.18-5.19: error: FACTOR: Matrix input for FACTOR must be either COV or CORR.
    5 | FACTOR MATRIX=IN(**).
      |                  ^~\"

\"factor.sps:6.23-6.24: error: FACTOR: Syntax error expecting \`='.
    6 | FACTOR MATRIX=IN(CORR **).
      |                       ^~\"

\"factor.sps:7.23-7.24: error: FACTOR: Syntax error expecting a file name or handle name.
    7 | FACTOR MATRIX=IN(CORR=**).
      |                       ^~\"

\"factor.sps:8.25-8.26: error: FACTOR: Syntax error expecting \`)'.
    8 | FACTOR MATRIX=IN(CORR=* **).
      |                         ^~\"

\"factor.sps:10.29-10.30: error: FACTOR: Syntax error expecting variable name.
   10 | FACTOR VARIABLES=x/ANALYSIS=**.
      |                             ^~\"

\"factor.sps:11.25-11.26: error: FACTOR: Syntax error expecting EIGEN.
   11 | FACTOR VARIABLES=x/PLOT=**.
      |                         ^~\"

\"factor.sps:12.27-12.28: error: FACTOR: Syntax error expecting COVARIANCE or CORRELATION.
   12 | FACTOR VARIABLES=x/METHOD=**.
      |                           ^~\"

\"factor.sps:13.36-13.37: error: FACTOR: Syntax error expecting integer.
   13 | FACTOR VARIABLES=x/ROTATION=PROMAX(**).
      |                                    ^~\"

\"factor.sps:14.40-14.41: error: FACTOR: Syntax error expecting \`)'.
   14 | FACTOR VARIABLES=x/ROTATION=PROMAX(123 **).
      |                                        ^~\"

\"factor.sps:15.29-15.30: error: FACTOR: Syntax error expecting DEFAULT, VARIMAX, EQUAMAX, QUARTIMAX, PROMAX, or NOROTATE.
   15 | FACTOR VARIABLES=x/ROTATION=**.
      |                             ^~\"

\"factor.sps:16.37-16.38: error: FACTOR: Syntax error expecting \`('.
   16 | FACTOR VARIABLES=x/CRITERIA=FACTORS **.
      |                                     ^~\"

\"factor.sps:17.37-17.38: error: FACTOR: Syntax error expecting integer.
   17 | FACTOR VARIABLES=x/CRITERIA=FACTORS(**).
      |                                     ^~\"

\"factor.sps:18.41-18.42: error: FACTOR: Syntax error expecting \`)'.
   18 | FACTOR VARIABLES=x/CRITERIA=FACTORS(123 **).
      |                                         ^~\"

\"factor.sps:19.38-19.39: error: FACTOR: Syntax error expecting \`('.
   19 | FACTOR VARIABLES=x/CRITERIA=MINEIGEN **.
      |                                      ^~\"

\"factor.sps:20.38-20.39: error: FACTOR: Syntax error expecting number.
   20 | FACTOR VARIABLES=x/CRITERIA=MINEIGEN(**).
      |                                      ^~\"

\"factor.sps:21.42-21.43: error: FACTOR: Syntax error expecting \`)'.
   21 | FACTOR VARIABLES=x/CRITERIA=MINEIGEN(123 **).
      |                                          ^~\"

\"factor.sps:22.39-22.40: error: FACTOR: Syntax error expecting \`('.
   22 | FACTOR VARIABLES=x/CRITERIA=ECONVERGE **.
      |                                       ^~\"

\"factor.sps:23.39-23.40: error: FACTOR: Syntax error expecting number.
   23 | FACTOR VARIABLES=x/CRITERIA=ECONVERGE(**).
      |                                       ^~\"

\"factor.sps:24.43-24.44: error: FACTOR: Syntax error expecting \`)'.
   24 | FACTOR VARIABLES=x/CRITERIA=ECONVERGE(123 **).
      |                                           ^~\"

\"factor.sps:25.39-25.40: error: FACTOR: Syntax error expecting \`('.
   25 | FACTOR VARIABLES=x/CRITERIA=RCONVERGE **.
      |                                       ^~\"

\"factor.sps:26.39-26.40: error: FACTOR: Syntax error expecting number.
   26 | FACTOR VARIABLES=x/CRITERIA=RCONVERGE(**).
      |                                       ^~\"

\"factor.sps:27.43-27.44: error: FACTOR: Syntax error expecting \`)'.
   27 | FACTOR VARIABLES=x/CRITERIA=RCONVERGE(123 **).
      |                                           ^~\"

\"factor.sps:28.29-28.30: error: FACTOR: Syntax error expecting FACTORS, MINEIGEN, ECONVERGE, RCONVERGE, ITERATE, or DEFAULT.
   28 | FACTOR VARIABLES=x/CRITERIA=**.
      |                             ^~\"

\"factor.sps:29.31-29.32: error: FACTOR: Syntax error expecting PAF, PC, PA1, or DEFAULT.
   29 | FACTOR VARIABLES=x/EXTRACTION=**.
      |                               ^~\"

\"factor.sps:30.33-30.34: error: FACTOR: Syntax error expecting \`('.
   30 | FACTOR VARIABLES=x/FORMAT=BLANK **.
      |                                 ^~\"

\"factor.sps:31.33-31.34: error: FACTOR: Syntax error expecting number.
   31 | FACTOR VARIABLES=x/FORMAT=BLANK(**).
      |                                 ^~\"

\"factor.sps:32.37-32.38: error: FACTOR: Syntax error expecting \`)'.
   32 | FACTOR VARIABLES=x/FORMAT=BLANK(123 **).
      |                                     ^~\"

\"factor.sps:33.27-33.28: error: FACTOR: Syntax error expecting SORT, BLANK, or DEFAULT.
   33 | FACTOR VARIABLES=x/FORMAT=**.
      |                           ^~\"

\"factor.sps:34.26-34.27: error: FACTOR: Syntax error expecting one of the following: UNIVARIATE, DET, AIC, SIG, CORRELATION, COVARIANCE, ROTATION, EXTRACTION, INITIAL, KMO, ALL, DEFAULT.
   34 | FACTOR VARIABLES=x/PRINT=**.
      |                          ^~\"

\"factor.sps:35.28-35.29: error: FACTOR: Syntax error expecting INCLUDE, EXCLUDE, LISTWISE, PAIRRWISE, or MEANSUB.
   35 | FACTOR VARIABLES=x/MISSING=**.
      |                            ^~\"

\"factor.sps:36.21-36.22: error: FACTOR: Syntax error expecting one of the following: ANALYSIS, PLOT, METHOD, ROTATION, CRITERIA, EXTRACTION, FORMAT, PRINT, MISSING.
   36 | FACTOR VARIABLES=x/ **.
      |                     ^~\"

\"factor.sps:37.18: warning: FACTOR: Factor analysis on a single variable is not useful.
   37 | FACTOR VARIABLES=x.
      |                  ^\"

error: FACTOR: At end of input: Syntax error expecting \`BEGIN DATA'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/factor.at:2444"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_664
#AT_START_665
at_fn_group_banner 665 'file-handle.at:19' \
  "FILE HANDLE" "                                    " 52
at_xfail=no
(
  printf "%s\n" "665. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >wiggle.txt <<'_ATEOF'
1
2
5
109
_ATEOF

cat >file-handle.sps <<'_ATEOF'
FILE HANDLE myhandle /NAME='wiggle.txt'.
DATA LIST LIST FILE=myhandle /x *.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/file-handle.at:31: pspp -O format=csv file-handle.sps"
at_fn_check_prepare_trace "file-handle.at:31"
( $at_check_trace; pspp -O format=csv file-handle.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/file-handle.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_665
#AT_START_666
at_fn_group_banner 666 'file-handle.at:45' \
  "FILE HANDLE syntax errors" "                      " 52
at_xfail=no
(
  printf "%s\n" "666. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >file-handle.sps <<'_ATEOF'
FILE HANDLE **.
FILE HANDLE x/NAME='x.txt'.
FILE HANDLE x/NAME='x.txt'.
FILE HANDLE y **.
FILE HANDLE y/NAME=**.
FILE HANDLE y/LRECL=8/LRECL=8.
FILE HANDLE y/LRECL=**.
FILE HANDLE y/TABWIDTH=8/TABWIDTH=8.
FILE HANDLE y/TABWIDTH=**.
FILE HANDLE y/MODE=CHARACTER/MODE=CHARACTER.
FILE HANDLE y/MODE=**.
FILE HANDLE y/ENDS=LF/ENDS=LF.
FILE HANDLE y/ENDS=**.
FILE HANDLE y/RECFORM=FIXED/RECFORM=FIXED.
FILE HANDLE y/RECFORM=**.
FILE HANDLE y/ENCODING='UTF-8'/ENCODING='UTF-8'.
FILE HANDLE y/ENCODING=**.
FILE HANDLE y/TABWIDTH=8.
FILE HANDLE y/NAME='x.txt'/MODE=360.
FILE HANDLE y/NAME='x.txt'/MODE=FIXED.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='file-handle.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/file-handle.at:71: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "file-handle.at:71"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"file-handle.sps:1.13-1.14: error: FILE HANDLE: Syntax error expecting identifier.
    1 | FILE HANDLE **.
      |             ^~\"

\"file-handle.sps:3.13: error: FILE HANDLE: File handle x is already defined.  Use CLOSE FILE HANDLE before redefining a file handle.
    3 | FILE HANDLE x/NAME='x.txt'.
      |             ^\"

\"file-handle.sps:4.15-4.16: error: FILE HANDLE: Syntax error expecting \`/'.
    4 | FILE HANDLE y **.
      |               ^~\"

\"file-handle.sps:5.20-5.21: error: FILE HANDLE: Syntax error expecting string.
    5 | FILE HANDLE y/NAME=**.
      |                    ^~\"

\"file-handle.sps:6.23-6.27: error: FILE HANDLE: Subcommand LRECL may only be specified once.
    6 | FILE HANDLE y/LRECL=8/LRECL=8.
      |                       ^~~~~\"

\"file-handle.sps:7.21-7.22: error: FILE HANDLE: Syntax error expecting positive integer for LRECL.
    7 | FILE HANDLE y/LRECL=**.
      |                     ^~\"

\"file-handle.sps:8.26-8.33: error: FILE HANDLE: Subcommand TABWIDTH may only be specified once.
    8 | FILE HANDLE y/TABWIDTH=8/TABWIDTH=8.
      |                          ^~~~~~~~\"

\"file-handle.sps:9.24-9.25: error: FILE HANDLE: Syntax error expecting positive integer for TABWIDTH.
    9 | FILE HANDLE y/TABWIDTH=**.
      |                        ^~\"

\"file-handle.sps:10.30-10.33: error: FILE HANDLE: Subcommand MODE may only be specified once.
   10 | FILE HANDLE y/MODE=CHARACTER/MODE=CHARACTER.
      |                              ^~~~\"

\"file-handle.sps:11.20-11.21: error: FILE HANDLE: Syntax error expecting CHARACTER, BINARY, IMAGE, or 360.
   11 | FILE HANDLE y/MODE=**.
      |                    ^~\"

\"file-handle.sps:12.23-12.26: error: FILE HANDLE: Subcommand ENDS may only be specified once.
   12 | FILE HANDLE y/ENDS=LF/ENDS=LF.
      |                       ^~~~\"

\"file-handle.sps:13.20-13.21: error: FILE HANDLE: Syntax error expecting LF or CRLF.
   13 | FILE HANDLE y/ENDS=**.
      |                    ^~\"

\"file-handle.sps:14.29-14.35: error: FILE HANDLE: Subcommand RECFORM may only be specified once.
   14 | FILE HANDLE y/RECFORM=FIXED/RECFORM=FIXED.
      |                             ^~~~~~~\"

\"file-handle.sps:15.23-15.24: error: FILE HANDLE: Syntax error expecting FIXED, VARIABLE, or SPANNED.
   15 | FILE HANDLE y/RECFORM=**.
      |                       ^~\"

\"file-handle.sps:16.32-16.39: error: FILE HANDLE: Subcommand ENCODING may only be specified once.
   16 | FILE HANDLE y/ENCODING='UTF-8'/ENCODING='UTF-8'.
      |                                ^~~~~~~~\"

\"file-handle.sps:17.24-17.25: error: FILE HANDLE: Syntax error expecting string.
   17 | FILE HANDLE y/ENCODING=**.
      |                        ^~\"

\"file-handle.sps:18.1-18.25: error: FILE HANDLE: Required subcommand NAME was not specified.
   18 | FILE HANDLE y/TABWIDTH=8.
      | ^~~~~~~~~~~~~~~~~~~~~~~~~\"

\"file-handle.sps:19.28-19.35: error: FILE HANDLE: RECFORM must be specified with MODE=360.
   19 | FILE HANDLE y/NAME='x.txt'/MODE=360.
      |                            ^~~~~~~~\"

\"file-handle.sps:20.33-20.37: error: FILE HANDLE: Syntax error expecting CHARACTER, BINARY, IMAGE, or 360.
   20 | FILE HANDLE y/NAME='x.txt'/MODE=FIXED.
      |                                 ^~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/file-handle.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_666
#AT_START_667
at_fn_group_banner 667 'file-handle.at:150' \
  "CLOSE FILE HANDLE" "                              " 52
at_xfail=no
(
  printf "%s\n" "667. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >wiggle.txt <<'_ATEOF'
1
2
5
109
_ATEOF

cat >wobble.txt <<'_ATEOF'
7
8
9
_ATEOF

cat >file-handle.sps <<'_ATEOF'
FILE HANDLE myhandle /NAME='wiggle.txt'.
DATA LIST LIST FILE=myhandle /x *.
LIST.

CLOSE FILE HANDLE myhandle.

FILE HANDLE myhandle /NAME='wobble.txt'.
DATA LIST LIST FILE=myhandle /x *.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/file-handle.at:173: pspp -O format=csv file-handle.sps"
at_fn_check_prepare_trace "file-handle.at:173"
( $at_check_trace; pspp -O format=csv file-handle.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from myhandle.
Variable,Format
x,F8.0

Table: Data List
x
1.00
2.00
5.00
109.00

Table: Reading free-form data from myhandle.
Variable,Format
x,F8.0

Table: Data List
x
7.00
8.00
9.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/file-handle.at:173"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_667
#AT_START_668
at_fn_group_banner 668 'file-handle.at:197' \
  "CLOSE FILE HANDLE syntax errors" "                " 52
at_xfail=no
(
  printf "%s\n" "668. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >wiggle.txt <<'_ATEOF'
1
2
5
109
_ATEOF

cat >file-handle.sps <<'_ATEOF'
FILE HANDLE myhandle /NAME='wiggle.txt'.
CLOSE FILE HANDLE myhandle **.
CLOSE FILE HANDLE myhandle.
CLOSE FILE HANDLE myhandle.
CLOSE FILE HANDLE **.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='file-handle.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/file-handle.at:214: pspp -O format=csv insert.sps"
at_fn_check_prepare_trace "file-handle.at:214"
( $at_check_trace; pspp -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"insert.sps:1.37-1.42: error: INSERT: Syntax error expecting CONTINUE or STOP.
    1 | INSERT FILE='file-handle.sps' ERROR=IGNORE.
      |                                     ^~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/file-handle.at:214"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_668
#AT_START_669
at_fn_group_banner 669 'flip.at:19' \
  "FLIP with NEWNAMES" "                             " 53
at_xfail=no
(
  printf "%s\n" "669. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >flip.sps <<'_ATEOF'
data list notable /N 1 (a) a b c d 2-9.
list.
begin data.
v 1 2 3 4 5
w 6 7 8 910
x1112131415
y1617181920
z2122232425
end data.
temporary.
compute e = a.
flip newnames=n.
list.
flip.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/flip.at:37: pspp -O format=csv flip.sps"
at_fn_check_prepare_trace "flip.at:37"
( $at_check_trace; pspp -O format=csv flip.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
N,a,b,c,d
v,1,2,3,4
w,6,7,8,9
x,11,12,13,14
y,16,17,18,19
z,21,22,23,24

\"flip.sps:12.1-12.4: warning: FLIP: FLIP ignores TEMPORARY.  Temporary transformations will be made permanent.
   12 | flip newnames=n.
      | ^~~~\"

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
e,1.00,6.00,11.00,16.00,21.00

Table: Data List
CASE_LBL,a,b,c,d,e
v,1.00,2.00,3.00,4.00,1.00
w,6.00,7.00,8.00,9.00,6.00
x,11.00,12.00,13.00,14.00,11.00
y,16.00,17.00,18.00,19.00,16.00
z,21.00,22.00,23.00,24.00,21.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/flip.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_669
#AT_START_670
at_fn_group_banner 670 'flip.at:68' \
  "FLIP without NEWNAMES" "                          " 53
at_xfail=no
(
  printf "%s\n" "670. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >flip.sps <<'_ATEOF'
data list list notable /v1 to v10.
format all(f2).
begin data.
1 2 3 4 5 6 7 8 9 10
4 5 6 7 8 9 10 11 12 13
end data.

list.

flip.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/flip.at:82: pspp -O format=csv flip.sps"
at_fn_check_prepare_trace "flip.at:82"
( $at_check_trace; pspp -O format=csv flip.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
1,2,3,4,5,6,7,8,9,10
4,5,6,7,8,9,10,11,12,13

Table: Data List
CASE_LBL,VAR000,VAR001
v1,1.00,4.00
v2,2.00,5.00
v3,3.00,6.00
v4,4.00,7.00
v5,5.00,8.00
v6,6.00,9.00
v7,7.00,10.00
v8,8.00,11.00
v9,9.00,12.00
v10,10.00,13.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/flip.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_670
#AT_START_671
at_fn_group_banner 671 'flip.at:106' \
  "FLIP badly formed" "                              " 53
at_xfail=no
(
  printf "%s\n" "671. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >flip.sps <<'_ATEOF'
data list notable /N 1 (a) a b c d 2-9.

flip newnames=n.
list.
flip.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/flip.at:116: pspp -O format=csv flip.sps"
at_fn_check_prepare_trace "flip.at:116"
( $at_check_trace; pspp -O format=csv flip.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/flip.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_671
#AT_START_672
at_fn_group_banner 672 'flip.at:122' \
  "FLIP with invalid variable names" "               " 53
at_xfail=no
(
  printf "%s\n" "672. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >flip.sps <<'_ATEOF'
data list notable list /N (a3) a b c d *.
begin data.
""   1  2  3  4
BY   1  2  3  4
end data.

flip newnames=n.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/flip.at:136: pspp -O format=csv flip.sps"
at_fn_check_prepare_trace "flip.at:136"
( $at_check_trace; pspp -O format=csv flip.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
CASE_LBL,v,BY1
a,1.00,1.00
b,2.00,2.00
c,3.00,3.00
d,4.00,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/flip.at:136"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_672
#AT_START_673
at_fn_group_banner 673 'formats.at:19' \
  "FORMATS positive tests" "                         " 54
at_xfail=no
(
  printf "%s\n" "673. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >formats.sps <<'_ATEOF'
DATA LIST LIST /a b c * x (A1) y (A2) z (A3).
DISPLAY VARIABLES.
FORMATS /a (COMMA10) b (N4).
DISPLAY VARIABLES.
FORMATS c (E8.1) x (A1) /y (AHEX4) z (A3).
DISPLAY VARIABLES.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/formats.at:28: pspp -o pspp.csv formats.sps"
at_fn_check_prepare_trace "formats.at:28"
( $at_check_trace; pspp -o pspp.csv formats.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/formats.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/formats.at:29: grep -E -v 'Measure|Display' pspp.csv"
at_fn_check_prepare_notrace 'a shell pipeline' "formats.at:29"
( $at_check_trace; grep -E -v 'Measure|Display' pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
a,F8.0
b,F8.0
c,F8.0
x,A1
y,A2
z,A3

Table: Variables
Name,Position,Print Format,Write Format
a,1,F8.2,F8.2
b,2,F8.2,F8.2
c,3,F8.2,F8.2
x,4,A1,A1
y,5,A2,A2
z,6,A3,A3

Table: Variables
Name,Position,Print Format,Write Format
a,1,COMMA10.0,COMMA10.0
b,2,N4.0,N4.0
c,3,F8.2,F8.2
x,4,A1,A1
y,5,A2,A2
z,6,A3,A3

Table: Variables
Name,Position,Print Format,Write Format
a,1,COMMA10.0,COMMA10.0
b,2,N4.0,N4.0
c,3,E8.1,E8.1
x,4,A1,A1
y,5,AHEX4,AHEX4
z,6,A3,A3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/formats.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_673
#AT_START_674
at_fn_group_banner 674 'formats.at:68' \
  "FORMATS negative tests" "                         " 54
at_xfail=no
(
  printf "%s\n" "674. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >formats.sps <<'_ATEOF'
DATA LIST LIST /a b c * x (A1) y (A2) z (A3).
FORMATS a (E6.1).
FORMATS a y (F4).
FORMATS x (A2).
FORMATS y (AHEX2).
FORMATS x y (A2).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/formats.at:77: pspp -O format=csv formats.sps"
at_fn_check_prepare_trace "formats.at:77"
( $at_check_trace; pspp -O format=csv formats.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
a,F8.0
b,F8.0
c,F8.0
x,A1
y,A2
z,A3

\"formats.sps:2.12-2.15: error: FORMATS: Output format E6.1 specifies 1 decimal place, but width 6 does not allow for any decimals.
    2 | FORMATS a (E6.1).
      |            ^~~~\"

\"formats.sps:3.11: error: FORMATS: a and y are not the same type.  All variables in this variable list must be of the same type.  y will be omitted from the list.
    3 | FORMATS a y (F4).
      |           ^\"

\"formats.sps:4.12-4.13: error: FORMATS: String variable x with width 1 is not compatible with format A2.  Use format A1 instead.
    4 | FORMATS x (A2).
      |            ^~\"

\"formats.sps:5.12-5.16: error: FORMATS: String variable y with width 2 is not compatible with format AHEX2.  Use format AHEX4 instead.
    5 | FORMATS y (AHEX2).
      |            ^~~~~\"

\"formats.sps:6.11: error: FORMATS: x and y are string variables with different widths.  All variables in this variable list must have the same width.  y will be omitted from the list.
    6 | FORMATS x y (A2).
      |           ^\"

\"formats.sps:6.14-6.15: error: FORMATS: String variable x with width 1 is not compatible with format A2.  Use format A1 instead.
    6 | FORMATS x y (A2).
      |              ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/formats.at:77"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_674
#AT_START_675
at_fn_group_banner 675 'frequencies.at:19' \
  "FREQUENCIES string variable" "                    " 55
at_xfail=no
(
  printf "%s\n" "675. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST FREE/
   name  (A8) value * quantity .
BEGIN DATA.
foo 1 5
bar 2 6
baz 1 9
quux 3 1
bar 1 2
baz 4 3
baz 1 4
baz 1 1
foo 6 0
quux 5 8
END DATA.
EXECUTE.

FREQUENCIES /VAR = name/ORDER=ANALYSIS.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:39: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:39"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: name
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,bar,2,20.0%,20.0%,20.0%
,baz,4,40.0%,40.0%,60.0%
,foo,2,20.0%,20.0%,80.0%
,quux,2,20.0%,20.0%,100.0%
Total,,10,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_675
#AT_START_676
at_fn_group_banner 676 'frequencies.at:50' \
  "FREQUENCIES with SPLIT FILE - LAYERED" "          " 55
at_xfail=no
(
  printf "%s\n" "676. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/name (A8) value quantity.
BEGIN DATA.
foo 1 5
bar 2 6
baz 1 9
quux 3 1
bar 1 2
baz 4 3
baz 1 4
baz 1 1
foo 6 0
quux 5 8
END DATA.
EXECUTE.

SORT CASES BY name.
SPLIT FILE BY name.
FREQUENCIES /VARIABLES=value quantity /FORMAT NOTABLE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:71: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:71"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,name,,,,,,,
,,bar,,baz,,foo,,quux,
,,value,quantity,value,quantity,value,quantity,value,quantity
N,Valid,2,2,4,4,2,2,2,2
,Missing,0,0,0,0,0,0,0,0
Mean,,1.50,4.00,1.75,4.25,3.50,2.50,4.00,4.50
Std Dev,,.71,2.83,1.50,3.40,3.54,3.54,1.41,4.95
Minimum,,1.00,2.00,1.00,1.00,1.00,.00,3.00,1.00
Maximum,,2.00,6.00,4.00,9.00,6.00,5.00,5.00,8.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_676
#AT_START_677
at_fn_group_banner 677 'frequencies.at:85' \
  "FREQUENCIES with SPLIT FILE - SEPARATE" "         " 55
at_xfail=no
(
  printf "%s\n" "677. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/name (A8) value quantity.
BEGIN DATA.
foo 1 5
bar 2 6
baz 1 9
quux 3 1
bar 1 2
baz 4 3
baz 1 4
baz 1 1
foo 6 0
quux 5 8
END DATA.
EXECUTE.

SORT CASES BY name.
SPLIT FILE SEPARATE BY name.
FREQUENCIES /VARIABLES=value quantity /FORMAT NOTABLE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:106: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:106"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
name,bar

Table: Statistics
,,value,quantity
N,Valid,2,2
,Missing,0,0
Mean,,1.50,4.00
Std Dev,,.71,2.83
Minimum,,1.00,2.00
Maximum,,2.00,6.00

Table: Split Values
Variable,Value
name,baz

Table: Statistics
,,value,quantity
N,Valid,4,4
,Missing,0,0
Mean,,1.75,4.25
Std Dev,,1.50,3.40
Minimum,,1.00,1.00
Maximum,,4.00,9.00

Table: Split Values
Variable,Value
name,foo

Table: Statistics
,,value,quantity
N,Valid,2,2
,Missing,0,0
Mean,,3.50,2.50
Std Dev,,3.54,3.54
Minimum,,1.00,.00
Maximum,,6.00,5.00

Table: Split Values
Variable,Value
name,quux

Table: Statistics
,,value,quantity
N,Valid,2,2
,Missing,0,0
Mean,,4.00,4.50
Std Dev,,1.41,4.95
Minimum,,3.00,1.00
Maximum,,5.00,8.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:106"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_677
#AT_START_678
at_fn_group_banner 678 'frequencies.at:161' \
  "FREQUENCIES with SPLIT FILE - LAYERED - unsorted data" "" 55
at_xfail=no
(
  printf "%s\n" "678. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/name (A8) value quantity.
BEGIN DATA.
foo 1 5
bar 2 6
baz 1 9
quux 3 1
baz 4 3
bar 1 2
baz 1 1
foo 6 0
baz 1 4
quux 5 8
END DATA.
EXECUTE.

SPLIT FILE BY name.
FREQUENCIES /VARIABLES=value quantity /FORMAT NOTABLE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:181: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:181"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"frequencies.sps:17: warning: FREQUENCIES: When SPLIT FILE is in effect, the input data must be sorted by the split variables (for example, using SORT CASES), but multiple runs of cases with the same split values were found separated by cases with different values.  Each run will be analyzed separately.  The duplicate split values are: name = baz     \"

\"frequencies.sps:17: warning: FREQUENCIES: When SPLIT FILE is in effect, the input data must be sorted by the split variables (for example, using SORT CASES), but multiple runs of cases with the same split values were found separated by cases with different values.  Each run will be analyzed separately.  The duplicate split values are: name = bar     \"

\"frequencies.sps:17: warning: FREQUENCIES: When SPLIT FILE is in effect, the input data must be sorted by the split variables (for example, using SORT CASES), but multiple runs of cases with the same split values were found separated by cases with different values.  Each run will be analyzed separately.  The duplicate split values are: name = baz     \"

\"frequencies.sps:17: warning: FREQUENCIES: When SPLIT FILE is in effect, the input data must be sorted by the split variables (for example, using SORT CASES), but multiple runs of cases with the same split values were found separated by cases with different values.  Each run will be analyzed separately.  The duplicate split values are: name = foo     \"

\"frequencies.sps:17: warning: FREQUENCIES: When SPLIT FILE is in effect, the input data must be sorted by the split variables (for example, using SORT CASES), but multiple runs of cases with the same split values were found separated by cases with different values.  Each run will be analyzed separately.  The duplicate split values are: name = baz     \"

Table: Statistics
,,name,,,,,,,,,,,,,,,,,,,
,,foo,,bar,,baz,,quux,,baz,,bar,,baz,,foo,,baz,,quux,
,,value,quantity,value,quantity,value,quantity,value,quantity,value,quantity,value,quantity,value,quantity,value,quantity,value,quantity,value,quantity
N,Valid,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,Missing,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Mean,,1.00,5.00,2.00,6.00,1.00,9.00,3.00,1.00,4.00,3.00,1.00,2.00,1.00,1.00,6.00,.00,1.00,4.00,5.00,8.00
Std Dev,,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN
Minimum,,1.00,5.00,2.00,6.00,1.00,9.00,3.00,1.00,4.00,3.00,1.00,2.00,1.00,1.00,6.00,.00,1.00,4.00,5.00,8.00
Maximum,,1.00,5.00,2.00,6.00,1.00,9.00,3.00,1.00,4.00,3.00,1.00,2.00,1.00,1.00,6.00,.00,1.00,4.00,5.00,8.00

frequencies.sps:17: warning: FREQUENCIES: Suppressed 1 additional warning about duplicate split values.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:181"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_678
#AT_START_679
at_fn_group_banner 679 'frequencies.at:209' \
  "FREQUENCIES two runs crash" "                     " 55
at_xfail=no
(
  printf "%s\n" "679. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
data list free /v1 v2.
begin data.
0 1
2 3
4 5
3 4
end data.

frequencies v1 v2/statistics=none/ORDER=VARIABLE.
frequencies v1 v2/statistics=none.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:222: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:222"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: v1
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,.00,1,25.0%,25.0%,25.0%
,2.00,1,25.0%,25.0%,50.0%
,3.00,1,25.0%,25.0%,75.0%
,4.00,1,25.0%,25.0%,100.0%
Total,,4,100.0%,,

Table: v2
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,1,25.0%,25.0%,25.0%
,3.00,1,25.0%,25.0%,50.0%
,4.00,1,25.0%,25.0%,75.0%
,5.00,1,25.0%,25.0%,100.0%
Total,,4,100.0%,,

Table: v1
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,.00,1,25.0%,25.0%,25.0%
,2.00,1,25.0%,25.0%,50.0%
,3.00,1,25.0%,25.0%,75.0%
,4.00,1,25.0%,25.0%,100.0%
Total,,4,100.0%,,

Table: v2
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,1,25.0%,25.0%,25.0%
,3.00,1,25.0%,25.0%,50.0%
,4.00,1,25.0%,25.0%,75.0%
,5.00,1,25.0%,25.0%,100.0%
Total,,4,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:222"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_679
#AT_START_680
at_fn_group_banner 680 'frequencies.at:258' \
  "FREQUENCIES with LIMIT" "                         " 55
at_xfail=no
(
  printf "%s\n" "680. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
data list free /v1 v2.
begin data.
0 1
2 5
4 3
3 5
end data.

frequencies v1 v2/statistics=none/FORMAT=LIMIT(3).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:270: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:270"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: v2
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,1,25.0%,25.0%,25.0%
,3.00,1,25.0%,25.0%,50.0%
,5.00,2,50.0%,50.0%,100.0%
Total,,4,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:270"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_680
#AT_START_681
at_fn_group_banner 681 'frequencies.at:282' \
  "FREQUENCIES HTML output crash" "                  " 55
at_xfail=no
(
  printf "%s\n" "681. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
data list free /v1 v2.
begin data.
0 1
2 3
4 5
3 4
end data.

list.

frequencies v1/statistics=none.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:296: pspp -o - -O format=csv -o pspp.html frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:296"
( $at_check_trace; pspp -o - -O format=csv -o pspp.html frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
v1,v2
.00,1.00
2.00,3.00
4.00,5.00
3.00,4.00

Table: v1
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,.00,1,25.0%,25.0%,25.0%
,2.00,1,25.0%,25.0%,50.0%
,3.00,1,25.0%,25.0%,75.0%
,4.00,1,25.0%,25.0%,100.0%
Total,,4,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:296"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:312: test -s pspp.html"
at_fn_check_prepare_trace "frequencies.at:312"
( $at_check_trace; test -s pspp.html
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:312"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_681
#AT_START_682
at_fn_group_banner 682 'frequencies.at:317' \
  "FREQUENCIES pie chart crash" "                    " 55
at_xfail=no
(
  printf "%s\n" "682. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
data list list /x * w *.
begin data.
1  4
34 10
-9 15
232 6
11  4
134 1
9  5
32 16
-2 6
2  16
20  6
end data.

weight by w.

frequencies /x /format=notable /statistics=none
	/piechart.
_ATEOF

# Cannot use the CSV driver for this because it does not output charts
# at all.
{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:341: pspp frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:341"
( $at_check_trace; pspp frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Reading free-form data from INLINE.
+--------+------+
|Variable|Format|
+--------+------+
|x       |F8.0  |
|w       |F8.0  |
+--------+------+
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:341"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_682
#AT_START_683
at_fn_group_banner 683 'frequencies.at:353' \
  "FREQUENCIES histogram crash" "                    " 55
at_xfail=no
(
  printf "%s\n" "683. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
data list notable list /x * w *.
begin data.
1  4
34 10
-9 15
232 6
11  4
134 1
9  5
32 16
-2 6
2  16
20  6
end data.

weight by w.

frequencies /x
	    /format=notable
	    /statistics=none
	    /histogram=minimum(0) maximum(50) percent(5) normal.
_ATEOF

# Cannot use the CSV driver for this because it does not output charts
# at all.
{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:379: pspp -O format=pdf frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:379"
( $at_check_trace; pspp -O format=pdf frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:379"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_683
#AT_START_684
at_fn_group_banner 684 'frequencies.at:384' \
  "FREQUENCIES median with histogram crash" "        " 55
at_xfail=no
(
  printf "%s\n" "684. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
data list list notable /x.
begin data.
1
end data.

frequencies /x /histogram /STATISTICS=median.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:393: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:393"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:393"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_684
#AT_START_685
at_fn_group_banner 685 'frequencies.at:399' \
  "FREQUENCIES crash after TEMPORARY" "              " 55
at_xfail=no
(
  printf "%s\n" "685. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST /SEX (A1) X *.
BEGIN DATA.
M 31
F 21
M 41
F 31
M 13
F 12
M 14
F 13
END DATA.


TEMPORARY
SELECT IF SEX EQ 'F'
FREQUENCIES /X .

FINISH
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:420: pspp -o pspp.csv -o pspp.txt frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:420"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:420"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:421: cat pspp.csv"
at_fn_check_prepare_trace "frequencies.at:421"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
SEX,A1
X,F8.0

Table: Statistics
,,X
N,Valid,4
,Missing,0
Mean,,19.25
Std Dev,,8.81
Minimum,,12.00
Maximum,,31.00

Table: X
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,12.00,1,25.0%,25.0%,25.0%
,13.00,1,25.0%,25.0%,50.0%
,21.00,1,25.0%,25.0%,75.0%
,31.00,1,25.0%,25.0%,100.0%
Total,,4,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:421"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_685
#AT_START_686
at_fn_group_banner 686 'frequencies.at:463' \
  "FREQUENCIES basic percentiles" "                  " 55
at_xfail=no
(
  printf "%s\n" "686. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST notable /x y.
BEGIN DATA.
1 10
2 20
3 30
4 40
5 50
END DATA.

FREQUENCIES
	VAR=x y
	/FORMAT=NOTABLE
	/PERCENTILES = 0 25 33.333 50 66.666 75 100.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:479: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:479"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,x,y
N,Valid,5,5
,Missing,0,0
Mean,,3.00,30.00
Std Dev,,1.58,15.81
Minimum,,1.00,10.00
Maximum,,5.00,50.00
Percentiles,0,1.00,10.00
,25,2.00,20.00
,33,2.33,23.33
,50,3.00,30.00
,67,3.67,36.67
,75,4.00,40.00
,100,5.00,50.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:479"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_686
#AT_START_687
at_fn_group_banner 687 'frequencies.at:483' \
  "FREQUENCIES basic n-tiles" "                      " 55
at_xfail=no
(
  printf "%s\n" "687. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST notable /x y.
BEGIN DATA.
1 10
2 20
3 30
4 40
5 50
END DATA.

FREQUENCIES
	VAR=x y
	/FORMAT=NOTABLE
	/NTILES = 3
	/NTILES = 4.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:500: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:500"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,x,y
N,Valid,5,5
,Missing,0,0
Mean,,3.00,30.00
Std Dev,,1.58,15.81
Minimum,,1.00,10.00
Maximum,,5.00,50.00
Percentiles,0,1.00,10.00
,25,2.00,20.00
,33,2.33,23.33
,50,3.00,30.00
,67,3.67,36.67
,75,4.00,40.00
,100,5.00,50.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:500"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_687
#AT_START_688
at_fn_group_banner 688 'frequencies.at:504' \
  "FREQUENCIES compatibility percentiles" "          " 55
at_xfail=no
(
  printf "%s\n" "688. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST notable /X * .
BEGIN DATA.
1
2
3
4
5
END DATA.

FREQUENCIES
	VAR=x
	/ALGORITHM=COMPATIBLE
	/PERCENTILES = 0 25 50 75 100.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:520: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:520"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,X
N,Valid,5
,Missing,0
Mean,,3.00
Std Dev,,1.58
Minimum,,1.00
Maximum,,5.00
Percentiles,0,1.00
,25,1.50
,50,3.00
,75,4.50
,100,5.00

Table: X
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,1,20.0%,20.0%,20.0%
,2.00,1,20.0%,20.0%,40.0%
,3.00,1,20.0%,20.0%,60.0%
,4.00,1,20.0%,20.0%,80.0%
,5.00,1,20.0%,20.0%,100.0%
Total,,5,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:520"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_688
#AT_START_689
at_fn_group_banner 689 'frequencies.at:546' \
  "FREQUENCIES enhanced percentiles" "               " 55
at_xfail=no
(
  printf "%s\n" "689. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST notable /X * .
BEGIN DATA.
1
2
3
4
5
END DATA.

FREQUENCIES
	VAR=x
	/PERCENTILES = 0 25 50 75 100.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:561: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:561"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,X
N,Valid,5
,Missing,0
Mean,,3.00
Std Dev,,1.58
Minimum,,1.00
Maximum,,5.00
Percentiles,0,1.00
,25,2.00
,50,3.00
,75,4.00
,100,5.00

Table: X
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,1,20.0%,20.0%,20.0%
,2.00,1,20.0%,20.0%,40.0%
,3.00,1,20.0%,20.0%,60.0%
,4.00,1,20.0%,20.0%,80.0%
,5.00,1,20.0%,20.0%,100.0%
Total,,5,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:561"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_689
#AT_START_690
at_fn_group_banner 690 'frequencies.at:587' \
  "FREQUENCIES enhanced percentiles, weighted" "     " 55
at_xfail=no
(
  printf "%s\n" "690. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST notable /X * F *.
BEGIN DATA.
1 2
2 2
3 2
4 1
4 1
5 1
5 1
END DATA.

WEIGHT BY f.

FREQUENCIES
	VAR=x
	/PERCENTILES = 0 25 50 75 100.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:606: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:606"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,X
N,Valid,10.00
,Missing,.00
Mean,,3.00
Std Dev,,1.49
Minimum,,1.00
Maximum,,5.00
Percentiles,0,1.00
,25,2.00
,50,3.00
,75,4.00
,100,5.00

Table: X
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,2.00,20.0%,20.0%,20.0%
,2.00,2.00,20.0%,20.0%,40.0%
,3.00,2.00,20.0%,20.0%,60.0%
,4.00,2.00,20.0%,20.0%,80.0%
,5.00,2.00,20.0%,20.0%,100.0%
Total,,10.00,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:606"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_690
#AT_START_691
at_fn_group_banner 691 'frequencies.at:632' \
  "FREQUENCIES enhanced percentiles, weighted (2)" " " 55
at_xfail=no
(
  printf "%s\n" "691. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST notable /X * F *.
BEGIN DATA.
1 1
3 2
4 1
5 1
5 1
END DATA.

WEIGHT BY f.

FREQUENCIES
	VAR=x
	/PERCENTILES = 0 25 50 75 100.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:649: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:649"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,X
N,Valid,6.00
,Missing,.00
Mean,,3.50
Std Dev,,1.52
Minimum,,1.00
Maximum,,5.00
Percentiles,0,1.00
,25,3.00
,50,3.50
,75,4.75
,100,5.00

Table: X
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,1.00,16.7%,16.7%,16.7%
,3.00,2.00,33.3%,33.3%,50.0%
,4.00,1.00,16.7%,16.7%,66.7%
,5.00,2.00,33.3%,33.3%,100.0%
Total,,6.00,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:649"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_691
#AT_START_692
at_fn_group_banner 692 'frequencies.at:675' \
  "FREQUENCIES enhanced percentiles, weighted (3)" " " 55
at_xfail=no
(
  printf "%s\n" "692. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST notable /X * F *.
BEGIN DATA.
1 7
2 16
3 12
4 5
END DATA.

WEIGHT BY f.

FREQUENCIES
	VAR=x
	/PERCENTILES = 0 25 50 75 100.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:691: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:691"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,X
N,Valid,40.00
,Missing,.00
Mean,,2.38
Std Dev,,.93
Minimum,,1.00
Maximum,,4.00
Percentiles,0,1.00
,25,2.00
,50,2.00
,75,3.00
,100,4.00

Table: X
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,7.00,17.5%,17.5%,17.5%
,2.00,16.00,40.0%,40.0%,57.5%
,3.00,12.00,30.0%,30.0%,87.5%
,4.00,5.00,12.5%,12.5%,100.0%
Total,,40.00,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:691"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_692
#AT_START_693
at_fn_group_banner 693 'frequencies.at:716' \
  "FREQUENCIES enhanced percentiles, weighted, missing values" "" 55
at_xfail=no
(
  printf "%s\n" "693. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST notable /X * F *.
BEGIN DATA.
1 1
3 2
4 1
5 1
5 1
99 4
END DATA.

MISSING VALUE x (99.0) .
WEIGHT BY f.

FREQUENCIES
	VAR=x
	/PERCENTILES = 0 25 50 75 100.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:736: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:736"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,X
N,Valid,6.00
,Missing,4.00
Mean,,3.50
Std Dev,,1.52
Minimum,,1.00
Maximum,,5.00
Percentiles,0,1.00
,25,3.00
,50,3.50
,75,4.75
,100,5.00

Table: X
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,1.00,10.0%,16.7%,16.7%
,3.00,2.00,20.0%,33.3%,50.0%
,4.00,1.00,10.0%,16.7%,66.7%
,5.00,2.00,20.0%,33.3%,100.0%
Missing,99.00,4.00,40.0%,,
Total,,10.00,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:736"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_693
#AT_START_694
at_fn_group_banner 694 'frequencies.at:762' \
  "FREQUENCIES dichotomous histogram" "              " 55
at_xfail=no
(
  printf "%s\n" "694. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
data list notable list /d4 *.
begin data.
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
2
0
end data.

FREQUENCIES
	/VARIABLES = d4
	/FORMAT=AVALUE TABLE
	/HISTOGRAM=NORMAL
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:792: pspp frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:792"
( $at_check_trace; pspp frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:792"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_694
#AT_START_695
at_fn_group_banner 695 'frequencies.at:796' \
  "FREQUENCIES median" "                             " 55
at_xfail=no
(
  printf "%s\n" "695. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >median.sps <<'_ATEOF'
data list notable list /x *.
begin data.
1
2
3000000
end data.

FREQUENCIES
	/VARIABLES = x
	/STATISTICS = MEDIAN
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:811: pspp median.sps -O format=csv"
at_fn_check_prepare_trace "frequencies.at:811"
( $at_check_trace; pspp median.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,x
N,Valid,3
,Missing,0
Median,,2.00

Table: x
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,1,33.3%,33.3%,33.3%
,2.00,1,33.3%,33.3%,66.7%
,3000000,1,33.3%,33.3%,100.0%
Total,,3,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:811"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_695
#AT_START_696
at_fn_group_banner 696 'frequencies.at:827' \
  "FREQUENCIES variance" "                           " 55
at_xfail=no
(
  printf "%s\n" "696. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >variance.sps <<'_ATEOF'
data list notable list /forename (A12) height.
begin data.
Ahmed 188
bertram 167
Catherine 134
David 109
end data.

FREQUENCIES
   /VARIABLES = height
   /STATISTICS = VARIANCE.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:842: pspp variance.sps -O format=csv"
at_fn_check_prepare_trace "frequencies.at:842"
( $at_check_trace; pspp variance.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,height
N,Valid,4
,Missing,0
Variance,,1223.00

Table: height
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,109.00,1,25.0%,25.0%,25.0%
,134.00,1,25.0%,25.0%,50.0%
,167.00,1,25.0%,25.0%,75.0%
,188.00,1,25.0%,25.0%,100.0%
Total,,4,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:842"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_696
#AT_START_697
at_fn_group_banner 697 'frequencies.at:859' \
  "FREQUENCIES default statistics" "                 " 55
at_xfail=no
(
  printf "%s\n" "697. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >median.sps <<'_ATEOF'
data list notable list /x *.
begin data.
10
20
3000000
end data.

FREQUENCIES
	/VARIABLES = x
	/STATISTICS
	.

FREQUENCIES
	/VARIABLES = x
	/STATISTICS = DEFAULT
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:879: pspp median.sps -o pspp.csv -o pspp.txt"
at_fn_check_prepare_trace "frequencies.at:879"
( $at_check_trace; pspp median.sps -o pspp.csv -o pspp.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:879"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:880: cat pspp.csv"
at_fn_check_prepare_trace "frequencies.at:880"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,x
N,Valid,3
,Missing,0
Mean,,1000010
Std Dev,,1732042
Minimum,,10.00
Maximum,,3000000

Table: x
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,10.00,1,33.3%,33.3%,33.3%
,20.00,1,33.3%,33.3%,66.7%
,3000000,1,33.3%,33.3%,100.0%
Total,,3,100.0%,,

Table: Statistics
,,x
N,Valid,3
,Missing,0
Mean,,1000010
Std Dev,,1732042
Minimum,,10.00
Maximum,,3000000

Table: x
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,10.00,1,33.3%,33.3%,33.3%
,20.00,1,33.3%,33.3%,66.7%
,3000000,1,33.3%,33.3%,100.0%
Total,,3,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:880"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_697
#AT_START_698
at_fn_group_banner 698 'frequencies.at:917' \
  "FREQUENCIES no valid data" "                      " 55
at_xfail=no
(
  printf "%s\n" "698. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >empty.sps <<'_ATEOF'
data list notable list /x *.
begin data.
.
.
.
end data.

FREQUENCIES
	/VARIABLES = x
	/STATISTICS = ALL
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:932: pspp empty.sps -O format=csv"
at_fn_check_prepare_trace "frequencies.at:932"
( $at_check_trace; pspp empty.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Statistics
,,x
N,Valid,0
,Missing,3
Mean,,.  
S.E. Mean,,.  
Median,,.  
Mode,,.  
Std Dev,,.  
Variance,,.  
Kurtosis,,.  
S.E. Kurt,,.  
Skewness,,.  
S.E. Skew,,.  
Range,,.  
Minimum,,.  
Maximum,,.  
Sum,,.  

Table: x
,,Frequency,Percent
Missing,.  ,3,100.0%
Total,,3,.0%
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:932"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_698
#AT_START_699
at_fn_group_banner 699 'frequencies.at:961' \
  "FREQUENCIES histogram no valid cases" "           " 55
at_xfail=no
(
  printf "%s\n" "699. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >empty.sps <<'_ATEOF'
data list notable list /x w *.
begin data.
1 .
2 .
3 .
end data.

weight by w.

FREQUENCIES
	/VARIABLES = x
	/histogram
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:978: pspp empty.sps -O format=csv"
at_fn_check_prepare_trace "frequencies.at:978"
( $at_check_trace; pspp empty.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:978"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_699
#AT_START_700
at_fn_group_banner 700 'frequencies.at:982' \
  "FREQUENCIES percentiles + histogram bug#48128" "  " 55
at_xfail=no
(
  printf "%s\n" "700. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >bug.sps <<'_ATEOF'
SET FORMAT=F8.0.

INPUT PROGRAM.
	LOOP I=1 TO 10.
		COMPUTE SCORE=EXP(NORMAL(1)).
		END CASE.
	END LOOP.
	END FILE.
END INPUT PROGRAM.

FREQUENCIES VARIABLES=SCORE
/FORMAT=NOTABLE
/STATISTICS=ALL
/PERCENTILES=1 10 20 30 40 50 60 70 80 90 99
/HISTOGRAM.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:1002: pspp bug.sps"
at_fn_check_prepare_trace "frequencies.at:1002"
( $at_check_trace; pspp bug.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:1002"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_700
#AT_START_701
at_fn_group_banner 701 'frequencies.at:1007' \
  "FREQUENCIES vs. missing weights" "                " 55
at_xfail=no
(
  printf "%s\n" "701. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >warn.sps <<'_ATEOF'
data list notable list /x w .
begin data.
1 1
2 1
1 1
3 1
3 .
4 .
end data.

weight by w.

frequencies /variables=x.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:1024: pspp warn.sps -O format=csv"
at_fn_check_prepare_trace "frequencies.at:1024"
( $at_check_trace; pspp warn.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"warn.sps:13: warning: FREQUENCIES: 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.\"

Table: Statistics
,,x
N,Valid,4.00
,Missing,.00
Mean,,1.75
Std Dev,,.96
Minimum,,1.00
Maximum,,4.00

Table: x
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,1.00,2.00,50.0%,50.0%,50.0%
,2.00,1.00,25.0%,25.0%,75.0%
,3.00,1.00,25.0%,25.0%,100.0%
,4.00,.00,.0%,.0%,100.0%
Total,,4.00,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/frequencies.at:1024"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_701
#AT_START_702
at_fn_group_banner 702 'frequencies.at:1047' \
  "FREQUENCIES syntax errors" "                      " 55
at_xfail=no
(
  printf "%s\n" "702. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >frequencies.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
FREQUENCIES VARIABLES **.
FREQUENCIES **.
FREQUENCIES x/STATISTICS **.
FREQUENCIES x/PERCENTILES **.
FREQUENCIES x/FORMAT LIMIT **.
FREQUENCIES x/FORMAT LIMIT(**).
FREQUENCIES x/FORMAT LIMIT(5 **).
FREQUENCIES x/FORMAT **.
FREQUENCIES x/NTILES **.
FREQUENCIES x/ALGORITHM **.
FREQUENCIES x/HISTOGRAM FREQ(**).
FREQUENCIES x/HISTOGRAM FREQ(5 **).
FREQUENCIES x/HISTOGRAM PERCENT(**).
FREQUENCIES x/HISTOGRAM PERCENT(5 **).
FREQUENCIES x/HISTOGRAM MINIMUM(**).
FREQUENCIES x/HISTOGRAM MINIMUM(5 **).
FREQUENCIES x/HISTOGRAM MAXIMUM(**).
FREQUENCIES x/HISTOGRAM MAXIMUM(5 **).
FREQUENCIES x/HISTOGRAM MINIMUM(5) MAXIMUM(1).
FREQUENCIES x/HISTOGRAM MAXIMUM(5) MINIMUM(10).
FREQUENCIES x/HISTOGRAM **.
FREQUENCIES x/PIECHART MINIMUM(**).
FREQUENCIES x/PIECHART MINIMUM(5 **).
FREQUENCIES x/PIECHART MAXIMUM(**).
FREQUENCIES x/PIECHART MAXIMUM(5 **).
FREQUENCIES x/PIECHART MINIMUM(5) MAXIMUM(1).
FREQUENCIES x/PIECHART MAXIMUM(5) MINIMUM(10).
FREQUENCIES x/PIECHART **.
FREQUENCIES x/BARCHART FREQ(**).
FREQUENCIES x/BARCHART FREQ(5 **).
FREQUENCIES x/BARCHART PERCENT(**).
FREQUENCIES x/BARCHART PERCENT(5 **).
FREQUENCIES x/BARCHART MINIMUM(**).
FREQUENCIES x/BARCHART MINIMUM(5 **).
FREQUENCIES x/BARCHART MAXIMUM(**).
FREQUENCIES x/BARCHART MAXIMUM(5 **).
FREQUENCIES x/BARCHART MINIMUM(5) MAXIMUM(1).
FREQUENCIES x/BARCHART MAXIMUM(5) MINIMUM(10).
FREQUENCIES x/BARCHART **.
FREQUENCIES x/MISSING **.
FREQUENCIES x/ORDER **.
FREQUENCIES x/ **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/frequencies.at:1093: pspp -O format=csv frequencies.sps"
at_fn_check_prepare_trace "frequencies.at:1093"
( $at_check_trace; pspp -O format=csv frequencies.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"frequencies.sps:2.23-2.24: error: FREQUENCIES: Syntax error expecting \`='.
    2 | FREQUENCIES VARIABLES **.
      |                       ^~\"

\"frequencies.sps:3.13-3.14: error: FREQUENCIES: Syntax error expecting variable name.
    3 | FREQUENCIES **.
      |             ^~\"

\"frequencies.sps:4.26-4.27: error: FREQUENCIES: Syntax error expecting one of the following: MEAN, SEMEAN, MEDIAN, MODE, STDDEV, VARIANCE, KURTOSIS, SEKURTOSIS, SKEWNESS, SESKEWNESS, RANGE, MINIMUM, MAXIMUM, SUM, DEFAULT, ALL, NONE.
    4 | FREQUENCIES x/STATISTICS **.
      |                          ^~\"

\"frequencies.sps:5.27-5.28: error: FREQUENCIES: Syntax error expecting number between 0 and 100 for PERCENTILES.
    5 | FREQUENCIES x/PERCENTILES **.
      |                           ^~\"

\"frequencies.sps:6.28-6.29: error: FREQUENCIES: Syntax error expecting \`('.
    6 | FREQUENCIES x/FORMAT LIMIT **.
      |                            ^~\"

\"frequencies.sps:7.28-7.29: error: FREQUENCIES: Syntax error expecting non-negative integer for LIMIT.
    7 | FREQUENCIES x/FORMAT LIMIT(**).
      |                            ^~\"

\"frequencies.sps:8.30-8.31: error: FREQUENCIES: Syntax error expecting \`)'.
    8 | FREQUENCIES x/FORMAT LIMIT(5 **).
      |                              ^~\"

\"frequencies.sps:9.22-9.23: error: FREQUENCIES: Syntax error expecting TABLE, NOTABLE, LIMIT, AVALUE, DVALUE, AFREQ, or DFREQ.
    9 | FREQUENCIES x/FORMAT **.
      |                      ^~\"

\"frequencies.sps:10.22-10.23: error: FREQUENCIES: Syntax error expecting non-negative integer for NTILES.
   10 | FREQUENCIES x/NTILES **.
      |                      ^~\"

\"frequencies.sps:11.25-11.26: error: FREQUENCIES: Syntax error expecting COMPATIBLE or ENHANCED.
   11 | FREQUENCIES x/ALGORITHM **.
      |                         ^~\"

\"frequencies.sps:12.30-12.31: error: FREQUENCIES: Syntax error expecting positive integer for FREQ.
   12 | FREQUENCIES x/HISTOGRAM FREQ(**).
      |                              ^~\"

\"frequencies.sps:13.32-13.33: error: FREQUENCIES: Syntax error expecting \`)'.
   13 | FREQUENCIES x/HISTOGRAM FREQ(5 **).
      |                                ^~\"

\"frequencies.sps:14.33-14.34: error: FREQUENCIES: Syntax error expecting positive integer for PERCENT.
   14 | FREQUENCIES x/HISTOGRAM PERCENT(**).
      |                                 ^~\"

\"frequencies.sps:15.35-15.36: error: FREQUENCIES: Syntax error expecting \`)'.
   15 | FREQUENCIES x/HISTOGRAM PERCENT(5 **).
      |                                   ^~\"

\"frequencies.sps:16.33-16.34: error: FREQUENCIES: Syntax error expecting number for MINIMUM.
   16 | FREQUENCIES x/HISTOGRAM MINIMUM(**).
      |                                 ^~\"

\"frequencies.sps:17.35-17.36: error: FREQUENCIES: Syntax error expecting \`)'.
   17 | FREQUENCIES x/HISTOGRAM MINIMUM(5 **).
      |                                   ^~\"

\"frequencies.sps:18.33-18.34: error: FREQUENCIES: Syntax error expecting number for MAXIMUM.
   18 | FREQUENCIES x/HISTOGRAM MAXIMUM(**).
      |                                 ^~\"

\"frequencies.sps:19.35-19.36: error: FREQUENCIES: Syntax error expecting \`)'.
   19 | FREQUENCIES x/HISTOGRAM MAXIMUM(5 **).
      |                                   ^~\"

\"frequencies.sps:20.44: error: FREQUENCIES: Syntax error expecting number 5 or greater for MAXIMUM.
   20 | FREQUENCIES x/HISTOGRAM MINIMUM(5) MAXIMUM(1).
      |                                            ^\"

\"frequencies.sps:21.44-21.45: error: FREQUENCIES: Syntax error expecting number less than or equal to 5 for MINIMUM.
   21 | FREQUENCIES x/HISTOGRAM MAXIMUM(5) MINIMUM(10).
      |                                            ^~\"

\"frequencies.sps:22.25-22.26: error: FREQUENCIES: Syntax error expecting NORMAL, NONORMAL, FREQ, PERCENT, MINIMUM, or MAXIMUM.
   22 | FREQUENCIES x/HISTOGRAM **.
      |                         ^~\"

\"frequencies.sps:23.32-23.33: error: FREQUENCIES: Syntax error expecting number for MINIMUM.
   23 | FREQUENCIES x/PIECHART MINIMUM(**).
      |                                ^~\"

\"frequencies.sps:24.34-24.35: error: FREQUENCIES: Syntax error expecting \`)'.
   24 | FREQUENCIES x/PIECHART MINIMUM(5 **).
      |                                  ^~\"

\"frequencies.sps:25.32-25.33: error: FREQUENCIES: Syntax error expecting number for MAXIMUM.
   25 | FREQUENCIES x/PIECHART MAXIMUM(**).
      |                                ^~\"

\"frequencies.sps:26.34-26.35: error: FREQUENCIES: Syntax error expecting \`)'.
   26 | FREQUENCIES x/PIECHART MAXIMUM(5 **).
      |                                  ^~\"

\"frequencies.sps:27.43: error: FREQUENCIES: Syntax error expecting number 5 or greater for MAXIMUM.
   27 | FREQUENCIES x/PIECHART MINIMUM(5) MAXIMUM(1).
      |                                           ^\"

\"frequencies.sps:28.43-28.44: error: FREQUENCIES: Syntax error expecting number less than or equal to 5 for MINIMUM.
   28 | FREQUENCIES x/PIECHART MAXIMUM(5) MINIMUM(10).
      |                                           ^~\"

\"frequencies.sps:29.24-29.25: error: FREQUENCIES: Syntax error expecting MINIMUM, MAXIMUM, MISSING, or NOMISSING.
   29 | FREQUENCIES x/PIECHART **.
      |                        ^~\"

\"frequencies.sps:30.29-30.30: error: FREQUENCIES: Syntax error expecting positive number for FREQ.
   30 | FREQUENCIES x/BARCHART FREQ(**).
      |                             ^~\"

\"frequencies.sps:31.31-31.32: error: FREQUENCIES: Syntax error expecting \`)'.
   31 | FREQUENCIES x/BARCHART FREQ(5 **).
      |                               ^~\"

\"frequencies.sps:32.32-32.33: error: FREQUENCIES: Syntax error expecting positive number for PERCENT.
   32 | FREQUENCIES x/BARCHART PERCENT(**).
      |                                ^~\"

\"frequencies.sps:33.34-33.35: error: FREQUENCIES: Syntax error expecting \`)'.
   33 | FREQUENCIES x/BARCHART PERCENT(5 **).
      |                                  ^~\"

\"frequencies.sps:34.32-34.33: error: FREQUENCIES: Syntax error expecting number for MINIMUM.
   34 | FREQUENCIES x/BARCHART MINIMUM(**).
      |                                ^~\"

\"frequencies.sps:35.34-35.35: error: FREQUENCIES: Syntax error expecting \`)'.
   35 | FREQUENCIES x/BARCHART MINIMUM(5 **).
      |                                  ^~\"

\"frequencies.sps:36.32-36.33: error: FREQUENCIES: Syntax error expecting number for MAXIMUM.
   36 | FREQUENCIES x/BARCHART MAXIMUM(**).
      |                                ^~\"

\"frequencies.sps:37.34-37.35: error: FREQUENCIES: Syntax error expecting \`)'.
   37 | FREQUENCIES x/BARCHART MAXIMUM(5 **).
      |                                  ^~\"

\"frequencies.sps:38.43: error: FREQUENCIES: Syntax error expecting number 5 or greater for MAXIMUM.
   38 | FREQUENCIES x/BARCHART MINIMUM(5) MAXIMUM(1).
      |                                           ^\"

\"frequencies.sps:39.43-39.44: error: FREQUENCIES: Syntax error expecting number less than or equal to 5 for MINIMUM.
   39 | FREQUENCIES x/BARCHART MAXIMUM(5) MINIMUM(10).
      |                                           ^~\"

\"frequencies.sps:40.24-40.25: error: FREQUENCIES: Syntax error expecting MINIMUM, MAXIMUM, FREQ, or PERCENT.
   40 | FREQUENCIES x/BARCHART **.
      |                        ^~\"

\"frequencies.sps:41.23-41.24: error: FREQUENCIES: Syntax error expecting EXCLUDE or INCLUDE.
   41 | FREQUENCIES x/MISSING **.
      |                       ^~\"

\"frequencies.sps:42.21-42.22: error: FREQUENCIES: Syntax error expecting ANALYSIS or VARIABLE.
   42 | FREQUENCIES x/ORDER **.
      |                     ^~\"

\"frequencies.sps:43.16-43.17: error: FREQUENCIES: Syntax error expecting one of the following: STATISTICS, PERCENTILES, FORMAT, NTILES, ALGORITHM, HISTOGRAM, PIECHART, BARCHART, MISSING, ORDER.
   43 | FREQUENCIES x/ **.
      |                ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/frequencies.at:1093"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_702
#AT_START_703
at_fn_group_banner 703 'get-data-psql.at:147' \
  "GET DATA /TYPE=PSQL" "                            " 56
at_xfail=no
(
  printf "%s\n" "703. $at_setup_line: testing $at_desc ..."
  $at_traceon


printf "%s\n" "get-data-psql.at:149" >"$at_check_line_file"
(test "$PSQL_SUPPORT" = no) \
  && at_fn_check_skip 77 "$at_srcdir/get-data-psql.at:149"
   PGDATA=`pwd`/cluster
   export PGDATA
   PGPORT=$PG_PORT
   export PGPORT
   socket_dir=`mktemp -d`
   PGHOST="$socket_dir"
   export PGHOST
   { set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:149: PATH=\$PG_PATH:\$PATH initdb -A trust"
at_fn_check_prepare_dynamic "PATH=$PG_PATH:$PATH initdb -A trust" "get-data-psql.at:149"
( $at_check_trace; PATH=$PG_PATH:$PATH initdb -A trust
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:149"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:149: PATH=\$PG_PATH:\$PATH pg_ctl start -w -o \"-k \$socket_dir -h ''\""
at_fn_check_prepare_dynamic "PATH=$PG_PATH:$PATH pg_ctl start -w -o \"-k $socket_dir -h ''\"" "get-data-psql.at:149"
( $at_check_trace; PATH=$PG_PATH:$PATH pg_ctl start -w -o "-k $socket_dir -h ''"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:149"
$at_failed && at_fn_log_failure
$at_traceon; }

   trap 'PATH=$PG_PATH:$PATH pg_ctl stop -W -o "-k $socket_dir -h ''"' 0
   { set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:149: PATH=\$PG_PATH:\$PATH createdb -h \"\$socket_dir\" -p \$PG_PORT \$PG_DBASE"
at_fn_check_prepare_dynamic "PATH=$PG_PATH:$PATH createdb -h \"$socket_dir\" -p $PG_PORT $PG_DBASE" "get-data-psql.at:149"
( $at_check_trace; PATH=$PG_PATH:$PATH createdb -h "$socket_dir" -p $PG_PORT $PG_DBASE
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:149"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >populate.sql <<'_ATEOF'
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'
      );
_ATEOF


   # On Debian, the psql binary in the postgres bindir won't work because
   # it needs libreadline to be LD_PRELOADed into it.  The psql in the
   # normal $PATH works fine though.
   if (PATH=$PG_PATH:$PATH psql -V) >/dev/null 2>&1; then
       psql () {
           PATH=$PG_PATH:$PATH command psql "$@"
       }
   fi
   { set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:149: psql -h \"\$socket_dir\" -p \$PG_PORT \$PG_DBASE < populate.sql"
at_fn_check_prepare_dynamic "psql -h \"$socket_dir\" -p $PG_PORT $PG_DBASE < populate.sql" "get-data-psql.at:149"
( $at_check_trace; psql -h "$socket_dir" -p $PG_PORT $PG_DBASE < populate.sql
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:149"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:152: cat > ordinary-query.sps <<EOF
GET DATA /TYPE=psql
	/CONNECT=\"host=\$socket_dir port=\$PGPORT dbname=\$PG_DBASE\"
	/UNENCRYPTED
	/SQL=\"select * from thing\".

DISPLAY DICTIONARY.

LIST.
EOF
"
at_fn_check_prepare_notrace 'an embedded newline' "get-data-psql.at:152"
( $at_check_trace; cat > ordinary-query.sps <<EOF
GET DATA /TYPE=psql
	/CONNECT="host=$socket_dir port=$PGPORT dbname=$PG_DBASE"
	/UNENCRYPTED
	/SQL="select * from thing".

DISPLAY DICTIONARY.

LIST.
EOF

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:152"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:163: pspp -o pspp.csv ordinary-query.sps"
at_fn_check_prepare_trace "get-data-psql.at:163"
( $at_check_trace; pspp -o pspp.csv ordinary-query.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:163"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:164: cat pspp.csv"
at_fn_check_prepare_trace "get-data-psql.at:164"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
bool,1,Unknown,Input,8,Right,F8.2,F8.2
bytea,2,Nominal,Input,1,Left,AHEX2,AHEX2
char,3,Nominal,Input,8,Left,A8,A8
int8,4,Unknown,Input,8,Right,F8.2,F8.2
int2,5,Unknown,Input,8,Right,F8.2,F8.2
int4,6,Unknown,Input,8,Right,F8.2,F8.2
numeric,7,Unknown,Input,8,Right,E40.6,E40.6
text,8,Nominal,Input,16,Left,A16,A16
oid,9,Unknown,Input,8,Right,F8.2,F8.2
float4,10,Unknown,Input,8,Right,F8.2,F8.2
float8,11,Unknown,Input,8,Right,F8.2,F8.2
money,12,Unknown,Input,8,Right,DOLLAR8.2,DOLLAR8.2
pbchar,13,Nominal,Input,8,Left,A8,A8
varchar,14,Nominal,Input,8,Left,A8,A8
date,15,Unknown,Input,8,Right,DATE11,DATE11
time,16,Unknown,Input,8,Right,TIME11.0,TIME11.0
timestamp,17,Unknown,Input,8,Right,DATETIME22.0,DATETIME22.0
timestamptz,18,Unknown,Input,8,Right,DATETIME22.0,DATETIME22.0
interval,19,Unknown,Input,8,Right,DTIME13.0,DTIME13.0
interval_months,20,Unknown,Input,8,Right,F3.0,F3.0
timetz,21,Unknown,Input,8,Right,TIME11.0,TIME11.0
timetz_zone,22,Unknown,Input,8,Right,F8.2,F8.2

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,00:00:00,08-JAN-1999 04:05:06,08-JAN-1999 12:05:06,0 00:01:00,0,10:09:00,4.00
.  ,,,.  ,.  ,.  ,.          ,,.  ,.  ,.  ,.  ,,,.,.,.,.,.,.,.,.  
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,01:05:02,10-JAN-1963 23:58:00,10-JAN-1963 22:58:00,12 01:03:04,25,01:05:02,-7.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:164"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:198: cat > empty-result.sps <<EOF
GET DATA /TYPE=psql
	/CONNECT=\"host=\$socket_dir port=\$PGPORT dbname=\$PG_DBASE\"
	/UNENCRYPTED
	/SQL=\"select * from empty\".

DISPLAY DICTIONARY.

LIST.
EOF
"
at_fn_check_prepare_notrace 'an embedded newline' "get-data-psql.at:198"
( $at_check_trace; cat > empty-result.sps <<EOF
GET DATA /TYPE=psql
	/CONNECT="host=$socket_dir port=$PGPORT dbname=$PG_DBASE"
	/UNENCRYPTED
	/SQL="select * from empty".

DISPLAY DICTIONARY.

LIST.
EOF

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:198"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:209: pspp -o pspp.csv empty-result.sps"
at_fn_check_prepare_trace "get-data-psql.at:209"
( $at_check_trace; pspp -o pspp.csv empty-result.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:209"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:210: cat pspp.csv"
at_fn_check_prepare_trace "get-data-psql.at:210"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
a,1,Unknown,Input,8,Right,F8.2,F8.2
b,2,Unknown,Input,8,Right,DATE11,DATE11
c,3,Unknown,Input,8,Right,E40.2,E40.2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:210"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:219: cat > large-result.sps <<EOF
GET DATA /TYPE=psql
	/CONNECT=\"host=\$socket_dir 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_fn_check_prepare_notrace 'an embedded newline' "get-data-psql.at:219"
( $at_check_trace; cat > large-result.sps <<EOF
GET DATA /TYPE=psql
	/CONNECT="host=$socket_dir 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_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:219"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:243: pspp -o pspp.csv large-result.sps"
at_fn_check_prepare_trace "get-data-psql.at:243"
( $at_check_trace; pspp -o pspp.csv large-result.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:243"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:244: cat pspp.csv"
at_fn_check_prepare_trace "get-data-psql.at:244"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:244"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >all-null-string.sql <<'_ATEOF'
-- 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, '');
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:276: psql -h \"\$socket_dir\" -p \$PG_PORT \$PG_DBASE < all-null-string.sql"
at_fn_check_prepare_dynamic "psql -h \"$socket_dir\" -p $PG_PORT $PG_DBASE < all-null-string.sql" "get-data-psql.at:276"
( $at_check_trace; psql -h "$socket_dir" -p $PG_PORT $PG_DBASE < all-null-string.sql
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:276"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:279: cat > get-data.sps <<EOF
GET DATA /TYPE=psql
	/CONNECT=\"host=\$socket_dir port=\$PGPORT dbname=\$PG_DBASE\"
	/UNENCRYPTED
	/SQL=\"select * from foo\".

DISPLAY DICTIONARY.

LIST.
EOF
"
at_fn_check_prepare_notrace 'an embedded newline' "get-data-psql.at:279"
( $at_check_trace; cat > get-data.sps <<EOF
GET DATA /TYPE=psql
	/CONNECT="host=$socket_dir port=$PGPORT dbname=$PG_DBASE"
	/UNENCRYPTED
	/SQL="select * from foo".

DISPLAY DICTIONARY.

LIST.
EOF

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:279"
$at_failed && at_fn_log_failure  \
"get-data.sps"
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-psql.at:290: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-psql.at:290"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-psql.at:290"
$at_failed && at_fn_log_failure  \
"get-data.sps"
$at_traceon; }


rm -rf "$socket_dir"
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_703
#AT_START_704
at_fn_group_banner 704 'get-data-spreadsheet.at:174' \
  "GET DATA /TYPE=GNM with CELLRANGE" "              " 57
at_xfail=no
(
  printf "%s\n" "704. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: gzip -c \$top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric"
at_fn_check_prepare_dynamic "gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric" "get-data-spreadsheet.at:174"
( $at_check_trace; gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
GET DATA /TYPE=GNM /FILE='Book1.gnumeric'  /READNAMES=off /SHEET=name 'This' /CELLRANGE=range 'g9:i13' .
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: cat pspp.csv"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
VAR001,1,F8.2,F8.2
VAR002,2,A8,A8
VAR003,3,F8.2,F8.2

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_704
#AT_START_705
at_fn_group_banner 705 'get-data-spreadsheet.at:174' \
  "GET DATA /TYPE=GNM with CELLRANGE and READNAMES" "" 57
at_xfail=no
(
  printf "%s\n" "705. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: gzip -c \$top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric"
at_fn_check_prepare_dynamic "gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric" "get-data-spreadsheet.at:174"
( $at_check_trace; gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
GET DATA /TYPE=GNM /FILE='Book1.gnumeric'  /READNAMES=on /SHEET=name 'This' /CELLRANGE=range 'g8:i13' .
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: cat pspp.csv"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
V1,1,F8.2,F8.2
V2,2,A8,A8
VAR001,3,F8.2,F8.2

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_705
#AT_START_706
at_fn_group_banner 706 'get-data-spreadsheet.at:174' \
  "GET DATA /TYPE=GNM without CELLRANGE" "           " 57
at_xfail=no
(
  printf "%s\n" "706. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: gzip -c \$top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric"
at_fn_check_prepare_dynamic "gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric" "get-data-spreadsheet.at:174"
( $at_check_trace; gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
GET DATA /TYPE=GNM /FILE='Book1.gnumeric' /SHEET=index 3.
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: pspp -O format=csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; pspp -O format=csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
name,1,A8,A8
id,2,F8.2,F8.2
height,3,F8.2,F8.2

warning: Cannot convert the value in the spreadsheet cell C4 to format (F8.2): Field contents are not numeric.

Table: Data List
name,id,height
fred,.00,23.40
bert,1.00,.56
charlie,2.00,.  
dick,3.00,-34.09
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_706
#AT_START_707
at_fn_group_banner 707 'get-data-spreadsheet.at:174' \
  "GET DATA /TYPE=GNM with missing data" "           " 57
at_xfail=no
(
  printf "%s\n" "707. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: gzip -c \$top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric"
at_fn_check_prepare_dynamic "gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric" "get-data-spreadsheet.at:174"
( $at_check_trace; gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
* 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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: cat pspp.csv"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
vone,1,F8.2,F8.2
vtwo,2,F8.2,F8.2
vthree,3,A8,A8
v4,4,F8.2,F8.2

Table: Data List
vone,vtwo,vthree,v4
1.00,3.00,,5.00
2.00,4.00,,6.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_707
#AT_START_708
at_fn_group_banner 708 'get-data-spreadsheet.at:174' \
  "GET DATA /TYPE=GNM with no options" "             " 57
at_xfail=no
(
  printf "%s\n" "708. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: gzip -c \$top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric"
at_fn_check_prepare_dynamic "gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric" "get-data-spreadsheet.at:174"
( $at_check_trace; gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
* This sheet is empty
GET DATA /TYPE=GNM /FILE='Book1.gnumeric'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_708
#AT_START_709
at_fn_group_banner 709 'get-data-spreadsheet.at:174' \
  "GET DATA /TYPE=GNM with empty sheet" "            " 57
at_xfail=no
(
  printf "%s\n" "709. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: gzip -c \$top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric"
at_fn_check_prepare_dynamic "gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric" "get-data-spreadsheet.at:174"
( $at_check_trace; gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
* This sheet is empty
GET DATA /TYPE=GNM /FILE='Book1.gnumeric' /SHEET=name 'Empty'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: Selected sheet or range of spreadsheet \`Book1.gnumeric' is empty.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_709
#AT_START_710
at_fn_group_banner 710 'get-data-spreadsheet.at:174' \
  "GET DATA /TYPE=GNM with nonexistent sheet" "      " 57
at_xfail=no
(
  printf "%s\n" "710. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: gzip -c \$top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric"
at_fn_check_prepare_dynamic "gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric" "get-data-spreadsheet.at:174"
( $at_check_trace; gzip -c $top_srcdir/tests/language/commands/Book1.gnm.unzipped > Book1.gnumeric
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
* This sheet doesnt exist.
GET DATA /TYPE=GNM /FILE='Book1.gnumeric' /SHEET=name 'foobarxx'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:174: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:174"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: Selected sheet or range of spreadsheet \`Book1.gnumeric' is empty.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_710
#AT_START_711
at_fn_group_banner 711 'get-data-spreadsheet.at:177' \
  "GET DATA /TYPE=GNM sheet index bug" "             " 57
at_xfail=no
(
  printf "%s\n" "711. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >minimal3.gnumeric <<'_ATEOF'
<?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/v9.xsd">
  <gnm:Version Epoch="1" Major="10" Minor="8" Full="1.10.8"/>
  <gnm:SheetNameIndex>
    <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet1</gnm:SheetName>
    <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet2</gnm:SheetName>
    <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet3</gnm:SheetName>
  </gnm:SheetNameIndex>
  <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" GridColor="0:0:0">
      <gnm:Name>Sheet1</gnm:Name>
      <gnm:MaxCol>2</gnm:MaxCol>
      <gnm:MaxRow>3</gnm:MaxRow>
      <gnm:Names>
        <gnm:Name>
          <gnm:name>Print_Area</gnm:name>
          <gnm:value>#REF!</gnm:value>
          <gnm:position>A1</gnm:position>
        </gnm:Name>
        <gnm:Name>
          <gnm:name>Sheet_Title</gnm:name>
          <gnm:value>&quot;Sheet1&quot;</gnm:value>
          <gnm:position>A1</gnm:position>
        </gnm:Name>
      </gnm:Names>
      <gnm:Cols DefaultSizePts="48">
        <gnm:ColInfo No="0" Unit="94.5" HardSize="1"/>
        <gnm:ColInfo No="1" Unit="48" Count="2"/>
      </gnm:Cols>
      <gnm:Rows DefaultSizePts="12.75">
        <gnm:RowInfo No="0" Unit="13.5" Count="4"/>
      </gnm:Rows>
      <gnm:Cells>
        <gnm:Cell Row="0" Col="0" ValueType="60">Name</gnm:Cell>
        <gnm:Cell Row="0" Col="1" ValueType="60">x</gnm:Cell>
        <gnm:Cell Row="0" Col="2" ValueType="60">y</gnm:Cell>
        <gnm:Cell Row="1" Col="0" ValueType="60">Sheet One</gnm:Cell>
        <gnm:Cell Row="1" Col="1" ValueType="40">1</gnm:Cell>
        <gnm:Cell Row="1" Col="2" ValueType="40">2</gnm:Cell>
        <gnm:Cell Row="2" Col="0" ValueType="60">foo</gnm:Cell>
        <gnm:Cell Row="2" Col="1" ValueType="40">3</gnm:Cell>
        <gnm:Cell Row="2" Col="2" ValueType="40">4</gnm:Cell>
        <gnm:Cell Row="3" Col="0" ValueType="60">bar</gnm:Cell>
        <gnm:Cell Row="3" Col="1" ValueType="40">5</gnm:Cell>
        <gnm:Cell Row="3" Col="2" ValueType="40">6</gnm:Cell>
      </gnm:Cells>
    </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" GridColor="0:0:0">
      <gnm:Name>Sheet2</gnm:Name>
      <gnm:MaxCol>2</gnm:MaxCol>
      <gnm:MaxRow>2</gnm:MaxRow>
      <gnm:Names>
        <gnm:Name>
          <gnm:name>Print_Area</gnm:name>
          <gnm:value>#REF!</gnm:value>
          <gnm:position>A1</gnm:position>
        </gnm:Name>
        <gnm:Name>
          <gnm:name>Sheet_Title</gnm:name>
          <gnm:value>&quot;Sheet2&quot;</gnm:value>
          <gnm:position>A1</gnm:position>
        </gnm:Name>
      </gnm:Names>
      <gnm:Cols DefaultSizePts="48">
        <gnm:ColInfo No="0" Unit="48"/>
        <gnm:ColInfo No="1" Unit="57.75"/>
        <gnm:ColInfo No="2" Unit="54.75"/>
      </gnm:Cols>
      <gnm:Rows DefaultSizePts="12.75">
        <gnm:RowInfo No="0" Unit="13.5" Count="3"/>
      </gnm:Rows>
      <gnm:Cells>
        <gnm:Cell Row="0" Col="0" ValueType="60">Comment</gnm:Cell>
        <gnm:Cell Row="0" Col="1" ValueType="60">DOB</gnm:Cell>
        <gnm:Cell Row="0" Col="2" ValueType="60">wealth</gnm:Cell>
        <gnm:Cell Row="1" Col="0" ValueType="60">Sheet Two</gnm:Cell>
        <gnm:Cell Row="1" Col="1" ValueType="60">24/5/1966</gnm:Cell>
        <gnm:Cell Row="1" Col="2" ValueType="40" ValueFormat="_($* 0.00_);_($* (0.00);_($* &quot;-&quot;??_);_(@_)">0.02</gnm:Cell>
        <gnm:Cell Row="2" Col="0" ValueType="60">wee</gnm:Cell>
        <gnm:Cell Row="2" Col="1" ValueType="40" ValueFormat="dd/mm/yyyy">37145</gnm:Cell>
        <gnm:Cell Row="2" Col="2" ValueType="40" ValueFormat="_($* 0.00_);_($* (0.00);_($* &quot;-&quot;??_);_(@_)">3000</gnm:Cell>
      </gnm:Cells>
    </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" GridColor="0:0:0">
      <gnm:Name>Sheet3</gnm:Name>
      <gnm:MaxCol>2</gnm:MaxCol>
      <gnm:MaxRow>2</gnm:MaxRow>
      <gnm:Names>
        <gnm:Name>
          <gnm:name>Print_Area</gnm:name>
          <gnm:value>#REF!</gnm:value>
          <gnm:position>A1</gnm:position>
        </gnm:Name>
        <gnm:Name>
          <gnm:name>Sheet_Title</gnm:name>
          <gnm:value>&quot;Sheet3&quot;</gnm:value>
          <gnm:position>A1</gnm:position>
        </gnm:Name>
      </gnm:Names>
      <gnm:Cols DefaultSizePts="48">
        <gnm:ColInfo No="0" Unit="48" Count="3"/>
      </gnm:Cols>
      <gnm:Rows DefaultSizePts="12.75">
        <gnm:RowInfo No="0" Unit="13.5"/>
        <gnm:RowInfo No="1" Unit="12.75" Count="2"/>
      </gnm:Rows>
      <gnm:Cells>
        <gnm:Cell Row="0" Col="0" ValueType="40">3</gnm:Cell>
        <gnm:Cell Row="0" Col="1" ValueType="40">4</gnm:Cell>
        <gnm:Cell Row="0" Col="2" ValueType="40">5</gnm:Cell>
        <gnm:Cell Row="1" Col="0" ValueType="40">6</gnm:Cell>
        <gnm:Cell Row="1" Col="1" ValueType="40">7</gnm:Cell>
        <gnm:Cell Row="1" Col="2" ValueType="40">8</gnm:Cell>
        <gnm:Cell Row="2" Col="0" ValueType="40">9</gnm:Cell>
        <gnm:Cell Row="2" Col="1" ValueType="40">10</gnm:Cell>
        <gnm:Cell Row="2" Col="2" ValueType="40">11</gnm:Cell>
      </gnm:Cells>
    </gnm:Sheet>
  </gnm:Sheets>
</gnm:Workbook>
_ATEOF


cat >gnum.sps <<'_ATEOF'
GET DATA
	/TYPE=GNM
        /FILE='minimal3.gnumeric'
	/SHEET=index 3
	/READNAMES=off
	.

LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:313: pspp -O format=csv gnum.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:313"
( $at_check_trace; pspp -O format=csv gnum.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
VAR001,VAR002,VAR003
3,4.00,5.00
6,7.00,8.00
9,10.00,11.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:313"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_711
#AT_START_712
at_fn_group_banner 712 'get-data-spreadsheet.at:326' \
  "GET DATA /TYPE=GNM assert-fail" "                 " 57
at_xfail=no
(
  printf "%s\n" "712. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >read.sps <<'_ATEOF'
GET DATA
	/TYPE=GNM
	/FILE='crash.gnumeric'
	.
list.
_ATEOF



cat >crash.gnumeric <<'_ATEOF'
<?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/v9.xsd">
  <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.1">
  </office:document-meta>
  <gnm:SheetNameIndex>
    <gnm:SheetName gnm:Cols="256" gnm:Rows="65536">Sheet1</gnm:SheetName>
  </gnm:SheetNameIndex>
  <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" GridColor="0:0:0">
      <gnm:Name>Sheet1</gnm:Name>
      <gnm:MaxCol>2</gnm:MaxCol>
      <gnm:MaxRow>4</gnm:MaxRow>
      <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:Style>
        </gnm:StyleRegion>
      </gnm:Styles>
      <gnm:Cells>
        <gnm:Cell Row="1" Col="1" ValueType="60">one</gnm:Cell>
        <gnm:Cell Row="1" Col="2" ValueType="60">two</gnm:Cell>
        <gnm:Cell Row="2" Col="1" ValueType="40">1</gnm:Cell>
        <gnm:Cell Row="2" Col="2" ValueType="40">2</gnm:Cell>
        <gnm:Cell Row="3" Col="1" ValueType="40">1</gnm:Cell>
        <gnm:Cell Row="3" Col="2" ValueType="40">2</gnm:Cell>
        <gnm:Cell Row="4" Col="1" ValueType="40">1</gnm:Cell>
        <gnm:Cell Row="4" Col="2" ValueType="40">2</gnm:Cell>
      </gnm:Cells>
    </gnm:Sheet>
  </gnm:Sheets>
</gnm:Workbook>
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:371: pspp -O format=csv read.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:371"
( $at_check_trace; pspp -O format=csv read.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:371"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_712
#AT_START_713
at_fn_group_banner 713 'get-data-spreadsheet.at:380' \
  "GET DATA /TYPE=ODS with CELLRANGE" "              " 58
at_xfail=no
(
  printf "%s\n" "713. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cp \$top_srcdir/tests/language/commands/test.ods test.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/test.ods test.ods" "get-data-spreadsheet.at:380"
( $at_check_trace; cp $top_srcdir/tests/language/commands/test.ods test.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
GET DATA /TYPE=ODS /FILE='test.ods'  /READNAMES=off /SHEET=name 'This' /CELLRANGE=range 'g9:i13' .
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cat pspp.csv"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
VAR001,1,F8.2,F8.2
VAR002,2,A8,A8
VAR003,3,F8.2,F8.2

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_713
#AT_START_714
at_fn_group_banner 714 'get-data-spreadsheet.at:380' \
  "GET DATA /TYPE=ODS with CELLRANGE and READNAMES" "" 58
at_xfail=no
(
  printf "%s\n" "714. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cp \$top_srcdir/tests/language/commands/test.ods test.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/test.ods test.ods" "get-data-spreadsheet.at:380"
( $at_check_trace; cp $top_srcdir/tests/language/commands/test.ods test.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
GET DATA /TYPE=ODS /FILE='test.ods'  /READNAMES=on /SHEET=name 'This' /CELLRANGE=range 'g8:i13' .
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cat pspp.csv"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
V1,1,F8.2,F8.2
V2,2,A8,A8
VAR001,3,F8.2,F8.2

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_714
#AT_START_715
at_fn_group_banner 715 'get-data-spreadsheet.at:380' \
  "GET DATA /TYPE=ODS without CELLRANGE" "           " 58
at_xfail=no
(
  printf "%s\n" "715. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cp \$top_srcdir/tests/language/commands/test.ods test.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/test.ods test.ods" "get-data-spreadsheet.at:380"
( $at_check_trace; cp $top_srcdir/tests/language/commands/test.ods test.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
GET DATA /TYPE=ODS /FILE='test.ods' /SHEET=index 3.
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: pspp -O format=csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; pspp -O format=csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
name,1,A8,A8
id,2,F8.2,F8.2
height,3,F8.2,F8.2

warning: Cannot convert the value in the spreadsheet cell C4 to format (F8.2): Field contents are not numeric.

Table: Data List
name,id,height
fred,.00,23.40
bert,1.00,.56
charlie,2.00,.  
dick,3.00,-34.09
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_715
#AT_START_716
at_fn_group_banner 716 'get-data-spreadsheet.at:380' \
  "GET DATA /TYPE=ODS with missing data" "           " 58
at_xfail=no
(
  printf "%s\n" "716. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cp \$top_srcdir/tests/language/commands/test.ods test.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/test.ods test.ods" "get-data-spreadsheet.at:380"
( $at_check_trace; cp $top_srcdir/tests/language/commands/test.ods test.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
* This sheet has no data in one of its variables
GET DATA /TYPE=ODS /FILE='test.ods' /READNAMES=on /SHEET=index 5.
DISPLAY VARIABLES.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cat pspp.csv"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
vone,1,F8.2,F8.2
vtwo,2,F8.2,F8.2
vthree,3,A8,A8
v4,4,F8.2,F8.2

Table: Data List
vone,vtwo,vthree,v4
1.00,3.00,,5.00
2.00,4.00,,6.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_716
#AT_START_717
at_fn_group_banner 717 'get-data-spreadsheet.at:380' \
  "GET DATA /TYPE=ODS with no options" "             " 58
at_xfail=no
(
  printf "%s\n" "717. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cp \$top_srcdir/tests/language/commands/test.ods test.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/test.ods test.ods" "get-data-spreadsheet.at:380"
( $at_check_trace; cp $top_srcdir/tests/language/commands/test.ods test.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
* This sheet is empty
GET DATA /TYPE=ODS /FILE='test.ods'.
DISPLAY DICTIONARY.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_717
#AT_START_718
at_fn_group_banner 718 'get-data-spreadsheet.at:380' \
  "GET DATA /TYPE=ODS with empty sheet" "            " 58
at_xfail=no
(
  printf "%s\n" "718. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cp \$top_srcdir/tests/language/commands/test.ods test.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/test.ods test.ods" "get-data-spreadsheet.at:380"
( $at_check_trace; cp $top_srcdir/tests/language/commands/test.ods test.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
* This sheet is empty
GET DATA /TYPE=ODS /FILE='test.ods' /SHEET=name 'Empty'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: Selected sheet or range of spreadsheet \`test.ods' is empty.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_718
#AT_START_719
at_fn_group_banner 719 'get-data-spreadsheet.at:380' \
  "GET DATA /TYPE=ODS with nonexistent sheet" "      " 58
at_xfail=no
(
  printf "%s\n" "719. $at_setup_line: testing $at_desc ..."
  $at_traceon



    { set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: cp \$top_srcdir/tests/language/commands/test.ods test.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/test.ods test.ods" "get-data-spreadsheet.at:380"
( $at_check_trace; cp $top_srcdir/tests/language/commands/test.ods test.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
* This sheet doesnt exist.
GET DATA /TYPE=ODS /FILE='test.ods' /SHEET=name 'foobarxx'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:380: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:380"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: Selected sheet or range of spreadsheet \`test.ods' is empty.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:380"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_719
#AT_START_720
at_fn_group_banner 720 'get-data-spreadsheet.at:383' \
  "GET DATA /TYPE=ODS crash" "                       " 58
at_xfail=no
(
  printf "%s\n" "720. $at_setup_line: testing $at_desc ..."
  $at_traceon




{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:387: cp \$top_srcdir/tests/language/commands/newone.ods this.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/newone.ods this.ods" "get-data-spreadsheet.at:387"
( $at_check_trace; cp $top_srcdir/tests/language/commands/newone.ods this.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:387"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >crash.sps <<'_ATEOF'
GET DATA /TYPE=ODS /FILE='this.ods' /CELLRANGE=RANGE 'A1:C8'  /READNAMES=ON
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:394: pspp -O format=csv crash.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:394"
( $at_check_trace; pspp -O format=csv crash.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:394"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_720
#AT_START_721
at_fn_group_banner 721 'get-data-spreadsheet.at:399' \
  "GET DATA /TYPE=ODS readnames" "                   " 58
at_xfail=no
(
  printf "%s\n" "721. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:404: cp \$top_srcdir/tests/language/commands/readnames.ods this.ods"
at_fn_check_prepare_dynamic "cp $top_srcdir/tests/language/commands/readnames.ods this.ods" "get-data-spreadsheet.at:404"
( $at_check_trace; cp $top_srcdir/tests/language/commands/readnames.ods this.ods
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:404"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >readnames.sps <<'_ATEOF'
GET DATA /TYPE=ODS /FILE='this.ods' /CELLRANGE=RANGE 'A1:H8' /READNAMES=ON
EXECUTE.
DISPLAY DICTIONARY.
LIST.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/get-data-spreadsheet.at:414: pspp -O format=csv readnames.sps"
at_fn_check_prepare_trace "get-data-spreadsheet.at:414"
( $at_check_trace; pspp -O format=csv readnames.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
freda,1,Nominal,Input,8,Right,F8.2,F8.2
fred,2,Nominal,Input,8,Right,F8.2,F8.2
fred_A,3,Nominal,Input,8,Right,F8.2,F8.2
fred_B,4,Nominal,Input,8,Right,F8.2,F8.2
fred_C,5,Nominal,Input,8,Right,F8.2,F8.2
fred_D,6,Nominal,Input,8,Right,F8.2,F8.2
fred_E,7,Nominal,Input,8,Right,F8.2,F8.2

Table: Data List
freda,fred,fred_A,fred_B,fred_C,fred_D,fred_E
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
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-spreadsheet.at:414"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_721
#AT_START_722
at_fn_group_banner 722 'get-data-txt.at:23' \
  "GET DATA /TYPE=TXT with explicit delimiters" "    " 59
at_xfail=no
(
  printf "%s\n" "722. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >get-data.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:35: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-txt.at:35"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:36: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:36"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_722
#AT_START_723
at_fn_group_banner 723 'get-data-txt.at:45' \
  "GET DATA /TYPE=TXT with FIRSTCASE" "              " 59
at_xfail=no
(
  printf "%s\n" "723. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >get-data.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:69: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-txt.at:69"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:69"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:70: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:70"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:70"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_723
#AT_START_724
at_fn_group_banner 724 'get-data-txt.at:83' \
  "GET DATA /TYPE=TXT with FIRSTCASE and tab delimiter" "" 59
at_xfail=no
(
  printf "%s\n" "724. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >get-data.sps <<'_ATEOF'
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	4	
1	2		4
1	2		4	
1		3	4
1		3	4	
1			4
1			4	
	2	3	4
	2	3	4	
	2		4
	2		4	
		3	4
		3	4	
			4
			4	
end data.
list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:109: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-txt.at:109"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:109"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:110: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:110"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
A,B,C,D
1.00,2.00,3.00,4.00
1.00,2.00,3.00,4.00
1.00,2.00,.  ,4.00
1.00,2.00,.  ,4.00
1.00,.  ,3.00,4.00
1.00,.  ,3.00,4.00
1.00,.  ,.  ,4.00
1.00,.  ,.  ,4.00
.  ,2.00,3.00,4.00
.  ,2.00,3.00,4.00
.  ,2.00,.  ,4.00
.  ,2.00,.  ,4.00
.  ,.  ,3.00,4.00
.  ,.  ,3.00,4.00
.  ,.  ,.  ,4.00
.  ,.  ,.  ,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:110"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_724
#AT_START_725
at_fn_group_banner 725 'get-data-txt.at:132' \
  "GET DATA /TYPE=TXT with multiple records per case" "" 59
at_xfail=no
(
  printf "%s\n" "725. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >get-data.sps <<'_ATEOF'
get data /type=txt /file=inline /arrangement=fixed /fixcase=3 /variables=
	/1 start 0-19 adate8
	/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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:151: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-txt.at:151"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:151"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:152: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:152"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
start,end,count
07/22/07,10/06/2007,321
********,08/26/1789,4
01/01/72,12/31/1999,682
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:152"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_725
#AT_START_726
at_fn_group_banner 726 'get-data-txt.at:161' \
  "GET DATA /TYPE=TXT with empty trailing record" "  " 59
at_xfail=no
(
  printf "%s\n" "726. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >get-data.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:180: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-txt.at:180"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:180"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:181: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:181"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,y
1,2
3,4
5,6
7,8
9,0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:181"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_726
#AT_START_727
at_fn_group_banner 727 'get-data-txt.at:194' \
  "GET DATA /TYPE=TXT password example" "            " 59
at_xfail=no
(
  printf "%s\n" "727. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >passwd.data <<'_ATEOF'
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
_ATEOF

cat >passwd.sps <<'_ATEOF'
GET DATA /TYPE=TXT /FILE='passwd.data' /DELIMITERS=':'
        /VARIABLES=username A20
                   password A40
                   uid F10
                   gid F10
                   gecos A40
                   home A40
                   shell A40.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:212: pspp -o pspp.csv passwd.sps"
at_fn_check_prepare_trace "get-data-txt.at:212"
( $at_check_trace; pspp -o pspp.csv passwd.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:212"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:213: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:213"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:213"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_727
#AT_START_728
at_fn_group_banner 728 'get-data-txt.at:225' \
  "GET DATA /TYPE=TXT cars example" "                " 59
at_xfail=no
(
  printf "%s\n" "728. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >cars.data <<'_ATEOF'
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
_ATEOF

cat >cars.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:252: pspp -o pspp.csv cars.sps"
at_fn_check_prepare_trace "get-data-txt.at:252"
( $at_check_trace; pspp -o pspp.csv cars.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:252"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:253: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:253"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:253"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_728
#AT_START_729
at_fn_group_banner 729 'get-data-txt.at:272' \
  "GET DATA /TYPE=TXT pets example" "                " 59
at_xfail=no
(
  printf "%s\n" "729. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pets.data <<'_ATEOF'
'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"
_ATEOF

cat >pets.sps <<'_ATEOF'
GET DATA /TYPE=TXT /FILE='pets.data' /DELIMITERS=', ' /QUALIFIER='''"'
        /FIRSTCASE=3
        /VARIABLES=name A10
                   age F3.1
                   color A5
                   received EDATE10
                   price F5.2
                   height a5
                   type a10.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:293: pspp -o pspp.csv pets.sps"
at_fn_check_prepare_trace "get-data-txt.at:293"
( $at_check_trace; pspp -o pspp.csv pets.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:293"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:294: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:294"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:294"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_729
#AT_START_730
at_fn_group_banner 730 'get-data-txt.at:305' \
  "GET DATA /TYPE=TXT with IMPORTCASE" "             " 59
at_xfail=no
(
  printf "%s\n" "730. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:306: \$PYTHON3 > test.data -c '
for i in range(1, 101):
    print(\"%02d\" % i)
'"
at_fn_check_prepare_notrace 'an embedded newline' "get-data-txt.at:306"
( $at_check_trace; $PYTHON3 > test.data -c '
for i in range(1, 101):
    print("%02d" % i)
'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:306"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
get data /type=txt /file='test.data' /importcase=first 10 /variables x f8.0.
get data /type=txt /file='test.data' /importcase=percent 1 /variables x f8.0.
get data /type=txt /file='test.data' /importcase=percent 35 /variables x f8.0.
get data /type=txt /file='test.data' /importcase=percent 95 /variables x f8.0.
get data /type=txt /file='test.data' /importcase=percent 100 /variables x f8.0.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:317: pspp -O format=csv get-data.sps"
at_fn_check_prepare_trace "get-data-txt.at:317"
( $at_check_trace; pspp -O format=csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"get-data.sps:1.39-1.57: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.).
    1 | get data /type=txt /file='test.data' /importcase=first 10 /variables x f8.0.
      |                                       ^~~~~~~~~~~~~~~~~~~\"

\"get-data.sps:2.39-2.58: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.).
    2 | get data /type=txt /file='test.data' /importcase=percent 1 /variables x f8.0.
      |                                       ^~~~~~~~~~~~~~~~~~~~\"

\"get-data.sps:3.39-3.59: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.).
    3 | get data /type=txt /file='test.data' /importcase=percent 35 /variables x f8.0.
      |                                       ^~~~~~~~~~~~~~~~~~~~~\"

\"get-data.sps:4.39-4.59: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.).
    4 | get data /type=txt /file='test.data' /importcase=percent 95 /variables x f8.0.
      |                                       ^~~~~~~~~~~~~~~~~~~~~\"

\"get-data.sps:5.39-5.60: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.).
    5 | get data /type=txt /file='test.data' /importcase=percent 100 /variables x f8.0.
      |                                       ^~~~~~~~~~~~~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:317"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_730
#AT_START_731
at_fn_group_banner 731 'get-data-txt.at:340' \
  "GET DATA /TYPE=TXT with ENCODING subcommand" "    " 59
at_xfail=no
(
  printf "%s\n" "731. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:341: i18n-test supports_encodings UTF-8 ISO-8859-1"
at_fn_check_prepare_trace "get-data-txt.at:341"
( $at_check_trace; i18n-test supports_encodings UTF-8 ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:341"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get-data.sps <<'_ATEOF'
set locale='utf-8'
get data /type=txt /file='data.txt' /encoding='iso-8859-1'
  /delimiters="," /variables=s a8.
list.
_ATEOF

printf '\351' > data.txt	# é in ISO-8859-1.
{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:349: pspp -o pspp.csv get-data.sps"
at_fn_check_prepare_trace "get-data-txt.at:349"
( $at_check_trace; pspp -o pspp.csv get-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:349"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:350: cat pspp.csv"
at_fn_check_prepare_trace "get-data-txt.at:350"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s
é
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:350"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_731
#AT_START_732
at_fn_group_banner 732 'get-data-txt.at:358' \
  "GET DATA /TYPE= truncated" "                      " 59
at_xfail=no
(
  printf "%s\n" "732. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >x.sps <<'_ATEOF'
GET DATA /TYPE=
.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:365: pspp -o pspp.csv x.sps"
at_fn_check_prepare_trace "get-data-txt.at:365"
( $at_check_trace; pspp -o pspp.csv x.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/get-data-txt.at:365"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_732
#AT_START_733
at_fn_group_banner 733 'get-data-txt.at:371' \
  "GET DATA /TYPE=txt bug" "                         " 59
at_xfail=no
(
  printf "%s\n" "733. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >thing.txt <<'_ATEOF'
foo, title, last
1, this, 1
2, that, 2
3, other, 3
_ATEOF


cat >x.sps <<'_ATEOF'
GET DATA
  /TYPE=TXT
  /FILE="thing.txt"
  /ARRANGEMENT=DELIMITED
  /DELCASE=LINE
  /FIRSTCASE=2
  /DELIMITERS=","
  /VARIABLES=foo F1.0
    title A8
    last F2.0.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:396: pspp -O format=csv x.sps"
at_fn_check_prepare_trace "get-data-txt.at:396"
( $at_check_trace; pspp -O format=csv x.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
foo,title,last
1,this,1
2,that,2
3,other,3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get-data-txt.at:396"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_733
#AT_START_734
at_fn_group_banner 734 'get-data-txt.at:408' \
  "GET DATA /TYPE=txt another bug" "                 " 59
at_xfail=no
(
  printf "%s\n" "734. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >crash.sps <<'_ATEOF'
get data /type=txt /file=inline /variables=C f7.2 D f7>2.
begin data.
3 2
4 2
5 2
end data.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/get-data-txt.at:419: pspp -O format=csv crash.sps"
at_fn_check_prepare_trace "get-data-txt.at:419"
( $at_check_trace; pspp -O format=csv crash.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/get-data-txt.at:419"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_734
#AT_START_735
at_fn_group_banner 735 'get-data.at:3' \
  "GET DATA syntax errors" "                         " 60
at_xfail=no
(
  printf "%s\n" "735. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >get-data.sps <<'_ATEOF'
GET DATA **.
GET DATA / **.
GET DATA /TYPE **.

GET DATA /TYPE=TXT **.
GET DATA /TYPE=TXT/ **.
GET DATA /TYPE=TXT/FILE **.
GET DATA /TYPE=TXT/FILE='x.txt' **.
GET DATA /TYPE=TXT/FILE='x.txt' /ENCODING=**.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=**.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /ARRANGEMENT=DELIMITED.
GET DATA /TYPE=TXT/FILE='x.txt' /FIRSTCASE=**.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELCASE=LINE.
GET DATA /TYPE=TXT/FILE='x.txt' /DELCASE=VARIABLES **.
GET DATA /TYPE=TXT/FILE='x.txt' /DELCASE=**.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=DELIMITED /FIXCASE=1.
GET DATA /TYPE=TXT/FILE='x.txt' /FIXCASE=**.
GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=FIRST **.
GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=PERCENT **.
GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=ALL.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELIMITERS=' '.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /QUALIFIER='"'.
GET DATA /TYPE=TXT/FILE='x.txt' /QUALIFIER='"' + "'".
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES / **.
GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES **.
GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES a_very_long_name_that_exceeds_the_64_byte_limit_for_variable_names.
GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES x **.
GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES x F1.2.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x **.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 **.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 FOO.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 DATE.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 DOLLAR1.2.
GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 F x 6-10 F.

GET DATA /TYPE=PSQL **.
GET DATA /TYPE=PSQL/ **.
GET DATA /TYPE=PSQL/CONNECT **.
GET DATA /TYPE=PSQL/CONNECT='db'/ASSUMEDSTRWIDTH=**.
GET DATA /TYPE=PSQL/CONNECT='db'/BSIZE=**.
GET DATA /TYPE=PSQL/CONNECT='db'/SQL=**.

GET DATA /TYPE=GNM **.
GET DATA /TYPE=GNM/ **.
GET DATA /TYPE=GNM/FILE **.
GET DATA /TYPE=GNM/FILE= **.
GET DATA /TYPE=GNM/FILE='x.gnumeric'/ASSUMEDSTRWIDTH=**.
GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=NAME **.
GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=INDEX **.
GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=**.
GET DATA /TYPE=GNM/FILE='x.gnumeric'/CELLRANGE=RANGE **.
GET DATA /TYPE=GNM/FILE='x.gnumeric'/CELLRANGE=**.
GET DATA /TYPE=GNM/FILE='x.gnumeric'/READNAMES=**.
GET DATA /TYPE=GNM/FILE='x.gnumeric'/ **.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='get-data.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get-data.at:63: pspp -x compatible --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "get-data.at:63"
( $at_check_trace; pspp -x compatible --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"get-data.sps:1.10-1.11: error: GET DATA: Syntax error expecting \`/TYPE='.
    1 | GET DATA **.
      |          ^~\"

\"get-data.sps:2.10-2.13: error: GET DATA: Syntax error expecting \`/TYPE='.
    2 | GET DATA / **.
      |          ^~~~\"

\"get-data.sps:3.10-3.17: error: GET DATA: Syntax error expecting \`/TYPE='.
    3 | GET DATA /TYPE **.
      |          ^~~~~~~~\"

\"get-data.sps:5.20-5.21: error: GET DATA: Syntax error expecting \`/FILE='.
    5 | GET DATA /TYPE=TXT **.
      |                    ^~\"

\"get-data.sps:6.19-6.22: error: GET DATA: Syntax error expecting \`/FILE='.
    6 | GET DATA /TYPE=TXT/ **.
      |                   ^~~~\"

\"get-data.sps:7.19-7.26: error: GET DATA: Syntax error expecting \`/FILE='.
    7 | GET DATA /TYPE=TXT/FILE **.
      |                   ^~~~~~~~\"

\"get-data.sps:8.33-8.34: error: GET DATA: Syntax error expecting \`/'.
    8 | GET DATA /TYPE=TXT/FILE='x.txt' **.
      |                                 ^~\"

\"get-data.sps:9.43-9.44: error: GET DATA: Syntax error expecting string.
    9 | GET DATA /TYPE=TXT/FILE='x.txt' /ENCODING=**.
      |                                           ^~\"

\"get-data.sps:10.46-10.47: error: GET DATA: Syntax error expecting FIXED or DELIMITED.
   10 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=**.
      |                                              ^~\"

get-data.sps:11: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.

\"get-data.sps:11.53-11.73: note: GET DATA: This syntax requires DELIMITED arrangement.
   11 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /ARRANGEMENT=DELIMITED.
      |                                                     ^~~~~~~~~~~~~~~~~~~~~\"

\"get-data.sps:11.34-11.50: note: GET DATA: This syntax requires FIXED arrangement.
   11 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /ARRANGEMENT=DELIMITED.
      |                                  ^~~~~~~~~~~~~~~~~\"

\"get-data.sps:12.44-12.45: error: GET DATA: Syntax error expecting positive integer for FIRSTCASE.
   12 | GET DATA /TYPE=TXT/FILE='x.txt' /FIRSTCASE=**.
      |                                            ^~\"

get-data.sps:13: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.

\"get-data.sps:13.53-13.59: note: GET DATA: This syntax requires DELIMITED arrangement.
   13 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELCASE=LINE.
      |                                                     ^~~~~~~\"

\"get-data.sps:13.34-13.50: note: GET DATA: This syntax requires FIXED arrangement.
   13 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELCASE=LINE.
      |                                  ^~~~~~~~~~~~~~~~~\"

\"get-data.sps:14.52-14.53: error: GET DATA: Syntax error expecting integer.
   14 | GET DATA /TYPE=TXT/FILE='x.txt' /DELCASE=VARIABLES **.
      |                                                    ^~\"

\"get-data.sps:15.42-15.43: error: GET DATA: Syntax error expecting LINE or VARIABLES.
   15 | GET DATA /TYPE=TXT/FILE='x.txt' /DELCASE=**.
      |                                          ^~\"

get-data.sps:16: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.

\"get-data.sps:16.57-16.63: note: GET DATA: This syntax requires FIXED arrangement.
   16 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=DELIMITED /FIXCASE=1.
      |                                                         ^~~~~~~\"

\"get-data.sps:16.34-16.54: note: GET DATA: This syntax requires DELIMITED arrangement.
   16 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=DELIMITED /FIXCASE=1.
      |                                  ^~~~~~~~~~~~~~~~~~~~~\"

\"get-data.sps:17.42-17.43: error: GET DATA: Syntax error expecting positive integer for FIXCASE.
   17 | GET DATA /TYPE=TXT/FILE='x.txt' /FIXCASE=**.
      |                                          ^~\"

\"get-data.sps:18.52-18.53: error: GET DATA: Syntax error expecting integer.
   18 | GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=FIRST **.
      |                                                    ^~\"

\"get-data.sps:19.54-19.55: error: GET DATA: Syntax error expecting integer.
   19 | GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=PERCENT **.
      |                                                      ^~\"

\"get-data.sps:20.34-20.48: warning: GET DATA: Ignoring obsolete IMPORTCASES subcommand.  (N OF CASES or SAMPLE may be used to substitute.).
   20 | GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=ALL.
      |                                  ^~~~~~~~~~~~~~~\"

\"get-data.sps:20.49: error: GET DATA: Syntax error expecting \`/'.
   20 | GET DATA /TYPE=TXT/FILE='x.txt' /IMPORTCASES=ALL.
      |                                                 ^\"

get-data.sps:21: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.

\"get-data.sps:21.53-21.62: note: GET DATA: This syntax requires DELIMITED arrangement.
   21 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELIMITERS=' '.
      |                                                     ^~~~~~~~~~\"

\"get-data.sps:21.34-21.50: note: GET DATA: This syntax requires FIXED arrangement.
   21 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /DELIMITERS=' '.
      |                                  ^~~~~~~~~~~~~~~~~\"

get-data.sps:22: error: GET DATA: FIXED and DELIMITED arrangements are mutually exclusive.

\"get-data.sps:22.53-22.61: note: GET DATA: This syntax requires DELIMITED arrangement.
   22 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /QUALIFIER='\"\"'.
      |                                                     ^~~~~~~~~\"

\"get-data.sps:22.34-22.50: note: GET DATA: This syntax requires FIXED arrangement.
   22 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /QUALIFIER='\"\"'.
      |                                  ^~~~~~~~~~~~~~~~~\"

\"get-data.sps:23.44-23.52: error: GET DATA: In compatible syntax mode, the QUALIFIER string must contain exactly one character.
   23 | GET DATA /TYPE=TXT/FILE='x.txt' /QUALIFIER='\"\"' + \"\"'\"\".
      |                                            ^~~~~~~~~\"

\"get-data.sps:24.65-24.66: error: GET DATA: Syntax error expecting integer.
   24 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES / **.
      |                                                                 ^~\"

\"get-data.sps:25.44-25.45: error: GET DATA: Syntax error expecting identifier.
   25 | GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES **.
      |                                            ^~\"

\"get-data.sps:26.44-26.109: error: GET DATA: Identifier \`a_very_long_name_that_exceeds_the_64_byte_limit_for_variable_names' exceeds 64-byte limit.
   26 | GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES a_very_long_name_that_exceeds_the_64_byte_limit_for_variable_names.
      |                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"get-data.sps:27.46-27.47: error: GET DATA: Syntax error expecting valid format specifier.
   27 | GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES x **.
      |                                              ^~\"

\"get-data.sps:28.46-28.49: error: GET DATA: Input format F1.2 specifies 2 decimal places, but width 1 allows at most 1 decimals.
   28 | GET DATA /TYPE=TXT/FILE='x.txt' /VARIABLES x F1.2.
      |                                              ^~~~\"

\"get-data.sps:29.65-29.66: error: GET DATA: Syntax error expecting integer.
   29 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x **.
      |                                                                 ^~\"

\"get-data.sps:30.69-30.70: error: GET DATA: Syntax error expecting valid format specifier.
   30 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 **.
      |                                                                     ^~\"

\"get-data.sps:31.69-31.71: error: GET DATA: Unknown format type \`FOO'.
   31 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 FOO.
      |                                                                     ^~~\"

\"get-data.sps:32.65-32.72: error: GET DATA: Input format DATE5 specifies width 5, but DATE requires a width between 8 and 40.
   32 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 DATE.
      |                                                                 ^~~~~~~~\"

\"get-data.sps:33.65-33.77: error: GET DATA: Output format DOLLAR1.2 specifies width 1, but DOLLAR requires a width between 2 and 40.
   33 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 DOLLAR1.2.
      |                                                                 ^~~~~~~~~~~~~\"

\"get-data.sps:34.71: error: GET DATA: x is a duplicate variable name.
   34 | GET DATA /TYPE=TXT/FILE='x.txt' /ARRANGEMENT=FIXED /VARIABLES x 1-5 F x 6-10 F.
      |                                                                       ^\"

\"get-data.sps:36.21-36.22: error: GET DATA: Syntax error expecting \`/CONNECT='.
   36 | GET DATA /TYPE=PSQL **.
      |                     ^~\"

\"get-data.sps:37.20-37.23: error: GET DATA: Syntax error expecting \`/CONNECT='.
   37 | GET DATA /TYPE=PSQL/ **.
      |                    ^~~~\"

\"get-data.sps:38.20-38.30: error: GET DATA: Syntax error expecting \`/CONNECT='.
   38 | GET DATA /TYPE=PSQL/CONNECT **.
      |                    ^~~~~~~~~~~\"

\"get-data.sps:39.50-39.51: error: GET DATA: Syntax error expecting integer between 1 and 32767 for ASSUMEDSTRWIDTH.
   39 | GET DATA /TYPE=PSQL/CONNECT='db'/ASSUMEDSTRWIDTH=**.
      |                                                  ^~\"

\"get-data.sps:40.40-40.41: error: GET DATA: Syntax error expecting positive integer for BSIZE.
   40 | GET DATA /TYPE=PSQL/CONNECT='db'/BSIZE=**.
      |                                        ^~\"

\"get-data.sps:41.38-41.39: error: GET DATA: Syntax error expecting string.
   41 | GET DATA /TYPE=PSQL/CONNECT='db'/SQL=**.
      |                                      ^~\"

\"get-data.sps:43.20-43.21: error: GET DATA: Syntax error expecting \`/FILE='.
   43 | GET DATA /TYPE=GNM **.
      |                    ^~\"

\"get-data.sps:44.19-44.22: error: GET DATA: Syntax error expecting \`/FILE='.
   44 | GET DATA /TYPE=GNM/ **.
      |                   ^~~~\"

\"get-data.sps:45.19-45.26: error: GET DATA: Syntax error expecting \`/FILE='.
   45 | GET DATA /TYPE=GNM/FILE **.
      |                   ^~~~~~~~\"

\"get-data.sps:46.26-46.27: error: GET DATA: Syntax error expecting string.
   46 | GET DATA /TYPE=GNM/FILE= **.
      |                          ^~\"

\"get-data.sps:47.54-47.55: error: GET DATA: Syntax error expecting integer between 1 and 32767 for ASSUMEDSTRWIDTH.
   47 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/ASSUMEDSTRWIDTH=**.
      |                                                      ^~\"

\"get-data.sps:48.49-48.50: error: GET DATA: Syntax error expecting string.
   48 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=NAME **.
      |                                                 ^~\"

\"get-data.sps:49.50-49.51: error: GET DATA: Syntax error expecting positive integer for INDEX.
   49 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=INDEX **.
      |                                                  ^~\"

\"get-data.sps:50.44-50.45: error: GET DATA: Syntax error expecting NAME or INDEX.
   50 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/SHEET=**.
      |                                            ^~\"

\"get-data.sps:51.54-51.55: error: GET DATA: Syntax error expecting string.
   51 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/CELLRANGE=RANGE **.
      |                                                      ^~\"

\"get-data.sps:52.48-52.49: error: GET DATA: Syntax error expecting FULL or RANGE.
   52 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/CELLRANGE=**.
      |                                                ^~\"

\"get-data.sps:53.48-53.49: error: GET DATA: Syntax error expecting ON or OFF.
   53 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/READNAMES=**.
      |                                                ^~\"

\"get-data.sps:54.39-54.40: error: GET DATA: Syntax error expecting ASSUMEDSTRWIDTH, SHEET, CELLRANGE, or READNAMES.
   54 | GET DATA /TYPE=GNM/FILE='x.gnumeric'/ **.
      |                                       ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/get-data.at:63"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_735
#AT_START_736
at_fn_group_banner 736 'get.at:21' \
  "GET data works in multiple procedures" "          " 61
at_xfail=no
(
  printf "%s\n" "736. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >get.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/get.at:45: pspp -o pspp.csv get.sps"
at_fn_check_prepare_trace "get.at:45"
( $at_check_trace; pspp -o pspp.csv get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/get.at:46: cat pspp.csv"
at_fn_check_prepare_trace "get.at:46"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_736
#AT_START_737
at_fn_group_banner 737 'get.at:72' \
  "GET nonexistent file doesn't crash" "             " 61
at_xfail=no
(
  printf "%s\n" "737. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/get.at:75: echo \"GET /FILE='nonexistent.sav'.\" | pspp -O format=csv"
at_fn_check_prepare_notrace 'a shell pipeline' "get.at:75"
( $at_check_trace; echo "GET /FILE='nonexistent.sav'." | pspp -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: An error occurred while opening \`nonexistent.sav': No such file or directory.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/get.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_737
#AT_START_738
at_fn_group_banner 738 'get.at:106' \
  "GET with /KEEP=ALL crashes -- uncompressed" "     " 61
at_xfail=no
(
  printf "%s\n" "738. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >get.sps <<'_ATEOF'
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'/uncompressed.
GET FILE='test.sav'/KEEP=x y z all.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/get.at:106: pspp -o pspp.csv get.sps"
at_fn_check_prepare_trace "get.at:106"
( $at_check_trace; pspp -o pspp.csv get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get.at:106"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/get.at:106: cat pspp.csv"
at_fn_check_prepare_trace "get.at:106"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get.at:106"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_738
#AT_START_739
at_fn_group_banner 739 'get.at:107' \
  "GET with /KEEP=ALL crashes -- compressed" "       " 61
at_xfail=no
(
  printf "%s\n" "739. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >get.sps <<'_ATEOF'
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'/compressed.
GET FILE='test.sav'/KEEP=x y z all.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/get.at:107: pspp -o pspp.csv get.sps"
at_fn_check_prepare_trace "get.at:107"
( $at_check_trace; pspp -o pspp.csv get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/get.at:107: cat pspp.csv"
at_fn_check_prepare_trace "get.at:107"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/get.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_739
#AT_START_740
at_fn_group_banner 740 'get.at:111' \
  "GET data no type" "                               " 61
at_xfail=no
(
  printf "%s\n" "740. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >get.sps <<'_ATEOF'
get data /file='anything'.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/get.at:116: pspp get.sps"
at_fn_check_prepare_trace "get.at:116"
( $at_check_trace; pspp get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/get.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_740
#AT_START_741
at_fn_group_banner 741 'glm.at:19' \
  "GLM latin square design" "                        " 62
at_xfail=no
(
  printf "%s\n" "741. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >latin.sps <<'_ATEOF'
set format = F20.3.
data list notable  fixed /a 1 b 3 c 5 y 7-10(2).
begin data.
1 1 6  3.5
1 2 2  8.9
1 3 3  9.6
1 4 4 10.5
1 5 5  3.1
1 6 1  5.9
2 1 2  4.2
2 2 6  1.9
2 3 5  3.7
2 4 3 10.2
2 5 1  7.2
2 6 4  7.6
3 1 1  6.7
3 2 4  5.8
3 3 6 -2.7
3 4 2  4.6
3 5 3  4.0
3 6 5 -0.7
4 1 4  6.6
4 2 1  4.5
4 3 2  3.7
4 4 5  3.7
4 5 6 -3.3
4 6 3  3.0
5 1 3  4.1
5 2 5  2.4
5 3 4  6.0
5 4 1  5.1
5 5 2  3.5
5 6 6  4.0
6 1 5  3.8
6 2 3  5.8
6 3 1  7.0
6 4 6  3.8
6 5 4  5.0
6 6 2  8.6
end data.

variable labels a 'Factor A' b 'Factor B' c 'Factor C' y 'Criterion'.

glm y by   b a c
  /intercept=include
  /criteria=alpha(.05)
  /design = a b c
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/glm.at:75: pspp -O format=csv latin.sps | sed 's/329.62[678]/329.62/'"
at_fn_check_prepare_notrace 'a shell pipeline' "glm.at:75"
( $at_check_trace; pspp -O format=csv latin.sps | sed 's/329.62[678]/329.62/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Tests of Between-Subjects Effects
,Type III Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,263.064,15,17.538,5.269,.000
Intercept,815.103,1,815.103,244.910,.000
Factor A,78.869,5,15.774,4.739,.005
Factor B,28.599,5,5.720,1.719,.176
Factor C,155.596,5,31.119,9.350,.000
Error,66.563,20,3.328,,
Total,1144.730,36,,,
Corrected Total,329.62,35,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glm.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_741
#AT_START_742
at_fn_group_banner 742 'glm.at:91' \
  "GLM 2 by 2 factorial design" "                    " 62
at_xfail=no
(
  printf "%s\n" "742. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >2by2.sps <<'_ATEOF'
set format = F20.3.
data list notable  list /Factor0 * Factor1 * points (F10).
begin data.
1	4	332
1	4	380
1	4	371
1	4	366
1	4	354
1	0	259.5
1	0	302.5
1	0	296
1	0	349
1	0	309
2	4	354.67
2	4	353.5
2	4	304
2	4	365
2	4	339
2	0	306
2	0	339
2	0	353
2	0	351
2	0	333
end data.

glm points by Factor0 Factor1
  /intercept=include
  /criteria=alpha(.05)
  .
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/glm.at:127: pspp -O format=csv 2by2.sps "
at_fn_check_prepare_trace "glm.at:127"
( $at_check_trace; pspp -O format=csv 2by2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Tests of Between-Subjects Effects
,Type III Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,8667.053,3,2889.018,5.043,.012
Intercept,2256018.640,1,2256018.640,3937.693,.000
Factor0,313.394,1,313.394,.547,.470
Factor1,5157.508,1,5157.508,9.002,.008
Factor0 × Factor1,3196.150,1,3196.150,5.579,.031
Error,9166.865,16,572.929,,
Total,2273852.559,20,,,
Corrected Total,17833.918,19,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glm.at:127"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_742
#AT_START_743
at_fn_group_banner 743 'glm.at:144' \
  "GLM Type I and II Sums of Squares" "              " 62
at_xfail=no
(
  printf "%s\n" "743. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >data-inc.sps <<'_ATEOF'
set decimal = dot.
set format=F20.3.
data list notable list /dv * Agrp * B0 * B1 * B2 * i0 * i1 * i2 * sss *.
begin data.
5   1  1  0  0  1  0  0 1.00
7   1  1  0  0  1  0  0 1.00
9   1  1  0  0  1  0  0 1.00
8   1  1  0  0  1  0  0 1.00
2   1  0  1  0  0  1  0 1.00
5   1  0  1  0  0  1  0 1.00
7   1  0  1  0  0  1  0 1.00
3   1  0  1  0  0  1  0 1.00
9   1  0  1  0  0  1  0 1.00
8   1  0  0  1  0  0  1 1.00
11  1  0  0  1  0  0  1 1.00
12  1  0  0  1  0  0  1 1.00
14  1  0  0  1  0  0  1 1.00
11  1 -1 -1 -1 -1 -1 -1 1.00
15  1 -1 -1 -1 -1 -1 -1 1.00
16  1 -1 -1 -1 -1 -1 -1 1.00
10  1 -1 -1 -1 -1 -1 -1 1.00
9   1 -1 -1 -1 -1 -1 -1 1.00
7  -1  1  0  0 -1  0  0 2.00
9  -1  1  0  0 -1  0  0 2.00
10 -1  1  0  0 -1  0  0 2.00
9  -1  1  0  0 -1  0  0 2.00
3  -1  0  1  0  0 -1  0 2.00
8  -1  0  1  0  0 -1  0 2.00
9  -1  0  1  0  0 -1  0 2.00
11 -1  0  1  0  0 -1  0 2.00
9  -1  0  0  1  0  0 -1 2.00
12 -1  0  0  1  0  0 -1 2.00
14 -1  0  0  1  0  0 -1 2.00
8  -1  0  0  1  0  0 -1 2.00
7  -1  0  0  1  0  0 -1 2.00
11 -1 -1 -1 -1  1  1  1 2.00
14 -1 -1 -1 -1  1  1  1 2.00
10 -1 -1 -1 -1  1  1  1 2.00
12 -1 -1 -1 -1  1  1  1 2.00
13 -1 -1 -1 -1  1  1  1 2.00
11 -1 -1 -1 -1  1  1  1 2.00
12 -1 -1 -1 -1  1  1  1 2.00
end data.

do if B0 = -1 AND B1 = -1 AND B2 = -1.
compute Bgrp = 4.
end if.

do if B0 = 0 AND B1 = 0 AND B2 = 1.
compute Bgrp = 3.
end if.

do if B0 = 0 AND B1 = 1 AND B2 = 0.
compute Bgrp = 2.
end if.

do if B0 = 1 AND B1 = 0 AND B2 = 0.
compute Bgrp = 1.
end if.
_ATEOF


cat >type1.sps <<'_ATEOF'
include 'data-inc.sps'.

glm dv by Agrp Bgrp
	/method = sstype (1)
	.

glm dv by Agrp Bgrp
	/method = sstype (1)
	/design Bgrp Agrp Bgrp * Agrp
	.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/glm.at:225: pspp -O format=csv type1.sps"
at_fn_check_prepare_trace "glm.at:225"
( $at_check_trace; pspp -O format=csv type1.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Tests of Between-Subjects Effects
,Type I Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,216.017,7,30.860,5.046,.001
Agrp,9.579,1,9.579,1.566,.220
Bgrp,186.225,3,62.075,10.151,.000
Agrp × Bgrp,20.212,3,6.737,1.102,.364
Error,183.457,30,6.115,,
Total,3810.000,38,,,
Corrected Total,399.474,37,,,

Table: Tests of Between-Subjects Effects
,Type I Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,216.017,7,30.860,5.046,.001
Bgrp,193.251,3,64.417,10.534,.000
Agrp,2.553,1,2.553,.418,.523
Bgrp × Agrp,20.212,3,6.737,1.102,.364
Error,183.457,30,6.115,,
Total,3810.000,38,,,
Corrected Total,399.474,37,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glm.at:225"
$at_failed && at_fn_log_failure
$at_traceon; }



cat >type2.sps <<'_ATEOF'
include 'data-inc.sps'.

glm dv by Agrp Bgrp
	/method = sstype (2)
	.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/glm.at:258: pspp -O format=csv type2.sps"
at_fn_check_prepare_trace "glm.at:258"
( $at_check_trace; pspp -O format=csv type2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Tests of Between-Subjects Effects
,Type II Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,216.017,7,30.860,5.046,.001
Agrp,2.553,1,2.553,.418,.523
Bgrp,186.225,3,62.075,10.151,.000
Agrp × Bgrp,20.212,3,6.737,1.102,.364
Error,183.457,30,6.115,,
Total,3810.000,38,,,
Corrected Total,399.474,37,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glm.at:258"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_743
#AT_START_744
at_fn_group_banner 744 'glm.at:275' \
  "GLM excluded intercept" "                         " 62
at_xfail=no
(
  printf "%s\n" "744. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >intercept-exclude.sps <<'_ATEOF'
set format = F20.3.

data list notable list /depvar * A *.
begin data.
10     1
14     1
8      1
7      1
2      1
10     1
1      1
3      1
2      1
8.5    1
14.29  2
18.49  2
12.46  2
11.63  2
6.66   2
14.02  2
5.66   2
7.06   2
6.37   2
13.26  2
end data.

GLM depvar by A
   /intercept = exclude
  .


GLM depvar by A
   /intercept = include
  .

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/glm.at:325: pspp -O format=csv intercept-exclude.sps"
at_fn_check_prepare_trace "glm.at:325"
( $at_check_trace; pspp -O format=csv intercept-exclude.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Tests of Between-Subjects Effects
,Type III Sum Of Squares,df,Mean Square,F,Sig.
Model,1636.826,2,818.413,43.556,.000
A,1636.826,2,818.413,43.556,.000
Error,338.216,18,18.790,,
Total,1975.042,20,,,

Table: Tests of Between-Subjects Effects
,Type III Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,98.568,1,98.568,5.246,.034
Intercept,1538.258,1,1538.258,81.867,.000
A,98.568,1,98.568,5.246,.034
Error,338.216,18,18.790,,
Total,1975.042,20,,,
Corrected Total,436.784,19,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glm.at:325"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_744
#AT_START_745
at_fn_group_banner 745 'glm.at:347' \
  "GLM missing values" "                             " 62
at_xfail=no
(
  printf "%s\n" "745. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >glm.data <<'_ATEOF'
1 1 6  3.5
1 2 2  8.9
1 3 3  9.6
1 4 4 10.5
1 5 5  3.1
1 6 1  5.9
2 1 2  4.2
2 2 6  1.9
2 3 5  3.7
2 4 3 10.2
2 5 1  7.2
2 6 4  7.6
3 1 1  6.7
3 2 4  5.8
3 3 6 -2.7
3 4 2  4.6
3 5 3  4.0
3 6 5 -0.7
4 1 4  6.6
4 2 1  4.5
4 3 2  3.7
4 4 5  3.7
4 5 6 -3.3
4 6 3  3.0
5 1 3  4.1
5 2 5  2.4
5 3 4  6.0
5 4 1  5.1
5 5 2  3.5
5 6 6  4.0
6 1 5  3.8
6 2 3  5.8
6 3 1  7.0
6 4 6  3.8
6 5 4  5.0
6 6 2  8.6
_ATEOF


cat >glm-miss.sps <<'_ATEOF'
set format = F20.3.
data list file='glm.data' notable  fixed /a 1 b 3 c 5 y 7-10(2).

do if a=6.
recode y (else=SYSMIS).
end if.

glm y by   b a c
  /criteria=alpha(.05)
  /design = a b c
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/glm.at:403: pspp -O format=csv glm-miss.sps"
at_fn_check_prepare_trace "glm.at:403"
( $at_check_trace; pspp -O format=csv glm-miss.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Tests of Between-Subjects Effects
,Type III Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,251.621,14,17.973,4.969,.002
Intercept,628.376,1,628.376,173.737,.000
a,72.929,4,18.232,5.041,.009
b,20.703,5,4.141,1.145,.380
c,135.179,5,27.036,7.475,.001
Error,54.253,15,3.617,,
Total,934.250,30,,,
Corrected Total,305.874,29,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glm.at:403"
$at_failed && at_fn_log_failure
$at_traceon; }




cat >glm-miss2.sps <<'_ATEOF'
set format = F20.3.
data list file='glm.data' notable  fixed /a 1 b 3 c 5 y 7-10(2).

select if a <> 6.

glm y by   b a c
  /criteria=alpha(.05)
  /design = a b c
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/glm.at:430: pspp -O format=csv glm-miss2.sps"
at_fn_check_prepare_trace "glm.at:430"
( $at_check_trace; pspp -O format=csv glm-miss2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Tests of Between-Subjects Effects
,Type III Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,251.621,14,17.973,4.969,.002
Intercept,628.376,1,628.376,173.737,.000
a,72.929,4,18.232,5.041,.009
b,20.703,5,4.141,1.145,.380
c,135.179,5,27.036,7.475,.001
Error,54.253,15,3.617,,
Total,934.250,30,,,
Corrected Total,305.874,29,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glm.at:430"
$at_failed && at_fn_log_failure
$at_traceon; }




cat >glm-miss3.sps <<'_ATEOF'
set format = F20.3.
data list file=glm.data notable  fixed /a 1 b 3 c 5 y 7-10(2).

do if a=6.
recode a (else=SYSMIS).
end if.

glm y by   b a c
  /criteria=alpha(.05)
  /design = a b c
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/glm.at:460: pspp -O format=csv glm-miss3.sps"
at_fn_check_prepare_trace "glm.at:460"
( $at_check_trace; pspp -O format=csv glm-miss3.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Tests of Between-Subjects Effects
,Type III Sum Of Squares,df,Mean Square,F,Sig.
Corrected Model,251.621,14,17.973,4.969,.002
Intercept,628.376,1,628.376,173.737,.000
a,72.929,4,18.232,5.041,.009
b,20.703,5,4.141,1.145,.380
c,135.179,5,27.036,7.475,.001
Error,54.253,15,3.617,,
Total,934.250,30,,,
Corrected Total,305.874,29,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/glm.at:460"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_745
#AT_START_746
at_fn_group_banner 746 'glm.at:475' \
  "GLM syntax errors" "                              " 62
at_xfail=no
(
  printf "%s\n" "746. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >glm.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
GLM **.
GLM x **.
GLM x BY **.
GLM x BY y.
GLM x y BY z.
GLM x BY y/MISSING=**.
GLM x BY y/INTERCEPT=**.
GLM x BY y/CRITERIA=**.
GLM x BY y/CRITERIA=ALPHA **.
GLM x BY y/CRITERIA=ALPHA(**).
GLM x BY y/CRITERIA=ALPHA(123 **).
GLM x BY y/METHOD=**.
GLM x BY y/METHOD=SSTYPE **.
GLM x BY y/METHOD=SSTYPE(4).
GLM x BY y/METHOD=SSTYPE(2 **).
GLM x BY y/DESIGN=**.
GLM x BY y/DESIGN=x(y).
GLM x BY y/DESIGN=x WITHIN y.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/glm.at:497: pspp -O format=csv glm.sps"
at_fn_check_prepare_trace "glm.at:497"
( $at_check_trace; pspp -O format=csv glm.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"glm.sps:2.5-2.6: error: GLM: Syntax error expecting variable name.
    2 | GLM **.
      |     ^~\"

\"glm.sps:3.7-3.8: error: GLM: Syntax error expecting \`BY'.
    3 | GLM x **.
      |       ^~\"

\"glm.sps:4.10-4.11: error: GLM: Syntax error expecting variable name.
    4 | GLM x BY **.
      |          ^~\"

\"glm.sps:6.1-6.3: error: GLM: Syntax error expecting \`BEGIN DATA'.
    6 | GLM x y BY z.
      | ^~~\"

\"glm.sps:6.1-6.3: error: GLM: Syntax error expecting end of command.
    6 | GLM x y BY z.
      | ^~~\"

\"glm.sps:7.20-7.21: error: GLM: Syntax error expecting INCLUDE or EXCLUDE.
    7 | GLM x BY y/MISSING=**.
      |                    ^~\"

\"glm.sps:8.22-8.23: error: GLM: Syntax error expecting INCLUDE or EXCLUDE.
    8 | GLM x BY y/INTERCEPT=**.
      |                      ^~\"

\"glm.sps:9.21-9.22: error: GLM: Syntax error expecting \`ALPHA('.
    9 | GLM x BY y/CRITERIA=**.
      |                     ^~\"

\"glm.sps:10.21-10.28: error: GLM: Syntax error expecting \`ALPHA('.
   10 | GLM x BY y/CRITERIA=ALPHA **.
      |                     ^~~~~~~~\"

\"glm.sps:11.27-11.28: error: GLM: Syntax error expecting number.
   11 | GLM x BY y/CRITERIA=ALPHA(**).
      |                           ^~\"

\"glm.sps:12.31-12.32: error: GLM: Syntax error expecting \`)'.
   12 | GLM x BY y/CRITERIA=ALPHA(123 **).
      |                               ^~\"

\"glm.sps:13.19-13.20: error: GLM: Syntax error expecting \`SSTYPE('.
   13 | GLM x BY y/METHOD=**.
      |                   ^~\"

\"glm.sps:14.19-14.27: error: GLM: Syntax error expecting \`SSTYPE('.
   14 | GLM x BY y/METHOD=SSTYPE **.
      |                   ^~~~~~~~~\"

\"glm.sps:15.26: error: GLM: Syntax error expecting integer between 1 and 3 for SSTYPE.
   15 | GLM x BY y/METHOD=SSTYPE(4).
      |                          ^\"

\"glm.sps:16.28-16.29: error: GLM: Syntax error expecting \`)'.
   16 | GLM x BY y/METHOD=SSTYPE(2 **).
      |                            ^~\"

\"glm.sps:17.19-17.20: error: GLM: Syntax error expecting variable name.
   17 | GLM x BY y/DESIGN=**.
      |                   ^~\"

\"glm.sps:18.20: error: GLM: Nested variables are not yet implemented.
   18 | GLM x BY y/DESIGN=x(y).
      |                    ^\"

\"glm.sps:19.21-19.26: error: GLM: Nested variables are not yet implemented.
   19 | GLM x BY y/DESIGN=x WITHIN y.
      |                     ^~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/glm.at:497"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_746
#AT_START_747
at_fn_group_banner 747 'graph.at:19' \
  "GRAPH simple scatterplot" "                       " 63
at_xfail=no
(
  printf "%s\n" "747. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >scatterplot.sps <<'_ATEOF'

* Simple Scatterplot test
NEW FILE.
INPUT PROGRAM.
LOOP #i = 1 to 100.
COMPUTE Age = RV.NORMAL(40,10).
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.

COMPUTE Size = Age * 3 + 50.

GRAPH
    /SCATTERPLOT(BIVARIATE) = Age WITH Size.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:38: pspp -O format=csv scatterplot.sps"
at_fn_check_prepare_trace "graph.at:38"
( $at_check_trace; pspp -O format=csv scatterplot.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_747
#AT_START_748
at_fn_group_banner 748 'graph.at:43' \
  "GRAPH Scatter and Histogram" "                    " 63
at_xfail=no
(
  printf "%s\n" "748. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >scatterlong.sps <<'_ATEOF'

NEW FILE.
INPUT PROGRAM.
LOOP #i = 1 to 10000.
COMPUTE Age = RV.NORMAL(40,10).
COMPUTE CityNum = TRUNC(UNIFORM(2.95)).
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.

COMPUTE Size = Age * 3 + 50 + 50*CityNum.

STRING City (a20).

Recode CityNum
       (0 = "Madrid")
       (1 = "Paris")
       (ELSE = "Stockholm")
       into City.

 GRAPH
    /SCATTERPLOT(BIVARIATE) = Age WITH Size

 GRAPH
    /SCATTERPLOT(BIVARIATE) = Age WITH CityNum

 GRAPH
    /SCATTERPLOT = CityNum WITH Age

 GRAPH
    /SCATTERPLOT = CityNum WITH Size

 GRAPH
    /SCATTERPLOT(BIVARIATE) = Age WITH Size BY City

 GRAPH
    /SCATTERPLOT(BIVARIATE) = Age WITH Size BY CityNum

 ADD VALUE LABELS
    /CityNum 1 'Rio' 2 'Tokyo' 0 'Mumbai'.

 GRAPH
    /SCATTERPLOT(BIVARIATE) = Age WITH Size BY CityNum

 GRAPH
    /HISTOGRAM = Age.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:95: pspp -O format=pdf scatterlong.sps"
at_fn_check_prepare_trace "graph.at:95"
( $at_check_trace; pspp -O format=pdf scatterlong.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:95"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_748
#AT_START_749
at_fn_group_banner 749 'graph.at:98' \
  "GRAPH missing values don't crash" "               " 63
at_xfail=no
(
  printf "%s\n" "749. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >scatter.sps <<'_ATEOF'
data list list /x * y *.
begin data.
1 0
2 0
. 0
3 1
4 1
5 .
6 1
end data.
graph
      /scatterplot = x with y.
graph
      /histogram = x.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/graph.at:115: pspp -o pspp.pdf scatter.sps"
at_fn_check_prepare_trace "graph.at:115"
( $at_check_trace; pspp -o pspp.pdf scatter.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:115"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_749
#AT_START_750
at_fn_group_banner 750 'graph.at:119' \
  "GRAPH missing=VARIABLE no crash" "                " 63
at_xfail=no
(
  printf "%s\n" "750. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >scatter.sps <<'_ATEOF'
data list list /x * y *.
begin data.
1 0
2 0
. 0
3 1
4 1
5 .
6 1
end data.
graph
      /scatterplot = x with y
      /missing = VARIABLE.
graph
      /histogram = x
      /missing = VARIABLE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/graph.at:138: pspp -o pspp.pdf scatter.sps"
at_fn_check_prepare_trace "graph.at:138"
( $at_check_trace; pspp -o pspp.pdf scatter.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:138"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_750
#AT_START_751
at_fn_group_banner 751 'graph.at:142' \
  "GRAPH missing value in by variable" "             " 63
at_xfail=no
(
  printf "%s\n" "751. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >scatter.sps <<'_ATEOF'
data list list /x * y * z *.
begin data.
1 0 9
2 0 9
. 0 9
3 1 .
4 1 8
5 . 8
6 1 8
end data.
graph
      /scatterplot = x with y by z
      /missing = VARIABLE.

graph
      /scatterplot = x with y by z.

_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/graph.at:162: pspp -o pspp.pdf scatter.sps"
at_fn_check_prepare_trace "graph.at:162"
( $at_check_trace; pspp -o pspp.pdf scatter.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:162"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_751
#AT_START_752
at_fn_group_banner 752 'graph.at:167' \
  "GRAPH histogram with null data" "                 " 63
at_xfail=no
(
  printf "%s\n" "752. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >null-hist.sps <<'_ATEOF'
data list list /x *.
begin data.
1109
.
end data.

graph
      /histogram = x.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:180: pspp -o pspp.pdf null-hist.sps"
at_fn_check_prepare_trace "graph.at:180"
( $at_check_trace; pspp -o pspp.pdf null-hist.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:180"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_752
#AT_START_753
at_fn_group_banner 753 'graph.at:185' \
  "GRAPH histogram all missing" "                    " 63
at_xfail=no
(
  printf "%s\n" "753. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >null-hist.sps <<'_ATEOF'
data list list /x *.
begin data.
.
end data.

graph
      /histogram = x.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:197: pspp null-hist.sps"
at_fn_check_prepare_trace "graph.at:197"
( $at_check_trace; pspp null-hist.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:197"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_753
#AT_START_754
at_fn_group_banner 754 'graph.at:204' \
  "GRAPH barcharts" "                                " 63
at_xfail=no
(
  printf "%s\n" "754. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/graph.at:205: ln -s \$top_srcdir/examples/physiology.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/examples/physiology.sav ." "graph.at:205"
( $at_check_trace; ln -s $top_srcdir/examples/physiology.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:205"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/graph.at:206: ln -s \$top_srcdir/examples/repairs.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/examples/repairs.sav ." "graph.at:206"
( $at_check_trace; ln -s $top_srcdir/examples/repairs.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:206"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >barchart.sps <<'_ATEOF'
GET FILE="physiology.sav".

GRAPH /BAR = COUNT BY SEX.

GRAPH /BAR = MEAN(height) BY SEX.

NEW FILE.

GET FILE="repairs.sav".

GRAPH /BAR = MEAN (mtbf) BY factory.

COMPUTE  R = TRUNC(RV.UNIFORM(1,5)).

GRAPH /BAR = MEAN (mtbf) BY factory BY R.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:226: pspp -o pspp.pdf barchart.sps"
at_fn_check_prepare_trace "graph.at:226"
( $at_check_trace; pspp -o pspp.pdf barchart.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:226"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_754
#AT_START_755
at_fn_group_banner 755 'graph.at:233' \
  "GRAPH barchart arity" "                           " 63
at_xfail=no
(
  printf "%s\n" "755. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >barchart.sps <<'_ATEOF'
data list notable list /x y z*.
begin data
1  1  3
2  1  4
3  1  3
4  1  4
5  .  3
6  2  4
7  2  3
8  2  4
9  2  3
10  2  4
end data.

* This line is invalid
GRAPH /BAR = COUNT(x) BY y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:254: pspp -o pspp.pdf barchart.sps"
at_fn_check_prepare_trace "graph.at:254"
( $at_check_trace; pspp -o pspp.pdf barchart.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/graph.at:254"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_755
#AT_START_756
at_fn_group_banner 756 'graph.at:262' \
  "GRAPH barchart bad syntax" "                      " 63
at_xfail=no
(
  printf "%s\n" "756. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >barchart.sps <<'_ATEOF'
data list notable list /x y z*.
begin data
1  1  3
2  1  4
3  1  3
4  1  4
5  .  3
6  2  4
7  2  3
8  2  4
9  2  3
10  2  4
end data.

* This line is invalid
GRAPH /BAR = SCROD BY y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:283: pspp -o pspp.pdf barchart.sps"
at_fn_check_prepare_trace "graph.at:283"
( $at_check_trace; pspp -o pspp.pdf barchart.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/graph.at:283"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_756
#AT_START_757
at_fn_group_banner 757 'graph.at:290' \
  "GRAPH barchart full" "                            " 63
at_xfail=no
(
  printf "%s\n" "757. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >barchart.sps <<'_ATEOF'
data list notable list /x y z*.
begin data
1  1  3
2  1  4
3  1  3
4  1  4
5  .  3
6  2  4
7  2  3
8  2  4
9  2  3
10  2  4
end data.

* This line is invalid
GRAPH /BAR = COUNT by z.
GRAPH /BAR = CUFREQ by z.
GRAPH /BAR = PCT by z.
GRAPH /BAR = CUPCT by z.

GRAPH /BAR = MEAN(y) BY z.
GRAPH /BAR = SUM(y) BY z.
GRAPH /BAR = MAXIMUM(y) BY z.
GRAPH /BAR = MINIMUM(y) BY z.

GRAPH /BAR = MEAN(y) BY z BY y.
GRAPH /BAR = SUM(y) BY z BY y.
GRAPH /BAR = MAXIMUM(y) BY z BY y.
GRAPH /BAR = MINIMUM(y) BY z BY y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:324: pspp -o pspp.pdf barchart.sps"
at_fn_check_prepare_trace "graph.at:324"
( $at_check_trace; pspp -o pspp.pdf barchart.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:324"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_757
#AT_START_758
at_fn_group_banner 758 'graph.at:333' \
  "GRAPH buggy syntax" "                             " 63
at_xfail=no
(
  printf "%s\n" "758. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >barchart.sps <<'_ATEOF'
data list notable list /x y z*.
begin data
1  1  3
2  1  4
10  2  4
end data.

GRAPH /BAR = MINIMUM({) BY z BY y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:346: pspp -o pspp.pdf barchart.sps"
at_fn_check_prepare_trace "graph.at:346"
( $at_check_trace; pspp -o pspp.pdf barchart.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/graph.at:346"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_758
#AT_START_759
at_fn_group_banner 759 'graph.at:354' \
  "GRAPH barchart percentage sub-categorical" "      " 63
at_xfail=no
(
  printf "%s\n" "759. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >barchart.sps <<'_ATEOF'
data list list notable /penalty_favopp_x * XYdem_racethW8 * w *.
begin data.
1 0 1960
1 1 376
2 0 678
2 1 147
4 0 368
4 1 164
5 0 427
5 1 274
. . 1522
end data.

weight by w.

* crosstabs
*   /tables=penalty_favopp_x by XYdem_racethW8
*   /format=AVALUE TABLES PIVOT
*   /statistics=CHISQ
*   /cells COUNT COLUMN TOTAL.

graph
  /bar=pct by penalty_favopp_x
  .

graph
  /bar=pct by penalty_favopp_x by XYdem_racethW8
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/graph.at:386: pspp --testing barchart.sps"
at_fn_check_prepare_trace "graph.at:386"
( $at_check_trace; pspp --testing barchart.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Graphic: Barchart
Percentage: 0
Total Categories: 4
Primary Categories: 4
Largest Category: 53.1634
Total Count: 100
Y Label: \"Percentage\"
Categorical Variables:
  Var: \"penalty_favopp_x\"
Categories:
  0 \"    1.00\"
  1 \"    2.00\"
  2 \"    4.00\"
  3 \"    5.00\"
All Categories:
Count: 53.1634; Cat: \"    1.00\"
Count: 18.7756; Cat: \"    2.00\"
Count: 12.1074; Cat: \"    4.00\"
Count: 15.9536; Cat: \"    5.00\"

Graphic: Barchart
Percentage: 0
Total Categories: 8
Primary Categories: 4
Largest Category: 57.0929
Total Count: 200
Y Label: \"Percentage\"
Categorical Variables:
  Var: \"penalty_favopp_x\"
  Var: \"XYdem_racethW8\"
Categories:
  0 \"    1.00\"
  1 \"    2.00\"
  2 \"    4.00\"
  3 \"    5.00\"
Sub-categories:
  0 \"     .00\"
  1 \"    1.00\"
All Categories:
Count: 57.0929; Cat: \"    1.00\", \"     .00\"
Count: 39.1259; Cat: \"    1.00\", \"    1.00\"
Count: 19.7495; Cat: \"    2.00\", \"     .00\"
Count: 15.2966; Cat: \"    2.00\", \"    1.00\"
Count: 10.7195; Cat: \"    4.00\", \"     .00\"
Count: 17.0656; Cat: \"    4.00\", \"    1.00\"
Count: 12.4381; Cat: \"    5.00\", \"     .00\"
Count: 28.512; Cat: \"    5.00\", \"    1.00\"

" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/graph.at:386"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_759
#AT_START_760
at_fn_group_banner 760 'graph.at:439' \
  "GRAPH syntax errors" "                            " 63
at_xfail=no
(
  printf "%s\n" "760. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >graph.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
GRAPH/HISTOGRAM=x/HISTOGRAM=y.
GRAPH/HISTOGRAM(**).
GRAPH/HISTOGRAM(NORMAL **).
GRAPH/HISTOGRAM=**.
GRAPH/HISTOGRAM=x y z.
GRAPH/HISTOGRAM=x/BAR=y.
GRAPH/BAR(GROUPED).
GRAPH/BAR(STACKED).
GRAPH/BAR(RANGE).
GRAPH/BAR(**).
GRAPH/BAR **.
GRAPH/BAR=**.
GRAPH/BAR=MEAN **.
GRAPH/BAR=MEAN(**).
GRAPH/BAR=MEAN(x**).
GRAPH/BAR=MEAN(x) **.
GRAPH/BAR=MEAN(x) BY **.
GRAPH/BAR=MEAN(x) BY y BY **.
GRAPH/HISTOGRAM=x/SCATTERPLOT=y.
GRAPH/SCATTERPLOT(OVERLAY).
GRAPH/SCATTERPLOT(MATRIX).
GRAPH/SCATTERPLOT(XYZ).
GRAPH/SCATTERPLOT(**).
GRAPH/SCATTERPLOT(BIVARIATE **).
GRAPH/SCATTERPLOT **.
GRAPH/SCATTERPLOT=**.
GRAPH/SCATTERPLOT=x y z.
GRAPH/SCATTERPLOT=x **.
GRAPH/SCATTERPLOT=x WITH **.
GRAPH/SCATTERPLOT=x WITH y z.
GRAPH/SCATTERPLOT=x WITH y BY **.
GRAPH/LINE.
GRAPH/PIE.
GRAPH/ERRORBAR.
GRAPH/PARETO.
GRAPH/TITLE.
GRAPH/SUBTITLE.
GRAPH/FOOTNOTE.
GRAPH/MISSING=**.
GRAPH/ **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/graph.at:483: pspp -O format=csv graph.sps"
at_fn_check_prepare_trace "graph.at:483"
( $at_check_trace; pspp -O format=csv graph.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"graph.sps:2.19-2.27: error: GRAPH: Only one chart type is allowed.
    2 | GRAPH/HISTOGRAM=x/HISTOGRAM=y.
      |                   ^~~~~~~~~\"

\"graph.sps:3.17-3.18: error: GRAPH: Syntax error expecting \`NORMAL)'.
    3 | GRAPH/HISTOGRAM(**).
      |                 ^~\"

\"graph.sps:4.17-4.25: error: GRAPH: Syntax error expecting \`NORMAL)'.
    4 | GRAPH/HISTOGRAM(NORMAL **).
      |                 ^~~~~~~~~\"

\"graph.sps:5.17-5.18: error: GRAPH: Syntax error expecting variable name.
    5 | GRAPH/HISTOGRAM=**.
      |                 ^~\"

\"graph.sps:6.17-6.21: error: GRAPH: Only one variable is allowed.
    6 | GRAPH/HISTOGRAM=x y z.
      |                 ^~~~~\"

\"graph.sps:7.19-7.21: error: GRAPH: Only one chart type is allowed.
    7 | GRAPH/HISTOGRAM=x/BAR=y.
      |                   ^~~\"

\"graph.sps:8.11-8.17: error: GRAPH: GROUPED is not yet implemented.
    8 | GRAPH/BAR(GROUPED).
      |           ^~~~~~~\"

\"graph.sps:9.11-9.17: error: GRAPH: STACKED is not yet implemented.
    9 | GRAPH/BAR(STACKED).
      |           ^~~~~~~\"

\"graph.sps:10.11-10.15: error: GRAPH: RANGE is not yet implemented.
   10 | GRAPH/BAR(RANGE).
      |           ^~~~~\"

\"graph.sps:11.11-11.12: error: GRAPH: Syntax error expecting SIMPLE, GROUPED, STACKED, or RANGE.
   11 | GRAPH/BAR(**).
      |           ^~\"

\"graph.sps:12.11-12.12: error: GRAPH: Syntax error expecting \`='.
   12 | GRAPH/BAR **.
      |           ^~\"

\"graph.sps:13.11-13.12: error: GRAPH: Syntax error expecting COUNT, PCT, CUFREQ, CUPCT, MEAN, SUM, MAXIMUM, or MINIMUM.
   13 | GRAPH/BAR=**.
      |           ^~\"

\"graph.sps:14.16-14.17: error: GRAPH: Syntax error expecting \`('.
   14 | GRAPH/BAR=MEAN **.
      |                ^~\"

\"graph.sps:15.16-15.17: error: GRAPH: Syntax error expecting variable name.
   15 | GRAPH/BAR=MEAN(**).
      |                ^~\"

\"graph.sps:16.17-16.18: error: GRAPH: Syntax error expecting \`)'.
   16 | GRAPH/BAR=MEAN(x**).
      |                 ^~\"

\"graph.sps:17.19-17.20: error: GRAPH: Syntax error expecting \`BY'.
   17 | GRAPH/BAR=MEAN(x) **.
      |                   ^~\"

\"graph.sps:18.22-18.23: error: GRAPH: Syntax error expecting variable name.
   18 | GRAPH/BAR=MEAN(x) BY **.
      |                      ^~\"

\"graph.sps:19.27-19.28: error: GRAPH: Syntax error expecting variable name.
   19 | GRAPH/BAR=MEAN(x) BY y BY **.
      |                           ^~\"

\"graph.sps:20.19-20.29: error: GRAPH: Only one chart type is allowed.
   20 | GRAPH/HISTOGRAM=x/SCATTERPLOT=y.
      |                   ^~~~~~~~~~~\"

\"graph.sps:21.19-21.25: error: GRAPH: OVERLAY is not yet implemented.
   21 | GRAPH/SCATTERPLOT(OVERLAY).
      |                   ^~~~~~~\"

\"graph.sps:22.19-22.24: error: GRAPH: MATRIX is not yet implemented.
   22 | GRAPH/SCATTERPLOT(MATRIX).
      |                   ^~~~~~\"

\"graph.sps:23.19-23.21: error: GRAPH: XYZ is not yet implemented.
   23 | GRAPH/SCATTERPLOT(XYZ).
      |                   ^~~\"

\"graph.sps:24.19-24.20: error: GRAPH: Syntax error expecting BIVARIATE, OVERLAY, MATRIX, or XYZ.
   24 | GRAPH/SCATTERPLOT(**).
      |                   ^~\"

\"graph.sps:25.29-25.30: error: GRAPH: Syntax error expecting \`)'.
   25 | GRAPH/SCATTERPLOT(BIVARIATE **).
      |                             ^~\"

\"graph.sps:26.19-26.20: error: GRAPH: Syntax error expecting \`='.
   26 | GRAPH/SCATTERPLOT **.
      |                   ^~\"

\"graph.sps:27.19-27.20: error: GRAPH: Syntax error expecting variable name.
   27 | GRAPH/SCATTERPLOT=**.
      |                   ^~\"

\"graph.sps:28.19-28.23: error: GRAPH: Only one variable is allowed.
   28 | GRAPH/SCATTERPLOT=x y z.
      |                   ^~~~~\"

\"graph.sps:29.21-29.22: error: GRAPH: Syntax error expecting \`WITH'.
   29 | GRAPH/SCATTERPLOT=x **.
      |                     ^~\"

\"graph.sps:30.26-30.27: error: GRAPH: Syntax error expecting variable name.
   30 | GRAPH/SCATTERPLOT=x WITH **.
      |                          ^~\"

\"graph.sps:31.26-31.28: error: GRAPH: Only one variable is allowed.
   31 | GRAPH/SCATTERPLOT=x WITH y z.
      |                          ^~~\"

\"graph.sps:32.31-32.32: error: GRAPH: Syntax error expecting variable name.
   32 | GRAPH/SCATTERPLOT=x WITH y BY **.
      |                               ^~\"

\"graph.sps:33.7-33.10: error: GRAPH: LINE is not yet implemented.
   33 | GRAPH/LINE.
      |       ^~~~\"

\"graph.sps:34.7-34.9: error: GRAPH: PIE is not yet implemented.
   34 | GRAPH/PIE.
      |       ^~~\"

\"graph.sps:35.7-35.14: error: GRAPH: ERRORBAR is not yet implemented.
   35 | GRAPH/ERRORBAR.
      |       ^~~~~~~~\"

\"graph.sps:36.7-36.12: error: GRAPH: PARETO is not yet implemented.
   36 | GRAPH/PARETO.
      |       ^~~~~~\"

\"graph.sps:37.7-37.11: error: GRAPH: TITLE is not yet implemented.
   37 | GRAPH/TITLE.
      |       ^~~~~\"

\"graph.sps:38.7-38.14: error: GRAPH: SUBTITLE is not yet implemented.
   38 | GRAPH/SUBTITLE.
      |       ^~~~~~~~\"

\"graph.sps:39.7-39.14: error: GRAPH: FOOTNOTE is not yet implemented.
   39 | GRAPH/FOOTNOTE.
      |       ^~~~~~~~\"

\"graph.sps:40.15-40.16: error: GRAPH: Syntax error expecting LISTWISE, VARIABLE, EXCLUDE, INCLUDE, REPORT, or NOREPORT.
   40 | GRAPH/MISSING=**.
      |               ^~\"

\"graph.sps:41.8-41.9: error: GRAPH: Syntax error expecting one of the following: HISTOGRAM, BAR, SCATTERPLOT, LINE, PIE, ERRORBAR, PARETO, TITLE, SUBTITLE, FOOTNOTE, MISSING.
   41 | GRAPH/ **.
      |        ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/graph.at:483"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_760
#AT_START_761
at_fn_group_banner 761 'host.at:19' \
  "HOST - one command" "                             " 64
at_xfail=no
(
  printf "%s\n" "761. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >host.sps <<'_ATEOF'
HOST COMMAND=['echo "hi there" > file'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:23: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:23"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:23"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/host.at:24: cat file"
at_fn_check_prepare_trace "host.at:24"
( $at_check_trace; cat file
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "hi there
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_761
#AT_START_762
at_fn_group_banner 762 'host.at:28' \
  "HOST - two commands" "                            " 64
at_xfail=no
(
  printf "%s\n" "762. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >host.sps <<'_ATEOF'
HOST COMMAND=['echo a > a' 'echo b > b'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:32: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:32"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/host.at:33: cat a"
at_fn_check_prepare_trace "host.at:33"
( $at_check_trace; cat a
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/host.at:35: cat b"
at_fn_check_prepare_trace "host.at:35"
( $at_check_trace; cat b
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "b
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_762
#AT_START_763
at_fn_group_banner 763 'host.at:39' \
  "HOST - time limit" "                              " 64
at_xfail=no
(
  printf "%s\n" "763. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >host.sps <<'_ATEOF'
HOST COMMAND=['sleep 10'] TIMELIMIT=0.1.
_ATEOF

if $MINGW; then
    { set +x
printf "%s\n" "$at_srcdir/host.at:44: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:44"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "host.sps:1: error: HOST: Time limit not supported on this platform.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/host.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

else
    { set +x
printf "%s\n" "$at_srcdir/host.at:48: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:48"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"host.sps:1: warning: HOST: Command \"\"sleep 10\"\" timed out.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }

fi
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_763
#AT_START_764
at_fn_group_banner 764 'host.at:56' \
  "HOST - command failure" "                         " 65
at_xfail=no
(
  printf "%s\n" "764. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:57" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:57"
cat >host.sps <<'_ATEOF'
HOST COMMAND=['exit 1' 'echo "Not reached"'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:61: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:61"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"host.sps:1: warning: HOST: Command \"\"exit 1\"\" exited with status 1.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:61"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_764
#AT_START_765
at_fn_group_banner 765 'host.at:66' \
  "HOST - nonexistent shell" "                       " 65
at_xfail=no
(
  printf "%s\n" "765. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:67" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:67"
cat >host.sps <<'_ATEOF'
HOST COMMAND=['echo hi'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:71: SHELL=/nonexistent pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:71"
( $at_check_trace; SHELL=/nonexistent pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"host.sps:1: warning: HOST: Command \"\"echo hi\"\" exited with status 127 (Command or shell not found).\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_765
#AT_START_766
at_fn_group_banner 766 'host.at:76' \
  "HOST - nonexistent command" "                     " 65
at_xfail=no
(
  printf "%s\n" "766. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:77" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:77"
cat >host.sps <<'_ATEOF'
HOST COMMAND=['/nonexistent'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:81: pspp -O format=csv host.sps | head -1"
at_fn_check_prepare_notrace 'a shell pipeline' "host.at:81"
( $at_check_trace; pspp -O format=csv host.sps | head -1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"host.sps:1: warning: HOST: Command \"\"/nonexistent\"\" exited with status 127 (Command or shell not found).\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:81"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_766
#AT_START_767
at_fn_group_banner 767 'host.at:86' \
  "HOST - output to stdout" "                        " 65
at_xfail=no
(
  printf "%s\n" "767. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:87" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:87"
cat >host.sps <<'_ATEOF'
HOST COMMAND=['echo hi'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:91: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:91"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "hi
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:91"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_767
#AT_START_768
at_fn_group_banner 768 'host.at:95' \
  "HOST - output to stderr" "                        " 65
at_xfail=no
(
  printf "%s\n" "768. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:96" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:96"
cat >host.sps <<'_ATEOF'
HOST COMMAND=['echo hi 2>&1'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:100: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:100"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "hi
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:100"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_768
#AT_START_769
at_fn_group_banner 769 'host.at:104' \
  "HOST - input from stdin" "                        " 65
at_xfail=no
(
  printf "%s\n" "769. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:105" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:105"
cat >host.sps <<'_ATEOF'
HOST COMMAND=['cat && echo ok || echo fail'] TIMELIMIT=5.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:109: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:109"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ok
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:109"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_769
#AT_START_770
at_fn_group_banner 770 'host.at:114' \
  "HOST - zero time limit" "                         " 65
at_xfail=no
(
  printf "%s\n" "770. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:115" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:115"
cat >host.sps <<'_ATEOF'
HOST COMMAND=['sleep 10'] TIMELIMIT=0.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:119: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:119"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"host.sps:1: warning: HOST: Command \"\"sleep 10\"\" timed out.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:119"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_770
#AT_START_771
at_fn_group_banner 771 'host.at:124' \
  "HOST - signal termination" "                      " 65
at_xfail=no
(
  printf "%s\n" "771. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:125" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:125"
cat >host.sps <<'_ATEOF'
HOST COMMAND=['kill -ABRT $$' 'echo "Not reached"'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:129: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:129"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"host.sps:1: warning: HOST: Command \"\"kill -ABRT \$\$\"\" terminated by signal 6.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:129"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_771
#AT_START_772
at_fn_group_banner 772 'host.at:134' \
  "HOST - SAFER" "                                   " 65
at_xfail=no
(
  printf "%s\n" "772. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "host.at:135" >"$at_check_line_file"
($MINGW) \
  && at_fn_check_skip 77 "$at_srcdir/host.at:135"
cat >host.sps <<'_ATEOF'
SET SAFER=ON.
HOST COMMAND=['sleep 10'] TIMELIMIT=0.1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/host.at:140: pspp -O format=csv host.sps"
at_fn_check_prepare_trace "host.at:140"
( $at_check_trace; pspp -O format=csv host.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"host.sps:2.1-2.4: error: HOST: This command not allowed when the SAFER option is set.
    2 | HOST COMMAND=['sleep 10'] TIMELIMIT=0.1.
      | ^~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/host.at:140"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_772
#AT_START_773
at_fn_group_banner 773 'inpt-pgm.at:21' \
  "INPUT PROGRAM invalid syntax crash" "             " 66
at_xfail=no
(
  printf "%s\n" "773. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
DATA LIST NOTABLE /a 1-9.
BEGIN DATA
123456789
END DATA.
END INPUT PROGRAM.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:30: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:30"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"input-program.sps:3.1-3.10: error: BEGIN DATA: BEGIN DATA is not allowed inside INPUT PROGRAM.
    3 | BEGIN DATA
      | ^~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/inpt-pgm.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_773
#AT_START_774
at_fn_group_banner 774 'inpt-pgm.at:39' \
  "INPUT PROGRAM invalid syntax crash" "             " 66
at_xfail=no
(
  printf "%s\n" "774. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
DATA LIST LIST NOTABLE /x.
END FILE.
END INPUT PROGRAM.

DESCRIPTIVES x.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:48: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:48"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: DESCRIPTIVES: At end of input: Syntax error expecting \`BEGIN DATA'.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/inpt-pgm.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_774
#AT_START_775
at_fn_group_banner 775 'inpt-pgm.at:54' \
  "INPUT PROGRAM infinite loop" "                    " 66
at_xfail=no
(
  printf "%s\n" "775. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
STRING firstname lastname (a24) / address (a80).
END INPUT PROGRAM.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:61: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:61"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"input-program.sps:1.1-3.17: error: INPUT PROGRAM: Input program does not contain DATA LIST or END FILE.
    1 | INPUT PROGRAM.
    2 | STRING firstname lastname (a24) / address (a80).
    3 | END INPUT PROGRAM.\"

\"input-program.sps:4.1-4.7: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined.
    4 | EXECUTE.
      | ^~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/inpt-pgm.at:61"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_775
#AT_START_776
at_fn_group_banner 776 'inpt-pgm.at:76' \
  "INPUT PROGRAM with VECTOR and EXECUTE" "          " 66
at_xfail=no
(
  printf "%s\n" "776. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
VECTOR vec(5).
LOOP #c = 1 to 10.
 LOOP #v = 1 to 5.
  COMPUTE vec(#v) = #v.
 END LOOP.
 END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
DATASET COPY x.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:91: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:91"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
vec1,vec2,vec3,vec4,vec5
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
1.00,2.00,3.00,4.00,5.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inpt-pgm.at:91"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_776
#AT_START_777
at_fn_group_banner 777 'inpt-pgm.at:107' \
  "INPUT PROGRAM taking shorter of two files" "      " 66
at_xfail=no
(
  printf "%s\n" "777. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
    DATA LIST NOTABLE FILE='a.txt'/X 1-10.
    DATA LIST NOTABLE FILE='b.txt'/Y 1-10.
END INPUT PROGRAM.
LIST.
_ATEOF

cat >short.txt <<'_ATEOF'
1
2
3
_ATEOF

cat >long.txt <<'_ATEOF'
4
5
6
7
_ATEOF


cp short.txt a.txt
cp long.txt b.txt
{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:129: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:129"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X,Y
1,4
2,5
3,6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inpt-pgm.at:129"
$at_failed && at_fn_log_failure
$at_traceon; }


cp short.txt b.txt
cp long.txt a.txt
{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:139: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:139"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X,Y
4,1
5,2
6,3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inpt-pgm.at:139"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_777
#AT_START_778
at_fn_group_banner 778 'inpt-pgm.at:148' \
  "INPUT PROGRAM taking longer of two files" "       " 66
at_xfail=no
(
  printf "%s\n" "778. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
    NUMERIC #A #B.

    DO IF NOT #A.
        DATA LIST NOTABLE END=#A FILE='a.txt'/X 1-10.
    END IF.
    DO IF NOT #B.
        DATA LIST NOTABLE END=#B FILE='b.txt'/Y 1-10.
    END IF.
    DO IF #A AND #B.
        END FILE.
    END IF.
    END CASE.
END INPUT PROGRAM.
LIST.
_ATEOF

cat >short.txt <<'_ATEOF'
1
2
3
_ATEOF

cat >long.txt <<'_ATEOF'
4
5
6
7
8
_ATEOF


cp short.txt a.txt
cp long.txt b.txt
{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:181: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:181"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X,Y
1,4
2,5
3,6
.,7
.,8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inpt-pgm.at:181"
$at_failed && at_fn_log_failure
$at_traceon; }


cp short.txt b.txt
cp long.txt a.txt
{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:193: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:193"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X,Y
4,1
5,2
6,3
7,.
8,.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inpt-pgm.at:193"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_778
#AT_START_779
at_fn_group_banner 779 'inpt-pgm.at:204' \
  "INPUT PROGRAM concatenating two files - version 1" "" 66
at_xfail=no
(
  printf "%s\n" "779. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
    NUMERIC #A #B.

    DO IF #A.
        DATA LIST NOTABLE END=#B FILE='b.txt'/X 1-10.
        DO IF #B.
            END FILE.
        ELSE.
            END CASE.
        END IF.
    ELSE.
        DATA LIST NOTABLE END=#A FILE='a.txt'/X 1-10.
        DO IF NOT #A.
            END CASE.
        END IF.
    END IF.
END INPUT PROGRAM.
LIST.
_ATEOF

cat >a.txt <<'_ATEOF'
1
2
3
_ATEOF

cat >b.txt <<'_ATEOF'
4
5
6
7
8
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:238: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:238"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X
1
2
3
4
5
6
7
8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inpt-pgm.at:238"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_779
#AT_START_780
at_fn_group_banner 780 'inpt-pgm.at:252' \
  "INPUT PROGRAM concatenating two files - version 2" "" 66
at_xfail=no
(
  printf "%s\n" "780. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
    NUMERIC #EOF.

    LOOP IF NOT #EOF.
        DATA LIST NOTABLE END=#EOF FILE='a.txt'/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.txt'/X 1-10.
        DO IF NOT #EOF.
            END CASE.
        END IF.
    END LOOP.

    END FILE.
END INPUT PROGRAM.
LIST.
_ATEOF

cat >a.txt <<'_ATEOF'
1
2
3
_ATEOF

cat >b.txt <<'_ATEOF'
4
5
6
7
8
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:289: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:289"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X
1
2
3
4
5
6
7
8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inpt-pgm.at:289"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_780
#AT_START_781
at_fn_group_banner 781 'inpt-pgm.at:303' \
  "INPUT PROGRAM generating data" "                  " 66
at_xfail=no
(
  printf "%s\n" "781. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
    LOOP #I=1 TO 10.
        COMPUTE X=#I.
        END CASE.
    END LOOP.
    END FILE.
END INPUT PROGRAM.
FORMAT X(F2).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:315: pspp -O format=csv input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:315"
( $at_check_trace; pspp -O format=csv input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X
1
2
3
4
5
6
7
8
9
10
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inpt-pgm.at:315"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_781
#AT_START_782
at_fn_group_banner 782 'inpt-pgm.at:331' \
  "INPUT PROGRAM unexpected end of file" "           " 66
at_xfail=no
(
  printf "%s\n" "782. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:335: pspp input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:335"
( $at_check_trace; pspp input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: INPUT PROGRAM: Unexpected end-of-file within INPUT PROGRAM.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/inpt-pgm.at:335"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_782
#AT_START_783
at_fn_group_banner 783 'inpt-pgm.at:341' \
  "INPUT PROGRAM no variables" "                     " 66
at_xfail=no
(
  printf "%s\n" "783. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input-program.sps <<'_ATEOF'
INPUT PROGRAM.
END FILE.
END INPUT PROGRAM.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:347: pspp input-program.sps"
at_fn_check_prepare_trace "inpt-pgm.at:347"
( $at_check_trace; pspp input-program.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "input-program.sps:1.1-3.17: error: INPUT PROGRAM: Input program did not create
any variables.
    1 | INPUT PROGRAM.
    2 | END FILE.
    3 | END INPUT PROGRAM.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/inpt-pgm.at:347"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_783
#AT_START_784
at_fn_group_banner 784 'inpt-pgm.at:356' \
  "REREAD syntax errors" "                           " 66
at_xfail=no
(
  printf "%s\n" "784. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >reread.sps <<'_ATEOF'
INPUT PROGRAM.
REREAD COLUMN=1 COLUMN=**.
END INPUT PROGRAM.

INPUT PROGRAM.
REREAD COLUMN=**.
END INPUT PROGRAM.

INPUT PROGRAM.
REREAD FILE=**.
END INPUT PROGRAM.

INPUT PROGRAM.
REREAD ENCODING=**.
END INPUT PROGRAM.

INPUT PROGRAM.
REREAD **.
END INPUT PROGRAM.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='reread.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/inpt-pgm.at:381: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "inpt-pgm.at:381"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"reread.sps:2.17-2.22: error: REREAD: Subcommand COLUMN may only be specified once.
    2 | REREAD COLUMN=1 COLUMN=**.
      |                 ^~~~~~\"

\"reread.sps:6.15-6.16: error: REREAD: Syntax error parsing expression.
    6 | REREAD COLUMN=**.
      |               ^~\"

\"reread.sps:10.13-10.14: error: REREAD: Syntax error expecting a file name or handle name.
   10 | REREAD FILE=**.
      |             ^~\"

\"reread.sps:14.17-14.18: error: REREAD: Syntax error expecting string.
   14 | REREAD ENCODING=**.
      |                 ^~\"

\"reread.sps:18.8-18.9: error: REREAD: Syntax error expecting COLUMN, FILE, or ENCODING.
   18 | REREAD **.
      |        ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/inpt-pgm.at:381"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_784
#AT_START_785
at_fn_group_banner 785 'insert.at:31' \
  "INSERT SYNTAX=INTERACTIVE" "                      " 67
at_xfail=no
(
  printf "%s\n" "785. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >batch.sps <<'_ATEOF'
input program
loop #i = 1 to 5
+  compute z = #i
+  end case
end loop
end file
end input program
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT
  FILE='batch.sps'
  SYNTAX=interactive.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/insert.at:39: pspp -o pspp.csv insert.sps"
at_fn_check_prepare_trace "insert.at:39"
( $at_check_trace; pspp -o pspp.csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "batch.sps:2.1-2.4: error: INPUT PROGRAM: Syntax error expecting end of command.
    2 | loop #i = 1 to 5
      | ^~~~
batch.sps:3.4-3.10: error: COMPUTE: COMPUTE is allowed only after the active dataset has been defined or inside INPUT PROGRAM.
    3 | +  compute z = #i
      |    ^~~~~~~
batch.sps:4.4-4.11: error: END CASE: END CASE is allowed only inside INPUT PROGRAM.
    4 | +  end case
      |    ^~~~~~~~
insert.sps:4.1-4.4: error: LIST: LIST is allowed only after the active dataset has been defined.
    4 | LIST.
      | ^~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/insert.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_785
#AT_START_786
at_fn_group_banner 786 'insert.at:55' \
  "INSERT SYNTAX=BATCH" "                            " 67
at_xfail=no
(
  printf "%s\n" "786. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >batch.sps <<'_ATEOF'
input program
loop #i = 1 to 5
+  compute z = #i
+  end case
end loop
end file
end input program
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT
  FILE='batch.sps'
  SYNTAX=BATCH.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/insert.at:63: pspp -o pspp.csv insert.sps"
at_fn_check_prepare_trace "insert.at:63"
( $at_check_trace; pspp -o pspp.csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/insert.at:63"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/insert.at:64: cat pspp.csv"
at_fn_check_prepare_trace "insert.at:64"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
z
1.00
2.00
3.00
4.00
5.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/insert.at:64"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_786
#AT_START_787
at_fn_group_banner 787 'insert.at:75' \
  "INSERT CD=NO" "                                   " 67
at_xfail=no
(
  printf "%s\n" "787. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='Dir1/foo.sps'.
LIST.
_ATEOF

mkdir Dir1
cat >Dir1/foo.sps <<'_ATEOF'
INSERT FILE='bar.sps' CD=NO.
_ATEOF

cat >Dir1/bar.sps <<'_ATEOF'
DATA LIST LIST /x *.
BEGIN DATA.
1
2
3
END DATA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/insert.at:90: pspp -o pspp.csv insert.sps"
at_fn_check_prepare_trace "insert.at:90"
( $at_check_trace; pspp -o pspp.csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Dir1/foo.sps:1: error: INSERT: Can't find \`bar.sps' in include file search path.
insert.sps:2.1-2.4: error: LIST: LIST is allowed only after the active dataset has been defined.
    2 | LIST.
      | ^~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/insert.at:90"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_787
#AT_START_788
at_fn_group_banner 788 'insert.at:98' \
  "INSERT CD=YES" "                                  " 67
at_xfail=no
(
  printf "%s\n" "788. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='Dir1/foo.sps' CD=YES.
LIST.
_ATEOF

mkdir Dir1
cat >Dir1/foo.sps <<'_ATEOF'
INSERT FILE='bar.sps'.
_ATEOF

cat >Dir1/bar.sps <<'_ATEOF'
DATA LIST LIST /x *.
BEGIN DATA.
1
2
3
END DATA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/insert.at:113: pspp -o pspp.csv insert.sps"
at_fn_check_prepare_trace "insert.at:113"
( $at_check_trace; pspp -o pspp.csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/insert.at:113"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/insert.at:114: cat pspp.csv"
at_fn_check_prepare_trace "insert.at:114"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0

Table: Data List
x
1.00
2.00
3.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/insert.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_788
#AT_START_789
at_fn_group_banner 789 'insert.at:142' \
  "INSERT ERROR=STOP" "                              " 67
at_xfail=no
(
  printf "%s\n" "789. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >error.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x *.
BEGIN DATA.
1
2
3
END DATA.

* The following line is erroneous

DISPLAY AKSDJ.
LIST.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='error.sps' ERROR=STOP.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/insert.at:146: pspp -o pspp.csv insert.sps"
at_fn_check_prepare_trace "insert.at:146"
( $at_check_trace; pspp -o pspp.csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error.sps:10.9-10.13: error: DISPLAY: AKSDJ is not a variable name.
   10 | DISPLAY AKSDJ.
      |         ^~~~~
warning: Error encountered while ERROR=STOP is effective.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/insert.at:146"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_789
#AT_START_790
at_fn_group_banner 790 'insert.at:154' \
  "INSERT ERROR=CONTINUE" "                          " 67
at_xfail=no
(
  printf "%s\n" "790. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >error.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x *.
BEGIN DATA.
1
2
3
END DATA.

* The following line is erroneous

DISPLAY AKSDJ.
LIST.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='error.sps' ERROR=CONTINUE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/insert.at:158: pspp -o pspp.csv insert.sps"
at_fn_check_prepare_trace "insert.at:158"
( $at_check_trace; pspp -o pspp.csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error.sps:10.9-10.13: error: DISPLAY: AKSDJ is not a variable name.
   10 | DISPLAY AKSDJ.
      |         ^~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/insert.at:158"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/insert.at:163: cat pspp.csv"
at_fn_check_prepare_trace "insert.at:163"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"error.sps:10.9-10.13: error: DISPLAY: AKSDJ is not a variable name.
   10 | DISPLAY AKSDJ.
      |         ^~~~~\"

Table: Data List
x
1.00
2.00
3.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/insert.at:163"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_790
#AT_START_791
at_fn_group_banner 791 'insert.at:178' \
  "INSERT nonexistent file" "                        " 67
at_xfail=no
(
  printf "%s\n" "791. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT
  FILE='nonexistent'
  ERROR=CONTINUE.
  .

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/insert.at:187: pspp -O format=csv insert.sps"
at_fn_check_prepare_trace "insert.at:187"
( $at_check_trace; pspp -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "insert.sps:2: error: INSERT: Can't find \`nonexistent' in include file search path.

\"insert.sps:6.1-6.4: error: LIST: LIST is allowed only after the active dataset has been defined.
    6 | LIST.
      | ^~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/insert.at:187"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_791
#AT_START_792
at_fn_group_banner 792 'insert.at:199' \
  "INCLUDE full check" "                             " 67
at_xfail=no
(
  printf "%s\n" "792. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >two-utf8.sps <<'_ATEOF'
echo 'Äpfelfölfaß'.
_ATEOF


cat >include.sps <<'_ATEOF'
echo 'ONE'.

include FILE='two-latin1.sps' ENCODING='ISO_8859-1'.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/insert.at:210: iconv -f UTF-8 -t iso-8859-1 two-utf8.sps > two-latin1.sps"
at_fn_check_prepare_trace "insert.at:210"
( $at_check_trace; iconv -f UTF-8 -t iso-8859-1 two-utf8.sps > two-latin1.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/insert.at:210"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/insert.at:212: pspp -O format=csv include.sps"
at_fn_check_prepare_trace "insert.at:212"
( $at_check_trace; pspp -O format=csv include.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ONE

Äpfelfölfaß
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/insert.at:212"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_792
#AT_START_793
at_fn_group_banner 793 'insert.at:223' \
  "INSERT unterminated string" "                     " 67
at_xfail=no
(
  printf "%s\n" "793. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >insert.sps <<'_ATEOF'
INSERT FILE=7bar.sps' CD=NO.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/insert.at:228: pspp -O format=csv insert.sps"
at_fn_check_prepare_trace "insert.at:228"
( $at_check_trace; pspp -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/insert.at:228"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_793
#AT_START_794
at_fn_group_banner 794 'insert.at:232' \
  "INSERT syntax errors" "                           " 67
at_xfail=no
(
  printf "%s\n" "794. $at_setup_line: testing $at_desc ..."
  $at_traceon


: >inner.sps
cat >insert.sps <<'_ATEOF'
INSERT **.
INSERT 'nonexistent.sps'.
INSERT 'inner.sps' ENCODING=**.
INSERT 'inner.sps' SYNTAX=**.
INSERT 'inner.sps' CD=**.
INSERT 'inner.sps' ERROR=**.
INSERT 'inner.sps' **.
INCLUDE 'inner.sps' **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/insert.at:245: pspp -O format=csv insert.sps"
at_fn_check_prepare_trace "insert.at:245"
( $at_check_trace; pspp -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"insert.sps:1.8-1.9: error: INSERT: Syntax error expecting string.
    1 | INSERT **.
      |        ^~\"

insert.sps:2: error: INSERT: Can't find \`nonexistent.sps' in include file search path.

\"insert.sps:3.29-3.30: error: INSERT: Syntax error expecting string.
    3 | INSERT 'inner.sps' ENCODING=**.
      |                             ^~\"

\"insert.sps:4.27-4.28: error: INSERT: Syntax error expecting BATCH, INTERACTIVE, or AUTO.
    4 | INSERT 'inner.sps' SYNTAX=**.
      |                           ^~\"

\"insert.sps:5.23-5.24: error: INSERT: Syntax error expecting YES or NO.
    5 | INSERT 'inner.sps' CD=**.
      |                       ^~\"

\"insert.sps:6.26-6.27: error: INSERT: Syntax error expecting CONTINUE or STOP.
    6 | INSERT 'inner.sps' ERROR=**.
      |                          ^~\"

\"insert.sps:7.20-7.21: error: INSERT: Syntax error expecting ENCODING, SYNTAX, CD, or ERROR.
    7 | INSERT 'inner.sps' **.
      |                    ^~\"

\"insert.sps:8.21-8.22: error: INCLUDE: Syntax error expecting ENCODING.
    8 | INCLUDE 'inner.sps' **.
      |                     ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/insert.at:245"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_794
#AT_START_795
at_fn_group_banner 795 'leave.at:3' \
  "LEAVE" "                                          " 68
at_xfail=no
(
  printf "%s\n" "795. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >leave.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
LEAVE x y.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/leave.at:8: pspp -O format=csv leave.sps"
at_fn_check_prepare_trace "leave.at:8"
( $at_check_trace; pspp -O format=csv leave.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/leave.at:8"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_795
#AT_START_796
at_fn_group_banner 796 'leave.at:11' \
  "LEAVE syntax errors" "                            " 68
at_xfail=no
(
  printf "%s\n" "796. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >leave.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
LEAVE **.
LEAVE x **.
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='leave.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/leave.at:20: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "leave.at:20"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"leave.sps:2.7-2.8: error: LEAVE: Syntax error expecting variable name.
    2 | LEAVE **.
      |       ^~\"

\"leave.sps:3.9-3.10: error: LEAVE: Syntax error expecting end of command.
    3 | LEAVE x **.
      |         ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/leave.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_796
#AT_START_797
at_fn_group_banner 797 'list.at:19' \
  "LIST plain cases" "                               " 69
at_xfail=no
(
  printf "%s\n" "797. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.txt <<'_ATEOF'
   18    1
   19    7
   20   26
   21   76
   22   57
   23   58
   24   38
   25   38
   26   30
   27   21
   28   23
_ATEOF

cat >list.sps <<'_ATEOF'
DATA LIST FILE='data.txt'/avar 1-5 bvar 6-10.
WEIGHT BY bvar.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/list.at:38: pspp -o pspp.csv list.sps"
at_fn_check_prepare_trace "list.at:38"
( $at_check_trace; pspp -o pspp.csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/list.at:39: cat pspp.csv"
at_fn_check_prepare_trace "list.at:39"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_797
#AT_START_798
at_fn_group_banner 798 'list.at:61' \
  "LIST numbered cases" "                            " 69
at_xfail=no
(
  printf "%s\n" "798. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.txt <<'_ATEOF'
   18    1
   19    7
   20   26
   21   76
   22   57
   23   58
   24   38
   25   38
   26   30
   27   21
   28   23
_ATEOF

cat >list.sps <<'_ATEOF'
DATA LIST FILE='data.txt'/avar 1-5 bvar 6-10.
WEIGHT BY bvar.
LIST/FORMAT NUMBERED.
LIST/FORMAT NUMBERED/CASES FROM 2 TO 9 BY 2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/list.at:81: pspp -o pspp.csv list.sps"
at_fn_check_prepare_trace "list.at:81"
( $at_check_trace; pspp -o pspp.csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:81"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/list.at:82: cat pspp.csv"
at_fn_check_prepare_trace "list.at:82"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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

Table: Data List
Case Number,avar,bvar
2,19,7
4,21,76
6,23,58
8,25,38
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_798
#AT_START_799
at_fn_group_banner 799 'list.at:113' \
  "LIST with split file" "                           " 69
at_xfail=no
(
  printf "%s\n" "799. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.txt <<'_ATEOF'
a 1
a 2
a 3
b 1
c 4
c 5
_ATEOF

cat >list.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/s (a1) n.
SPLIT FILE BY s.
LIST n.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/list.at:127: pspp -o pspp.csv list.sps"
at_fn_check_prepare_trace "list.at:127"
( $at_check_trace; pspp -o pspp.csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:127"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/list.at:128: cat pspp.csv"
at_fn_check_prepare_trace "list.at:128"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
s,a

Table: Data List
n
1.00
2.00
3.00

Table: Split Values
Variable,Value
s,b

Table: Data List
n
1.00

Table: Split Values
Variable,Value
s,c

Table: Data List
n
4.00
5.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_799
#AT_START_800
at_fn_group_banner 800 'list.at:158' \
  "LIST lots of variables" "                         " 69
at_xfail=no
(
  printf "%s\n" "800. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.txt <<'_ATEOF'
767532466348513789073483106409
888693089424177542378334186760
492611507909187152726427852242
819848892023195875879332001491
452777898709563729845541516650
239961967077732760663525115073
_ATEOF

cat >list.sps <<'_ATEOF'
DATA LIST FILE='data.txt' NOTABLE/x01 to x30 1-30.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/list.at:171: pspp -o pspp.csv list.sps"
at_fn_check_prepare_trace "list.at:171"
( $at_check_trace; pspp -o pspp.csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:171"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/list.at:172: cat pspp.csv"
at_fn_check_prepare_trace "list.at:172"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:172"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_800
#AT_START_801
at_fn_group_banner 801 'list.at:184' \
  "LIST selected cases" "                            " 69
at_xfail=no
(
  printf "%s\n" "801. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.txt <<'_ATEOF'
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
_ATEOF

cat >list.sps <<'_ATEOF'
DATA LIST FILE='data.txt' NOTABLE/x0 to x9 1-10.
LIST /CASES=FROM 6 TO 20 BY 5.
LIST /CASES=4.
LIST /CASES=BY 10.
LIST /CASES=FROM 25.
LIST /CASES=FROM 26.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/list.at:220: pspp -o pspp.csv list.sps"
at_fn_check_prepare_trace "list.at:220"
( $at_check_trace; pspp -o pspp.csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:220"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/list.at:221: cat pspp.csv"
at_fn_check_prepare_trace "list.at:221"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x0,x1,x2,x3,x4,x5,x6,x7,x8,x9
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

Table: Data List
x0,x1,x2,x3,x4,x5,x6,x7,x8,x9
7,6,7,5,3,2,4,6,6,3
8,8,8,6,9,3,0,8,9,4
4,9,2,6,1,1,5,0,7,9
8,1,9,8,4,8,8,9,2,0

Table: Data List
x0,x1,x2,x3,x4,x5,x6,x7,x8,x9
7,6,7,5,3,2,4,6,6,3
2,2,8,4,5,3,4,0,8,3
7,9,7,0,6,2,0,0,9,1

Table: Data List
x0,x1,x2,x3,x4,x5,x6,x7,x8,x9
0,7,0,0,4,8,9,5,2,4

Table: Data List
x0,x1,x2,x3,x4,x5,x6,x7,x8,x9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:221"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_801
#AT_START_802
at_fn_group_banner 802 'list.at:252' \
  "LIST very long string" "                          " 69
at_xfail=no
(
  printf "%s\n" "802. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >list.sps <<'_ATEOF'
INPUT PROGRAM.
STRING foo (a2000).
+ COMPUTE foo=CONCAT(RPAD('A',1999, 'x'), 'Z').
END CASE.
END FILE.
END INPUT PROGRAM.

EXECUTE.

DISPLAY VARIABLES.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/list.at:267: pspp -o pspp.csv list.sps"
at_fn_check_prepare_trace "list.at:267"
( $at_check_trace; pspp -o pspp.csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:267"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/list.at:268: cat pspp.csv"
at_fn_check_prepare_trace "list.at:268"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Print Format,Write Format
foo,1,A2000,A2000

Table: Data List
foo
AxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxZ
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_802
#AT_START_803
at_fn_group_banner 803 'list.at:281' \
  "LIST crash on invalid input" "                    " 69
at_xfail=no
(
  printf "%s\n" "803. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >list.sps <<'_ATEOF'
DATA LIST LIST /`$b.
BEGIN DATA.
1 3
4 6
7 9
END DATA.

LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/list.at:294: pspp -o pspp.csv list.sps"
at_fn_check_prepare_trace "list.at:294"
( $at_check_trace; pspp -o pspp.csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/list.at:294"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_803
#AT_START_804
at_fn_group_banner 804 'list.at:301' \
  "LIST tutorial example" "                          " 69
at_xfail=no
(
  printf "%s\n" "804. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >list.sps <<'_ATEOF'
data list list /forename (A12) height.
begin data.
Ahmed 188
Bertram 167
Catherine 134.231
David 109.1
end data

list /format=numbered.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/list.at:313: pspp -o pspp.csv -o pspp.txt list.sps"
at_fn_check_prepare_trace "list.at:313"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:313"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/list.at:314: cat pspp.csv"
at_fn_check_prepare_trace "list.at:314"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
forename,A12
height,F8.0

Table: Data List
Case Number,forename,height
1,Ahmed,188.00
2,Bertram,167.00
3,Catherine,134.23
4,David,109.10
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:314"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_804
#AT_START_805
at_fn_group_banner 805 'list.at:329' \
  "LIST syntax errors" "                             " 69
at_xfail=no
(
  printf "%s\n" "805. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >list.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x.
LIST VARIABLES=**.
LIST FORMAT=**.
LIST CASES=FROM -1.
LIST CASES=FROM 5 TO 4.
LIST CASES=BY 0.
LIST **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/list.at:339: pspp -O format=csv list.sps"
at_fn_check_prepare_trace "list.at:339"
( $at_check_trace; pspp -O format=csv list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"list.sps:2.16-2.17: error: LIST: Syntax error expecting variable name.
    2 | LIST VARIABLES=**.
      |                ^~\"

\"list.sps:3.13-3.14: error: LIST: Syntax error expecting NUMBERED or UNNUMBERED.
    3 | LIST FORMAT=**.
      |             ^~\"

\"list.sps:4.17-4.18: error: LIST: Syntax error expecting positive integer for FROM.
    4 | LIST CASES=FROM -1.
      |                 ^~\"

\"list.sps:5.22: error: LIST: Syntax error expecting integer 5 or greater for TO.
    5 | LIST CASES=FROM 5 TO 4.
      |                      ^\"

\"list.sps:6.15: error: LIST: Syntax error expecting positive integer for TO.
    6 | LIST CASES=BY 0.
      |               ^\"

\"list.sps:7.6-7.7: error: LIST: Syntax error expecting variable name.
    7 | LIST **.
      |      ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/list.at:339"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_805
#AT_START_806
at_fn_group_banner 806 'logistic.at:97' \
  "LOGISTIC REGRESSION basic test" "                 " 70
at_xfail=no
(
  printf "%s\n" "806. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >lr-data.txt <<'_ATEOF'
 105.00    1.00    33.00    3.00     2.00   .35  17.00  20.00  .50110  -2.00440 1
 106.00    1.00    50.00    2.00     3.00   .38   7.00  15.00  .20168  -1.25264 1
 107.00    1.00    91.00    3.00     2.00   .28  15.00   7.00  .00897  -1.00905 1
 108.00    1.00    90.00    3.00     2.00   .20   2.00   2.00  .00972  -1.00982 1
 109.00    1.00    70.00    3.00     3.00   .38  23.00  27.00  .04745  -1.04981 1
 111.00    2.00    31.00    2.00     2.00   .00  19.00  10.00  .54159   1.84640 1
 112.00    1.00    91.00    2.00     3.00   .18   6.00  16.00  .00897  -1.00905 1
 113.00    1.00    81.00    3.00     2.00   .00   3.00   9.00  .01998  -1.02039 1
 114.00    2.00    15.00    1.00     2.00   .13  19.00  13.00  .81241   1.23090 1
 116.00    2.00     1.00    1.00     2.00   .88  15.00   7.00  .93102   1.07410 1
 117.00    1.00    93.00    3.00     2.00   .18   9.00  15.00  .00764  -1.00770 1
 118.00    2.00    14.00    1.00     3.00   .15  23.00  18.00  .82447   1.21289 1
 120.00    1.00    91.00    2.00     2.00   .43  17.00  14.00  .00897  -1.00905 1
 121.00    1.00    55.00    3.00     2.00   .69  20.00  14.00  .14409  -1.16834 1
 122.00    1.00    70.00    2.00     3.00   .03    .00   6.00  .04745  -1.04981 1
 123.00    1.00    25.00    2.00     2.00   .45   4.00  10.00  .65789  -2.92301 1
 125.00    1.00    91.00    2.00     2.00   .13    .00   3.00  .00897  -1.00905 1
 126.00    1.00    91.00    3.00     3.00   .23   4.00   6.00  .00897  -1.00905 1
 127.00    1.00    91.00    3.00     2.00   .00   8.00   8.00  .00897  -1.00905 1
 128.00    2.00    13.00    2.00     2.00   .65  16.00  14.00  .83592   1.19629 1
 129.00    1.00    50.00    2.00     2.00   .25  20.00  23.00  .20168  -1.25264 1
 135.00    1.00    90.00    3.00     3.00   .03   5.00  12.00  .00972  -1.00982 1
 138.00    1.00    70.00    3.00     3.00   .10   1.00   6.00  .04745  -1.04981 1
 139.00    2.00    19.00    3.00     3.00   .10  11.00  12.00  .75787   1.31949 1
 149.00    2.00    50.00    3.00     2.00   .03    .00    .00  .20168   4.95826 1
 204.00    1.00    50.00    3.00     1.00   .13    .00   1.00  .20168  -1.25264 1
 205.00    1.00    91.00    3.00     3.00   .72  16.00  18.00  .00897  -1.00905 1
 206.00    2.00    24.00    1.00     1.00   .10   5.00  21.00  .67592   1.47947 1
 207.00    1.00    80.00    3.00     3.00   .13   6.00   7.00  .02164  -1.02212 1
 208.00    1.00    87.00    2.00     2.00   .18   9.00  20.00  .01237  -1.01253 1
 209.00    1.00    70.00    2.00     2.00   .53  15.00  12.00  .04745  -1.04981 1
 211.00    1.00    55.00    2.00     1.00   .33   8.00   5.00  .14409  -1.16834 1
 212.00    1.00    56.00    3.00     1.00   .30   6.00  20.00  .13436  -1.15522 1
 214.00    1.00    54.00    2.00     2.00   .15    .00  16.00  .15439  -1.18258 1
 215.00    1.00    71.00    3.00     3.00   .35  12.00  12.00  .04391  -1.04592 1
 217.00    2.00    36.00    1.00     1.00   .10  12.00   8.00  .44049   2.27020 1
 218.00    1.00    91.00    2.00     2.00   .05  11.00  25.00  .00897  -1.00905 1
 219.00    1.00    91.00    2.00     2.00  1.23  11.00  24.00  .00897  -1.00905 1
 220.00    1.00    91.00    2.00     3.00   .08   8.00  11.00  .00897  -1.00905 1
 221.00    1.00    91.00    2.00     2.00   .33   5.00  11.00  .00897  -1.00905 1
 222.00    2.00    36.00    2.00     1.00   .18   5.00   3.00  .44049   2.27020 1
 223.00    1.00    70.00    2.00     3.00   .18  14.00   3.00  .04745  -1.04981 1
 224.00    1.00    91.00    2.00     2.00   .43   2.00  10.00  .00897  -1.00905 1
 225.00    1.00    55.00    2.00     1.00   .18   6.00  11.00  .14409  -1.16834 1
 229.00    2.00    75.00    2.00     2.00   .40  30.00  25.00  .03212  31.12941 1
 232.00    1.00    91.00    3.00     2.00   .15   6.00   3.00  .00897  -1.00905 1
 233.00    1.00    70.00    2.00     1.00   .00  11.00   8.00  .04745  -1.04981 1
 234.00    1.00    54.00    3.00     2.00   .10    .00    .00  .15439  -1.18258 1
 237.00    1.00    70.00    3.00     2.00   .18   5.00  25.00  .04745  -1.04981 1
 241.00    1.00    19.00    2.00     3.00   .33  13.00   9.00  .75787  -4.12995 1
 304.00    2.00    18.00    2.00     2.00   .26  25.00   6.00  .77245   1.29458 1
 305.00    1.00    88.00    3.00     2.00  1.35  17.00  29.00  .01142  -1.01155 1
 306.00    1.00    70.00    2.00     3.00   .63  14.00  33.00  .04745  -1.04981 1
 307.00    1.00    85.00    2.00     2.00  2.65  18.00  14.00  .01452  -1.01474 1
 308.00    1.00    13.00    2.00     2.00   .23   5.00   5.00  .83592  -6.09442 1
 309.00    2.00    13.00    2.00     2.00   .23   7.00  17.00  .83592   1.19629 1
 311.00    2.00     1.00    2.00     2.00   .50  20.00  14.00  .93102   1.07410 1
 315.00    1.00    19.00    2.00     3.00   .18   1.00  11.00  .75787  -4.12995 1
 316.00    1.00    88.00    2.00     2.00   .38  12.00  11.00  .01142  -1.01155 2
 318.00    1.00    88.00    3.00     2.00   .03   5.00   5.00  .01142  -1.01155 3
 319.00    2.00    18.00    2.00     3.00   .30  15.00  16.00  .77245   1.29458 1
 321.00    2.00    15.00    2.00     2.00   .63  15.00  18.00  .81241   1.23090 1
 322.00    1.00    88.00    3.00     2.00   .40  18.00  15.00  .01142  -1.01155 1
 325.00    2.00    18.00    2.00     3.00  1.00  28.00  18.00  .77245   1.29458 1
 329.00    1.00    88.00    3.00     2.00   .03   7.00  11.00  .01142  -1.01155 4
 332.00    2.00     2.00    2.00     2.00   .05   8.00   9.00  .92562   1.08036 1
_ATEOF


cat >lr-data.sps <<'_ATEOF'
set format = F12.3.
set decimal dot.
data list notable file='lr-data.txt'
 list /id outcome survrate prognos amttreat   gsi  avoid intrus   pre_1     lre_1  w *.

logistic regression
	  variables = outcome with survrate
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:113: pspp -o pspp.csv -o pspp.txt lr-data.sps"
at_fn_check_prepare_trace "logistic.at:113"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt lr-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "note: Estimation terminated at iteration number 6 because parameter estimates changed by less than 0.001
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:113"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/logistic.at:116: cat pspp.csv"
at_fn_check_prepare_trace "logistic.at:116"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Dependent Variable Encoding
Original Value,Internal Value
1.000,.000
2.000,1.000

Table: Case Processing Summary
Unweighted Cases,N,Percent
Included in Analysis,66,100.0%
Missing Cases,0,.0%
Total,66,100.0%

note: Estimation terminated at iteration number 6 because parameter estimates changed by less than 0.001

Table: Model Summary
Step,-2 Log likelihood,Cox & Snell R Square,Nagelkerke R Square
1,37.323,.455,.659

Table: Classification Table
,Observed,,Predicted,,
,,,outcome,,Percentage Correct
,,,1.000,2.000,
Step 1,outcome,1.000,43,5,89.6%
,,2.000,4,14,77.8%
,Overall Percentage,,,,86.4%

Table: Variables in the Equation
,,B,S.E.,Wald,df,Sig.,Exp(B)
Step 1,survrate,-.081,.019,17.756,1,.000,.922
,Constant,2.684,.811,10.941,1,.001,14.639
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_806
#AT_START_807
at_fn_group_banner 807 'logistic.at:148' \
  "LOGISTIC REGRESSION missing values" "             " 70
at_xfail=no
(
  printf "%s\n" "807. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >lr-data.txt <<'_ATEOF'
 105.00    1.00    33.00    3.00     2.00   .35  17.00  20.00  .50110  -2.00440 1
 106.00    1.00    50.00    2.00     3.00   .38   7.00  15.00  .20168  -1.25264 1
 107.00    1.00    91.00    3.00     2.00   .28  15.00   7.00  .00897  -1.00905 1
 108.00    1.00    90.00    3.00     2.00   .20   2.00   2.00  .00972  -1.00982 1
 109.00    1.00    70.00    3.00     3.00   .38  23.00  27.00  .04745  -1.04981 1
 111.00    2.00    31.00    2.00     2.00   .00  19.00  10.00  .54159   1.84640 1
 112.00    1.00    91.00    2.00     3.00   .18   6.00  16.00  .00897  -1.00905 1
 113.00    1.00    81.00    3.00     2.00   .00   3.00   9.00  .01998  -1.02039 1
 114.00    2.00    15.00    1.00     2.00   .13  19.00  13.00  .81241   1.23090 1
 116.00    2.00     1.00    1.00     2.00   .88  15.00   7.00  .93102   1.07410 1
 117.00    1.00    93.00    3.00     2.00   .18   9.00  15.00  .00764  -1.00770 1
 118.00    2.00    14.00    1.00     3.00   .15  23.00  18.00  .82447   1.21289 1
 120.00    1.00    91.00    2.00     2.00   .43  17.00  14.00  .00897  -1.00905 1
 121.00    1.00    55.00    3.00     2.00   .69  20.00  14.00  .14409  -1.16834 1
 122.00    1.00    70.00    2.00     3.00   .03    .00   6.00  .04745  -1.04981 1
 123.00    1.00    25.00    2.00     2.00   .45   4.00  10.00  .65789  -2.92301 1
 125.00    1.00    91.00    2.00     2.00   .13    .00   3.00  .00897  -1.00905 1
 126.00    1.00    91.00    3.00     3.00   .23   4.00   6.00  .00897  -1.00905 1
 127.00    1.00    91.00    3.00     2.00   .00   8.00   8.00  .00897  -1.00905 1
 128.00    2.00    13.00    2.00     2.00   .65  16.00  14.00  .83592   1.19629 1
 129.00    1.00    50.00    2.00     2.00   .25  20.00  23.00  .20168  -1.25264 1
 135.00    1.00    90.00    3.00     3.00   .03   5.00  12.00  .00972  -1.00982 1
 138.00    1.00    70.00    3.00     3.00   .10   1.00   6.00  .04745  -1.04981 1
 139.00    2.00    19.00    3.00     3.00   .10  11.00  12.00  .75787   1.31949 1
 149.00    2.00    50.00    3.00     2.00   .03    .00    .00  .20168   4.95826 1
 204.00    1.00    50.00    3.00     1.00   .13    .00   1.00  .20168  -1.25264 1
 205.00    1.00    91.00    3.00     3.00   .72  16.00  18.00  .00897  -1.00905 1
 206.00    2.00    24.00    1.00     1.00   .10   5.00  21.00  .67592   1.47947 1
 207.00    1.00    80.00    3.00     3.00   .13   6.00   7.00  .02164  -1.02212 1
 208.00    1.00    87.00    2.00     2.00   .18   9.00  20.00  .01237  -1.01253 1
 209.00    1.00    70.00    2.00     2.00   .53  15.00  12.00  .04745  -1.04981 1
 211.00    1.00    55.00    2.00     1.00   .33   8.00   5.00  .14409  -1.16834 1
 212.00    1.00    56.00    3.00     1.00   .30   6.00  20.00  .13436  -1.15522 1
 214.00    1.00    54.00    2.00     2.00   .15    .00  16.00  .15439  -1.18258 1
 215.00    1.00    71.00    3.00     3.00   .35  12.00  12.00  .04391  -1.04592 1
 217.00    2.00    36.00    1.00     1.00   .10  12.00   8.00  .44049   2.27020 1
 218.00    1.00    91.00    2.00     2.00   .05  11.00  25.00  .00897  -1.00905 1
 219.00    1.00    91.00    2.00     2.00  1.23  11.00  24.00  .00897  -1.00905 1
 220.00    1.00    91.00    2.00     3.00   .08   8.00  11.00  .00897  -1.00905 1
 221.00    1.00    91.00    2.00     2.00   .33   5.00  11.00  .00897  -1.00905 1
 222.00    2.00    36.00    2.00     1.00   .18   5.00   3.00  .44049   2.27020 1
 223.00    1.00    70.00    2.00     3.00   .18  14.00   3.00  .04745  -1.04981 1
 224.00    1.00    91.00    2.00     2.00   .43   2.00  10.00  .00897  -1.00905 1
 225.00    1.00    55.00    2.00     1.00   .18   6.00  11.00  .14409  -1.16834 1
 229.00    2.00    75.00    2.00     2.00   .40  30.00  25.00  .03212  31.12941 1
 232.00    1.00    91.00    3.00     2.00   .15   6.00   3.00  .00897  -1.00905 1
 233.00    1.00    70.00    2.00     1.00   .00  11.00   8.00  .04745  -1.04981 1
 234.00    1.00    54.00    3.00     2.00   .10    .00    .00  .15439  -1.18258 1
 237.00    1.00    70.00    3.00     2.00   .18   5.00  25.00  .04745  -1.04981 1
 241.00    1.00    19.00    2.00     3.00   .33  13.00   9.00  .75787  -4.12995 1
 304.00    2.00    18.00    2.00     2.00   .26  25.00   6.00  .77245   1.29458 1
 305.00    1.00    88.00    3.00     2.00  1.35  17.00  29.00  .01142  -1.01155 1
 306.00    1.00    70.00    2.00     3.00   .63  14.00  33.00  .04745  -1.04981 1
 307.00    1.00    85.00    2.00     2.00  2.65  18.00  14.00  .01452  -1.01474 1
 308.00    1.00    13.00    2.00     2.00   .23   5.00   5.00  .83592  -6.09442 1
 309.00    2.00    13.00    2.00     2.00   .23   7.00  17.00  .83592   1.19629 1
 311.00    2.00     1.00    2.00     2.00   .50  20.00  14.00  .93102   1.07410 1
 315.00    1.00    19.00    2.00     3.00   .18   1.00  11.00  .75787  -4.12995 1
 316.00    1.00    88.00    2.00     2.00   .38  12.00  11.00  .01142  -1.01155 2
 318.00    1.00    88.00    3.00     2.00   .03   5.00   5.00  .01142  -1.01155 3
 319.00    2.00    18.00    2.00     3.00   .30  15.00  16.00  .77245   1.29458 1
 321.00    2.00    15.00    2.00     2.00   .63  15.00  18.00  .81241   1.23090 1
 322.00    1.00    88.00    3.00     2.00   .40  18.00  15.00  .01142  -1.01155 1
 325.00    2.00    18.00    2.00     3.00  1.00  28.00  18.00  .77245   1.29458 1
 329.00    1.00    88.00    3.00     2.00   .03   7.00  11.00  .01142  -1.01155 4
 332.00    2.00     2.00    2.00     2.00   .05   8.00   9.00  .92562   1.08036 1
_ATEOF


cat >lr-data.sps <<'_ATEOF'
set format = F12.3.
set decimal dot.
data list notable file='lr-data.txt'
 list /id outcome survrate prognos amttreat   gsi  avoid intrus   pre_1     lre_1  w *.

missing values survrate (999) avoid (44444) outcome (99).

logistic regression
	  variables = outcome with survrate avoid
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:166: pspp -O format=csv lr-data.sps > run0"
at_fn_check_prepare_trace "logistic.at:166"
( $at_check_trace; pspp -O format=csv lr-data.sps > run0
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:166"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >> lr-data.txt << HERE
 105.00    1.00    999.00    3.00     2.00   .35  17.00  20.00  .50110  -2.00440 1
 106.00    1.00    999.00    2.00     3.00   .38   7.00  15.00  .20168  -1.25264 1
 107.00    1.00    5.00      3.00     2.00   .28  44444  34     .00897  -1.00905 1
 108.00    99      5.00      3.00     2.00   .28  4      34     .00897  -1.00905 1
HERE

{ set +x
printf "%s\n" "$at_srcdir/logistic.at:176: pspp -O format=csv lr-data.sps > run1"
at_fn_check_prepare_trace "logistic.at:176"
( $at_check_trace; pspp -O format=csv lr-data.sps > run1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:176"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:179: diff run0 run1"
at_fn_check_prepare_trace "logistic.at:179"
( $at_check_trace; diff run0 run1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "8,10c8,10
< Included in Analysis,66,100.0%
< Missing Cases,0,.0%
< Total,66,100.0%
---
> Included in Analysis,66,94.3%
> Missing Cases,4,5.7%
> Total,70,100.0%
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/logistic.at:179"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_807
#AT_START_808
at_fn_group_banner 808 'logistic.at:197' \
  "LOGISTIC REGRESSION weights" "                    " 70
at_xfail=no
(
  printf "%s\n" "808. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >lr-data.txt <<'_ATEOF'
 105.00    1.00    33.00    3.00     2.00   .35  17.00  20.00  .50110  -2.00440 1
 106.00    1.00    50.00    2.00     3.00   .38   7.00  15.00  .20168  -1.25264 1
 107.00    1.00    91.00    3.00     2.00   .28  15.00   7.00  .00897  -1.00905 1
 108.00    1.00    90.00    3.00     2.00   .20   2.00   2.00  .00972  -1.00982 1
 109.00    1.00    70.00    3.00     3.00   .38  23.00  27.00  .04745  -1.04981 1
 111.00    2.00    31.00    2.00     2.00   .00  19.00  10.00  .54159   1.84640 1
 112.00    1.00    91.00    2.00     3.00   .18   6.00  16.00  .00897  -1.00905 1
 113.00    1.00    81.00    3.00     2.00   .00   3.00   9.00  .01998  -1.02039 1
 114.00    2.00    15.00    1.00     2.00   .13  19.00  13.00  .81241   1.23090 1
 116.00    2.00     1.00    1.00     2.00   .88  15.00   7.00  .93102   1.07410 1
 117.00    1.00    93.00    3.00     2.00   .18   9.00  15.00  .00764  -1.00770 1
 118.00    2.00    14.00    1.00     3.00   .15  23.00  18.00  .82447   1.21289 1
 120.00    1.00    91.00    2.00     2.00   .43  17.00  14.00  .00897  -1.00905 1
 121.00    1.00    55.00    3.00     2.00   .69  20.00  14.00  .14409  -1.16834 1
 122.00    1.00    70.00    2.00     3.00   .03    .00   6.00  .04745  -1.04981 1
 123.00    1.00    25.00    2.00     2.00   .45   4.00  10.00  .65789  -2.92301 1
 125.00    1.00    91.00    2.00     2.00   .13    .00   3.00  .00897  -1.00905 1
 126.00    1.00    91.00    3.00     3.00   .23   4.00   6.00  .00897  -1.00905 1
 127.00    1.00    91.00    3.00     2.00   .00   8.00   8.00  .00897  -1.00905 1
 128.00    2.00    13.00    2.00     2.00   .65  16.00  14.00  .83592   1.19629 1
 129.00    1.00    50.00    2.00     2.00   .25  20.00  23.00  .20168  -1.25264 1
 135.00    1.00    90.00    3.00     3.00   .03   5.00  12.00  .00972  -1.00982 1
 138.00    1.00    70.00    3.00     3.00   .10   1.00   6.00  .04745  -1.04981 1
 139.00    2.00    19.00    3.00     3.00   .10  11.00  12.00  .75787   1.31949 1
 149.00    2.00    50.00    3.00     2.00   .03    .00    .00  .20168   4.95826 1
 204.00    1.00    50.00    3.00     1.00   .13    .00   1.00  .20168  -1.25264 1
 205.00    1.00    91.00    3.00     3.00   .72  16.00  18.00  .00897  -1.00905 1
 206.00    2.00    24.00    1.00     1.00   .10   5.00  21.00  .67592   1.47947 1
 207.00    1.00    80.00    3.00     3.00   .13   6.00   7.00  .02164  -1.02212 1
 208.00    1.00    87.00    2.00     2.00   .18   9.00  20.00  .01237  -1.01253 1
 209.00    1.00    70.00    2.00     2.00   .53  15.00  12.00  .04745  -1.04981 1
 211.00    1.00    55.00    2.00     1.00   .33   8.00   5.00  .14409  -1.16834 1
 212.00    1.00    56.00    3.00     1.00   .30   6.00  20.00  .13436  -1.15522 1
 214.00    1.00    54.00    2.00     2.00   .15    .00  16.00  .15439  -1.18258 1
 215.00    1.00    71.00    3.00     3.00   .35  12.00  12.00  .04391  -1.04592 1
 217.00    2.00    36.00    1.00     1.00   .10  12.00   8.00  .44049   2.27020 1
 218.00    1.00    91.00    2.00     2.00   .05  11.00  25.00  .00897  -1.00905 1
 219.00    1.00    91.00    2.00     2.00  1.23  11.00  24.00  .00897  -1.00905 1
 220.00    1.00    91.00    2.00     3.00   .08   8.00  11.00  .00897  -1.00905 1
 221.00    1.00    91.00    2.00     2.00   .33   5.00  11.00  .00897  -1.00905 1
 222.00    2.00    36.00    2.00     1.00   .18   5.00   3.00  .44049   2.27020 1
 223.00    1.00    70.00    2.00     3.00   .18  14.00   3.00  .04745  -1.04981 1
 224.00    1.00    91.00    2.00     2.00   .43   2.00  10.00  .00897  -1.00905 1
 225.00    1.00    55.00    2.00     1.00   .18   6.00  11.00  .14409  -1.16834 1
 229.00    2.00    75.00    2.00     2.00   .40  30.00  25.00  .03212  31.12941 1
 232.00    1.00    91.00    3.00     2.00   .15   6.00   3.00  .00897  -1.00905 1
 233.00    1.00    70.00    2.00     1.00   .00  11.00   8.00  .04745  -1.04981 1
 234.00    1.00    54.00    3.00     2.00   .10    .00    .00  .15439  -1.18258 1
 237.00    1.00    70.00    3.00     2.00   .18   5.00  25.00  .04745  -1.04981 1
 241.00    1.00    19.00    2.00     3.00   .33  13.00   9.00  .75787  -4.12995 1
 304.00    2.00    18.00    2.00     2.00   .26  25.00   6.00  .77245   1.29458 1
 305.00    1.00    88.00    3.00     2.00  1.35  17.00  29.00  .01142  -1.01155 1
 306.00    1.00    70.00    2.00     3.00   .63  14.00  33.00  .04745  -1.04981 1
 307.00    1.00    85.00    2.00     2.00  2.65  18.00  14.00  .01452  -1.01474 1
 308.00    1.00    13.00    2.00     2.00   .23   5.00   5.00  .83592  -6.09442 1
 309.00    2.00    13.00    2.00     2.00   .23   7.00  17.00  .83592   1.19629 1
 311.00    2.00     1.00    2.00     2.00   .50  20.00  14.00  .93102   1.07410 1
 315.00    1.00    19.00    2.00     3.00   .18   1.00  11.00  .75787  -4.12995 1
 316.00    1.00    88.00    2.00     2.00   .38  12.00  11.00  .01142  -1.01155 2
 318.00    1.00    88.00    3.00     2.00   .03   5.00   5.00  .01142  -1.01155 3
 319.00    2.00    18.00    2.00     3.00   .30  15.00  16.00  .77245   1.29458 1
 321.00    2.00    15.00    2.00     2.00   .63  15.00  18.00  .81241   1.23090 1
 322.00    1.00    88.00    3.00     2.00   .40  18.00  15.00  .01142  -1.01155 1
 325.00    2.00    18.00    2.00     3.00  1.00  28.00  18.00  .77245   1.29458 1
 329.00    1.00    88.00    3.00     2.00   .03   7.00  11.00  .01142  -1.01155 4
 332.00    2.00     2.00    2.00     2.00   .05   8.00   9.00  .92562   1.08036 1
_ATEOF


cat >lr-data-unweighted.sps <<'_ATEOF'
set format = F12.3.
set decimal dot.
data list notable file='lr-data.txt'
 list /id outcome survrate prognos amttreat   gsi  avoid intrus   pre_1     lre_1  w *.

logistic regression
	  variables = outcome with survrate
	.
_ATEOF


cat >lr-data-weighted.sps <<'_ATEOF'
set format = F12.3.
set decimal dot.
data list notable file='lr-data.txt'
 list /id outcome survrate prognos amttreat   gsi  avoid intrus   pre_1     lre_1  w *.

weight by w.

* Omit duplicate cases.
select if id <> 305 and id <> 316 and id <> 318.

logistic regression
	  variables = outcome with survrate
	.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/logistic.at:230: pspp -O format=csv lr-data-unweighted.sps > unweighted-result"
at_fn_check_prepare_trace "logistic.at:230"
( $at_check_trace; pspp -O format=csv lr-data-unweighted.sps > unweighted-result
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:230"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/logistic.at:231: pspp -O format=csv lr-data-weighted.sps > weighted-result"
at_fn_check_prepare_trace "logistic.at:231"
( $at_check_trace; pspp -O format=csv lr-data-weighted.sps > weighted-result
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:231"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:235: diff unweighted-result weighted-result"
at_fn_check_prepare_trace "logistic.at:235"
( $at_check_trace; diff unweighted-result weighted-result
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "8c8
< Included in Analysis,66,100.0%
---
> Included in Analysis,63,100.0%
10c10
< Total,66,100.0%
---
> Total,63,100.0%
22,23c22,23
< Step 1,outcome,1.000,43,5,89.6%
< ,,2.000,4,14,77.8%
---
> Step 1,outcome,1.000,43.000,5.000,89.6%
> ,,2.000,4.000,14.000,77.8%
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/logistic.at:235"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_808
#AT_START_809
at_fn_group_banner 809 'logistic.at:259' \
  "LOGISTIC REGRESSION without constant" "           " 70
at_xfail=no
(
  printf "%s\n" "809. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >non-const.sps <<'_ATEOF'
set format=F20.3.

input program.
 loop #i = 1 to 200.
  compute female = (#i > 91).
  end case.
 end loop.
end file.
end input program.

compute constant = 1.

logistic regression female with constant /noconst.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:278: pspp -O format=csv non-const.sps"
at_fn_check_prepare_trace "logistic.at:278"
( $at_check_trace; pspp -O format=csv non-const.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Dependent Variable Encoding
Original Value,Internal Value
.00,.000
1.00,1.000

Table: Case Processing Summary
Unweighted Cases,N,Percent
Included in Analysis,200,100.0%
Missing Cases,0,.0%
Total,200,100.0%

note: Estimation terminated at iteration number 2 because parameter estimates changed by less than 0.001

Table: Model Summary
Step,-2 Log likelihood,Cox & Snell R Square,Nagelkerke R Square
1,275.637,.008,.011

Table: Classification Table
,Observed,,Predicted,,
,,,female,,Percentage Correct
,,,.00,1.00,
Step 1,female,.00,0,91,.0%
,,1.00,0,109,100.0%
,Overall Percentage,,,,54.5%

Table: Variables in the Equation
,,B,S.E.,Wald,df,Sig.,Exp(B)
Step 1,constant,.180,.142,1.616,1,.204,1.198
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:278"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_809
#AT_START_810
at_fn_group_banner 810 'logistic.at:315' \
  "LOGISTIC REGRESSION non-dichotomous dep var" "    " 70
at_xfail=no
(
  printf "%s\n" "810. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >non-dich.sps <<'_ATEOF'
data list notable list /y x1 x2 x3 x4.
begin data.
1 2 3 4 5
0 2 3 4 8
2 3 4 5 6
end data.

logistic regression y with x1 x2 x3 x4.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:329: pspp -O format=csv non-dich.sps"
at_fn_check_prepare_trace "logistic.at:329"
( $at_check_trace; pspp -O format=csv non-dich.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: Dependent variable's values are not dichotomous.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/logistic.at:329"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_810
#AT_START_811
at_fn_group_banner 811 'logistic.at:341' \
  "LOGISTIC REGRESSION with categorical" "           " 70
at_xfail=no
(
  printf "%s\n" "811. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >lr-cat.data <<'_ATEOF'
 620 3.07 2 4
 800 4.00 3 9
 580 3.40 2 4
 600 3.13 2 4
 540 2.70 2 4
 660 3.31 4 4
 480 3.58 1 9
 620 4.00 1 9
 680 3.98 2 9
 580 3.40 4 4
 760 3.35 3 4
 700 3.72 2 4
 460 3.64 1 9
 540 3.28 3 4
 680 3.48 3 4
 740 3.31 1 4
 460 3.77 3 4
 740 3.54 1 4
 600 3.63 3 4
 620 3.05 2 4
 560 3.04 3 4
 520 2.70 3 4
 640 3.35 3 4
 620 3.58 2 4
 660 3.70 4 9
 500 2.86 4 4
 640 3.50 2 4
 720 4.00 3 4
 720 3.94 3 4
 400 3.65 2 4
 800 2.90 2 4
 520 2.90 3 4
 440 3.24 4 4
 580 3.51 2 4
 500 3.31 3 4
 440 3.22 1 4
 540 3.17 1 9
 420 3.02 1 4
 780 3.22 2 9
 440 3.13 4 4
 800 3.66 1 9
 580 3.32 2 9
 480 2.67 2 9
 700 4.00 1 9
 740 2.97 2 9
 700 3.83 2 4
 640 3.93 2 4
 800 3.90 2 4
 400 3.38 2 4
 700 3.52 2 4
 680 3.00 4 9
 540 3.20 1 4
 580 4.00 2 4
 780 4.00 2 9
 220 2.83 3 4
 580 3.20 2 9
 580 3.50 2 4
 620 3.30 1 4
 520 3.65 4 9
 600 3.38 3 9
 660 3.77 3 4
 580 2.86 4 9
 580 3.46 2 9
 560 3.36 3 4
 740 4.00 3 9
 480 3.44 3 4
 640 3.19 4 9
 600 3.54 1 9
 540 3.38 4 4
 500 2.81 3 4
 360 2.56 3 4
 460 3.15 4 4
 460 2.63 2 4
 440 2.76 2 4
 740 3.62 4 4
 380 3.38 2 4
 640 3.63 1 9
 800 3.73 1 4
 660 3.67 2 4
 760 3.00 2 9
 420 2.96 1 4
 740 3.74 4 4
 800 3.75 2 4
 620 3.40 2 4
 660 3.67 3 9
 400 3.35 3 4
 680 3.14 2 4
 660 3.47 3 9
 660 3.63 2 9
 420 3.41 4 4
 660 4.00 1 4
 680 3.70 2 4
 620 3.23 3 9
 520 3.35 3 4
 500 4.00 3 4
 400 3.36 2 4
 700 3.56 1 9
 540 3.81 1 9
 520 2.68 3 9
 540 3.50 2 4
 700 4.00 2 4
 600 3.64 3 9
 800 3.31 3 4
 520 3.29 1 4
 580 3.69 1 4
 380 3.43 3 4
 560 3.19 3 4
 760 2.81 1 9
 540 3.13 2 4
 660 3.14 2 9
 520 3.81 1 9
 680 3.19 4 4
 540 3.78 4 4
 500 3.57 3 4
 660 3.49 2 4
 340 3.00 2 9
 400 3.15 2 9
 420 3.92 4 4
 760 3.35 2 9
 700 2.94 2 4
 540 3.04 1 4
 780 3.87 4 4
 560 3.78 2 4
 700 3.82 3 4
 400 2.93 3 4
 440 3.45 2 9
 800 3.47 3 4
 340 3.15 3 4
 520 4.00 1 9
 520 3.15 3 4
 600 2.98 2 9
 420 2.69 2 4
 460 3.44 2 4
 620 3.71 1 9
 480 3.13 2 4
 580 3.40 3 4
 540 3.39 3 9
 540 3.94 3 4
 440 2.98 3 4
 380 3.59 4 4
 500 2.97 4 4
 340 2.92 3 4
 440 3.15 2 4
 600 3.48 2 4
 420 2.67 3 4
 460 3.07 2 4
 460 3.45 3 9
 480 3.39 4 4
 480 2.78 3 4
 720 3.42 2 9
 680 3.67 2 9
 800 3.89 2 4
 360 3.00 3 4
 620 3.17 2 9
 700 3.52 4 9
 540 3.19 2 4
 580 3.30 2 4
 800 4.00 3 9
 660 3.33 2 4
 380 3.34 3 4
 720 3.84 3 4
 600 3.59 2 4
 500 3.03 3 4
 640 3.81 2 4
 540 3.49 1 9
 680 3.85 3 9
 540 3.84 2 9
 460 2.93 3 4
 380 2.94 3 4
 620 3.22 2 4
 740 3.37 4 4
 620 4.00 2 4
 800 3.74 1 9
 400 3.31 3 4
 540 3.46 4 4
 620 3.18 2 9
 480 2.91 1 9
 300 2.84 2 9
 440 2.48 4 4
 640 2.79 2 4
 400 3.23 4 9
 680 3.46 2 9
 620 3.37 1 9
 700 3.92 2 4
 620 3.37 2 9
 620 3.63 2 4
 620 3.95 3 9
 560 2.52 2 4
 520 2.62 2 4
 600 3.35 2 4
 700 4.00 1 4
 640 3.67 3 4
 640 4.00 3 4
 520 2.93 4 4
 620 3.21 4 4
 680 3.99 3 4
 660 3.34 3 4
 700 3.45 3 4
 560 3.36 1 9
 800 2.78 2 4
 500 3.88 4 4
 700 3.65 2 4
 680 3.76 3 9
 660 3.07 3 4
 580 3.46 4 4
 460 2.87 2 4
 600 3.31 4 4
 620 3.94 4 4
 400 3.05 2 4
 800 3.43 2 9
 600 3.58 1 9
 580 3.36 2 4
 540 3.16 3 4
 500 2.71 2 4
 600 3.28 3 4
 600 2.82 4 4
 460 3.58 2 4
 520 2.85 3 4
 740 3.52 4 9
 500 3.95 4 4
 560 3.61 3 4
 620 3.45 2 9
 640 3.51 2 4
 660 3.44 2 9
 660 2.91 3 9
 540 3.28 1 4
 560 2.98 1 9
 800 3.97 1 4
 720 3.77 3 4
 720 3.64 1 9
 480 3.71 4 9
 680 3.34 2 4
 680 3.11 2 4
 540 2.81 3 4
 620 3.75 2 9
 540 3.12 1 4
 560 3.48 2 9
 720 3.40 3 4
 680 3.90 1 4
 640 3.76 3 4
 560 3.16 1 4
 520 3.30 2 9
 640 3.12 3 4
 580 3.57 3 4
 540 3.55 4 9
 780 3.63 4 9
 600 3.89 1 9
 800 4.00 1 9
 580 3.29 4 4
 360 3.27 3 4
 800 4.00 2 9
 640 3.52 4 4
 720 3.45 4 4
 580 3.06 2 4
 580 3.02 2 4
 500 3.60 3 9
 580 3.12 3 9
 600 2.82 4 4
 620 3.99 3 4
 700 4.00 3 4
 480 4.00 2 4
 560 2.95 2 4
 560 4.00 3 4
 560 2.65 3 9
 400 3.08 2 4
 480 2.62 2 9
 640 3.86 3 4
 480 3.57 2 4
 540 3.51 2 4
 380 3.33 4 4
 680 3.64 3 4
 400 3.51 3 4
 340 2.90 1 4
 700 3.08 2 4
 480 3.02 1 9
 600 3.15 2 9
 780 3.80 3 9
 520 3.74 2 9
 520 3.51 2 4
 640 3.73 3 4
 560 3.32 4 4
 620 2.85 2 4
 700 3.28 1 4
 760 4.00 1 9
 800 3.60 2 4
 580 3.34 2 4
 540 3.77 2 9
 640 3.17 2 4
 540 3.02 4 4
 680 3.08 4 4
 680 3.31 2 4
 680 2.96 3 9
 700 2.88 2 4
 580 3.77 4 4
 540 3.49 2 9
 700 3.56 2 9
 600 3.56 2 9
 560 3.59 2 4
 640 2.94 2 9
 560 3.33 4 4
 620 3.69 3 4
 680 3.27 2 9
 460 3.14 3 4
 500 3.53 4 4
 620 3.33 3 4
 600 3.62 3 4
 500 3.01 4 4
 740 3.34 4 4
 560 3.69 3 9
 620 3.95 3 9
 740 3.86 2 9
 800 3.53 1 9
 620 3.78 3 4
 700 3.27 2 4
 540 3.78 2 9
 700 3.65 2 4
 800 3.22 1 9
 560 3.59 2 9
 800 3.15 4 4
 520 3.90 3 9
 520 3.74 4 9
 480 2.55 1 4
 800 4.00 4 4
 620 3.09 4 4
 560 3.49 4 4
 500 3.17 3 4
 480 3.40 2 4
 460 2.98 1 4
 580 3.58 1 9
 640 3.30 2 4
 480 3.45 2 4
 440 3.17 2 4
 660 3.32 1 4
 500 3.08 3 4
 660 3.94 2 4
 720 3.31 1 4
 460 3.64 3 9
 500 2.93 4 4
 800 3.54 3 4
 580 2.93 2 4
 620 3.61 1 9
 500 2.98 3 4
 660 4.00 2 9
 560 3.24 4 4
 560 2.42 2 4
 580 3.80 2 4
 500 3.23 4 4
 680 2.42 1 9
 580 3.46 3 4
 800 3.91 3 4
 700 2.90 4 4
 520 3.12 2 4
 300 2.92 4 4
 560 3.43 3 4
 620 3.63 3 4
 500 2.79 4 4
 360 3.14 1 4
 640 3.94 2 9
 460 3.99 3 9
 300 3.01 3 4
 520 2.73 2 4
 600 3.47 2 9
 580 3.25 1 4
 520 3.10 4 4
 620 3.43 3 4
 380 2.91 4 4
 660 3.59 3 4
 660 3.95 2 9
 540 3.33 3 4
 740 4.00 3 4
 640 3.38 3 4
 600 3.89 3 4
 720 3.88 3 4
 580 4.00 3 4
 420 2.26 4 4
 520 4.00 2 9
 800 3.70 1 9
 700 4.00 1 9
 480 3.43 2 4
 660 3.45 4 4
 520 3.25 3 4
 560 2.71 3 4
 600 3.32 2 4
 580 2.88 2 4
 660 3.88 2 9
 600 3.22 1 4
 580 4.00 1 4
 660 3.60 3 9
 500 3.35 2 4
 520 2.98 2 4
 660 3.49 2 9
 560 3.07 2 4
 500 3.13 2 9
 720 3.50 3 9
 440 3.39 2 9
 640 3.95 2 9
 380 3.61 3 4
 800 3.05 2 9
 520 3.19 3 9
 600 3.40 3 4
_ATEOF


cat >lr-cat.sps <<'_ATEOF'
set format=F20.3.

data list notable list file='lr-cat.data' /b1 b2 bcat y.

logistic regression
	  y with b1 b2 bcat
	   /categorical = bcat
	   .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:758: pspp -O format=csv lr-cat.sps"
at_fn_check_prepare_trace "logistic.at:758"
( $at_check_trace; pspp -O format=csv lr-cat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Dependent Variable Encoding
Original Value,Internal Value
4.000,.000
9.000,1.000

Table: Case Processing Summary
Unweighted Cases,N,Percent
Included in Analysis,400,100.0%
Missing Cases,0,.0%
Total,400,100.0%

note: Estimation terminated at iteration number 4 because parameter estimates changed by less than 0.001

Table: Model Summary
Step,-2 Log likelihood,Cox & Snell R Square,Nagelkerke R Square
1,458.517,.098,.138

Table: Categorical Variables' Codings
,,Frequency,Parameter coding,,
,,,(1),(2),(3)
bcat,1.000,61,1,0,0
,2.000,151,0,1,0
,3.000,121,0,0,1
,4.000,67,0,0,0

Table: Classification Table
,Observed,,Predicted,,
,,,y,,Percentage Correct
,,,4.000,9.000,
Step 1,y,4.000,254,19,93.0%
,,9.000,97,30,23.6%
,Overall Percentage,,,,71.0%

Table: Variables in the Equation
,,B,S.E.,Wald,df,Sig.,Exp(B)
Step 1,b1,.002,.001,4.284,1,.038,1.002
,b2,.804,.332,5.872,1,.015,2.235
,bcat,,,20.895,3,.000,
,bcat(1),1.551,.418,13.788,1,.000,4.718
,bcat(2),.876,.367,5.706,1,.017,2.401
,bcat(3),.211,.393,.289,1,.591,1.235
,Constant,-5.541,1.138,23.709,1,.000,.004
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:758"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_811
#AT_START_812
at_fn_group_banner 812 'logistic.at:807' \
  "LOGISTIC REGRESSION with cat var 2" "             " 70
at_xfail=no
(
  printf "%s\n" "812. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >lr-cat2.data <<'_ATEOF'
     60.00     1.00      8.00     50.00
     47.00      .00      9.00     42.00
     57.00     1.00      7.00     53.00
     60.00      .00      8.00     53.00
     68.00      .00      8.00     66.00
     63.00      .00      8.00     55.00
     65.00      .00      8.00     63.00
     52.00      .00      8.00     61.00
     34.00      .00      9.00     42.00
     37.00      .00      8.00     39.00
     68.00     1.00      9.00     69.00
     60.00      .00      9.00     61.00
     44.00      .00      9.00     58.00
     42.00      .00      8.00     47.00
     57.00     1.00      7.00     61.00
     55.00     1.00      8.00     50.00
     55.00      .00      9.00     58.00
     44.00      .00      8.00     63.00
     50.00     1.00      9.00     66.00
     44.00      .00      8.00     39.00
     55.00      .00      8.00     58.00
     44.00      .00      8.00     50.00
     47.00     1.00      7.00     34.00
     48.00      .00      8.00     44.00
     45.00      .00      7.00     31.00
     43.00      .00      8.00     50.00
     39.00      .00      8.00     42.00
     63.00      .00      9.00     50.00
     47.00      .00      8.00     58.00
     42.00      .00      7.00     50.00
     50.00      .00      9.00     36.00
     47.00      .00      7.00     33.00
     60.00      .00      9.00     61.00
     47.00      .00      7.00     42.00
     68.00     1.00      9.00     69.00
     52.00      .00      8.00     54.00
     63.00     1.00      9.00     61.00
     65.00     1.00      9.00     61.00
     63.00     1.00      9.00     53.00
     57.00      .00      8.00     51.00
     34.00      .00      8.00     36.00
     50.00      .00      8.00     39.00
     52.00     1.00      7.00     56.00
     45.00      .00      7.00     34.00
     47.00     1.00      7.00     53.00
     34.00      .00      7.00     39.00
     50.00     1.00      8.00     55.00
     60.00      .00      9.00     58.00
     63.00      .00      8.00     58.00
     35.00      .00      7.00     51.00
     50.00      .00      8.00     58.00
     68.00      .00      8.00     63.00
     41.00      .00      9.00     34.00
     47.00      .00      8.00     47.00
     76.00      .00      9.00     64.00
     44.00      .00      8.00     44.00
     36.00      .00      9.00     50.00
     68.00     1.00      9.00     55.00
     47.00     1.00      8.00     50.00
     50.00      .00      7.00     53.00
     68.00      .00      8.00     74.00
     39.00      .00      7.00     44.00
     50.00      .00      8.00     55.00
     52.00      .00      9.00     61.00
     47.00      .00      8.00     53.00
     39.00      .00      7.00     47.00
     55.00     1.00      9.00     49.00
     68.00     1.00      8.00     50.00
     52.00     1.00      9.00     63.00
     55.00      .00      8.00     58.00
     57.00      .00      8.00     55.00
     66.00     1.00      9.00     61.00
     65.00     1.00      7.00     58.00
     42.00      .00      7.00     42.00
     68.00     1.00      7.00     59.00
     60.00     1.00      9.00     61.00
     52.00      .00      8.00     55.00
     57.00     1.00      7.00     54.00
     42.00      .00      9.00     50.00
     42.00      .00      8.00     47.00
     57.00      .00      8.00     50.00
     47.00      .00      7.00     45.00
     44.00      .00      7.00     40.00
     43.00      .00      9.00     55.00
     31.00      .00      8.00     39.00
     37.00      .00      7.00     33.00
     63.00     1.00      7.00     63.00
     47.00      .00      8.00     39.00
     57.00     1.00      8.00     63.00
     52.00      .00      8.00     44.00
     44.00      .00      7.00     35.00
     52.00      .00      7.00     55.00
     55.00      .00      7.00     69.00
     52.00      .00      8.00     53.00
     55.00      .00      9.00     61.00
     65.00     1.00      9.00     63.00
     55.00      .00      8.00     44.00
     63.00      .00      7.00     65.00
     44.00      .00      7.00     39.00
     47.00      .00      7.00     36.00
     63.00     1.00      9.00     55.00
     68.00      .00      8.00     66.00
     34.00      .00      8.00     39.00
     47.00      .00      9.00     50.00
     50.00      .00      9.00     58.00
     63.00      .00      8.00     66.00
     44.00      .00      7.00     34.00
     44.00      .00      8.00     50.00
     50.00      .00      8.00     53.00
     47.00     1.00      9.00     69.00
     65.00      .00      9.00     58.00
     57.00      .00      8.00     47.00
     39.00      .00      8.00     39.00
     47.00      .00      8.00     53.00
     50.00     1.00      7.00     63.00
     50.00      .00      8.00     50.00
     63.00      .00      9.00     53.00
     73.00     1.00      9.00     61.00
     44.00      .00      7.00     47.00
     47.00      .00      8.00     42.00
     47.00      .00      8.00     58.00
     36.00      .00      7.00     61.00
     57.00     1.00      8.00     55.00
     53.00     1.00      8.00     57.00
     63.00      .00      7.00     66.00
     50.00      .00      8.00     34.00
     47.00      .00      9.00     48.00
     57.00     1.00      8.00     58.00
     39.00      .00      8.00     53.00
     42.00      .00      8.00     42.00
     42.00      .00      9.00     31.00
     42.00      .00      8.00     72.00
     46.00      .00      8.00     44.00
     55.00      .00      8.00     42.00
     42.00      .00      8.00     47.00
     50.00      .00      8.00     44.00
     44.00      .00      9.00     39.00
     73.00     1.00      8.00     69.00
     71.00     1.00      9.00     58.00
     50.00      .00      9.00     49.00
     63.00     1.00      7.00     54.00
     42.00      .00      8.00     36.00
     47.00      .00      7.00     42.00
     39.00      .00      9.00     26.00
     63.00      .00      8.00     58.00
     50.00      .00      8.00     55.00
     65.00     1.00      8.00     55.00
     76.00     1.00      9.00     67.00
     71.00     1.00      8.00     66.00
     39.00      .00      9.00     47.00
     47.00     1.00      9.00     63.00
     60.00      .00      7.00     50.00
     63.00      .00      9.00     55.00
     54.00     1.00      9.00     55.00
     55.00     1.00      8.00     58.00
     57.00      .00      8.00     61.00
     55.00     1.00      9.00     63.00
     42.00      .00      7.00     50.00
     50.00      .00      8.00     44.00
     55.00      .00      8.00     42.00
     42.00      .00      7.00     50.00
     34.00      .00      8.00     39.00
     65.00      .00      9.00     46.00
     52.00      .00      7.00     58.00
     44.00      .00      8.00     39.00
     65.00     1.00      9.00     66.00
     47.00      .00      8.00     42.00
     41.00      .00      7.00     39.00
     68.00      .00      9.00     63.00
     63.00     1.00      8.00     72.00
     52.00      .00      8.00     53.00
     57.00      .00      8.00     50.00
     68.00      .00      8.00     55.00
     42.00      .00      8.00     56.00
     47.00      .00      8.00     48.00
     73.00     1.00      9.00     58.00
     39.00      .00      8.00     50.00
     63.00     1.00      9.00     69.00
     60.00      .00      8.00     55.00
     65.00     1.00      9.00     66.00
     73.00     1.00      8.00     63.00
     52.00      .00      8.00     55.00
     36.00      .00      8.00     42.00
     28.00      .00      7.00     44.00
     47.00      .00      8.00     44.00
     57.00      .00      7.00     47.00
     34.00      .00      7.00     29.00
     47.00      .00      9.00     66.00
     57.00      .00      8.00     58.00
     60.00     1.00      9.00     50.00
     50.00      .00      9.00     47.00
     73.00     1.00      9.00     55.00
     52.00     1.00      8.00     47.00
     55.00      .00      8.00     53.00
     47.00      .00      8.00     53.00
     50.00      .00      8.00     61.00
     61.00      .00      7.00     44.00
     52.00      .00      9.00     53.00
     47.00      .00      7.00     40.00
     47.00      .00      7.00     50.00
_ATEOF


cat >stringcat.sps <<'_ATEOF'
set format=F20.3 /small=0.
data list notable file='lr-cat2.data' list /read honcomp wiz science *.

string ses(a1).
recode wiz (7 = "a") (8 = "b") (9 = "c") into ses.

logistic regression honcomp with read science ses
	 /categorical = ses.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:1025: pspp -O format=csv stringcat.sps"
at_fn_check_prepare_trace "logistic.at:1025"
( $at_check_trace; pspp -O format=csv stringcat.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Dependent Variable Encoding
Original Value,Internal Value
.000,.000
1.000,1.000

Table: Case Processing Summary
Unweighted Cases,N,Percent
Included in Analysis,200,100.0%
Missing Cases,0,.0%
Total,200,100.0%

note: Estimation terminated at iteration number 5 because parameter estimates changed by less than 0.001

Table: Model Summary
Step,-2 Log likelihood,Cox & Snell R Square,Nagelkerke R Square
1,165.701,.280,.408

Table: Categorical Variables' Codings
,,Frequency,Parameter coding,
,,,(1),(2)
ses,a,47,1,0
,b,95,0,1
,c,58,0,0

Table: Classification Table
,Observed,,Predicted,,
,,,honcomp,,Percentage Correct
,,,.000,1.000,
Step 1,honcomp,.000,132,15,89.8%
,,1.000,26,27,50.9%
,Overall Percentage,,,,79.5%

Table: Variables in the Equation
,,B,S.E.,Wald,df,Sig.,Exp(B)
Step 1,read,.098,.025,15.199,1,.000,1.103
,science,.066,.027,5.867,1,.015,1.068
,ses,,,6.690,2,.035,
,ses(1),.058,.532,.012,1,.913,1.060
,ses(2),-1.013,.444,5.212,1,.022,.363
,Constant,-9.561,1.662,33.113,1,.000,.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:1025"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_812
#AT_START_813
at_fn_group_banner 813 'logistic.at:1073' \
  "LOGISTIC REGRESSION identical categories" "       " 70
at_xfail=no
(
  printf "%s\n" "813. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >crash.sps <<'_ATEOF'
data list notable list /y x1 x2*.
begin data
0 1 1
1 2 1
end data.

logistic regression y with x1 x2
	/categorical = x2.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:1087: pspp -O format=csv crash.sps"
at_fn_check_prepare_trace "logistic.at:1087"
( $at_check_trace; pspp -O format=csv crash.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/logistic.at:1087"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_813
#AT_START_814
at_fn_group_banner 814 'logistic.at:1094' \
  "LOGISTIC REGRESSION missing categoricals" "       " 70
at_xfail=no
(
  printf "%s\n" "814. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >data.txt <<'_ATEOF'
      .00     3.69      .00
      .00     1.16     1.00
     1.00   -12.99      .00
      .00     2.97     1.00
      .00    20.48      .00
      .00     4.90      .00
     1.00    -4.38      .00
      .00    -1.69     1.00
     1.00    -5.71      .00
     1.00   -14.28      .00
      .00     9.00      .00
      .00     2.89     1.00
      .00    13.51     1.00
      .00    23.32     1.00
      .00     2.31     1.00
      .00    -2.07     1.00
     1.00    -4.52     1.00
     1.00    -5.83      .00
     1.00    -1.91      .00
     1.00   -11.12     1.00
      .00    -1.51      .00
      .00     6.59     1.00
      .00    19.28     1.00
      .00     5.94      .00
      .00     8.21     1.00
      .00     8.11     1.00
      .00     2.49      .00
      .00     9.62      .00
     1.00   -20.74     1.00
      .00    -1.41     1.00
      .00    15.15     1.00
      .00     9.39      .00
     1.00   -15.14     1.00
     1.00    -5.86      .00
     1.00   -11.64     1.00
     1.00   -14.36      .00
     1.00    -8.95     1.00
     1.00   -16.42     1.00
     1.00    -1.04     1.00
      .00    12.89     1.00
      .00    -7.08     1.00
      .00     4.87     1.00
      .00    11.53     1.00
     1.00    -6.24     1.00
      .00     1.25     1.00
      .00     4.39     1.00
      .00     3.17      .00
      .00    19.39     1.00
      .00    13.03     1.00
      .00     2.43      .00
     1.00   -14.73     1.00
      .00     8.25     1.00
     1.00   -13.28     1.00
      .00     5.27     1.00
     1.00    -3.46     1.00
      .00    13.81     1.00
      .00     1.35     1.00
     1.00    -3.94     1.00
      .00    20.73     1.00
     1.00   -15.40      .00
     1.00   -11.01     1.00
      .00     4.56      .00
     1.00   -15.35     1.00
      .00    15.21      .00
      .00     5.34     1.00
     1.00   -21.55     1.00
      .00    10.12     1.00
      .00     -.73     1.00
      .00    15.28     1.00
      .00    11.08     1.00
     1.00    -8.24      .00
      .00     2.46      .00
      .00     9.60      .00
      .00    11.24      .00
      .00    14.13     1.00
      .00    19.72     1.00
      .00     5.58      .00
      .00    26.23     1.00
      .00     7.25      .00
     1.00     -.79      .00
      .00     6.24      .00
     1.00     1.16      .00
     1.00    -7.89     1.00
     1.00    -1.86     1.00
     1.00   -10.80     1.00
     1.00    -5.51      .00
      .00     7.51      .00
      .00    11.18      .00
      .00     8.73      .00
     1.00   -11.21     1.00
     1.00   -13.24      .00
      .00    19.34      .00
      .00     9.32     1.00
      .00    17.97     1.00
     1.00    -1.56     1.00
     1.00    -3.13      .00
      .00     3.98      .00
      .00    -1.21     1.00
      .00     2.37      .00
     1.00   -18.03     1.00
_ATEOF


cat >miss.sps <<'_ATEOF'
data list notable  file='data.txt'  list /y x1 cat0*.

logistic regression y with x1 cat0
	/categorical = cat0.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:1207: pspp -O format=csv miss.sps > file1"
at_fn_check_prepare_trace "logistic.at:1207"
( $at_check_trace; pspp -O format=csv miss.sps > file1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:1207"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:1210: echo '1  34   .' >> data.txt"
at_fn_check_prepare_trace "logistic.at:1210"
( $at_check_trace; echo '1  34   .' >> data.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:1210"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:1212: pspp -O format=csv miss.sps > file2"
at_fn_check_prepare_trace "logistic.at:1212"
( $at_check_trace; pspp -O format=csv miss.sps > file2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:1212"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:1214: diff file1 file2"
at_fn_check_prepare_trace "logistic.at:1214"
( $at_check_trace; diff file1 file2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "8,10c8,10
< Included in Analysis,100,100.0%
< Missing Cases,0,.0%
< Total,100,100.0%
---
> Included in Analysis,100,99.0%
> Missing Cases,1,1.0%
> Total,101,100.0%
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/logistic.at:1214"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_814
#AT_START_815
at_fn_group_banner 815 'logistic.at:1232' \
  "LOGISTIC REGRESSION confidence interval" "        " 70
at_xfail=no
(
  printf "%s\n" "815. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >ci.sps <<'_ATEOF'
set FORMAT=F20.3
data list notable list /disease age sciostat sector savings *.
begin data.
0       33        1        1        1
0       35        1        1        1
0        6        1        1        0
0       60        1        1        1
1       18        3        1        0
0       26        3        1        0
0        6        3        1        0
1       31        2        1        1
1       26        2        1        0
0       37        2        1        0
0       23        1        1        0
0       23        1        1        0
0       27        1        1        1
1        9        1        1        1
1       37        1        2        1
1       22        1        2        1
1       67        1        2        1
0        8        1        2        1
1        6        1        2        1
1       15        1        2        1
1       21        2        2        1
1       32        2        2        1
1       16        1        2        1
0       11        2        2        0
0       14        3        2        0
0        9        2        2        0
0       18        2        2        0
0        2        3        1        0
0       61        3        1        1
0       20        3        1        0
0       16        3        1        0
0        9        2        1        0
0       35        2        1        1
0        4        1        1        1
0       44        3        2        0
1       11        3        2        0
0        3        2        2        1
0        6        3        2        0
1       17        2        2        0
0        1        3        2        1
1       53        2        2        1
1       13        1        2        0
0       24        1        2        0
1       70        1        2        1
1       16        3        2        1
0       12        2        2        1
1       20        3        2        1
0       65        3        2        1
1       40        2        2        0
1       38        2        2        1
1       68        2        2        1
1       74        1        2        1
1       14        1        2        1
1       27        1        2        1
0       31        1        2        1
0       18        1        2        1
0       39        1        2        0
0       50        1        2        1
0       31        1        2        1
0       61        1        2        1
0       18        3        1        0
0        5        3        1        0
0        2        3        1        1
0       16        3        1        0
1       59        3        1        1
0       22        3        1        0
0       24        1        1        1
0       30        1        1        1
0       46        1        1        1
0       28        1        1        0
0       27        1        1        1
1       27        1        1        0
0       28        1        1        1
1       52        1        1        1
0       11        3        1        1
0        6        2        1        1
0       46        3        1        0
1       20        2        1        1
0        3        1        1        1
0       18        2        1        0
0       25        2        1        0
0        6        3        1        1
1       65        3        1        1
0       51        3        1        1
0       39        2        1        1
0        8        1        1        1
0        8        2        1        0
0       14        3        1        0
0        6        3        1        0
0        6        3        1        1
0        7        3        1        0
0        4        3        1        0
0        8        3        1        0
0        9        2        1        0
1       32        3        1        0
0       19        3        1        0
0       11        3        1        0
0       35        3        1        0
0       16        1        1        0
0        1        1        1        1
0        6        1        1        1
0       27        1        1        1
0       25        1        1        1
0       18        1        1        0
0       37        3        1        0
1       33        3        1        0
0       27        2        1        0
0        2        1        1        0
0        8        2        1        0
0        5        1        1        0
0        1        1        1        1
0       32        1        1        0
1       25        1        1        1
0       15        1        2        0
0       15        1        2        1
0       26        1        2        1
1       42        1        2        1
0        7        1        2        1
0        2        1        2        0
1       65        1        2        1
0       33        2        2        1
1        8        2        2        0
0       30        2        2        0
0        5        3        2        0
0       15        3        2        0
1       60        3        2        1
1       13        3        2        1
0       70        3        1        1
0        5        3        1        0
0        3        3        1        1
0       50        2        1        1
0        6        2        1        0
0       12        2        1        1
1       39        3        2        0
0       15        2        2        1
1       35        2        2        0
0        2        2        2        1
0       17        3        2        0
1       43        3        2        1
0       30        2        2        1
0       11        1        2        1
1       39        1        2        1
0       32        1        2        1
0       17        1        2        1
0        3        3        2        1
0        7        3        2        0
0        2        2        2        0
1       64        2        2        1
1       13        1        2        2
1       15        2        2        1
0       48        2        2        1
0       23        1        2        1
1       48        1        2        0
0       25        1        2        1
0       12        1        2        1
1       46        1        2        1
0       79        1        2        1
0       56        1        2        1
0        8        1        2        1
1       29        3        1        0
1       35        3        1        0
1       11        3        1        0
0       69        3        1        1
1       21        3        1        0
0       13        3        1        0
0       21        1        1        1
1       32        1        1        1
1       24        1        1        0
0       24        1        1        1
0       73        1        1        1
0       42        1        1        1
1       34        1        1        1
0       30        2        1        0
0        7        2        1        0
1       29        3        1        0
1       22        3        1        0
0       38        2        1        1
0       13        2        1        1
0       12        2        1        1
0       42        3        1        0
1       17        3        1        0
0       21        3        1        1
0       34        1        1        1
0        1        3        1        0
0       14        2        1        0
0       16        2        1        0
0        9        3        1        0
0       53        3        1        0
0       27        3        1        0
0       15        3        1        0
0        9        3        1        0
0        4        2        1        1
0       10        3        1        1
0       31        3        1        0
0       85        3        1        1
0       24        2        1        0
end data.

logistic regression
    disease WITH age sciostat sector savings
    /categorical = sciostat sector
    /print = ci(95).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/logistic.at:1443: pspp -O format=csv ci.sps"
at_fn_check_prepare_trace "logistic.at:1443"
( $at_check_trace; pspp -O format=csv ci.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Dependent Variable Encoding
Original Value,Internal Value
.000,.000
1.000,1.000

Table: Case Processing Summary
Unweighted Cases,N,Percent
Included in Analysis,196,100.0%
Missing Cases,0,.0%
Total,196,100.0%

note: Estimation terminated at iteration number 4 because parameter estimates changed by less than 0.001

Table: Model Summary
Step,-2 Log likelihood,Cox & Snell R Square,Nagelkerke R Square
1,211.195,.120,.172

Table: Categorical Variables' Codings
,,Frequency,Parameter coding,
,,,(1),(2)
sciostat,1.000,77,1,0
,2.000,49,0,1
,3.000,70,0,0
sector,1.000,117,1,
,2.000,79,0,

Table: Classification Table
,Observed,,Predicted,,
,,,disease,,Percentage Correct
,,,.000,1.000,
Step 1,disease,.000,131,8,94.2%
,,1.000,41,16,28.1%
,Overall Percentage,,,,75.0%

Table: Variables in the Equation
,,B,S.E.,Wald,df,Sig.,Exp(B),95% CI for Exp(B),
,,,,,,,,Lower,Upper
Step 1,age,.027,.009,8.647,1,.003,1.027,1.009,1.045
,savings,.061,.386,.025,1,.874,1.063,.499,2.264
,sciostat,,,.440,2,.803,,,
,sciostat(1),-.278,.434,.409,1,.522,.757,.323,1.775
,sciostat(2),-.219,.459,.227,1,.634,.803,.327,1.976
,sector,,,11.974,1,.001,,,
,sector(1),-1.235,.357,11.974,1,.001,.291,.145,.586
,Constant,-.814,.452,3.246,1,.072,.443,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logistic.at:1443"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_815
#AT_START_816
at_fn_group_banner 816 'logistic.at:1493' \
  "LOGISTIC REGRESSION syntax errors" "              " 70
at_xfail=no
(
  printf "%s\n" "816. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >logistic.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
LOGISTIC REGRESSION **.
LOGISTIC REGRESSION x **.
LOGISTIC REGRESSION x WITH **.
LOGISTIC REGRESSION x WITH y/MISSING=**.
LOGISTIC REGRESSION x WITH y/CATEGORICAL=**.
LOGISTIC REGRESSION x WITH y/PRINT=CI **.
LOGISTIC REGRESSION x WITH y/PRINT=CI(**).
LOGISTIC REGRESSION x WITH y/PRINT=CI(123 **).
LOGISTIC REGRESSION x WITH y/PRINT=**.
LOGISTIC REGRESSION x WITH y/CRITERIA=BCON **.
LOGISTIC REGRESSION x WITH y/CRITERIA=BCON(**).
LOGISTIC REGRESSION x WITH y/CRITERIA=BCON(123 **).
LOGISTIC REGRESSION x WITH y/CRITERIA=ITERATE **.
LOGISTIC REGRESSION x WITH y/CRITERIA=ITERATE(**).
LOGISTIC REGRESSION x WITH y/CRITERIA=ITERATE(123 **).
LOGISTIC REGRESSION x WITH y/CRITERIA=LCON **.
LOGISTIC REGRESSION x WITH y/CRITERIA=LCON(**).
LOGISTIC REGRESSION x WITH y/CRITERIA=LCON(123 **).
LOGISTIC REGRESSION x WITH y/CRITERIA=EPS **.
LOGISTIC REGRESSION x WITH y/CRITERIA=EPS(**).
LOGISTIC REGRESSION x WITH y/CRITERIA=EPS(123 **).
LOGISTIC REGRESSION x WITH y/CRITERIA=CUT **.
LOGISTIC REGRESSION x WITH y/CRITERIA=CUT(**).
LOGISTIC REGRESSION x WITH y/CRITERIA=CUT(0.5 **).
LOGISTIC REGRESSION x WITH y/CRITERIA=**.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/logistic.at:1522: pspp -O format=csv logistic.sps"
at_fn_check_prepare_trace "logistic.at:1522"
( $at_check_trace; pspp -O format=csv logistic.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"logistic.sps:2.21-2.22: error: LOGISTIC REGRESSION: Syntax error expecting variable name.
    2 | LOGISTIC REGRESSION **.
      |                     ^~\"

\"logistic.sps:3.23-3.24: error: LOGISTIC REGRESSION: Syntax error expecting \`WITH'.
    3 | LOGISTIC REGRESSION x **.
      |                       ^~\"

\"logistic.sps:4.28-4.29: error: LOGISTIC REGRESSION: Syntax error expecting variable name.
    4 | LOGISTIC REGRESSION x WITH **.
      |                            ^~\"

\"logistic.sps:5.38-5.39: error: LOGISTIC REGRESSION: Syntax error expecting INCLUDE or EXCLUDE.
    5 | LOGISTIC REGRESSION x WITH y/MISSING=**.
      |                                      ^~\"

\"logistic.sps:6.42-6.43: error: LOGISTIC REGRESSION: Syntax error expecting variable name.
    6 | LOGISTIC REGRESSION x WITH y/CATEGORICAL=**.
      |                                          ^~\"

\"logistic.sps:7.39-7.40: error: LOGISTIC REGRESSION: Syntax error expecting \`('.
    7 | LOGISTIC REGRESSION x WITH y/PRINT=CI **.
      |                                       ^~\"

\"logistic.sps:8.39-8.40: error: LOGISTIC REGRESSION: Syntax error expecting number.
    8 | LOGISTIC REGRESSION x WITH y/PRINT=CI(**).
      |                                       ^~\"

\"logistic.sps:9.43-9.44: error: LOGISTIC REGRESSION: Syntax error expecting \`)'.
    9 | LOGISTIC REGRESSION x WITH y/PRINT=CI(123 **).
      |                                           ^~\"

\"logistic.sps:10.36-10.37: error: LOGISTIC REGRESSION: Syntax error expecting DEFAULT, SUMMARY, CI, or ALL.
   10 | LOGISTIC REGRESSION x WITH y/PRINT=**.
      |                                    ^~\"

\"logistic.sps:11.44-11.45: error: LOGISTIC REGRESSION: Syntax error expecting \`('.
   11 | LOGISTIC REGRESSION x WITH y/CRITERIA=BCON **.
      |                                            ^~\"

\"logistic.sps:12.44-12.45: error: LOGISTIC REGRESSION: Syntax error expecting number.
   12 | LOGISTIC REGRESSION x WITH y/CRITERIA=BCON(**).
      |                                            ^~\"

\"logistic.sps:13.48-13.49: error: LOGISTIC REGRESSION: Syntax error expecting \`)'.
   13 | LOGISTIC REGRESSION x WITH y/CRITERIA=BCON(123 **).
      |                                                ^~\"

\"logistic.sps:14.47-14.48: error: LOGISTIC REGRESSION: Syntax error expecting \`('.
   14 | LOGISTIC REGRESSION x WITH y/CRITERIA=ITERATE **.
      |                                               ^~\"

\"logistic.sps:15.47-15.48: error: LOGISTIC REGRESSION: Syntax error expecting non-negative integer for ITERATE.
   15 | LOGISTIC REGRESSION x WITH y/CRITERIA=ITERATE(**).
      |                                               ^~\"

\"logistic.sps:16.51-16.52: error: LOGISTIC REGRESSION: Syntax error expecting \`)'.
   16 | LOGISTIC REGRESSION x WITH y/CRITERIA=ITERATE(123 **).
      |                                                   ^~\"

\"logistic.sps:17.44-17.45: error: LOGISTIC REGRESSION: Syntax error expecting \`('.
   17 | LOGISTIC REGRESSION x WITH y/CRITERIA=LCON **.
      |                                            ^~\"

\"logistic.sps:18.44-18.45: error: LOGISTIC REGRESSION: Syntax error expecting number.
   18 | LOGISTIC REGRESSION x WITH y/CRITERIA=LCON(**).
      |                                            ^~\"

\"logistic.sps:19.48-19.49: error: LOGISTIC REGRESSION: Syntax error expecting \`)'.
   19 | LOGISTIC REGRESSION x WITH y/CRITERIA=LCON(123 **).
      |                                                ^~\"

\"logistic.sps:20.43-20.44: error: LOGISTIC REGRESSION: Syntax error expecting \`('.
   20 | LOGISTIC REGRESSION x WITH y/CRITERIA=EPS **.
      |                                           ^~\"

\"logistic.sps:21.43-21.44: error: LOGISTIC REGRESSION: Syntax error expecting number.
   21 | LOGISTIC REGRESSION x WITH y/CRITERIA=EPS(**).
      |                                           ^~\"

\"logistic.sps:22.47-22.48: error: LOGISTIC REGRESSION: Syntax error expecting \`)'.
   22 | LOGISTIC REGRESSION x WITH y/CRITERIA=EPS(123 **).
      |                                               ^~\"

\"logistic.sps:23.43-23.44: error: LOGISTIC REGRESSION: Syntax error expecting \`('.
   23 | LOGISTIC REGRESSION x WITH y/CRITERIA=CUT **.
      |                                           ^~\"

\"logistic.sps:24.43-24.44: error: LOGISTIC REGRESSION: Syntax error expecting number between 0 and 1 for CUT.
   24 | LOGISTIC REGRESSION x WITH y/CRITERIA=CUT(**).
      |                                           ^~\"

\"logistic.sps:25.47-25.48: error: LOGISTIC REGRESSION: Syntax error expecting \`)'.
   25 | LOGISTIC REGRESSION x WITH y/CRITERIA=CUT(0.5 **).
      |                                               ^~\"

\"logistic.sps:26.39-26.40: error: LOGISTIC REGRESSION: Syntax error expecting BCON, ITERATE, LCON, EPS, or CUT.
   26 | LOGISTIC REGRESSION x WITH y/CRITERIA=**.
      |                                       ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/logistic.at:1522"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_816
#AT_START_817
at_fn_group_banner 817 'loop.at:29' \
  "LOOP with index" "                                " 71
at_xfail=no
(
  printf "%s\n" "817. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

loop #i=x to y by z.
print /#i.
end loop.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:38: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:38"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:39: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:39"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1.00 
2.00 
--------
2.00 
4.00 
--------
3.00 
6.00 
9.00 
--------
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_817
#AT_START_818
at_fn_group_banner 818 'loop.at:54' \
  "LOOP with IF condition" "                         " 71
at_xfail=no
(
  printf "%s\n" "818. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

compute #j=x.
loop if #j <= y.
print /#j.
compute #j = #j + z.
end loop.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:65: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:65"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:66: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:66"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1.00 
2.00 
--------
2.00 
4.00 
--------
3.00 
6.00 
9.00 
--------
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_818
#AT_START_819
at_fn_group_banner 819 'loop.at:81' \
  "LOOP with END IF condition" "                     " 71
at_xfail=no
(
  printf "%s\n" "819. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

compute #k=x.
loop.
print /#k.
compute #k = #k + z.
end loop if #k > y.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:92: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:92"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:92"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:93: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:93"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1.00 
2.00 
--------
2.00 
4.00 
--------
3.00 
6.00 
9.00 
--------
4.00 
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:93"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_819
#AT_START_820
at_fn_group_banner 820 'loop.at:109' \
  "LOOP with index and IF based on index" "          " 71
at_xfail=no
(
  printf "%s\n" "820. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

loop #m=x to y by z if #m < 4.
print /#m.
end loop.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:118: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:118"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:118"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:119: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:119"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1.00 
2.00 
--------
2.00 
--------
3.00 
--------
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:119"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_820
#AT_START_821
at_fn_group_banner 821 'loop.at:131' \
  "LOOP with index and END IF based on index" "      " 71
at_xfail=no
(
  printf "%s\n" "821. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

loop #n=x to y by z.
print /#n.
end loop if #n >= 4.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:140: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:140"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:140"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:141: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:141"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1.00 
2.00 
--------
2.00 
4.00 
--------
3.00 
6.00 
--------
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:141"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_821
#AT_START_822
at_fn_group_banner 822 'loop.at:155' \
  "LOOP with index and IF and END IF based on index" "" 71
at_xfail=no
(
  printf "%s\n" "822. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

loop #o=x to y by z if mod(#o,2) = 0.
print /#o.
end loop if #o >= 4.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:164: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:164"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:164"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:165: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:165"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "--------
2.00 
4.00 
--------
--------
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:165"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_822
#AT_START_823
at_fn_group_banner 823 'loop.at:175' \
  "LOOP with no conditions containing BREAK" "       " 71
at_xfail=no
(
  printf "%s\n" "823. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

compute #p = x.
loop.
print /#p.
compute #p = #p + z.
do if #p >= y.
break.
end if.
end loop.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:189: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:189"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:189"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:190: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:190"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1.00 
--------
2.00 
4.00 
--------
3.00 
6.00 
--------
4.00 
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:190"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_823
#AT_START_824
at_fn_group_banner 824 'loop.at:204' \
  "LOOP with no conditions that ends due to MXLOOPS" "" 71
at_xfail=no
(
  printf "%s\n" "824. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

set mxloops=2.
loop.
compute #p = #p + 1.
print /x #p.
end loop.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:215: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:215"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:215"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:216: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:216"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1     1.00 
1     2.00 
--------
2     3.00 
2     4.00 
--------
3     5.00 
3     6.00 
--------
4     7.00 
4     8.00 
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:216"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_824
#AT_START_825
at_fn_group_banner 825 'loop.at:232' \
  "LOOP with IF condition that ends due to MXLOOPS" "" 71
at_xfail=no
(
  printf "%s\n" "825. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
data list notable /x 1 y 2 z 3.
begin data.
121
252
393
404
end data.

set mxloops=3.
compute #p = x.
loop.
print /x #p.
compute #p = #p + 1.
end loop if #p >= 6.
print/'--------'.
execute.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:244: pspp -o pspp.csv loop.sps"
at_fn_check_prepare_trace "loop.at:244"
( $at_check_trace; pspp -o pspp.csv loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:244"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/loop.at:245: cat pspp.csv"
at_fn_check_prepare_trace "loop.at:245"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1     1.00 
1     2.00 
1     3.00 
--------
2     2.00 
2     3.00 
2     4.00 
--------
3     3.00 
3     4.00 
3     5.00 
--------
4     4.00 
4     5.00 
--------
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loop.at:245"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_825
#AT_START_826
at_fn_group_banner 826 'loop.at:264' \
  "LOOP negative" "                                  " 71
at_xfail=no
(
  printf "%s\n" "826. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >loop.sps <<'_ATEOF'
DATA LIST NOTABLE /x 1.
BREAK.
END LOOP.

LOOP A=1 TO 5 B=1 TO 5.
END LOOP.
LOOP 5.
END LOOP.
LOOP B !.
END LOOP.
LOOP B=!.
END LOOP.
LOOP A=1 TO !.
END LOOP.
LOOP A=1 BY !.
END LOOP.
LOOP A=1 TO 5 BY 5 TO !.
END LOOP.
LOOP A=1 BY 5 TO 10 BY !.
END LOOP.
LOOP A=1.
END LOOP.
LOOP !.
END LOOP.

LOOP IF 1 IF 0.
END LOOP.

LOOP IF !.
END LOOP.

LOOP.
END LOOP IF !.

LOOP.
END LOOP !.

LOOP.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/loop.at:305: pspp loop.sps"
at_fn_check_prepare_trace "loop.at:305"
( $at_check_trace; pspp loop.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "loop.sps:2.1-2.5: error: BREAK: This command cannot appear outside LOOP...END
LOOP.
    2 | BREAK.
      | ^~~~~

loop.sps:3.1-3.8: error: END LOOP: This command cannot appear outside LOOP...
END LOOP.
    3 | END LOOP.
      | ^~~~~~~~

loop.sps:5.15: error: LOOP: Only one index clause may be specified.
    5 | LOOP A=1 TO 5 B=1 TO 5.
      |               ^

loop.sps:7.6: error: LOOP: Syntax error expecting identifier.
    7 | LOOP 5.
      |      ^

loop.sps:9.8: error: LOOP: Syntax error expecting \`='.
    9 | LOOP B !.
      |        ^

loop.sps:11.8: error: LOOP: Syntax error parsing expression.
   11 | LOOP B=!.
      |        ^

loop.sps:13.13: error: LOOP: Syntax error parsing expression.
   13 | LOOP A=1 TO !.
      |             ^

loop.sps:15.13: error: LOOP: Syntax error parsing expression.
   15 | LOOP A=1 BY !.
      |             ^

loop.sps:17.20-17.21: error: LOOP: Subcommand TO may only be specified once.
   17 | LOOP A=1 TO 5 BY 5 TO !.
      |                    ^~

loop.sps:19.21-19.22: error: LOOP: Subcommand BY may only be specified once.
   19 | LOOP A=1 BY 5 TO 10 BY !.
      |                     ^~

loop.sps:21.1-21.9: error: LOOP: Required subcommand TO was not specified.
   21 | LOOP A=1.
      | ^~~~~~~~~

loop.sps:23.6: error: LOOP: Syntax error expecting identifier.
   23 | LOOP !.
      |      ^

loop.sps:26.11-26.12: error: LOOP: Subcommand IF may only be specified once.
   26 | LOOP IF 1 IF 0.
      |           ^~

loop.sps:29.9: error: LOOP: Syntax error parsing expression.
   29 | LOOP IF !.
      |         ^

loop.sps:33.13: error: LOOP: Syntax error parsing expression.
   33 | END LOOP IF !.
      |             ^

loop.sps:36.10: error: LOOP: Syntax error expecting end of command.
   36 | END LOOP !.
      |          ^

error: LOOP: At end of input: Syntax error expecting END LOOP.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/loop.at:305"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_826
#AT_START_827
at_fn_group_banner 827 'match-files.at:120' \
  "MATCH FILES -- system file and system file" "     " 72
at_xfail=no
(
  printf "%s\n" "827. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >data1.txt <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF


   cat >data2.txt <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >prepare.sps <<'_ATEOF'
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'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:120: pspp -O format=csv prepare.sps"
at_fn_check_prepare_trace "match-files.at:120"
( $at_check_trace; pspp -O format=csv prepare.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:120: test -f data1.sav && test -f data2.sav"
at_fn_check_prepare_trace "match-files.at:120"
( $at_check_trace; test -f data1.sav && test -f data2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >expout <<'_ATEOF'
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
_ATEOF


   cat >match-files.sps <<'_ATEOF'

MATCH FILES
	FILE='data1.sav' /IN=ina /SORT
	file='data2.sav' /in=inb /rename c=d
	/BY a /FIRST=first /LAST=last.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:120: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:120"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:120: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:120"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_827
#AT_START_828
at_fn_group_banner 828 'match-files.at:121' \
  "MATCH FILES -- system file and active file" "     " 72
at_xfail=no
(
  printf "%s\n" "828. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >data1.txt <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF


   cat >data2.txt <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >prepare.sps <<'_ATEOF'
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'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:121: pspp -O format=csv prepare.sps"
at_fn_check_prepare_trace "match-files.at:121"
( $at_check_trace; pspp -O format=csv prepare.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:121: test -f data1.sav && test -f data2.sav"
at_fn_check_prepare_trace "match-files.at:121"
( $at_check_trace; test -f data1.sav && test -f data2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >expout <<'_ATEOF'
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
_ATEOF


   cat >match-files.sps <<'_ATEOF'
GET FILE='data2.sav'.
MATCH FILES
	FILE='data1.sav' /IN=ina /SORT
	file=* /in=inb /rename c=d
	/BY a /FIRST=first /LAST=last.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:121: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:121"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:121: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:121"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_828
#AT_START_829
at_fn_group_banner 829 'match-files.at:122' \
  "MATCH FILES -- active file and system file" "     " 72
at_xfail=no
(
  printf "%s\n" "829. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >data1.txt <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF


   cat >data2.txt <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >prepare.sps <<'_ATEOF'
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'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:122: pspp -O format=csv prepare.sps"
at_fn_check_prepare_trace "match-files.at:122"
( $at_check_trace; pspp -O format=csv prepare.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:122"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:122: test -f data1.sav && test -f data2.sav"
at_fn_check_prepare_trace "match-files.at:122"
( $at_check_trace; test -f data1.sav && test -f data2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:122"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >expout <<'_ATEOF'
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
_ATEOF


   cat >match-files.sps <<'_ATEOF'
GET FILE='data1.sav'.
MATCH FILES
	FILE=* /IN=ina /SORT
	file='data2.sav' /in=inb /rename c=d
	/BY a /FIRST=first /LAST=last.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:122: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:122"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:122"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:122: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:122"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:122"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_829
#AT_START_830
at_fn_group_banner 830 'match-files.at:123' \
  "MATCH FILES -- system file and system table" "    " 72
at_xfail=no
(
  printf "%s\n" "830. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >data1.txt <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF


   cat >data2.txt <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >prepare.sps <<'_ATEOF'
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'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:123: pspp -O format=csv prepare.sps"
at_fn_check_prepare_trace "match-files.at:123"
( $at_check_trace; pspp -O format=csv prepare.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:123: test -f data1.sav && test -f data2.sav"
at_fn_check_prepare_trace "match-files.at:123"
( $at_check_trace; test -f data1.sav && test -f data2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >expout <<'_ATEOF'
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
_ATEOF


   cat >match-files.sps <<'_ATEOF'

MATCH FILES
	FILE='data1.sav' /IN=ina /SORT
	table='data2.sav' /in=inb /rename c=d
	/BY a /FIRST=first /LAST=last.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:123: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:123"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:123: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:123"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_830
#AT_START_831
at_fn_group_banner 831 'match-files.at:124' \
  "MATCH FILES -- system file and active table" "    " 72
at_xfail=no
(
  printf "%s\n" "831. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >data1.txt <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF


   cat >data2.txt <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >prepare.sps <<'_ATEOF'
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'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:124: pspp -O format=csv prepare.sps"
at_fn_check_prepare_trace "match-files.at:124"
( $at_check_trace; pspp -O format=csv prepare.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:124: test -f data1.sav && test -f data2.sav"
at_fn_check_prepare_trace "match-files.at:124"
( $at_check_trace; test -f data1.sav && test -f data2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >expout <<'_ATEOF'
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
_ATEOF


   cat >match-files.sps <<'_ATEOF'
GET FILE='data2.sav'.
MATCH FILES
	FILE='data1.sav' /IN=ina /SORT
	table=* /in=inb /rename c=d
	/BY a /FIRST=first /LAST=last.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:124: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:124"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:124: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:124"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_831
#AT_START_832
at_fn_group_banner 832 'match-files.at:125' \
  "MATCH FILES -- active file and system table" "    " 72
at_xfail=no
(
  printf "%s\n" "832. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >data1.txt <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF


   cat >data2.txt <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >prepare.sps <<'_ATEOF'
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'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:125: pspp -O format=csv prepare.sps"
at_fn_check_prepare_trace "match-files.at:125"
( $at_check_trace; pspp -O format=csv prepare.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:125"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:125: test -f data1.sav && test -f data2.sav"
at_fn_check_prepare_trace "match-files.at:125"
( $at_check_trace; test -f data1.sav && test -f data2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:125"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >expout <<'_ATEOF'
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
_ATEOF


   cat >match-files.sps <<'_ATEOF'
GET FILE='data1.sav'.
MATCH FILES
	FILE=* /IN=ina /SORT
	table='data2.sav' /in=inb /rename c=d
	/BY a /FIRST=first /LAST=last.
LIST.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:125: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:125"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:125"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:125: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:125"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:125"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_832
#AT_START_833
at_fn_group_banner 833 'match-files.at:127' \
  "MATCH FILES parallel match" "                     " 72
at_xfail=no
(
  printf "%s\n" "833. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data1.txt <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF


   cat >data2.txt <<'_ATEOF'
1bN
3bO
4bP
6bQ
7bR
9bS
_ATEOF


   cat >prepare.sps <<'_ATEOF'
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'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:128: pspp -O format=csv prepare.sps"
at_fn_check_prepare_trace "match-files.at:128"
( $at_check_trace; pspp -O format=csv prepare.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/match-files.at:128: test -f data1.sav && test -f data2.sav"
at_fn_check_prepare_trace "match-files.at:128"
( $at_check_trace; test -f data1.sav && test -f data2.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >match-files.sps <<'_ATEOF'
MATCH FILES FILE='data1.sav' /FILE='data2.sav' /RENAME (a b c=d e f).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:133: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:133"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:133"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:134: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:134"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:134"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_833
#AT_START_834
at_fn_group_banner 834 'match-files.at:154' \
  "MATCH FILES bug with TABLE from active dataset" " " 72
at_xfail=no
(
  printf "%s\n" "834. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >match-files.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:174: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:174"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:175: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:175"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,z,y
3.00,8.00,30.00
2.00,.  ,21.00
1.00,.  ,22.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:175"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_834
#AT_START_835
at_fn_group_banner 835 'match-files.at:186' \
  "MATCH FILES bug with scratch variables" "         " 72
at_xfail=no
(
  printf "%s\n" "835. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >match-files.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:203: pspp -o pspp.csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:203"
( $at_check_trace; pspp -o pspp.csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:203"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:204: cat pspp.csv"
at_fn_check_prepare_trace "match-files.at:204"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:204"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_835
#AT_START_836
at_fn_group_banner 836 'match-files.at:218' \
  "MATCH FILES with different string widths" "       " 72
at_xfail=no
(
  printf "%s\n" "836. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >match-files.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (F8.2) name (A6).
BEGIN DATA.
7,al
8,brad
9,carl
END DATA.
SAVE OUTFILE='x.sav'.

DATA LIST LIST NOTABLE/name (A7) y.
BEGIN DATA.
al,1
carl,2
dan,3
END DATA.
MATCH FILES/FILE=*/FILE='x.sav'/BY name.
LIST/name x y.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:237: pspp -O format=csv match-files.sps"
at_fn_check_prepare_trace "match-files.at:237"
( $at_check_trace; pspp -O format=csv match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
name,x,y
al,7.00,1.00
brad,8.00,.  
carl,9.00,2.00
dan,.  ,3.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:237"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_836
#AT_START_837
at_fn_group_banner 837 'match-files.at:247' \
  "MATCH FILES syntax errors" "                      " 72
at_xfail=no
(
  printf "%s\n" "837. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='match-files.sps' ERROR=IGNORE.
_ATEOF

cat >match-files.sps <<'_ATEOF'
MATCH FILES/FILE=*.

DATA LIST LIST NOTABLE/name (A6) x.
BEGIN DATA.
al,7
brad,8
carl,9
END DATA.
SAVE OUTFILE='x.sav'.

TEMPORARY.
MATCH FILES/FILE=*.

DATA LIST LIST NOTABLE/name (A7) y.
BEGIN DATA.
al,1
carl,2
dan,3
END DATA.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=x)/BY x.
MATCH FILES/FILE='x.sav'/IN=**.
MATCH FILES/FILE='x.sav'/IN=x/IN=y.
MATCH FILES/FILE='x.sav'/BY=x/BY=y.
MATCH FILES/FILE='x.sav'/BY=**.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/BY y.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/BY x.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/FIRST x/FIRST y.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/FIRST=**.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/LAST x/LAST y.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/LAST=**.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/DROP=xyzzy.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/DROP=ALL.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/KEEP=xyzzy.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/LAST=x **.
MATCH FILES/FILE='x.sav'/TABLE=*/RENAME(name=name2).
MATCH FILES/FILE='x.sav'/SORT/FILE=*/RENAME(name=name2)/SORT.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/FIRST=x.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/LAST=x.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/IN=x.
MATCH FILES/KEEP=**.

* It's a problem to have different types and the same name,
but not if we drop them.
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=x).
MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=x)/DROP=x.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:298: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "match-files.at:298"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"match-files.sps:1.18: error: MATCH FILES: Cannot specify the active dataset since none has been defined.
    1 | MATCH FILES/FILE=*.
      |                  ^\"

\"match-files.sps:12.18: error: MATCH FILES: This command may not be used after TEMPORARY when the active dataset is an input source.  Temporary transformations will be made permanent.
   12 | MATCH FILES/FILE=*.
      |                  ^\"

match-files.sps:20: error: MATCH FILES: Variable x has different types in different files.

\"match-files.sps:20.13-20.24: note: MATCH FILES: In file \`x.sav', x is numeric.
   20 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=x)/BY x.
      |             ^~~~~~~~~~~~\"

\"match-files.sps:20.26-20.31: note: MATCH FILES: In file *, x is a string.
   20 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=x)/BY x.
      |                          ^~~~~~\"

\"match-files.sps:21.29-21.30: error: MATCH FILES: Syntax error expecting identifier.
   21 | MATCH FILES/FILE='x.sav'/IN=**.
      |                             ^~\"

\"match-files.sps:22.34: error: MATCH FILES: Multiple IN subcommands for a single FILE or TABLE.
   22 | MATCH FILES/FILE='x.sav'/IN=x/IN=y.
      |                                  ^\"

\"match-files.sps:23.31-23.32: error: MATCH FILES: Subcommand BY may only be specified once.
   23 | MATCH FILES/FILE='x.sav'/BY=x/BY=y.
      |                               ^~\"

\"match-files.sps:24.29-24.30: error: MATCH FILES: Syntax error expecting variable name.
   24 | MATCH FILES/FILE='x.sav'/BY=**.
      |                             ^~\"

\"match-files.sps:25.13-25.24: error: MATCH FILES: File \`x.sav' lacks BY variable y.
   25 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/BY y.
      |             ^~~~~~~~~~~~\"

\"match-files.sps:26.26-26.31: error: MATCH FILES: File * lacks BY variable x.
   26 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/BY x.
      |                          ^~~~~~\"

\"match-files.sps:27.60-27.64: error: MATCH FILES: Subcommand FIRST may only be specified once.
   27 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/FIRST x/FIRST y.
      |                                                            ^~~~~\"

\"match-files.sps:28.58-28.59: error: MATCH FILES: Syntax error expecting identifier.
   28 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/FIRST=**.
      |                                                          ^~\"

\"match-files.sps:29.59-29.62: error: MATCH FILES: Subcommand LAST may only be specified once.
   29 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/LAST x/LAST y.
      |                                                           ^~~~\"

\"match-files.sps:30.57-30.58: error: MATCH FILES: Syntax error expecting identifier.
   30 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/LAST=**.
      |                                                         ^~\"

\"match-files.sps:31.57-31.61: error: MATCH FILES: xyzzy is not a variable name.
   31 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/DROP=xyzzy.
      |                                                         ^~~~~\"

\"match-files.sps:32.52-32.59: error: MATCH FILES: Cannot DROP all variables from dictionary.
   32 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/DROP=ALL.
      |                                                    ^~~~~~~~\"

\"match-files.sps:33.57-33.61: error: MATCH FILES: xyzzy is not a variable name.
   33 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/KEEP=xyzzy.
      |                                                         ^~~~~\"

\"match-files.sps:34.59-34.60: error: MATCH FILES: Syntax error expecting end of command.
   34 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/LAST=x **.
      |                                                           ^~\"

\"match-files.sps:35.26-35.32: error: MATCH FILES: BY is required when TABLE is specified.
   35 | MATCH FILES/FILE='x.sav'/TABLE=*/RENAME(name=name2).
      |                          ^~~~~~~\"

\"match-files.sps:36.26-36.29: error: MATCH FILES: BY is required when SORT is specified.
   36 | MATCH FILES/FILE='x.sav'/SORT/FILE=*/RENAME(name=name2)/SORT.
      |                          ^~~~\"

\"match-files.sps:37.58: error: MATCH FILES: Variable name x specified on FIRST subcommand duplicates an existing variable name.
   37 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/FIRST=x.
      |                                                          ^\"

\"match-files.sps:38.57: error: MATCH FILES: Variable name x specified on LAST subcommand duplicates an existing variable name.
   38 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/LAST=x.
      |                                                         ^\"

\"match-files.sps:39.55: error: MATCH FILES: Variable name x specified on IN subcommand duplicates an existing variable name.
   39 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=name2)/IN=x.
      |                                                       ^\"

\"match-files.sps:40.13-40.16: error: MATCH FILES: Syntax error expecting FILE or TABLE.
   40 | MATCH FILES/KEEP=**.
      |             ^~~~\"

match-files.sps:44: error: MATCH FILES: Variable x has different types in different files.

\"match-files.sps:44.13-44.24: note: MATCH FILES: In file \`x.sav', x is numeric.
   44 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=x).
      |             ^~~~~~~~~~~~\"

\"match-files.sps:44.26-44.31: note: MATCH FILES: In file *, x is a string.
   44 | MATCH FILES/FILE='x.sav'/FILE=*/RENAME(name=x).
      |                          ^~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/match-files.at:298"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_837
#AT_START_838
at_fn_group_banner 838 'match-files.at:409' \
  "MATCH FILES incompatible encoding warning" "      " 72
at_xfail=no
(
  printf "%s\n" "838. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >match-files.sps <<'_ATEOF'
SET LOCALE='utf-8'.
DATA LIST LIST NOTABLE/name (A6) x.
BEGIN DATA.
al,7
brad,8
carl,9
END DATA.
SAVE OUTFILE='x.sav'.

SET LOCALE='US-ASCII'.
DATA LIST LIST NOTABLE/name (A6) y.
BEGIN DATA.
al,1
carl,2
dan,3
END DATA.
MATCH FILES/FILE=*/FILE='x.sav'/RENAME(x=y).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/match-files.at:429: pspp match-files.sps"
at_fn_check_prepare_trace "match-files.at:429"
( $at_check_trace; pspp match-files.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: Combining files with different encodings.  String data (such as in
variable \`name') may not be represented correctly.

match-files.sps:17.13-17.18: note: MATCH FILES: File * uses encoding US-ASCII.
The output will use this encoding.
   17 | MATCH FILES/FILE=*/FILE='x.sav'/RENAME(x=y).
      |             ^~~~~~

match-files.sps:17.20-17.31: note: MATCH FILES: File \`x.sav' uses encoding
UTF-8.
   17 | MATCH FILES/FILE=*/FILE='x.sav'/RENAME(x=y).
      |                    ^~~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/match-files.at:429"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_838
#AT_START_839
at_fn_group_banner 839 'matrix-data.at:20' \
  "MATRIX DATA - LOWER DIAGONAL with ROWTYPE_" "     " 73
at_xfail=no
(
  printf "%s\n" "839. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    /VARIABLES=ROWTYPE_ var01 TO var08
    /FILE='matrix-data.txt'.
FORMATS var01 TO var08(F5.2).
LIST.
_ATEOF

cat >matrix-data.txt <<'_ATEOF'
MEAN  24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
SD     5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
N       92    92    92    92    92    92    92    92
'CORR'  1.00
CORR   .18  1.00
CORR  -.22  -.17  1.00
"CORR"   .36   .31  -.14  1.00
COR   .27   .16  -.12   .22  1.00
CORR   .33   .15  -.17   .24   .21  1.00
CORR   .50   .29  -.20   .32   .12   .38  1.00
CORR   .17   .29  -.05   .20   .27   .20   .04  1.00
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:42: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:42"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_839
#AT_START_840
at_fn_group_banner 840 'matrix-data.at:59' \
  "MATRIX DATA - UPPER DIAGONAL with ROWTYPE_" "     " 73
at_xfail=no
(
  printf "%s\n" "840. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_  var01 var02 var03 var04
    /format = upper diagonal.

begin data
mean        34 35 36 37
sd          22 11 55 66
n_ve    100 101 102 103
corr        1 9 8 7
corr        1 6 5
corr        1 4
corr        1
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:78: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:78"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04
MEAN,,34.0000,35.0000,36.0000,37.0000
STDDEV,,22.0000,11.0000,55.0000,66.0000
N,,100.0000,101.0000,102.0000,103.0000
CORR,var01,1.0000,9.0000,8.0000,7.0000
CORR,var02,9.0000,1.0000,6.0000,5.0000
CORR,var03,8.0000,6.0000,1.0000,4.0000
CORR,var04,7.0000,5.0000,4.0000,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_840
#AT_START_841
at_fn_group_banner 841 'matrix-data.at:91' \
  "MATRIX DATA - FULL with ROWTYPE_" "               " 73
at_xfail=no
(
  printf "%s\n" "841. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = ROWTYPE_  var01 var02 var03 var04
    /format = full diagonal.

begin data
MEAN 34 35 36 37
SD   22 11 55 66
N    100 101 102 103
CORR 1 9 8 7
CORR 9 1 6 5
CORR 8 6 1 4
CORR 7 5 4 1
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:111: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:111"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04
MEAN,,34.0000,35.0000,36.0000,37.0000
STDDEV,,22.0000,11.0000,55.0000,66.0000
N,,100.0000,101.0000,102.0000,103.0000
CORR,var01,1.0000,9.0000,8.0000,7.0000
CORR,var02,9.0000,1.0000,6.0000,5.0000
CORR,var03,8.0000,6.0000,1.0000,4.0000
CORR,var04,7.0000,5.0000,4.0000,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:111"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_841
#AT_START_842
at_fn_group_banner 842 'matrix-data.at:125' \
  "MATRIX DATA - UPPER NODIAGONAL with ROWTYPE_" "   " 73
at_xfail=no
(
  printf "%s\n" "842. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_  var01 var02 var03 var04
    /format = upper nodiagonal.

begin data
mean 34 35 36 37
sd   22 11 55 66
n    100 101 102 103
corr  9 8 7
corr  6 5
corr  4
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:143: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:143"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04
MEAN,,34.0000,35.0000,36.0000,37.0000
STDDEV,,22.0000,11.0000,55.0000,66.0000
N,,100.0000,101.0000,102.0000,103.0000
CORR,var01,1.0000,9.0000,8.0000,7.0000
CORR,var02,9.0000,1.0000,6.0000,5.0000
CORR,var03,8.0000,6.0000,1.0000,4.0000
CORR,var04,7.0000,5.0000,4.0000,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:143"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_842
#AT_START_843
at_fn_group_banner 843 'matrix-data.at:157' \
  "MATRIX DATA - UPPER NODIAGONAL with ROWTYPE_ - 2" "" 73
at_xfail=no
(
  printf "%s\n" "843. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=ROWTYPE_ var01 TO var08
    /FORMAT=UPPER NODIAGONAL.
BEGIN DATA.
MEAN  24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
SD     5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
N       92    92    92    92    92    92    92    92
CORR         .17   .50  -.33   .27   .36  -.22   .18
CORR               .29   .29  -.20   .32   .12   .38
CORR                     .05   .20  -.15   .16   .21
CORR                           .20   .32  -.17   .12
CORR                                 .27   .12  -.24
CORR                                      -.20  -.38
CORR                                             .04
END DATA.
FORMATS var01 TO var08(F6.2).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:177: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:177"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
CORR,var01,1.00,.17,.50,-.33,.27,.36,-.22,.18
CORR,var02,.17,1.00,.29,.29,-.20,.32,.12,.38
CORR,var03,.50,.29,1.00,.05,.20,-.15,.16,.21
CORR,var04,-.33,.29,.05,1.00,.20,.32,-.17,.12
CORR,var05,.27,-.20,.20,.20,1.00,.27,.12,-.24
CORR,var06,.36,.32,-.15,.32,.27,1.00,-.20,-.38
CORR,var07,-.22,.12,.16,-.17,.12,-.20,1.00,.04
CORR,var08,.18,.38,.21,.12,-.24,-.38,.04,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:177"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_843
#AT_START_844
at_fn_group_banner 844 'matrix-data.at:194' \
  "MATRIX DATA - LOWER NODIAGONAL with ROWTYPE_" "   " 73
at_xfail=no
(
  printf "%s\n" "844. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_  var01 var02 var03 var04
    /format = lower nodiagonal
    /cells = 2.

begin data
mean 34 35 36 37
sd   22 11 55 66
n    100 101 102 103
corr  9
corr  8 6
corr  7 5 4
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:213: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:213"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"matrix-data.sps:4.6-4.10: warning: MATRIX DATA: CELLS is ignored when VARIABLES includes ROWTYPE_.
    4 |     /cells = 2.
      |      ^~~~~\"

Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04
MEAN,,34.0000,35.0000,36.0000,37.0000
STDDEV,,22.0000,11.0000,55.0000,66.0000
N,,100.0000,101.0000,102.0000,103.0000
CORR,var01,1.0000,9.0000,8.0000,7.0000
CORR,var02,9.0000,1.0000,6.0000,5.0000
CORR,var03,8.0000,6.0000,1.0000,4.0000
CORR,var04,7.0000,5.0000,4.0000,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:213"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_844
#AT_START_845
at_fn_group_banner 845 'matrix-data.at:230' \
  "MATRIX DATA - split data" "                       " 73
at_xfail=no
(
  printf "%s\n" "845. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = s1 s2 rowtype_  var01 var02 var03
    /split=s1 s2.

begin data
8 0   mean     21.4  5.0  72.9
8 0   sd       6.5   1.6  22.8
8 0   n        106   106  106
8 0   corr     1
8 0   corr    .41  1
8 0   corr    -.16  -.22  1
8 1   mean     11.4  1.0  52.9
8 1   sd       9.5   8.6  12.8
8 1   n        10   11  12
8 1   corr     1
8 1   corr    .51  1
8 1   corr    .36  -.41  1
end data.

display dictionary.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:256: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:256"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
s1,1,Nominal,Input,8,Right,F4.0,F4.0
s2,2,Nominal,Input,8,Right,F4.0,F4.0
ROWTYPE_,3,Nominal,Input,8,Left,A8,A8
VARNAME_,4,Nominal,Input,8,Left,A8,A8
var01,5,Scale,Input,8,Right,F10.4,F10.4
var02,6,Scale,Input,8,Right,F10.4,F10.4
var03,7,Scale,Input,8,Right,F10.4,F10.4

Table: Split Values
Variable,Value
s1,8
s2,0

Table: Data List
s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
8,0,MEAN,,21.4000,5.0000,72.9000
8,0,STDDEV,,6.5000,1.6000,22.8000
8,0,N,,106.0000,106.0000,106.0000
8,0,CORR,var01,1.0000,.4100,-.1600
8,0,CORR,var02,.4100,1.0000,-.2200
8,0,CORR,var03,-.1600,-.2200,1.0000

Table: Split Values
Variable,Value
s1,8
s2,1

Table: Data List
s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
8,1,MEAN,,11.4000,1.0000,52.9000
8,1,STDDEV,,9.5000,8.6000,12.8000
8,1,N,,10.0000,11.0000,12.0000
8,1,CORR,var01,1.0000,.5100,.3600
8,1,CORR,var02,.5100,1.0000,-.4100
8,1,CORR,var03,.3600,-.4100,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:256"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_845
#AT_START_846
at_fn_group_banner 846 'matrix-data.at:299' \
  "MATRIX DATA - split data - 2" "                   " 73
at_xfail=no
(
  printf "%s\n" "846. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=s1 ROWTYPE_  var01 TO var04
    /SPLIT=s1
    /FORMAT=FULL.
BEGIN DATA.
0 MEAN 34 35 36 37
0 SD   22 11 55 66
0 N    99 98 99 92
0 CORR  1 .9 .8 .7
0 CORR .9  1 .6 .5
0 CORR .8 .6  1 .4
0 CORR .7 .5 .4  1
1 MEAN 44 45 34 39
1 SD   23 15 51 46
1 N    98 34 87 23
1 CORR  1 .2 .3 .4
1 CORR .2  1 .5 .6
1 CORR .3 .5  1 .7
1 CORR .4 .6 .7  1
END DATA.
FORMATS var01 TO var04(F5.1).
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:325: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:325"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
s1,0

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
0,MEAN,,34.0,35.0,36.0,37.0
0,STDDEV,,22.0,11.0,55.0,66.0
0,N,,99.0,98.0,99.0,92.0
0,CORR,var01,1.0,.9,.8,.7
0,CORR,var02,.9,1.0,.6,.5
0,CORR,var03,.8,.6,1.0,.4
0,CORR,var04,.7,.5,.4,1.0

Table: Split Values
Variable,Value
s1,1

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
1,MEAN,,44.0,45.0,34.0,39.0
1,STDDEV,,23.0,15.0,51.0,46.0
1,N,,98.0,34.0,87.0,23.0
1,CORR,var01,1.0,.2,.3,.4
1,CORR,var02,.2,1.0,.5,.6
1,CORR,var03,.3,.5,1.0,.7
1,CORR,var04,.4,.6,.7,1.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:325"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_846
#AT_START_847
at_fn_group_banner 847 'matrix-data.at:357' \
  "MATRIX DATA - factor variables" "                 " 73
at_xfail=no
(
  printf "%s\n" "847. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=ROWTYPE_ f1 var01 TO var04
    /FACTOR=f1.
BEGIN DATA.
MEAN 0 34 35 36 37
SD   0 22 11 55 66
N    0 99 98 99 92
MEAN 1 44 45 34 39
SD   1 23 15 51 46
N    1 98 34 87 23
CORR .  1
CORR . .9  1
CORR . .8 .6  1
CORR . .7 .5 .4  1
END DATA.
FORMATS var01 TO var04(F5.1).
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:378: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:378"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
MEAN,0,,34.0,35.0,36.0,37.0
STDDEV,0,,22.0,11.0,55.0,66.0
N,0,,99.0,98.0,99.0,92.0
MEAN,1,,44.0,45.0,34.0,39.0
STDDEV,1,,23.0,15.0,51.0,46.0
N,1,,98.0,34.0,87.0,23.0
CORR,.,var01,1.0,.9,.8,.7
CORR,.,var02,.9,1.0,.6,.5
CORR,.,var03,.8,.6,1.0,.4
CORR,.,var04,.7,.5,.4,1.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:378"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_847
#AT_START_848
at_fn_group_banner 848 'matrix-data.at:394' \
  "MATRIX DATA - factors and splits" "               " 73
at_xfail=no
(
  printf "%s\n" "848. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = s f rowtype_  var01 var02 var03
    /split=s
    /factor=f.

begin data
8 0   mean     21.4  5.0  72.9
8 0   sd       6.5   1.6  22.8
8 0   n        106   106  106
8 .   corr     1
8 .   corr    .41  1
8 .   corr    -.16  -.22  1
9 1   mean     11.4  1.0  52.9
9 1   sd       9.5   8.6  12.8
9 1   n        10   11  12
9 .   corr     1
9 .   corr    .51  1
9 .   corr    .36  -.41  1
end data.

display dictionary.

list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:420: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:420"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
s,1,Nominal,Input,8,Right,F4.0,F4.0
ROWTYPE_,2,Nominal,Input,8,Left,A8,A8
f,3,Nominal,Input,8,Right,F4.0,F4.0
VARNAME_,4,Nominal,Input,8,Left,A8,A8
var01,5,Scale,Input,8,Right,F10.4,F10.4
var02,6,Scale,Input,8,Right,F10.4,F10.4
var03,7,Scale,Input,8,Right,F10.4,F10.4

Table: Split Values
Variable,Value
s,8

Table: Data List
s,ROWTYPE_,f,VARNAME_,var01,var02,var03
8,MEAN,0,,21.4000,5.0000,72.9000
8,STDDEV,0,,6.5000,1.6000,22.8000
8,N,0,,106.0000,106.0000,106.0000
8,CORR,.,var01,1.0000,.4100,-.1600
8,CORR,.,var02,.4100,1.0000,-.2200
8,CORR,.,var03,-.1600,-.2200,1.0000

Table: Split Values
Variable,Value
s,9

Table: Data List
s,ROWTYPE_,f,VARNAME_,var01,var02,var03
9,MEAN,1,,11.4000,1.0000,52.9000
9,STDDEV,1,,9.5000,8.6000,12.8000
9,N,1,,10.0000,11.0000,12.0000
9,CORR,.,var01,1.0000,.5100,.3600
9,CORR,.,var02,.5100,1.0000,-.4100
9,CORR,.,var03,.3600,-.4100,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:420"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_848
#AT_START_849
at_fn_group_banner 849 'matrix-data.at:459' \
  "MATRIX DATA - bad ROWTYPE_" "                     " 73
at_xfail=no
(
  printf "%s\n" "849. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_  var01 var02 var03 var04
    /format = upper diagonal.

begin data
cork        1 9 8 7
corr        1 6 5
corr        1 4
corr        1
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:475: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:475"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"matrix-data.sps:6.1-6.4: error: Unknown row type \"\"cork\"\".\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix-data.at:475"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_849
#AT_START_850
at_fn_group_banner 850 'matrix-data.at:480' \
  "MATRIX DATA - unexpected ROWTYPE_" "              " 73
at_xfail=no
(
  printf "%s\n" "850. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_ f1 var01 var02 var03 var04
    /content = corr (sd)
    /factor = f1
    /format = upper diagonal.

begin data
corr . 1 9 8 7
corr . 1 6 5
corr . 1 4
corr . 1
sd   . 1 2 3 4

corr 0 1 9 8 7
corr 0 1 6 5
corr 0 1 4
corr 0 1
sd   0 1 2 3 4
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:505: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:505"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix-data.sps:12: warning: Data contains pooled row type STDDEV not included in CONTENTS.

matrix-data.sps:14: warning: Data contains with-factors row type CORR not included in CONTENTS.

Table: Data List
ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
CORR,.,var01,1.0000,9.0000,8.0000,7.0000
CORR,.,var02,9.0000,1.0000,6.0000,5.0000
CORR,.,var03,8.0000,6.0000,1.0000,4.0000
CORR,.,var04,7.0000,5.0000,4.0000,1.0000
STDDEV,.,,1.0000,2.0000,3.0000,4.0000
CORR,0,var01,1.0000,9.0000,8.0000,7.0000
CORR,0,var02,9.0000,1.0000,6.0000,5.0000
CORR,0,var03,8.0000,6.0000,1.0000,4.0000
CORR,0,var04,7.0000,5.0000,4.0000,1.0000
STDDEV,0,,1.0000,2.0000,3.0000,4.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:505"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_850
#AT_START_851
at_fn_group_banner 851 'matrix-data.at:525' \
  "MATRIX DATA - bad number" "                       " 73
at_xfail=no
(
  printf "%s\n" "851. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_  var01 var02 var03 var04
    /format = upper diagonal.

begin data
corr        1 9 8 7
corr        1 x 5
corr        1 4
corr        1
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:541: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:541"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix-data.sps:7.15: error: Field contents are not numeric.

Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04
CORR,var01,1.0000,9.0000,8.0000,7.0000
CORR,var02,9.0000,1.0000,.    ,5.0000
CORR,var03,8.0000,.    ,1.0000,4.0000
CORR,var04,7.0000,5.0000,4.0000,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix-data.at:541"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_851
#AT_START_852
at_fn_group_banner 852 'matrix-data.at:553' \
  "MATRIX DATA - long variable names" "              " 73
at_xfail=no
(
  printf "%s\n" "852. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_  var01 var_two variable_number_three variableFour
    /format = upper diagonal.

begin data
mean         34  35  36  37
sd           22  11  55  66
n_vector    100 101 102 103
corr          1   9   8   7
corr              1   6   5
corr                  1   4
corr                      1
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:572: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:572"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var_two,variable_number_three,variableFour
MEAN,,34.0000,35.0000,36.0000,37.0000
STDDEV,,22.0000,11.0000,55.0000,66.0000
N,,100.0000,101.0000,102.0000,103.0000
CORR,var01,1.0000,9.0000,8.0000,7.0000
CORR,var_two,9.0000,1.0000,6.0000,5.0000
CORR,variable_number_three,8.0000,6.0000,1.0000,4.0000
CORR,variableFour,7.0000,5.0000,4.0000,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:572"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_852
#AT_START_853
at_fn_group_banner 853 'matrix-data.at:585' \
  "MATRIX DATA - read integrity" "                   " 73
at_xfail=no
(
  printf "%s\n" "853. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-reader.sps <<'_ATEOF'
matrix data
    variables = rowtype_  var01 to var9
    /format = full.

begin data
n    1  2  3  4  5  6  7  8  9
sd   100 200 300 400 500 600 700 800 900
corr 11 12 13 14 15 16 17 18 19
corr 21 22 23 24 25 26 27 28 29
corr 31 32 33 34 35 36 37 38 39
corr 41 42 43 44 45 46 47 48 49
corr 51 52 53 54 55 56 57 58 59
corr 61 62 63 64 65 66 67 68 69
corr 71 72 73 74 75 76 77 78 79
corr 81 82 83 84 85 86 87 88 89
corr 91 92 93 94 95 96 97 98 99
end data.
DEBUG MATRIX READ.
FORMATS var01 to var09(F3.0).
list.
factor  /matrix = in (corr = *)
	/analysis var02 var04 var06
	/method = correlation
	/rotation = norotate
	/print correlation.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:618: pspp --testing-mode -O format=csv matrix-reader.sps"
at_fn_check_prepare_trace "matrix-data.at:618"
( $at_check_trace; pspp --testing-mode -O format=csv matrix-reader.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Debug Matrix Reader
,,,var01,var02,var03,var04,var05,var06,var07,var08,var09
1,Correlation,var01,11.000,12.000,13.000,14.000,15.000,16.000,17.000,18.000,19.000
,,var02,21.000,22.000,23.000,24.000,25.000,26.000,27.000,28.000,29.000
,,var03,31.000,32.000,33.000,34.000,35.000,36.000,37.000,38.000,39.000
,,var04,41.000,42.000,43.000,44.000,45.000,46.000,47.000,48.000,49.000
,,var05,51.000,52.000,53.000,54.000,55.000,56.000,57.000,58.000,59.000
,,var06,61.000,62.000,63.000,64.000,65.000,66.000,67.000,68.000,69.000
,,var07,71.000,72.000,73.000,74.000,75.000,76.000,77.000,78.000,79.000
,,var08,81.000,82.000,83.000,84.000,85.000,86.000,87.000,88.000,89.000
,,var09,91.000,92.000,93.000,94.000,95.000,96.000,97.000,98.000,99.000
,N,Value,1.000,2.000,3.000,4.000,5.000,6.000,7.000,8.000,9.000
,Standard Deviation,Value,100.000,200.000,300.000,400.000,500.000,600.000,700.000,800.000,900.000

Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08,var09
N,,1,2,3,4,5,6,7,8,9
STDDEV,,100,200,300,400,500,600,700,800,900
CORR,var01,11,12,13,14,15,16,17,18,19
CORR,var02,21,22,23,24,25,26,27,28,29
CORR,var03,31,32,33,34,35,36,37,38,39
CORR,var04,41,42,43,44,45,46,47,48,49
CORR,var05,51,52,53,54,55,56,57,58,59
CORR,var06,61,62,63,64,65,66,67,68,69
CORR,var07,71,72,73,74,75,76,77,78,79
CORR,var08,81,82,83,84,85,86,87,88,89
CORR,var09,91,92,93,94,95,96,97,98,99

Table: Correlation Matrix
,,var02,var04,var06
Correlation,var02,22.000,24.000,26.000
,var04,42.000,44.000,46.000
,var06,62.000,64.000,66.000

Table: Component Matrix
,Component,
,1,2
var02,6.73,-2.23
var04,6.95,2.15
var06,9.22,.01
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:618"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_853
#AT_START_854
at_fn_group_banner 854 'matrix-data.at:662' \
  "MATRIX DATA - too many rows" "                    " 73
at_xfail=no
(
  printf "%s\n" "854. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_
    var01 var02 var03 var04
    / format = upper diagonal .
begin data
    mean     21.4  5.0  72.9  17.4
    sd       6.5  1.6  22.8  5.7
    n       106  106  106  106
    corr    1.00  .32  .48  .28
    corr    1.00  .72  .54  .44
    corr    1.00  .50  .59  .64
    corr    1.00  .62  .49  -.30
    corr    1.00  .56  -.38  .52
    corr    1.00  -.73  .91  .80
    corr    1.00  -.65  -.60
    corr    1.00  .70
    corr    1.00
end data .
FORMATS var01 TO var04 (F6.2).
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:688: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:688"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix-data.sps:10.29-10.31: error: Extraneous data expecting end of line.

matrix-data.sps:11.24-11.31: error: Extraneous data expecting end of line.

matrix-data.sps:12.19-12.32: error: Extraneous data expecting end of line.

matrix-data.sps:18: error: Matrix CORR had 9 rows but 4 rows were expected.

Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04
MEAN,,21.40,5.00,72.90,17.40
STDDEV,,6.50,1.60,22.80,5.70
N,,106.00,106.00,106.00,106.00
CORR,var01,1.00,.32,.48,.28
CORR,var02,.32,1.00,.72,.54
CORR,var03,.48,.72,1.00,.50
CORR,var04,.28,.54,.50,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix-data.at:688"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_854
#AT_START_855
at_fn_group_banner 855 'matrix-data.at:709' \
  "MATRIX DATA - too few rows" "                     " 73
at_xfail=no
(
  printf "%s\n" "855. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_ s1 var01 var02 var03 var04
    /split s1
    /format = upper diagonal
    /file='matrix-data.txt'.
FORMATS var01 TO var04 (F6.2).
LIST.
_ATEOF

cat >matrix-data.txt <<'_ATEOF'
mean 1    21.4  5.0  72.9  17.4
sd   1    6.5  1.6  22.8  5.7
n    1   106  106  106  106
corr 1   1.00  .32  .48  .28
corr 2   1.00  .32  .48  .28
corr 2        2.00  .72  .54
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:728: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:728"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix-data.txt:5: error: Matrix CORR had 1 rows but 4 rows were expected.

matrix-data.txt:6: error: Matrix CORR had 2 rows but 4 rows were expected.

Table: Split Values
Variable,Value
s1,1

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
1,MEAN,,21.40,5.00,72.90,17.40
1,STDDEV,,6.50,1.60,22.80,5.70
1,N,,106.00,106.00,106.00,106.00
1,CORR,var01,1.00,.32,.48,.28
1,CORR,var02,.32,1.00,.  ,.  
1,CORR,var03,.48,.  ,1.00,.  
1,CORR,var04,.28,.  ,.  ,1.00

Table: Split Values
Variable,Value
s1,2

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
2,CORR,var01,1.00,.32,.48,.28
2,CORR,var02,.32,2.00,.72,.54
2,CORR,var03,.48,.72,1.00,.  
2,CORR,var04,.28,.54,.  ,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix-data.at:728"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_855
#AT_START_856
at_fn_group_banner 856 'matrix-data.at:760' \
  "MATRIX DATA - badly formed" "                     " 73
at_xfail=no
(
  printf "%s\n" "856. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.sps <<'_ATEOF'
data list list NOTABLE /ROWTYPE_ (a8) VARNAME_(a4) v1 v2 v3 v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx.
begin data
mean ""                          1 2 3 4
sd   ""                          5 6 7 8
n    ""                          2 3 4 5
corr v1                          11 22 33 44
corr v2                          55 66 77 88
corr v3                          111 222 333 444
corr v4                           4 3 21 1
end data.

DEBUG MATRIX READ.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:776: pspp --testing-mode -O format=csv data.sps"
at_fn_check_prepare_trace "matrix-data.at:776"
( $at_check_trace; pspp --testing-mode -O format=csv data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "data.sps:12: warning: DEBUG MATRIX READ: CORR matrix has 4 columns but 3 rows named variables to be analyzed (and 1 rows named unknown variables).

Table: Debug Matrix Reader
,,,v1,v2,v3,v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx
1,Correlation,v1,11.000,22.000,33.000,44.000
,,v2,55.000,66.000,77.000,88.000
,,v3,111.000,222.000,333.000,444.000
,,v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx,.   ,.   ,.   ,.   
,N,Value,2.000,3.000,4.000,5.000
,Mean,Value,1.000,2.000,3.000,4.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:776"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_856
#AT_START_857
at_fn_group_banner 857 'matrix-data.at:790' \
  "MATRIX DATA - N subcommand" "                     " 73
at_xfail=no
(
  printf "%s\n" "857. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
matrix data
    variables = rowtype_  var01 var02 var03 var04
    /n = 99
    /format = upper nodiagonal.
begin data
mean 34 35 36 37
sd   22 11 55 66
n_vector 1 2 3 4
corr  9 8 7
corr  6 5
corr  4
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:808: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:808"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix-data.sps:8: error: N record is not allowed with N subcommand.  Ignoring N record.

Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04
N,,99.0000,99.0000,99.0000,99.0000
MEAN,,34.0000,35.0000,36.0000,37.0000
STDDEV,,22.0000,11.0000,55.0000,66.0000
CORR,var01,1.0000,9.0000,8.0000,7.0000
CORR,var02,9.0000,1.0000,6.0000,5.0000
CORR,var03,8.0000,6.0000,1.0000,4.0000
CORR,var04,7.0000,5.0000,4.0000,1.0000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix-data.at:808"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_857
#AT_START_858
at_fn_group_banner 858 'matrix-data.at:824' \
  "MATRIX DATA - N subcommand - 2" "                 " 73
at_xfail=no
(
  printf "%s\n" "858. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=ROWTYPE_ var01 TO var08
    /FORMAT=UPPER NODIAGONAL
    /N 92.
BEGIN DATA.
MEAN  24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
SD     5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
CORR         .17   .50  -.33   .27   .36  -.22   .18
CORR               .29   .29  -.20   .32   .12   .38
CORR                     .05   .20  -.15   .16   .21
CORR                           .20   .32  -.17   .12
CORR                                 .27   .12  -.24
CORR                                      -.20  -.38
CORR                                             .04
END DATA.
FORMATS var01 TO var08(F6.2).
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:845: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:845"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
CORR,var01,1.00,.17,.50,-.33,.27,.36,-.22,.18
CORR,var02,.17,1.00,.29,.29,-.20,.32,.12,.38
CORR,var03,.50,.29,1.00,.05,.20,-.15,.16,.21
CORR,var04,-.33,.29,.05,1.00,.20,.32,-.17,.12
CORR,var05,.27,-.20,.20,.20,1.00,.27,.12,-.24
CORR,var06,.36,.32,-.15,.32,.27,1.00,-.20,-.38
CORR,var07,-.22,.12,.16,-.17,.12,-.20,1.00,.04
CORR,var08,.18,.38,.21,.12,-.24,-.38,.04,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:845"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_858
#AT_START_859
at_fn_group_banner 859 'matrix-data.at:864' \
  "MATRIX DATA - crash" "                            " 73
at_xfail=no
(
  printf "%s\n" "859. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >matrix-data.sps <<'_ATEOF'
begin data
corr 31

matrix data
    var1
begin data
    corr    1.00
end data .

matrix data
    variables = roxtype_  var01
   /format = upper nodiagonal.
begin data
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:882: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:882"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/matrix-data.at:882"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_859
#AT_START_860
at_fn_group_banner 860 'matrix-data.at:886' \
  "MATRIX DATA - LOWER DIAGONAL without ROWTYPE_" "  " 73
at_xfail=no
(
  printf "%s\n" "860. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=var01 TO var08
   /CONTENTS=MEAN SD N CORR.
BEGIN DATA.
24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
 5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
  92    92    92    92    92    92    92    92
1.00
 .18  1.00
-.22  -.17  1.00
 .36   .31  -.14  1.00
 .27   .16  -.12   .22  1.00
 .33   .15  -.17   .24   .21  1.00
 .50   .29  -.20   .32   .12   .38  1.00
 .17   .29  -.05   .20   .27   .20   .04  1.00
END DATA.
FORMATS var01 TO var08(F5.2).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:907: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:907"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:907"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_860
#AT_START_861
at_fn_group_banner 861 'matrix-data.at:925' \
  "MATRIX DATA - LOWER DIAGONAL with N and without ROWTYPE_" "" 73
at_xfail=no
(
  printf "%s\n" "861. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=var01 TO var08
   /CONTENTS=MEAN SD CORR
   /N 92.
BEGIN DATA.
24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
 5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
1.00
 .18  1.00
-.22  -.17  1.00
 .36   .31  -.14  1.00
 .27   .16  -.12   .22  1.00
 .33   .15  -.17   .24   .21  1.00
 .50   .29  -.20   .32   .12   .38  1.00
 .17   .29  -.05   .20   .27   .20   .04  1.00
END DATA.
FORMATS var01 TO var08(F5.2).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:946: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:946"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:946"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_861
#AT_START_862
at_fn_group_banner 862 'matrix-data.at:963' \
  "MATRIX DATA - extraneous data without ROWTYPE_" " " 73
at_xfail=no
(
  printf "%s\n" "862. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=var01 TO var08
   /CONTENTS=MEAN SD N CORR.
BEGIN DATA.
24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
 5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
  92    92    92    92    92    92    92    92
1.00   .18
 .18  1.00
-.22  -.17  1.00
 .36   .31  -.14  1.00
 .27   .16  -.12   .22  1.00
 .33   .15  -.17   .24   .21  1.00
 .50   .29  -.20   .32   .12   .38  1.00
 .17   .29  -.05   .20   .27   .20   .04  1.00
END DATA.
FORMATS var01 TO var08(F5.2).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:984: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:984"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix-data.sps:8.8-8.10: error: Extraneous data expecting end of line.

Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix-data.at:984"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_862
#AT_START_863
at_fn_group_banner 863 'matrix-data.at:1004' \
  "MATRIX DATA - Split variables with explicit values without ROWTYPE_" "" 73
at_xfail=no
(
  printf "%s\n" "863. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=s1 var01 TO var04
    /SPLIT=s1
    /FORMAT=FULL
    /CONTENTS=MEAN SD N CORR.
BEGIN DATA.
0 34 35 36 37
0 22 11 55 66
0 99 98 99 92
0  1 .9 .8 .7
0 .9  1 .6 .5
0 .8 .6  1 .4
0 .7 .5 .4  1
1 44 45 34 39
1 23 15 51 46
1 98 34 87 23
1  1 .2 .3 .4
1 .2  1 .5 .6
1 .3 .5  1 .7
1 .4 .6 .7  1
END DATA.
FORMATS var01 TO var04(F5.2).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:1030: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:1030"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
s1,0

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
0,MEAN,,34.00,35.00,36.00,37.00
0,STDDEV,,22.00,11.00,55.00,66.00
0,N,,99.00,98.00,99.00,92.00
0,CORR,var01,1.00,.90,.80,.70
0,CORR,var02,.90,1.00,.60,.50
0,CORR,var03,.80,.60,1.00,.40
0,CORR,var04,.70,.50,.40,1.00

Table: Split Values
Variable,Value
s1,1

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
1,MEAN,,44.00,45.00,34.00,39.00
1,STDDEV,,23.00,15.00,51.00,46.00
1,N,,98.00,34.00,87.00,23.00
1,CORR,var01,1.00,.20,.30,.40
1,CORR,var02,.20,1.00,.50,.60
1,CORR,var03,.30,.50,1.00,.70
1,CORR,var04,.40,.60,.70,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:1030"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_863
#AT_START_864
at_fn_group_banner 864 'matrix-data.at:1062' \
  "MATRIX DATA - Split variables with explicit values with N and without ROWTYPE_" "" 73
at_xfail=no
(
  printf "%s\n" "864. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=s1 var01 TO var04
    /SPLIT=s1
    /FORMAT=FULL
    /CONTENTS=MEAN SD CORR
    /N=99.
BEGIN DATA.
0 34 35 36 37
0 22 11 55 66
0  1 .9 .8 .7
0 .9  1 .6 .5
0 .8 .6  1 .4
0 .7 .5 .4  1
1 44 45 34 39
1 23 15 51 46
1  1 .2 .3 .4
1 .2  1 .5 .6
1 .3 .5  1 .7
1 .4 .6 .7  1
END DATA.
FORMATS var01 TO var04(F5.2).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:1087: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:1087"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
s1,0

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
0,N,,99.00,99.00,99.00,99.00
0,MEAN,,34.00,35.00,36.00,37.00
0,STDDEV,,22.00,11.00,55.00,66.00
0,CORR,var01,1.00,.90,.80,.70
0,CORR,var02,.90,1.00,.60,.50
0,CORR,var03,.80,.60,1.00,.40
0,CORR,var04,.70,.50,.40,1.00

Table: Split Values
Variable,Value
s1,1

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
1,N,,99.00,99.00,99.00,99.00
1,MEAN,,44.00,45.00,34.00,39.00
1,STDDEV,,23.00,15.00,51.00,46.00
1,CORR,var01,1.00,.20,.30,.40
1,CORR,var02,.20,1.00,.50,.60
1,CORR,var03,.30,.50,1.00,.70
1,CORR,var04,.40,.60,.70,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:1087"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_864
#AT_START_865
at_fn_group_banner 865 'matrix-data.at:1119' \
  "MATRIX DATA - Split variable with sequential values without ROWTYPE_" "" 73
at_xfail=no
(
  printf "%s\n" "865. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=var01 TO var04
    /SPLIT=s1
    /FORMAT=FULL
    /CONTENTS=MEAN SD N CORR.
BEGIN DATA.
34 35 36 37
22 11 55 66
99 98 99 92
 1 .9 .8 .7
.9  1 .6 .5
.8 .6  1 .4
.7 .5 .4  1
44 45 34 39
23 15 51 46
98 34 87 23
 1 .2 .3 .4
.2  1 .5 .6
.3 .5  1 .7
.4 .6 .7  1
END DATA.
FORMATS var01 TO var04(F5.2).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:1145: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:1145"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
s1,1

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
1,MEAN,,34.00,35.00,36.00,37.00
1,STDDEV,,22.00,11.00,55.00,66.00
1,N,,99.00,98.00,99.00,92.00
1,CORR,var01,1.00,.90,.80,.70
1,CORR,var02,.90,1.00,.60,.50
1,CORR,var03,.80,.60,1.00,.40
1,CORR,var04,.70,.50,.40,1.00

Table: Split Values
Variable,Value
s1,2

Table: Data List
s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
2,MEAN,,44.00,45.00,34.00,39.00
2,STDDEV,,23.00,15.00,51.00,46.00
2,N,,98.00,34.00,87.00,23.00
2,CORR,var01,1.00,.20,.30,.40
2,CORR,var02,.20,1.00,.50,.60
2,CORR,var03,.30,.50,1.00,.70
2,CORR,var04,.40,.60,.70,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:1145"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_865
#AT_START_866
at_fn_group_banner 866 'matrix-data.at:1177' \
  "MATRIX DATA - Factor variables grouping within-cell records by factor without ROWTYPE_" "" 73
at_xfail=no
(
  printf "%s\n" "866. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=f1 var01 TO var04
    /FACTOR=f1
    /CELLS=2
    /CONTENTS=(MEAN SD N) CORR.
BEGIN DATA.
0 34 35 36 37
0 22 11 55 66
0 99 98 99 92
1 44 45 34 39
1 23 15 51 46
1 98 34 87 23
   1
  .9  1
  .8 .6  1
  .7 .5 .4  1
END DATA.
FORMATS var01 TO var04(F5.1).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:1199: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:1199"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
MEAN,0,,34.0,35.0,36.0,37.0
STDDEV,0,,22.0,11.0,55.0,66.0
N,0,,99.0,98.0,99.0,92.0
MEAN,1,,44.0,45.0,34.0,39.0
STDDEV,1,,23.0,15.0,51.0,46.0
N,1,,98.0,34.0,87.0,23.0
CORR,.,var01,1.0,.9,.8,.7
CORR,.,var02,.9,1.0,.6,.5
CORR,.,var03,.8,.6,1.0,.4
CORR,.,var04,.7,.5,.4,1.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:1199"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_866
#AT_START_867
at_fn_group_banner 867 'matrix-data.at:1216' \
  "MATRIX DATA - Factor variables grouping within-cell records by row type without ROWTYPE_" "" 73
at_xfail=no
(
  printf "%s\n" "867. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=f1 var01 TO var04
    /FACTOR=f1
    /CELLS=2
    /CONTENTS=(MEAN) (SD) (N) CORR.
BEGIN DATA.
0 34 35 36 37
1 44 45 34 39
0 22 11 55 66
1 23 15 51 46
0 99 98 99 92
1 98 34 87 23
   1
  .9  1
  .8 .6  1
  .7 .5 .4  1
END DATA.
FORMATS var01 TO var04(F5.1).
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:1238: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:1238"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
MEAN,0,,34.0,35.0,36.0,37.0
MEAN,1,,44.0,45.0,34.0,39.0
STDDEV,0,,22.0,11.0,55.0,66.0
STDDEV,1,,23.0,15.0,51.0,46.0
N,0,,99.0,98.0,99.0,92.0
N,1,,98.0,34.0,87.0,23.0
CORR,.,var01,1.0,.9,.8,.7
CORR,.,var02,.9,1.0,.6,.5
CORR,.,var03,.8,.6,1.0,.4
CORR,.,var04,.7,.5,.4,1.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:1238"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_867
#AT_START_868
at_fn_group_banner 868 'matrix-data.at:1254' \
  "MATRIX DATA - syntax errors" "                    " 73
at_xfail=no
(
  printf "%s\n" "868. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA VARIABLES=var01 varname_.
MATRIX DATA VARIABLES=v v v.
MATRIX DATA VARIABLES=rowtype_ v1 v2 v3/SPLIT=rowtype_.
MATRIX DATA VARIABLES=rowtype_ v1 v2 v3/FACTORS=rowtype_.
MATRIX DATA VARIABLES=rowtype_ s1 v1 v2 v3/SPLIT=v1/FACTORS=v1.

MATRIX DATA VARIABLES=v1 v2 v3/FORMAT=FULL NODIAGONAL.
MATRIX DATA VARIABLES=v1 v2 v3/FACTORS=v1.
MATRIX DATA VARIABLES=v1 v2 v3.
BEGIN DATA.
END DATA.
MATRIX DATA VARIABLES=v1/FACTORS=v1.
MATRIX DATA VARIABLES=v1 v2 v3 ROWTYPE_.
MATRIX DATA VARIABLES=v1 v2 v3/CONTENTS=N/N=5.
MATRIX DATA VARIABLES=v1/CONTENTS=XYZZY.
MATRIX DATA VARIABLES=v1/CONTENTS=(.
MATRIX DATA VARIABLES=v1/CONTENTS=(CORR.
MATRIX DATA VARIABLES=v1/CONTENTS=).
MATRIX DATA.
MATRIX DATA VARIABLES=v*.
MATRIX DATA VARIABLES=v/N=-1.
MATRIX DATA VARIABLES=v/FORMAT=XYZZY.
MATRIX DATA VARIABLES=v/FILE=123.
MATRIX DATA VARIABLES=v/SPLIT=123.
MATRIX DATA VARIABLES=v/CELLS=-1.
MATRIX DATA VARIABLES=v/XYZZY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:1283: pspp matrix-data.sps -O format=csv"
at_fn_check_prepare_trace "matrix-data.at:1283"
( $at_check_trace; pspp matrix-data.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"matrix-data.sps:1.23-1.36: error: MATRIX DATA: VARIABLES may not include VARNAME_.
    1 | MATRIX DATA VARIABLES=var01 varname_.
      |                       ^~~~~~~~~~~~~~\"

\"matrix-data.sps:2.25: error: MATRIX DATA: Variable v appears twice in variable list.
    2 | MATRIX DATA VARIABLES=v v v.
      |                         ^\"

\"matrix-data.sps:3.47-3.54: error: MATRIX DATA: ROWTYPE_ is not allowed on SPLIT or FACTORS.
    3 | MATRIX DATA VARIABLES=rowtype_ v1 v2 v3/SPLIT=rowtype_.
      |                                               ^~~~~~~~\"

\"matrix-data.sps:4.49-4.56: error: MATRIX DATA: ROWTYPE_ is not allowed on SPLIT or FACTORS.
    4 | MATRIX DATA VARIABLES=rowtype_ v1 v2 v3/FACTORS=rowtype_.
      |                                                 ^~~~~~~~\"

\"matrix-data.sps:5.61-5.62: error: MATRIX DATA: v1 may not appear on both SPLIT and FACTORS.
    5 | MATRIX DATA VARIABLES=rowtype_ s1 v1 v2 v3/SPLIT=v1/FACTORS=v1.
      |                                                             ^~\"

\"matrix-data.sps:7.32-7.53: error: MATRIX DATA: FORMAT=FULL and FORMAT=NODIAGONAL are mutually exclusive.
    7 | MATRIX DATA VARIABLES=v1 v2 v3/FORMAT=FULL NODIAGONAL.
      |                                ^~~~~~~~~~~~~~~~~~~~~~\"

matrix-data.sps:8: error: MATRIX DATA: CELLS is required when factor variables are specified and VARIABLES does not include ROWTYPE_.

matrix-data.sps:9: warning: MATRIX DATA: CONTENTS was not specified and VARIABLES does not include ROWTYPE_.  Assuming CONTENTS=CORR.

matrix-data.sps:12: error: MATRIX DATA: CELLS is required when factor variables are specified and VARIABLES does not include ROWTYPE_.

\"matrix-data.sps:13.13-13.39: error: MATRIX DATA: VARIABLES includes ROWTYPE_ but the continuous variables are not the last ones on VARIABLES.
   13 | MATRIX DATA VARIABLES=v1 v2 v3 ROWTYPE_.
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"matrix-data.sps:14.43-14.45: error: MATRIX DATA: Cannot specify N on CONTENTS along with the N subcommand.
   14 | MATRIX DATA VARIABLES=v1 v2 v3/CONTENTS=N/N=5.
      |                                           ^~~\"

\"matrix-data.sps:15.35-15.39: error: MATRIX DATA: Syntax error expecting one of the following: CORR, COV, MAT, N_MATRIX, PROX, COUNT, DFE, MEAN, MSE, STDDEV, N, N_SCALAR, N_VECTOR, SD.
   15 | MATRIX DATA VARIABLES=v1/CONTENTS=XYZZY.
      |                                   ^~~~~\"

\"matrix-data.sps:16.36: error: MATRIX DATA: Syntax error expecting one of the following: CORR, COV, MAT, N_MATRIX, PROX, COUNT, DFE, MEAN, MSE, STDDEV, N, N_SCALAR, N_VECTOR, SD.
   16 | MATRIX DATA VARIABLES=v1/CONTENTS=(.
      |                                    ^\"

\"matrix-data.sps:17.40: error: MATRIX DATA: Syntax error expecting one of the following: CORR, COV, MAT, N_MATRIX, PROX, COUNT, DFE, MEAN, MSE, STDDEV, N, N_SCALAR, N_VECTOR, SD.
   17 | MATRIX DATA VARIABLES=v1/CONTENTS=(CORR.
      |                                        ^\"

\"matrix-data.sps:18.35: error: MATRIX DATA: Syntax error expecting one of the following: CORR, COV, MAT, N_MATRIX, PROX, COUNT, DFE, MEAN, MSE, STDDEV, N, N_SCALAR, N_VECTOR, SD.
   18 | MATRIX DATA VARIABLES=v1/CONTENTS=).
      |                                   ^\"

\"matrix-data.sps:19.12: error: MATRIX DATA: Syntax error expecting VARIABLES.
   19 | MATRIX DATA.
      |            ^\"

\"matrix-data.sps:20.24: error: MATRIX DATA: Syntax error expecting \`/'.
   20 | MATRIX DATA VARIABLES=v*.
      |                        ^\"

\"matrix-data.sps:21.27-21.28: error: MATRIX DATA: Syntax error expecting non-negative integer for N.
   21 | MATRIX DATA VARIABLES=v/N=-1.
      |                           ^~\"

\"matrix-data.sps:22.32-22.36: error: MATRIX DATA: Syntax error expecting LIST, FREE, UPPER, LOWER, FULL, DIAGONAL, or NODIAGONAL.
   22 | MATRIX DATA VARIABLES=v/FORMAT=XYZZY.
      |                                ^~~~~\"

\"matrix-data.sps:23.30-23.32: error: MATRIX DATA: Syntax error expecting a file name or handle name.
   23 | MATRIX DATA VARIABLES=v/FILE=123.
      |                              ^~~\"

\"matrix-data.sps:24.31-24.33: error: MATRIX DATA: Syntax error expecting variable name.
   24 | MATRIX DATA VARIABLES=v/SPLIT=123.
      |                               ^~~\"

\"matrix-data.sps:25.31-25.32: error: MATRIX DATA: Syntax error expecting non-negative integer for CELLS.
   25 | MATRIX DATA VARIABLES=v/CELLS=-1.
      |                               ^~\"

\"matrix-data.sps:26.25-26.29: error: MATRIX DATA: Syntax error expecting N, FORMAT, FILE, SPLIT, FACTORS, CELLS, or CONTENTS.
   26 | MATRIX DATA VARIABLES=v/XYZZY.
      |                         ^~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix-data.at:1283"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_868
#AT_START_869
at_fn_group_banner 869 'matrix-data.at:1374' \
  "MATRIX DATA - plus and minus as delimiters" "     " 73
at_xfail=no
(
  printf "%s\n" "869. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-data.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=ROWTYPE_ var01 TO var08.
BEGIN DATA.
MEAN+24.3+5.4+69.7+20.1+13.4+2.7+27.9+3.7
SD +5.7+1.5+23.5+5.8+2.8+4.5+5.4+1.5
N+92+92+92+92+92+92+92+92
CORR+1.00
CORR+.18+1.00
CORR-.22e+0-.17+1.00
CORR+.36d-0+.31-.14+1.00
CORR+.27+.16-.12+.22+1.00
CORR+.33+.15-.17+.24+.21+1.00
CORR+.50+.29-.20+.32+.12+.38+1.00
CORR+.17+.29-.05+.20+.27+.20+.04+1.00
END DATA.
FORMATS var01 TO var08(F5.2).
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix-data.at:1395: pspp -O format=csv matrix-data.sps"
at_fn_check_prepare_trace "matrix-data.at:1395"
( $at_check_trace; pspp -O format=csv matrix-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix-data.at:1395"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_869
#AT_START_870
at_fn_group_banner 870 'matrix-reader.at:3' \
  "Matrix reader - negative tests" "                 " 74
at_xfail=no
(
  printf "%s\n" "870. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-reader.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /s1 (f1) ROWTYPE_(a8) f1 (f1) VARNAME_ (a8) c1 to c5 (f8.2).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (f1) VARNAME_(a8) f1 (f1) ROWTYPE_ (a8) c1 to c5 (f8.2).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (f1) ROWTYPE_(f8) f1 (f1) VARNAME_ (a8) c1 to c5 (f8.2).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (f1) ROWTYPE_(a8) f1 (f1) VARNAME_ (f8) c1 to c5 (f8.2).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (f1) ROWTPYE_(a8) f1 (f1) VARNAME_ (a8) c1 to c5 (f8.2).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (f1) ROWTYPE_(a8) f1 (f1) VARANME_ (a8) c1 to c5 (f8.2).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (a1) ROWTYPE_(a8) f1 (f1) VARNAME_ (a8) c1 to c5 (f8.2).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (f1) ROWTYPE_(a8) f1 (a1) VARNAME_ (a8) c1 to c5 (f8.2).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (f1) ROWTYPE_(a8) f1 (f1) VARNAME_ (a8) c1 to c5 (a8).
DEBUG MATRIX READ NODATA.

DATA LIST LIST NOTABLE /s1 (f1) ROWTYPE_(a8) f1 (f1) VARNAME_ (a8).
DEBUG MATRIX READ NODATA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix-reader.at:35: pspp matrix-reader.sps --testing-mode -O format=csv"
at_fn_check_prepare_trace "matrix-reader.at:35"
( $at_check_trace; pspp matrix-reader.sps --testing-mode -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix-reader.sps:5: error: DEBUG MATRIX READ: Variable ROWTYPE_ must precede VARNAME_ in matrix file dictionary.

matrix-reader.sps:8: error: DEBUG MATRIX READ: Matrix dataset variable ROWTYPE_ should be of string type.

matrix-reader.sps:11: error: DEBUG MATRIX READ: Matrix dataset variable VARNAME_ should be of string type.

matrix-reader.sps:14: error: DEBUG MATRIX READ: Matrix dataset lacks a variable called ROWTYPE_.

matrix-reader.sps:17: error: DEBUG MATRIX READ: Matrix dataset lacks a variable called VARNAME_.

matrix-reader.sps:20: error: DEBUG MATRIX READ: Matrix dataset variable s1 should be numeric.

matrix-reader.sps:23: error: DEBUG MATRIX READ: Matrix dataset variable f1 should be numeric.

matrix-reader.sps:26: error: DEBUG MATRIX READ: Matrix dataset variable c1 should be numeric.

matrix-reader.sps:29: error: DEBUG MATRIX READ: Matrix dataset does not have any continuous variables.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix-reader.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_870
#AT_START_871
at_fn_group_banner 871 'matrix.at:3' \
  "MATRIX - empty matrices" "                        " 75
at_xfail=no
(
  printf "%s\n" "871. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE a={}.
PRINT a.
COMPUTE b={a; 1; 2; 3}.
PRINT b.
COMPUTE c={a, 1, 2, 3}.
PRINT c.
/* Multiplication of empty matrices previously assert-failed in blas.
COMPUTE d = a * a.
PRINT d.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:17: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:17"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a

b
  1
  2
  3

c
  1  2  3

d
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:17"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_871
#AT_START_872
at_fn_group_banner 872 'matrix.at:32' \
  "MATRIX - submatrices as rvalues - all columns or all rows" "" 75
at_xfail=no
(
  printf "%s\n" "872. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(1, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}({1}, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}({1, 2}, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}({1, 2, 3}, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}({1; 3; 2}, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}({1, 3, 3}, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(1:2, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(1:3, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}({}, :).

PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 1).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1}).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1, 2}).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1, 2, 3}).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1; 3; 2}).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1, 3, 3}).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 1:2).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 1:3).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {}).

PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, :).

PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(0, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 0).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(4, :).
PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 4).

PRINT {}(:,{}).
PRINT {}({},:).
PRINT {}({},{}).

PRINT {1, 2, 3, 4}({1, 2; 3, 4}, :).
PRINT {1, 2, 3, 4}(:, {1, 2; 3, 4}).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:70: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:70"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "{1, 2, 3; 4, 5, 6; 7, 8, 9}(1, :)
  1  2  3

{1, 2, 3; 4, 5, 6; 7, 8, 9}({1}, :)
  1  2  3

{1, 2, 3; 4, 5, 6; 7, 8, 9}({1, 2}, :)
  1  2  3
  4  5  6

{1, 2, 3; 4, 5, 6; 7, 8, 9}({1, 2, 3}, :)
  1  2  3
  4  5  6
  7  8  9

{1, 2, 3; 4, 5, 6; 7, 8, 9}({1; 3; 2}, :)
  1  2  3
  7  8  9
  4  5  6

{1, 2, 3; 4, 5, 6; 7, 8, 9}({1, 3, 3}, :)
  1  2  3
  7  8  9
  7  8  9

{1, 2, 3; 4, 5, 6; 7, 8, 9}(1:2, :)
  1  2  3
  4  5  6

{1, 2, 3; 4, 5, 6; 7, 8, 9}(1:3, :)
  1  2  3
  4  5  6
  7  8  9

{1, 2, 3; 4, 5, 6; 7, 8, 9}({}, :)

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 1)
  1
  4
  7

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1})
  1
  4
  7

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1, 2})
  1  2
  4  5
  7  8

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1, 2, 3})
  1  2  3
  4  5  6
  7  8  9

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1; 3; 2})
  1  3  2
  4  6  5
  7  9  8

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {1, 3, 3})
  1  3  3
  4  6  6
  7  9  9

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 1:2)
  1  2
  4  5
  7  8

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 1:3)
  1  2  3
  4  5  6
  7  8  9

{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, {})



{1, 2, 3; 4, 5, 6; 7, 8, 9}(:, :)
  1  2  3
  4  5  6
  7  8  9

matrix.sps:24.35: error: MATRIX: 0 is not a valid row index for a 3×3 matrix.
   24 | PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(0, :).
      |                                   ^

matrix.sps:25.38: error: MATRIX: 0 is not a valid column index for a 3×3
matrix.
   25 | PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 0).
      |                                      ^

matrix.sps:26.35: error: MATRIX: 4 is not a valid row index for a 3×3 matrix.
   26 | PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(4, :).
      |                                   ^

matrix.sps:27.38: error: MATRIX: 4 is not a valid column index for a 3×3
matrix.
   27 | PRINT {1, 2, 3; 4, 5, 6; 7, 8, 9}(:, 4).
      |                                      ^

{}(:,{})

{}({},:)

{}({},{})

matrix.sps:33.20-33.31: error: MATRIX: Matrix row index must be scalar or
vector, not a 2×2 matrix.
   33 | PRINT {1, 2, 3, 4}({1, 2; 3, 4}, :).
      |                    ^~~~~~~~~~~~

matrix.sps:34.23-34.34: error: MATRIX: Matrix column index must be scalar or
vector, not a 2×2 matrix.
   34 | PRINT {1, 2, 3, 4}(:, {1, 2; 3, 4}).
      |                       ^~~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:70"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_872
#AT_START_873
at_fn_group_banner 873 'matrix.at:192' \
  "MATRIX - COMPUTE submatrices as lvalues" "        " 75
at_xfail=no
(
  printf "%s\n" "873. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE y={1, 2, 3; 4, 5, 6; 7, 8, 9}.

COMPUTE x1=y.
COMPUTE x1(1, :) = {11, 12, 13}.
PRINT x1.

COMPUTE x2=y.
COMPUTE x2(2, :) = {14, 15, 16}.
PRINT x2.

COMPUTE x3=y.
COMPUTE x3(3, :) = {17, 18, 19}.
PRINT x3.

COMPUTE x4=y.
COMPUTE x4(:, 1) = {11; 14; 17}.
PRINT x4.

COMPUTE x5=y.
COMPUTE x5(:, 2) = {12; 15; 18}.
PRINT x5.

COMPUTE x6=y.
COMPUTE x6(:, 3) = {13; 16; 19}.
PRINT x6.

COMPUTE x7=y.
COMPUTE x7(1, 1) = 11.
PRINT x7.

COMPUTE x8=y.
COMPUTE x8(1:2, 2:3) = {12, 13; 15, 16}.
PRINT x8.

COMPUTE x9=y.
COMPUTE x9({3, 1}, {2; 3}) = {18, 19; 12, 13}.
PRINT x9.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:234: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:234"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "x1
  11  12  13
   4   5   6
   7   8   9

x2
   1   2   3
  14  15  16
   7   8   9

x3
   1   2   3
   4   5   6
  17  18  19

x4
  11   2   3
  14   5   6
  17   8   9

x5
   1  12   3
   4  15   6
   7  18   9

x6
   1   2  13
   4   5  16
   7   8  19

x7
  11   2   3
   4   5   6
   7   8   9

x8
   1  12  13
   4  15  16
   7   8   9

x9
   1  12  13
   4   5   6
   7  18  19
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:234"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_873
#AT_START_874
at_fn_group_banner 874 'matrix.at:282' \
  "MATRIX - COMPUTE submatrices as lvalues - negative" "" 75
at_xfail=no
(
  printf "%s\n" "874. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE x={1, 2, 3; 4, 5, 6; 7, 8, 9}.
COMPUTE x(1, :) = {}.
COMPUTE x(1, :) = 15.
COMPUTE x(1, :) = {11, 12}.
COMPUTE x(1, :) = {11, 12, 13, 14}.
COMPUTE x(:, 1) = {}.
COMPUTE x(:, 1) = 15.
COMPUTE x(:, 1) = {11, 12}.
COMPUTE x(:, 1) = {11, 12, 13, 14}.
COMPUTE x(:) = 1.
COMPUTE x(0, 1) = 1.
COMPUTE x(1, 0) = 1.
COMPUTE x({1, 0, 2}, 1) = {1; 2; 3}.
COMPUTE x(4, 3) = 1.
COMPUTE x(3, 4) = 1.
COMPUTE x({1, 2; 3, 4}, 5) = 1.
COMPUTE x(3, {1, 2; 3, 4}) = 1.
PRINT x.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:305: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:305"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:3.9-3.15: error: MATRIX: Numbers of indexes for assigning to x
differ from the size of the source matrix.
    3 | COMPUTE x(1, :) = {}.
      |         ^~~~~~~

matrix.sps:3.11: note: MATRIX: There is 1 row index.
    3 | COMPUTE x(1, :) = {}.
      |           ^

matrix.sps:3.14: note: MATRIX: Destination matrix x has 3 columns.
    3 | COMPUTE x(1, :) = {}.
      |              ^

matrix.sps:3.19-3.20: note: MATRIX: The source matrix is 0×0.
    3 | COMPUTE x(1, :) = {}.
      |                   ^~

matrix.sps:4.9-4.15: error: MATRIX: Number of column indexes for assigning to x
differs from number of columns in source matrix.
    4 | COMPUTE x(1, :) = 15.
      |         ^~~~~~~

matrix.sps:4.14: note: MATRIX: Destination matrix x has 3 columns.
    4 | COMPUTE x(1, :) = 15.
      |              ^

matrix.sps:4.19-4.20: note: MATRIX: The source matrix is 1×1.
    4 | COMPUTE x(1, :) = 15.
      |                   ^~

matrix.sps:5.9-5.15: error: MATRIX: Number of column indexes for assigning to x
differs from number of columns in source matrix.
    5 | COMPUTE x(1, :) = {11, 12}.
      |         ^~~~~~~

matrix.sps:5.14: note: MATRIX: Destination matrix x has 3 columns.
    5 | COMPUTE x(1, :) = {11, 12}.
      |              ^

matrix.sps:5.19-5.26: note: MATRIX: The source matrix is 1×2.
    5 | COMPUTE x(1, :) = {11, 12}.
      |                   ^~~~~~~~

matrix.sps:6.9-6.15: error: MATRIX: Number of column indexes for assigning to x
differs from number of columns in source matrix.
    6 | COMPUTE x(1, :) = {11, 12, 13, 14}.
      |         ^~~~~~~

matrix.sps:6.14: note: MATRIX: Destination matrix x has 3 columns.
    6 | COMPUTE x(1, :) = {11, 12, 13, 14}.
      |              ^

matrix.sps:6.19-6.34: note: MATRIX: The source matrix is 1×4.
    6 | COMPUTE x(1, :) = {11, 12, 13, 14}.
      |                   ^~~~~~~~~~~~~~~~

matrix.sps:7.9-7.15: error: MATRIX: Numbers of indexes for assigning to x
differ from the size of the source matrix.
    7 | COMPUTE x(:, 1) = {}.
      |         ^~~~~~~

matrix.sps:7.11: note: MATRIX: Destination matrix x has 3 rows.
    7 | COMPUTE x(:, 1) = {}.
      |           ^

matrix.sps:7.14: note: MATRIX: There is 1 column index.
    7 | COMPUTE x(:, 1) = {}.
      |              ^

matrix.sps:7.19-7.20: note: MATRIX: The source matrix is 0×0.
    7 | COMPUTE x(:, 1) = {}.
      |                   ^~

matrix.sps:8.9-8.15: error: MATRIX: Number of row indexes for assigning to x
differs from number of rows in source matrix.
    8 | COMPUTE x(:, 1) = 15.
      |         ^~~~~~~

matrix.sps:8.11: note: MATRIX: Destination matrix x has 3 rows.
    8 | COMPUTE x(:, 1) = 15.
      |           ^

matrix.sps:8.19-8.20: note: MATRIX: The source matrix is 1×1.
    8 | COMPUTE x(:, 1) = 15.
      |                   ^~

matrix.sps:9.9-9.15: error: MATRIX: Numbers of indexes for assigning to x
differ from the size of the source matrix.
    9 | COMPUTE x(:, 1) = {11, 12}.
      |         ^~~~~~~

matrix.sps:9.11: note: MATRIX: Destination matrix x has 3 rows.
    9 | COMPUTE x(:, 1) = {11, 12}.
      |           ^

matrix.sps:9.14: note: MATRIX: There is 1 column index.
    9 | COMPUTE x(:, 1) = {11, 12}.
      |              ^

matrix.sps:9.19-9.26: note: MATRIX: The source matrix is 1×2.
    9 | COMPUTE x(:, 1) = {11, 12}.
      |                   ^~~~~~~~

matrix.sps:10.9-10.15: error: MATRIX: Numbers of indexes for assigning to x
differ from the size of the source matrix.
   10 | COMPUTE x(:, 1) = {11, 12, 13, 14}.
      |         ^~~~~~~

matrix.sps:10.11: note: MATRIX: Destination matrix x has 3 rows.
   10 | COMPUTE x(:, 1) = {11, 12, 13, 14}.
      |           ^

matrix.sps:10.14: note: MATRIX: There is 1 column index.
   10 | COMPUTE x(:, 1) = {11, 12, 13, 14}.
      |              ^

matrix.sps:10.19-10.34: note: MATRIX: The source matrix is 1×4.
   10 | COMPUTE x(:, 1) = {11, 12, 13, 14}.
      |                   ^~~~~~~~~~~~~~~~

matrix.sps:11.9-11.12: error: MATRIX: Can't use vector indexing on 3×3 matrix
x.
   11 | COMPUTE x(:) = 1.
      |         ^~~~

matrix.sps:12.11: error: MATRIX: 0 is not a valid row index for a 3×3 matrix.
   12 | COMPUTE x(0, 1) = 1.
      |           ^

matrix.sps:13.14: error: MATRIX: 0 is not a valid column index for a 3×3
matrix.
   13 | COMPUTE x(1, 0) = 1.
      |              ^

matrix.sps:14.11-14.19: error: MATRIX: 0 is not a valid row index for a 3×3
matrix.
   14 | COMPUTE x({1, 0, 2}, 1) = {1; 2; 3}.
      |           ^~~~~~~~~

matrix.sps:15.11: error: MATRIX: 4 is not a valid row index for a 3×3 matrix.
   15 | COMPUTE x(4, 3) = 1.
      |           ^

matrix.sps:16.14: error: MATRIX: 4 is not a valid column index for a 3×3
matrix.
   16 | COMPUTE x(3, 4) = 1.
      |              ^

matrix.sps:17.11-17.22: error: MATRIX: Matrix row index must be scalar or
vector, not a 2×2 matrix.
   17 | COMPUTE x({1, 2; 3, 4}, 5) = 1.
      |           ^~~~~~~~~~~~

matrix.sps:18.14-18.25: error: MATRIX: Matrix column index must be scalar or
vector, not a 2×2 matrix.
   18 | COMPUTE x(3, {1, 2; 3, 4}) = 1.
      |              ^~~~~~~~~~~~

x
  1  2  3
  4  5  6
  7  8  9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:305"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_874
#AT_START_875
at_fn_group_banner 875 'matrix.at:471' \
  "MATRIX - subvectors as rvalues" "                 " 75
at_xfail=no
(
  printf "%s\n" "875. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT {10, 20, 30}({}).
PRINT {10, 20, 30}(2).
PRINT {10, 20, 30}({2}).
PRINT {10, 20, 30}({1,3}).
PRINT {10, 20, 30}({2,3}).
PRINT {10, 20, 30}({1;3}).
PRINT {10, 20, 30}({2;3}).
PRINT {10, 20, 30}(2:3).
PRINT {10, 20, 30}(:).

PRINT {10; 20; 30}({}).
PRINT {10; 20; 30}(2).
PRINT {10; 20; 30}({2}).
PRINT {10; 20; 30}({1,3}).
PRINT {10; 20; 30}({2,3}).
PRINT {10; 20; 30}({1;3}).
PRINT {10; 20; 30}({2;3}).
PRINT {10; 20; 30}(2:3).
PRINT {10; 20; 30}(:).

PRINT {}({}).

PRINT {1, 2; 3, 4}(:).
PRINT {1, 2, 3, 4}({1, 2; 3, 4}).
PRINT {1, 2, 3, 4}(0).
PRINT {1, 2, 3, 4}(5).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:502: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:502"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "{10, 20, 30}({})

{10, 20, 30}(2)
  20

{10, 20, 30}({2})
  20

{10, 20, 30}({1,3})
  10  30

{10, 20, 30}({2,3})
  20  30

{10, 20, 30}({1;3})
  10  30

{10, 20, 30}({2;3})
  20  30

{10, 20, 30}(2:3)
  20  30

{10, 20, 30}(:)
  10  20  30

{10; 20; 30}({})

{10; 20; 30}(2)
  20

{10; 20; 30}({2})
  20

{10; 20; 30}({1,3})
  10
  30

{10; 20; 30}({2,3})
  20
  30

{10; 20; 30}({1;3})
  10
  30

{10; 20; 30}({2;3})
  20
  30

{10; 20; 30}(2:3)
  20
  30

{10; 20; 30}(:)
  10
  20
  30

{}({})

matrix.sps:24.7-24.18: error: MATRIX: Vector index operator may not be applied
to a 2×2 matrix.
   24 | PRINT {1, 2; 3, 4}(:).
      |       ^~~~~~~~~~~~

matrix.sps:25.20-25.31: error: MATRIX: Vector index must be scalar or vector,
not a 2×2 matrix.
   25 | PRINT {1, 2, 3, 4}({1, 2; 3, 4}).
      |                    ^~~~~~~~~~~~

matrix.sps:26.20: error: MATRIX: Index 0 is out of range for vector with 4
elements.
   26 | PRINT {1, 2, 3, 4}(0).
      |                    ^

matrix.sps:27.20: error: MATRIX: Index 5 is out of range for vector with 4
elements.
   27 | PRINT {1, 2, 3, 4}(5).
      |                    ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:502"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_875
#AT_START_876
at_fn_group_banner 876 'matrix.at:586' \
  "MATRIX - COMPUTE subvectors as lvalues" "         " 75
at_xfail=no
(
  printf "%s\n" "876. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE r={1, 2, 3, 4, 5, 6, 7, 8, 9}.

COMPUTE r1=r.
COMPUTE r1(:) = {11, 12, 13, 14, 15, 16, 17, 18, 19}.
PRINT r1.

COMPUTE r2=r.
COMPUTE r2(:) = {11; 12; 13; 14; 15; 16; 17; 18; 19}.
PRINT r2.

COMPUTE r3=r.
COMPUTE r3(1) = 11.
PRINT r3.

COMPUTE r4=r.
COMPUTE r4(1:2) = {11:12}.
PRINT r4.

COMPUTE r5=r.
COMPUTE r5({8;9}) = {18:19}.
PRINT r5.

COMPUTE c={1, 2, 3, 4, 5, 6, 7, 8, 9}.

COMPUTE c1=c.
COMPUTE c1(:) = {11, 12, 13, 14, 15, 16, 17, 18, 19}.
PRINT c1.

COMPUTE c2=c.
COMPUTE c2(:) = {11; 12; 13; 14; 15; 16; 17; 18; 19}.
PRINT c2.

COMPUTE c3=c.
COMPUTE c3(1) = 11.
PRINT c3.

COMPUTE c4=c.
COMPUTE c4(1:2) = {11:12}.
PRINT c4.

COMPUTE c5=c.
COMPUTE c5(8:9) = {18:19}.
PRINT c5.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:634: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:634"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "r1
  11  12  13  14  15  16  17  18  19

r2
  11  12  13  14  15  16  17  18  19

r3
  11   2   3   4   5   6   7   8   9

r4
  11  12   3   4   5   6   7   8   9

r5
   1   2   3   4   5   6   7  18  19

c1
  11  12  13  14  15  16  17  18  19

c2
  11  12  13  14  15  16  17  18  19

c3
  11   2   3   4   5   6   7   8   9

c4
  11  12   3   4   5   6   7   8   9

c5
   1   2   3   4   5   6   7  18  19
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:634"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_876
#AT_START_877
at_fn_group_banner 877 'matrix.at:667' \
  "MATRIX - COMPUTE subvectors as lvalues - negative" "" 75
at_xfail=no
(
  printf "%s\n" "877. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE r={1, 2, 3, 4, 5, 6, 7, 8, 9}.
COMPUTE r(1:3) = {1, 2; 3, 4}.
COMPUTE r(1:3) = {}.
COMPUTE r(1:3) = {1}.
COMPUTE r(1:3) = {1, 2}.
COMPUTE r(1:3) = {1, 2, 3, 4}.
COMPUTE r(1:3) = {}.
COMPUTE r(1:3) = {1}.
COMPUTE r(1:3) = {1; 2}.
COMPUTE r(1:3) = {1; 2; 3; 4}.
COMPUTE r(:) = {1; 2; 3; 4}.
COMPUTE r(0) = 5.
COMPUTE r(10) = 5.
COMPUTE r({1, 2; 3, 4}) = 1.

COMPUTE c={1, 2, 3, 4, 5, 6, 7, 8, 9}.
COMPUTE c(1:3) = {1, 2; 3, 4}.
COMPUTE c(1:3) = {}.
COMPUTE c(1:3) = {1}.
COMPUTE c(1:3) = {1, 2}.
COMPUTE c(1:3) = {1, 2, 3, 4}.
COMPUTE c(1:3) = {}.
COMPUTE c(1:3) = {1}.
COMPUTE c(1:3) = {1; 2}.
COMPUTE c(1:3) = {1; 2; 3; 4}.
COMPUTE c(:) = {1; 2; 3; 4}.
COMPUTE c(0) = 5.
COMPUTE c(10) = 5.
COMPUTE c({1, 2; 3, 4}) = 1.

COMPUTE m = {1, 2; 3, 4}.
COMPUTE m(5) = 1.
COMPUTE m(:) = 1.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:705: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:705"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:3.9-3.14: error: MATRIX: Only an 3-element vector may be assigned to
this 3-element subvector of r.
    3 | COMPUTE r(1:3) = {1, 2; 3, 4}.
      |         ^~~~~~

matrix.sps:3.18-3.29: error: MATRIX: The source is an 2×2 matrix.
    3 | COMPUTE r(1:3) = {1, 2; 3, 4}.
      |                  ^~~~~~~~~~~~

matrix.sps:4.9-4.14: error: MATRIX: Only an 3-element vector may be assigned to
this 3-element subvector of r.
    4 | COMPUTE r(1:3) = {}.
      |         ^~~~~~

matrix.sps:4.18-4.19: error: MATRIX: The source vector has 0 elements.
    4 | COMPUTE r(1:3) = {}.
      |                  ^~

matrix.sps:5.9-5.14: error: MATRIX: Only an 3-element vector may be assigned to
this 3-element subvector of r.
    5 | COMPUTE r(1:3) = {1}.
      |         ^~~~~~

matrix.sps:5.19: error: MATRIX: The source vector has 1 element.
    5 | COMPUTE r(1:3) = {1}.
      |                   ^

matrix.sps:6.9-6.14: error: MATRIX: Only an 3-element vector may be assigned to
this 3-element subvector of r.
    6 | COMPUTE r(1:3) = {1, 2}.
      |         ^~~~~~

matrix.sps:6.18-6.23: error: MATRIX: The source vector has 2 elements.
    6 | COMPUTE r(1:3) = {1, 2}.
      |                  ^~~~~~

matrix.sps:7.9-7.14: error: MATRIX: Only an 3-element vector may be assigned to
this 3-element subvector of r.
    7 | COMPUTE r(1:3) = {1, 2, 3, 4}.
      |         ^~~~~~

matrix.sps:7.18-7.29: error: MATRIX: The source vector has 4 elements.
    7 | COMPUTE r(1:3) = {1, 2, 3, 4}.
      |                  ^~~~~~~~~~~~

matrix.sps:8.9-8.14: error: MATRIX: Only an 3-element vector may be assigned to
this 3-element subvector of r.
    8 | COMPUTE r(1:3) = {}.
      |         ^~~~~~

matrix.sps:8.18-8.19: error: MATRIX: The source vector has 0 elements.
    8 | COMPUTE r(1:3) = {}.
      |                  ^~

matrix.sps:9.9-9.14: error: MATRIX: Only an 3-element vector may be assigned to
this 3-element subvector of r.
    9 | COMPUTE r(1:3) = {1}.
      |         ^~~~~~

matrix.sps:9.19: error: MATRIX: The source vector has 1 element.
    9 | COMPUTE r(1:3) = {1}.
      |                   ^

matrix.sps:10.9-10.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of r.
   10 | COMPUTE r(1:3) = {1; 2}.
      |         ^~~~~~

matrix.sps:10.18-10.23: error: MATRIX: The source vector has 2 elements.
   10 | COMPUTE r(1:3) = {1; 2}.
      |                  ^~~~~~

matrix.sps:11.9-11.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of r.
   11 | COMPUTE r(1:3) = {1; 2; 3; 4}.
      |         ^~~~~~

matrix.sps:11.18-11.29: error: MATRIX: The source vector has 4 elements.
   11 | COMPUTE r(1:3) = {1; 2; 3; 4}.
      |                  ^~~~~~~~~~~~

matrix.sps:12.9-12.12: error: MATRIX: Only an 9-element vector may be assigned
to this 9-element subvector of r.
   12 | COMPUTE r(:) = {1; 2; 3; 4}.
      |         ^~~~

matrix.sps:12.16-12.27: error: MATRIX: The source vector has 4 elements.
   12 | COMPUTE r(:) = {1; 2; 3; 4}.
      |                ^~~~~~~~~~~~

matrix.sps:13.11: error: MATRIX: Index 0 is out of range for vector with 9
elements.
   13 | COMPUTE r(0) = 5.
      |           ^

matrix.sps:14.11-14.12: error: MATRIX: Index 10 is out of range for vector with
9 elements.
   14 | COMPUTE r(10) = 5.
      |           ^~

matrix.sps:15.11-15.22: error: MATRIX: Vector index must be scalar or vector,
not a 2×2 matrix.
   15 | COMPUTE r({1, 2; 3, 4}) = 1.
      |           ^~~~~~~~~~~~

matrix.sps:18.9-18.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   18 | COMPUTE c(1:3) = {1, 2; 3, 4}.
      |         ^~~~~~

matrix.sps:18.18-18.29: error: MATRIX: The source is an 2×2 matrix.
   18 | COMPUTE c(1:3) = {1, 2; 3, 4}.
      |                  ^~~~~~~~~~~~

matrix.sps:19.9-19.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   19 | COMPUTE c(1:3) = {}.
      |         ^~~~~~

matrix.sps:19.18-19.19: error: MATRIX: The source vector has 0 elements.
   19 | COMPUTE c(1:3) = {}.
      |                  ^~

matrix.sps:20.9-20.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   20 | COMPUTE c(1:3) = {1}.
      |         ^~~~~~

matrix.sps:20.19: error: MATRIX: The source vector has 1 element.
   20 | COMPUTE c(1:3) = {1}.
      |                   ^

matrix.sps:21.9-21.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   21 | COMPUTE c(1:3) = {1, 2}.
      |         ^~~~~~

matrix.sps:21.18-21.23: error: MATRIX: The source vector has 2 elements.
   21 | COMPUTE c(1:3) = {1, 2}.
      |                  ^~~~~~

matrix.sps:22.9-22.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   22 | COMPUTE c(1:3) = {1, 2, 3, 4}.
      |         ^~~~~~

matrix.sps:22.18-22.29: error: MATRIX: The source vector has 4 elements.
   22 | COMPUTE c(1:3) = {1, 2, 3, 4}.
      |                  ^~~~~~~~~~~~

matrix.sps:23.9-23.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   23 | COMPUTE c(1:3) = {}.
      |         ^~~~~~

matrix.sps:23.18-23.19: error: MATRIX: The source vector has 0 elements.
   23 | COMPUTE c(1:3) = {}.
      |                  ^~

matrix.sps:24.9-24.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   24 | COMPUTE c(1:3) = {1}.
      |         ^~~~~~

matrix.sps:24.19: error: MATRIX: The source vector has 1 element.
   24 | COMPUTE c(1:3) = {1}.
      |                   ^

matrix.sps:25.9-25.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   25 | COMPUTE c(1:3) = {1; 2}.
      |         ^~~~~~

matrix.sps:25.18-25.23: error: MATRIX: The source vector has 2 elements.
   25 | COMPUTE c(1:3) = {1; 2}.
      |                  ^~~~~~

matrix.sps:26.9-26.14: error: MATRIX: Only an 3-element vector may be assigned
to this 3-element subvector of c.
   26 | COMPUTE c(1:3) = {1; 2; 3; 4}.
      |         ^~~~~~

matrix.sps:26.18-26.29: error: MATRIX: The source vector has 4 elements.
   26 | COMPUTE c(1:3) = {1; 2; 3; 4}.
      |                  ^~~~~~~~~~~~

matrix.sps:27.9-27.12: error: MATRIX: Only an 9-element vector may be assigned
to this 9-element subvector of c.
   27 | COMPUTE c(:) = {1; 2; 3; 4}.
      |         ^~~~

matrix.sps:27.16-27.27: error: MATRIX: The source vector has 4 elements.
   27 | COMPUTE c(:) = {1; 2; 3; 4}.
      |                ^~~~~~~~~~~~

matrix.sps:28.11: error: MATRIX: Index 0 is out of range for vector with 9
elements.
   28 | COMPUTE c(0) = 5.
      |           ^

matrix.sps:29.11-29.12: error: MATRIX: Index 10 is out of range for vector with
9 elements.
   29 | COMPUTE c(10) = 5.
      |           ^~

matrix.sps:30.11-30.22: error: MATRIX: Vector index must be scalar or vector,
not a 2×2 matrix.
   30 | COMPUTE c({1, 2; 3, 4}) = 1.
      |           ^~~~~~~~~~~~

matrix.sps:33.9-33.12: error: MATRIX: Can't use vector indexing on 2×2 matrix
m.
   33 | COMPUTE m(5) = 1.
      |         ^~~~

matrix.sps:34.9-34.12: error: MATRIX: Can't use vector indexing on 2×2 matrix
m.
   34 | COMPUTE m(:) = 1.
      |         ^~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:705"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_877
#AT_START_878
at_fn_group_banner 878 'matrix.at:928' \
  "MATRIX - COMPUTE - negative" "                    " 75
at_xfail=no
(
  printf "%s\n" "878. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE x.
COMPUTE x=.
COMPUTE x(5)=1.
COMPUTE y(5)=1.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:937: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:937"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.10: error: COMPUTE: Syntax error expecting \`='.
    2 | COMPUTE x.
      |          ^

matrix.sps:3.11: error: COMPUTE: Syntax error expecting matrix expression.
    3 | COMPUTE x=.
      |           ^

matrix.sps:4.9: error: MATRIX: Undefined variable x.
    4 | COMPUTE x(5)=1.
      |         ^

matrix.sps:5.9: error: COMPUTE: Undefined variable y.
    5 | COMPUTE y(5)=1.
      |         ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:937"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_878
#AT_START_879
at_fn_group_banner 879 'matrix.at:956' \
  "MATRIX - elementwise arithmetic operators" "      " 75
at_xfail=no
(
  printf "%s\n" "879. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT (-(5)).
PRINT (-{1,2;3,4}).

PRINT ({1,2;3,4} + {5,6;7,8}).
PRINT ({1,2;3,4} + 5).
PRINT (5 + {5,6;7,8}).
PRINT ({1,2;3,4} + {5,6}).

PRINT ({1,2;3,4} - {5,6;7,8}).
PRINT ({1,2;3,4} - 5).
PRINT (5 - {5,6;7,8}).
PRINT ({1,2;3,4} - {5,6}).

PRINT ({1,2;3,4} * 5).
PRINT (5 * {5,6;7,8}).

PRINT ({2,4;6,8} / 2).
PRINT (12 / {1,2;3,4}).
PRINT ({2,8;18,32} / {1,2;3,4}).

PRINT ({1,2;3,4} &* {5,6;7,8}).
PRINT ({1,2;3,4} &* 5).
PRINT (5 &* {5,6;7,8}).
PRINT ({1,2;3,4} &* {5,6}).

PRINT ({2,4;6,8} &/ 2).
PRINT (12 &/ {1,2;3,4}).
PRINT ({2,8;18,32} &/ {1,2;3,4}).

PRINT ({1,2;3,4} &** 2).
PRINT (2 &** {1,2;3,4}).
PRINT ({1,2;3,4} &** {2,3;4,5}).
PRINT ({1,2;3,4} &** {5,6}).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:994: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:994"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(-(5))
 -5

(-{1,2;3,4})
 -1 -2
 -3 -4

({1,2;3,4} + {5,6;7,8})
   6   8
  10  12

({1,2;3,4} + 5)
  6  7
  8  9

(5 + {5,6;7,8})
  10  11
  12  13

matrix.sps:8.8-8.24: error: MATRIX: The operands of + must have the same
dimensions or one must be a scalar.
    8 | PRINT ({1,2;3,4} + {5,6}).
      |        ^~~~~~~~~~~~~~~~~

matrix.sps:8.8-8.16: note: MATRIX: The left-hand operand is a 2×2 matrix.
    8 | PRINT ({1,2;3,4} + {5,6}).
      |        ^~~~~~~~~

matrix.sps:8.20-8.24: note: MATRIX: The right-hand operand is a 1×2 matrix.
    8 | PRINT ({1,2;3,4} + {5,6}).
      |                    ^~~~~

({1,2;3,4} - {5,6;7,8})
 -4 -4
 -4 -4

({1,2;3,4} - 5)
 -4 -3
 -2 -1

(5 - {5,6;7,8})
  0 -1
 -2 -3

matrix.sps:13.8-13.24: error: MATRIX: The operands of - must have the same
dimensions or one must be a scalar.
   13 | PRINT ({1,2;3,4} - {5,6}).
      |        ^~~~~~~~~~~~~~~~~

matrix.sps:13.8-13.16: note: MATRIX: The left-hand operand is a 2×2 matrix.
   13 | PRINT ({1,2;3,4} - {5,6}).
      |        ^~~~~~~~~

matrix.sps:13.20-13.24: note: MATRIX: The right-hand operand is a 1×2 matrix.
   13 | PRINT ({1,2;3,4} - {5,6}).
      |                    ^~~~~

({1,2;3,4} * 5)
   5  10
  15  20

(5 * {5,6;7,8})
  25  30
  35  40

({2,4;6,8} / 2)
  1  2
  3  4

(12 / {1,2;3,4})
  12   6
   4   3

({2,8;18,32} / {1,2;3,4})
  2  4
  6  8

({1,2;3,4} &* {5,6;7,8})
   5  12
  21  32

({1,2;3,4} &* 5)
   5  10
  15  20

(5 &* {5,6;7,8})
  25  30
  35  40

matrix.sps:25.8-25.25: error: MATRIX: The operands of &* must have the same
dimensions or one must be a scalar.
   25 | PRINT ({1,2;3,4} &* {5,6}).
      |        ^~~~~~~~~~~~~~~~~~

matrix.sps:25.8-25.16: note: MATRIX: The left-hand operand is a 2×2 matrix.
   25 | PRINT ({1,2;3,4} &* {5,6}).
      |        ^~~~~~~~~

matrix.sps:25.21-25.25: note: MATRIX: The right-hand operand is a 1×2 matrix.
   25 | PRINT ({1,2;3,4} &* {5,6}).
      |                     ^~~~~

({2,4;6,8} &/ 2)
  1  2
  3  4

(12 &/ {1,2;3,4})
  12   6
   4   3

({2,8;18,32} &/ {1,2;3,4})
  2  4
  6  8

({1,2;3,4} &** 2)
   1   4
   9  16

(2 &** {1,2;3,4})
   2   4
   8  16

({1,2;3,4} &** {2,3;4,5})
     1     8
    81  1024

matrix.sps:34.8-34.26: error: MATRIX: The operands of &** must have the same
dimensions or one must be a scalar.
   34 | PRINT ({1,2;3,4} &** {5,6}).
      |        ^~~~~~~~~~~~~~~~~~~

matrix.sps:34.8-34.16: note: MATRIX: The left-hand operand is a 2×2 matrix.
   34 | PRINT ({1,2;3,4} &** {5,6}).
      |        ^~~~~~~~~

matrix.sps:34.22-34.26: note: MATRIX: The right-hand operand is a 1×2 matrix.
   34 | PRINT ({1,2;3,4} &** {5,6}).
      |                      ^~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:994"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_879
#AT_START_880
at_fn_group_banner 880 'matrix.at:1136' \
  "MATRIX - relational operators" "                  " 75
at_xfail=no
(
  printf "%s\n" "880. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT ({1, 1; 2, 2} > {1, 2; 1, 2}).
PRINT ({1, 1; 2, 2} > 1).
PRINT (2 > {1, 2; 1, 2}).
PRINT ({1, 2} > {1; 2}).

PRINT ({1, 1; 2, 2} < {1, 2; 1, 2}).
PRINT ({1, 1; 2, 2} < 2).
PRINT (1 < {1, 2; 1, 2}).
PRINT ({1, 2} < {1; 2}).

PRINT ({1, 1; 2, 2} <> {1, 2; 1, 2}).
PRINT ({1, 1; 2, 2} <> 2).
PRINT (1 <> {1, 2; 1, 2}).
PRINT ({1, 2} <> {1; 2}).

PRINT ({1, 1; 2, 2} >= {1, 2; 1, 2}).
PRINT ({1, 1; 2, 2} >= 2).
PRINT (1 >= {1, 2; 1, 2}).
PRINT ({1, 2} >= {1; 2}).

PRINT ({1, 1; 2, 2} <= {1, 2; 1, 2}).
PRINT ({1, 1; 2, 2} <= 2).
PRINT (1 <= {1, 2; 1, 2}).
PRINT ({1, 2} <= {1; 2}).

PRINT ({1, 1; 2, 2} = {1, 2; 1, 2}).
PRINT ({1, 1; 2, 2} = 2).
PRINT (1 = {1, 2; 1, 2}).
PRINT ({1, 2} = {1; 2}).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1170: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1170"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "({1, 1; 2, 2} > {1, 2; 1, 2})
  0  0
  1  0

({1, 1; 2, 2} > 1)
  0  0
  1  1

(2 > {1, 2; 1, 2})
  1  0
  1  0

matrix.sps:5.8-5.22: error: MATRIX: The operands of > must have the same
dimensions or one must be a scalar.
    5 | PRINT ({1, 2} > {1; 2}).
      |        ^~~~~~~~~~~~~~~

matrix.sps:5.8-5.13: note: MATRIX: The left-hand operand is a 1×2 matrix.
    5 | PRINT ({1, 2} > {1; 2}).
      |        ^~~~~~

matrix.sps:5.17-5.22: note: MATRIX: The right-hand operand is a 2×1 matrix.
    5 | PRINT ({1, 2} > {1; 2}).
      |                 ^~~~~~

({1, 1; 2, 2} < {1, 2; 1, 2})
  0  1
  0  0

({1, 1; 2, 2} < 2)
  1  1
  0  0

(1 < {1, 2; 1, 2})
  0  1
  0  1

matrix.sps:10.8-10.22: error: MATRIX: The operands of < must have the same
dimensions or one must be a scalar.
   10 | PRINT ({1, 2} < {1; 2}).
      |        ^~~~~~~~~~~~~~~

matrix.sps:10.8-10.13: note: MATRIX: The left-hand operand is a 1×2 matrix.
   10 | PRINT ({1, 2} < {1; 2}).
      |        ^~~~~~

matrix.sps:10.17-10.22: note: MATRIX: The right-hand operand is a 2×1 matrix.
   10 | PRINT ({1, 2} < {1; 2}).
      |                 ^~~~~~

({1, 1; 2, 2} <> {1, 2; 1, 2})
  0  1
  1  0

({1, 1; 2, 2} <> 2)
  1  1
  0  0

(1 <> {1, 2; 1, 2})
  0  1
  0  1

matrix.sps:15.8-15.23: error: MATRIX: The operands of <> must have the same
dimensions or one must be a scalar.
   15 | PRINT ({1, 2} <> {1; 2}).
      |        ^~~~~~~~~~~~~~~~

matrix.sps:15.8-15.13: note: MATRIX: The left-hand operand is a 1×2 matrix.
   15 | PRINT ({1, 2} <> {1; 2}).
      |        ^~~~~~

matrix.sps:15.18-15.23: note: MATRIX: The right-hand operand is a 2×1 matrix.
   15 | PRINT ({1, 2} <> {1; 2}).
      |                  ^~~~~~

({1, 1; 2, 2} >= {1, 2; 1, 2})
  1  0
  1  1

({1, 1; 2, 2} >= 2)
  0  0
  1  1

(1 >= {1, 2; 1, 2})
  1  0
  1  0

matrix.sps:20.8-20.23: error: MATRIX: The operands of >= must have the same
dimensions or one must be a scalar.
   20 | PRINT ({1, 2} >= {1; 2}).
      |        ^~~~~~~~~~~~~~~~

matrix.sps:20.8-20.13: note: MATRIX: The left-hand operand is a 1×2 matrix.
   20 | PRINT ({1, 2} >= {1; 2}).
      |        ^~~~~~

matrix.sps:20.18-20.23: note: MATRIX: The right-hand operand is a 2×1 matrix.
   20 | PRINT ({1, 2} >= {1; 2}).
      |                  ^~~~~~

({1, 1; 2, 2} <= {1, 2; 1, 2})
  1  1
  0  1

({1, 1; 2, 2} <= 2)
  1  1
  1  1

(1 <= {1, 2; 1, 2})
  1  1
  1  1

matrix.sps:25.8-25.23: error: MATRIX: The operands of <= must have the same
dimensions or one must be a scalar.
   25 | PRINT ({1, 2} <= {1; 2}).
      |        ^~~~~~~~~~~~~~~~

matrix.sps:25.8-25.13: note: MATRIX: The left-hand operand is a 1×2 matrix.
   25 | PRINT ({1, 2} <= {1; 2}).
      |        ^~~~~~

matrix.sps:25.18-25.23: note: MATRIX: The right-hand operand is a 2×1 matrix.
   25 | PRINT ({1, 2} <= {1; 2}).
      |                  ^~~~~~

({1, 1; 2, 2} = {1, 2; 1, 2})
  1  0
  0  1

({1, 1; 2, 2} = 2)
  0  0
  1  1

(1 = {1, 2; 1, 2})
  1  0
  1  0

matrix.sps:30.8-30.22: error: MATRIX: The operands of = must have the same
dimensions or one must be a scalar.
   30 | PRINT ({1, 2} = {1; 2}).
      |        ^~~~~~~~~~~~~~~

matrix.sps:30.8-30.13: note: MATRIX: The left-hand operand is a 1×2 matrix.
   30 | PRINT ({1, 2} = {1; 2}).
      |        ^~~~~~

matrix.sps:30.17-30.22: note: MATRIX: The right-hand operand is a 2×1 matrix.
   30 | PRINT ({1, 2} = {1; 2}).
      |                 ^~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:1170"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_880
#AT_START_881
at_fn_group_banner 881 'matrix.at:1323' \
  "MATRIX - logical operators" "                     " 75
at_xfail=no
(
  printf "%s\n" "881. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT (NOT {-1, 0, 1}).

PRINT ({-1, 0, 1; -1, 0, 1; -1, 0, 1} AND {-1, -1, -1; 0, 0, 0; 1, 1, 1}).
PRINT ({-1, 0, 1} AND -1).
PRINT ({-1, 0, 1} AND 0).
PRINT ({-1, 0, 1} AND 1).
PRINT ({-1, 0} AND {2; 3}).

PRINT ({-1, 0, 1; -1, 0, 1; -1, 0, 1} OR {-1, -1, -1; 0, 0, 0; 1, 1, 1}).
PRINT ({-1, 0, 1} OR -1).
PRINT ({-1, 0, 1} OR 0).
PRINT ({-1, 0, 1} OR 1).
PRINT ({-1, 0} OR {2; 3}).

PRINT ({-1, 0, 1; -1, 0, 1; -1, 0, 1} XOR {-1, -1, -1; 0, 0, 0; 1, 1, 1}).
PRINT ({-1, 0, 1} XOR -1).
PRINT ({-1, 0, 1} XOR 0).
PRINT ({-1, 0, 1} XOR 1).
PRINT ({-1, 0} XOR {2; 3}).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1347: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1347"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(NOT {-1, 0, 1})
  1  1  0

({-1, 0, 1; -1, 0, 1; -1, 0, 1} AND {-1, -1, -1; 0, 0, 0; 1, 1, 1})
  0  0  0
  0  0  0
  0  0  1

({-1, 0, 1} AND -1)
 0 0 0

({-1, 0, 1} AND 0)
 0 0 0

({-1, 0, 1} AND 1)
  0  0  1

matrix.sps:8.8-8.25: error: MATRIX: The operands of AND must have the same
dimensions or one must be a scalar.
    8 | PRINT ({-1, 0} AND {2; 3}).
      |        ^~~~~~~~~~~~~~~~~~

matrix.sps:8.8-8.14: note: MATRIX: The left-hand operand is a 1×2 matrix.
    8 | PRINT ({-1, 0} AND {2; 3}).
      |        ^~~~~~~

matrix.sps:8.20-8.25: note: MATRIX: The right-hand operand is a 2×1 matrix.
    8 | PRINT ({-1, 0} AND {2; 3}).
      |                    ^~~~~~

({-1, 0, 1; -1, 0, 1; -1, 0, 1} OR {-1, -1, -1; 0, 0, 0; 1, 1, 1})
  0  0  1
  0  0  1
  1  1  1

({-1, 0, 1} OR -1)
  0  0  1

({-1, 0, 1} OR 0)
  0  0  1

({-1, 0, 1} OR 1)
  1  1  1

matrix.sps:14.8-14.24: error: MATRIX: The operands of OR must have the same
dimensions or one must be a scalar.
   14 | PRINT ({-1, 0} OR {2; 3}).
      |        ^~~~~~~~~~~~~~~~~

matrix.sps:14.8-14.14: note: MATRIX: The left-hand operand is a 1×2 matrix.
   14 | PRINT ({-1, 0} OR {2; 3}).
      |        ^~~~~~~

matrix.sps:14.19-14.24: note: MATRIX: The right-hand operand is a 2×1 matrix.
   14 | PRINT ({-1, 0} OR {2; 3}).
      |                   ^~~~~~

({-1, 0, 1; -1, 0, 1; -1, 0, 1} XOR {-1, -1, -1; 0, 0, 0; 1, 1, 1})
  0  0  1
  0  0  1
  1  1  0

({-1, 0, 1} XOR -1)
  0  0  1

({-1, 0, 1} XOR 0)
  0  0  1

({-1, 0, 1} XOR 1)
  1  1  0

matrix.sps:20.8-20.25: error: MATRIX: The operands of XOR must have the same
dimensions or one must be a scalar.
   20 | PRINT ({-1, 0} XOR {2; 3}).
      |        ^~~~~~~~~~~~~~~~~~

matrix.sps:20.8-20.14: note: MATRIX: The left-hand operand is a 1×2 matrix.
   20 | PRINT ({-1, 0} XOR {2; 3}).
      |        ^~~~~~~

matrix.sps:20.20-20.25: note: MATRIX: The right-hand operand is a 2×1 matrix.
   20 | PRINT ({-1, 0} XOR {2; 3}).
      |                    ^~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:1347"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_881
#AT_START_882
at_fn_group_banner 882 'matrix.at:1434' \
  "MATRIX - matrix operators" "                      " 75
at_xfail=no
(
  printf "%s\n" "882. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT ({0, 1; 0, 0} * {0, 0; 1, 0}).
PRINT ({0, 0; 1, 0} * {0, 1; 0, 0}).
PRINT ({1, 2, 3; 4, 5, 6} * {7, 8; 9, 10; 11, 12}).
PRINT ({3, 4, 2} * {13, 9, 7, 15; 8, 7, 4, 6; 6, 4, 0, 3}).
COMPUTE m = {0, 1, 0, 0; 1, 0, 1, 0; 0, 1, 0, 1; 0, 0, 1, 0}.
PRINT m**-2.
PRINT m**-1.
PRINT m**0.
PRINT m**1.
PRINT m**2.
PRINT m**3.
PRINT m**5.
PRINT {3, 3.5; 3.2, 3.6}**-1/FORMAT F6.2.

PRINT ({1, 2, 3} * {1, 2}).
PRINT {1, 2, 3}**2.
PRINT m**{1, 2}.
PRINT m**1.5.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1457: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1457"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "({0, 1; 0, 0} * {0, 0; 1, 0})
  1  0
  0  0

({0, 0; 1, 0} * {0, 1; 0, 0})
  0  0
  0  1

({1, 2, 3; 4, 5, 6} * {7, 8; 9, 10; 11, 12})
   58   64
  139  154

({3, 4, 2} * {13, 9, 7, 15; 8, 7, 4, 6; 6, 4, 0, 3})
  83  63  37  75

m**-2
  2  0 -1  0
  0  1  0 -1
 -1  0  1  0
  0 -1  0  2

m**-1
  0  1  0 -1
  1  0  0  0
  0  0  0  1
 -1  0  1  0

m**0
  1  0  0  0
  0  1  0  0
  0  0  1  0
  0  0  0  1

m**1
  0  1  0  0
  1  0  1  0
  0  1  0  1
  0  0  1  0

m**2
  1  0  1  0
  0  2  0  1
  1  0  2  0
  0  1  0  1

m**3
  0  2  0  1
  2  0  3  0
  0  3  0  2
  1  0  2  0

m**5
  0  5  0  3
  5  0  8  0
  0  8  0  5
  3  0  5  0

{3, 3.5; 3.2, 3.6}**-1
  -9.00   8.75
   8.00  -7.50

matrix.sps:16.8-16.25: error: MATRIX: Matrices not conformable for
multiplication.
   16 | PRINT ({1, 2, 3} * {1, 2}).
      |        ^~~~~~~~~~~~~~~~~~

matrix.sps:16.8-16.16: note: MATRIX: The left-hand operand is a 1×3 matrix.
   16 | PRINT ({1, 2, 3} * {1, 2}).
      |        ^~~~~~~~~

matrix.sps:16.20-16.25: note: MATRIX: The right-hand operand is a 1×2 matrix.
   16 | PRINT ({1, 2, 3} * {1, 2}).
      |                    ^~~~~~

matrix.sps:17.7-17.15: error: MATRIX: Matrix exponentation with ** requires a
square matrix on the left-hand size, not one with dimensions 1×3.
   17 | PRINT {1, 2, 3}**2.
      |       ^~~~~~~~~

matrix.sps:18.10-18.15: error: MATRIX: Matrix exponentiation with ** requires a
scalar on the right-hand side, not a matrix with dimensions 1×2.
   18 | PRINT m**{1, 2}.
      |          ^~~~~~

matrix.sps:19.10-19.12: error: MATRIX: Exponent 1.5 in matrix exponentiation is
non-integer or outside the valid range.
   19 | PRINT m**1.5.
      |          ^~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:1457"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_882
#AT_START_883
at_fn_group_banner 883 'matrix.at:1549' \
  "MATRIX - sequences and construction" "            " 75
at_xfail=no
(
  printf "%s\n" "883. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT {1:3:-1}.
PRINT {1:3}.
PRINT {1:10:2}.
PRINT {1:11:2}.

PRINT {-1:-3}.
PRINT {-1:-3:-1}.
PRINT {-1:-10:-2}.
PRINT {-1:-11:-2}.

PRINT {1:1}.
PRINT {1:1:-1}.

PRINT {1:3:0}.
PRINT {-1:-3:0}.

PRINT {1, 2; 3}.
PRINT {{2; 5}, 3}.

PRINT {{1; 2}:3e50}.
PRINT {-9223372036854770000:9223372036854775807}.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1575: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1575"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:1575"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1576: sed 's/from -2147483648 to 2147483647/from -9007199254740992 to 9007199254740992/' stdout"
at_fn_check_prepare_trace "matrix.at:1576"
( $at_check_trace; sed 's/from -2147483648 to 2147483647/from -9007199254740992 to 9007199254740992/' stdout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "{1:3:-1}

{1:3}
  1  2  3

{1:10:2}
  1  3  5  7  9

{1:11:2}
   1   3   5   7   9  11

{-1:-3}

{-1:-3:-1}
 -1 -2 -3

{-1:-10:-2}
 -1 -3 -5 -7 -9

{-1:-11:-2}
  -1  -3  -5  -7  -9 -11

{1:1}
  1

{1:1:-1}
  1

matrix.sps:15.12: error: MATRIX: The increment operand to : must be nonzero.
   15 | PRINT {1:3:0}.
      |            ^

matrix.sps:16.14: error: MATRIX: The increment operand to : must be nonzero.
   16 | PRINT {-1:-3:0}.
      |              ^

matrix.sps:18.7-18.15: error: MATRIX: This expression tries to vertically join
matrices with differing numbers of columns.
   18 | PRINT {1, 2; 3}.
      |       ^~~~~~~~~

matrix.sps:18.8-18.11: note: MATRIX: This operand is a 1×2 matrix.
   18 | PRINT {1, 2; 3}.
      |        ^~~~

matrix.sps:18.14: note: MATRIX: This operand is a 1×1 matrix.
   18 | PRINT {1, 2; 3}.
      |              ^

matrix.sps:19.7-19.17: error: MATRIX: This expression tries to horizontally
join matrices with differing numbers of rows.
   19 | PRINT {{2; 5}, 3}.
      |       ^~~~~~~~~~~

matrix.sps:19.8-19.13: note: MATRIX: This operand is a 2×1 matrix.
   19 | PRINT {{2; 5}, 3}.
      |        ^~~~~~

matrix.sps:19.16: note: MATRIX: This operand is a 1×1 matrix.
   19 | PRINT {{2; 5}, 3}.
      |                ^

matrix.sps:21.8-21.18: error: MATRIX: All operands of : must be scalars in the
supported integer range.
   21 | PRINT {{1; 2}:3e50}.
      |        ^~~~~~~~~~~

matrix.sps:21.8-21.13: note: MATRIX: This operand is a 2×1 matrix.
   21 | PRINT {{1; 2}:3e50}.
      |        ^~~~~~

matrix.sps:21.15-21.18: note: MATRIX: This operand with value 3e+50 is outside
the supported integer range from -9007199254740992 to 9007199254740992.
   21 | PRINT {{1; 2}:3e50}.
      |               ^~~~

matrix.sps:22.8-22.47: error: MATRIX: All operands of : must be scalars in the
supported integer range.
   22 | PRINT {-9223372036854770000:9223372036854775807}.
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

matrix.sps:22.8-22.27: note: MATRIX: This operand with value -9.22337e+18 is
outside the supported integer range from -9007199254740992 to 9007199254740992.
   22 | PRINT {-9223372036854770000:9223372036854775807}.
      |        ^~~~~~~~~~~~~~~~~~~~

matrix.sps:22.29-22.47: note: MATRIX: This operand with value 9.22337e+18 is
outside the supported integer range from -9007199254740992 to 9007199254740992.
   22 | PRINT {-9223372036854770000:9223372036854775807}.
      |                             ^~~~~~~~~~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:1576"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_883
#AT_START_884
at_fn_group_banner 884 'matrix.at:1670' \
  "MATRIX - comments" "                              " 75
at_xfail=no
(
  printf "%s\n" "884. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
* Comment one.
PRINT (1+2).
COMMENT Comment two.
PRINT (3+4).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1679: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1679"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(1+2)
  3

(3+4)
  7
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:1679"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_884
#AT_START_885
at_fn_group_banner 885 'matrix.at:1688' \
  "MATRIX - string matrices" "                       " 75
at_xfail=no
(
  printf "%s\n" "885. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE m={'This is', 'a string', 'matrix', 'including', 'some', 'long strings'}.
PRINT m/FORMAT=A8.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1695: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1695"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "m
 This is a string matrix includin some long str
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:1695"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_885
#AT_START_886
at_fn_group_banner 886 'matrix.at:1701' \
  "MATRIX - ABS ALL ANY ARSIN ARTAN" "               " 75
at_xfail=no
(
  printf "%s\n" "886. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT ABS({-1, 0, 1}).

PRINT ALL({0, 0, 0}).
PRINT ALL({-1, 1}).
PRINT ALL({-1, 0, 1}).

PRINT ANY({0, 0, 0}).
PRINT ANY({-1, 1}).
PRINT ANY({-1, 0, 1}).

PRINT ARSIN({-1, 0, 1})/FORMAT=F5.2.

PRINT ARTAN({-5, -1, 0, 1, 5})/FORMAT=F5.2.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1719: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1719"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ABS({-1, 0, 1})
  1  0  1

ALL({0, 0, 0})
 0

ALL({-1, 1})
  1

ALL({-1, 0, 1})
 0

ANY({0, 0, 0})
 0

ANY({-1, 1})
  1

ANY({-1, 0, 1})
  1

ARSIN({-1, 0, 1})
 -1.57   .00  1.57

ARTAN({-5, -1, 0, 1, 5})
 -1.37  -.79   .00   .79  1.37
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:1719"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_886
#AT_START_887
at_fn_group_banner 887 'matrix.at:1749' \
  "MATRIX - BLOCK CHOL CMAX CMIN COS" "              " 75
at_xfail=no
(
  printf "%s\n" "887. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT BLOCK({1, 2; 3, 4}, 5, {7; 8; 9}, {10, 11}).

COMPUTE b=CHOL({4, 12, -16; 12, 37, -43; -16, -43, 98}).
PRINT b.
PRINT (T(b)*b).

PRINT CMAX({9, 3, 4; 5, 8, 6; 7, 4, 11}).

PRINT CMIN({9, 3, 4; 5, 8, 6; 7, 4, 11}).

PRINT COS({0.785, 1.57; 3.14, 1.57 + 3.14}) /FORMAT=F5.2.

END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1766: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1766"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "BLOCK({1, 2; 3, 4}, 5, {7; 8; 9}, {10, 11})
   1   2   0   0   0   0
   3   4   0   0   0   0
   0   0   5   0   0   0
   0   0   0   7   0   0
   0   0   0   8   0   0
   0   0   0   9   0   0
   0   0   0   0  10  11

b
  2  6 -8
  0  1  5
  0  0  3

(T(b)*b)
   4  12 -16
  12  37 -43
 -16 -43  98

CMAX({9, 3, 4; 5, 8, 6; 7, 4, 11})
   9   8  11

CMIN({9, 3, 4; 5, 8, 6; 7, 4, 11})
  5  3  4

COS({0.785, 1.57; 3.14, 1.57 + 3.14})
   .71   .00
 -1.00   .00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:1766"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_887
#AT_START_888
at_fn_group_banner 888 'matrix.at:1798' \
  "MATRIX - CSSQ CSUM DESIGN DET DIAG" "             " 75
at_xfail=no
(
  printf "%s\n" "888. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT CSSQ({1, 2, 3; 4, 5, 6; 7, 8, 9}).
PRINT CSUM({1, 2, 3; 4, 5, 6; 7, 8, 9}).
PRINT DESIGN({1, 2, 0; 2, 1, 0; 3, 0, 1}).
PRINT DESIGN({1, 2, 0; 2, 2, 0; 3, 2, 1}).
PRINT DET({1, 2, 3; 4, 5, 6; 7, 8, 9}) /FORMAT F4.1.
PRINT DIAG({1, 2, 3, 4; 4, 5, 6, 7; 7, 8, 9, 10}).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1809: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1809"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "CSSQ({1, 2, 3; 4, 5, 6; 7, 8, 9})
   66   93  126

CSUM({1, 2, 3; 4, 5, 6; 7, 8, 9})
  12  15  18

DESIGN({1, 2, 0; 2, 1, 0; 3, 0, 1})
  1  0  0  0  0  1  1  0
  0  1  0  0  1  0  1  0
  0  0  1  1  0  0  0  1

warning: Column 2 in DESIGN argument has constant value.

DESIGN({1, 2, 0; 2, 2, 0; 3, 2, 1})
  1  0  0  1  0
  0  1  0  1  0
  0  0  1  0  1

DET({1, 2, 3; 4, 5, 6; 7, 8, 9})
   .0

DIAG({1, 2, 3, 4; 4, 5, 6, 7; 7, 8, 9, 10})
  1
  5
  9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:1809"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_888
#AT_START_889
at_fn_group_banner 889 'matrix.at:1838' \
  "MATRIX - EVAL EXP GINV GRADE GSCH" "              " 75
at_xfail=no
(
  printf "%s\n" "889. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT EVAL({2, 0, 0; 0, 3, 4; 0, 4, 9})/FORMAT=F5.2.

PRINT EXP({2, 3; 4, 5})/FORMAT F5.2.

PRINT GINV({1, 2})/FORMAT F5.2.
COMPUTE a={1, 2, 3; 4, 5, 6; 7, 8, 9}.
COMPUTE g=GINV(a).
PRINT (a*g*a)/FORMAT F5.2.

PRINT GRADE({1, 0, 3; 3, 1, 2; 3, 0, 5}).
COMPUTE x={26, 690, 323, 208, 671, 818, 732, 711, 585, 792}.
COMPUTE asort=x.
COMPUTE asort(GRADE(asort))=asort.
PRINT asort.
COMPUTE dsort=x.
COMPUTE dsort(GRADE(-dsort))=dsort.
PRINT dsort.

PRINT (GSCH({3, 2; 1, 2}) * SQRT(10))/FORMAT F5.2.
PRINT (GSCH({0, 3, 6, 2; 0, 1, 2, 2}) * SQRT(10))/FORMAT F5.2.
PRINT GSCH({0; 0}).
PRINT GSCH({0, 0, 0; 0, 0, 0}).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1865: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1865"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "EVAL({2, 0, 0; 0, 3, 4; 0, 4, 9})
 11.00
  2.00
  1.00

EXP({2, 3; 4, 5})
  7.39 20.09
 54.60 148.4

GINV({1, 2})
   .20
   .40

(a*g*a)
  1.00  2.00  3.00
  4.00  5.00  6.00
  7.00  8.00  9.00

GRADE({1, 0, 3; 3, 1, 2; 3, 0, 5})
  3  1  6
  7  4  5
  8  2  9

asort
   26  208  323  585  671  690  711  732  792  818

dsort
  818  792  732  711  690  671  585  323  208   26

(GSCH({3, 2; 1, 2}) * SQRT(10))
  3.00 -1.00
  1.00  3.00

(GSCH({0, 3, 6, 2; 0, 1, 2, 2}) * SQRT(10))
  3.00 -1.00
  1.00  3.00

matrix.sps:22.12-22.17: error: MATRIX: GSCH requires its argument to have at
least as many columns as rows, but it has dimensions 2×1.
   22 | PRINT GSCH({0; 0}).
      |            ^~~~~~

matrix.sps:23.12-23.29: error: MATRIX: 2×3 argument to GSCH contains only 0
linearly independent columns.
   23 | PRINT GSCH({0, 0, 0; 0, 0, 0}).
      |            ^~~~~~~~~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:1865"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_889
#AT_START_890
at_fn_group_banner 890 'matrix.at:1915' \
  "MATRIX - IDENT INV KRONEKER LG10 LN" "            " 75
at_xfail=no
(
  printf "%s\n" "890. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT IDENT(1).
PRINT IDENT(2).
PRINT IDENT(3,5).
PRINT IDENT(5,3).

PRINT INV({3, 3.5; 3.2, 3.6})/FORMAT F8.2.
PRINT INV({4, 7; 2, 6})/FORMAT F8.2.
PRINT (INV({4, -2, 1; 5, 0, 3; -1, 2, 6})*52)/FORMAT F8.2.

PRINT KRONEKER({1, 2; 3, 4}, {0, 5; 6, 7}).

PRINT LG10({1, 10, 100, 1000}).

PRINT LN({1, 2; 3, 4})/FORMAT F5.2.
PRINT LN(0).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:1935: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:1935"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "IDENT(1)
  1

IDENT(2)
  1  0
  0  1

IDENT(3,5)
  1  0  0  0  0
  0  1  0  0  0
  0  0  1  0  0

IDENT(5,3)
  1  0  0
  0  1  0
  0  0  1
  0  0  0
  0  0  0

INV({3, 3.5; 3.2, 3.6})
    -9.00     8.75
     8.00    -7.50

INV({4, 7; 2, 6})
      .60     -.70
     -.20      .40

(INV({4, -2, 1; 5, 0, 3; -1, 2, 6})*52)
    -6.00    14.00    -6.00
   -33.00    25.00    -7.00
    10.00    -6.00    10.00

KRONEKER({1, 2; 3, 4}, {0, 5; 6, 7})
   0   5   0  10
   6   7  12  14
   0  15   0  20
  18  21  24  28

LG10({1, 10, 100, 1000})
  0  1  2  3

LN({1, 2; 3, 4})
   .00   .69
  1.10  1.39

matrix.sps:16.7-16.11: error: MATRIX: Argument 1 to matrix function LN must be
greater than 0.
   16 | PRINT LN(0).
      |       ^~~~~

matrix.sps:16.10: note: MATRIX: Argument 1 is 0.
   16 | PRINT LN(0).
      |          ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:1935"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_890
#AT_START_891
at_fn_group_banner 891 'matrix.at:1992' \
  "MATRIX - MAGIC" "                                 " 75
at_xfail=no
(
  printf "%s\n" "891. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.

LOOP n=3 to 10.
    COMPUTE m=MAGIC(n).
    COMPUTE total=n*(n**2 + 1) / 2.
    COMPUTE tb={MSUM(DIAG(T(m))), CSUM(m), MSUM(DIAG(m))} - total.
    COMPUTE lr=RSUM(m) - total.
    PRINT {tb; lr, m, lr; tb}/FORMAT F4.0.
END LOOP.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2005: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2005"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "{tb; lr, m, lr; tb}
    0    0    0    0    0
    0    8    1    6    0
    0    3    5    7    0
    0    4    9    2    0
    0    0    0    0    0
{tb; lr, m, lr; tb}
    0    0    0    0    0    0
    0    1    5   12   16    0
    0   15   11    6    2    0
    0   14    8    9    3    0
    0    4   10    7   13    0
    0    0    0    0    0    0
{tb; lr, m, lr; tb}
    0    0    0    0    0    0    0
    0   17   24    1    8   15    0
    0   23    5    7   14   16    0
    0    4    6   13   20   22    0
    0   10   12   19   21    3    0
    0   11   18   25    2    9    0
    0    0    0    0    0    0    0
{tb; lr, m, lr; tb}
    0    0    0    0    0    0    0    0
    0    1    5    9   28   32   36    0
    0   35   30   27   10    7    2    0
    0   24   14   22   18   17   16    0
    0   13   23   15   19   20   21    0
    0   34   31   26   11    6    3    0
    0    4    8   12   25   29   33    0
    0    0    0    0    0    0    0    0
{tb; lr, m, lr; tb}
    0    0    0    0    0    0    0    0    0
    0   30   39   48    1   10   19   28    0
    0   38   47    7    9   18   27   29    0
    0   46    6    8   17   26   35   37    0
    0    5   14   16   25   34   36   45    0
    0   13   15   24   33   42   44    4    0
    0   21   23   32   41   43    3   12    0
    0   22   31   40   49    2   11   20    0
    0    0    0    0    0    0    0    0    0
{tb; lr, m, lr; tb}
    0    0    0    0    0    0    0    0    0    0
    0    1    9   17   25   40   48   56   64    0
    0   63   55   47   39   26   18   10    2    0
    0    3   11   19   27   38   46   54   62    0
    0   61   53   45   37   28   20   12    4    0
    0   60   52   44   32   33   21   13    5    0
    0    6   14   22   30   35   43   51   59    0
    0   58   50   42   34   31   23   15    7    0
    0    8   16   24   36   29   41   49   57    0
    0    0    0    0    0    0    0    0    0    0
{tb; lr, m, lr; tb}
    0    0    0    0    0    0    0    0    0    0    0
    0   47   58   69   80    1   12   23   34   45    0
    0   57   68   79    9   11   22   33   44   46    0
    0   67   78    8   10   21   32   43   54   56    0
    0   77    7   18   20   31   42   53   55   66    0
    0    6   17   19   30   41   52   63   65   76    0
    0   16   27   29   40   51   62   64   75    5    0
    0   26   28   39   50   61   72   74    4   15    0
    0   36   38   49   60   71   73    3   14   25    0
    0   37   48   59   70   81    2   13   24   35    0
    0    0    0    0    0    0    0    0    0    0    0
{tb; lr, m, lr; tb}
    0    0    0    0    0    0    0    0    0    0    0    0
    0    1    9   17   25   33   68   76   84   92  100    0
    0   99   91   83   75   67   34   26   18   10    2    0
    0    3   11   19   27   35   66   74   82   90   98    0
    0   97   89   81   72   65   36   29   20   12    4    0
    0   60   42   58   44   56   50   49   53   47   46    0
    0   41   59   43   57   45   51   52   48   54   55    0
    0   96   88   80   73   64   37   28   21   13    5    0
    0    6   14   22   30   38   63   71   79   87   95    0
    0   94   86   78   70   62   39   31   23   15    7    0
    0    8   16   24   32   40   61   69   77   85   93    0
    0    0    0    0    0    0    0    0    0    0    0    0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2005"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_891
#AT_START_892
at_fn_group_banner 892 'matrix.at:2085' \
  "MATRIX - MAKE MDIAG MMAX MMIN MOD" "              " 75
at_xfail=no
(
  printf "%s\n" "892. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT MAKE(1, 2, 3).
PRINT MAKE(2, 1, 4).
PRINT MAKE(2, 3, 5).

PRINT MDIAG({1, 2, 3, 4}).
PRINT MDIAG({1; 2; 3; 4}).
PRINT MDIAG({1, 2; 3, 4}).

PRINT MMAX({55, 44; 66, 11}).

PRINT MMIN({55, 44; 66, 11}).

PRINT MOD({5, 4, 3, 2, 1, 0}, 3).
PRINT MOD({5, 4, 3, 2, 1, 0}, -3).
PRINT MOD({-5, -4, -3, -2, -1, 0}, 3).
PRINT MOD({-5, -4, -3, -2, -1, 0}, -3).
PRINT MOD({5, 4, 3, 2, 1, 0}, 1.5) /FORMAT F5.1.
PRINT MOD({5, 4, 3, 2, 1, 0}, 0).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2108: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2108"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "MAKE(1, 2, 3)
  3  3

MAKE(2, 1, 4)
  4
  4

MAKE(2, 3, 5)
  5  5  5
  5  5  5

MDIAG({1, 2, 3, 4})
  1  0  0  0
  0  2  0  0
  0  0  3  0
  0  0  0  4

MDIAG({1; 2; 3; 4})
  1  0  0  0
  0  2  0  0
  0  0  3  0
  0  0  0  4

matrix.sps:8.13-8.24: error: MATRIX: Function MDIAG argument 1 must be a
vector, not a 2×2 matrix.
    8 | PRINT MDIAG({1, 2; 3, 4}).
      |             ^~~~~~~~~~~~

MMAX({55, 44; 66, 11})
  66

MMIN({55, 44; 66, 11})
  11

MOD({5, 4, 3, 2, 1, 0}, 3)
  2  1  0  2  1  0

MOD({5, 4, 3, 2, 1, 0}, -3)
  2  1  0  2  1  0

MOD({-5, -4, -3, -2, -1, 0}, 3)
 -2 -1  0 -2 -1  0

MOD({-5, -4, -3, -2, -1, 0}, -3)
 -2 -1  0 -2 -1  0

MOD({5, 4, 3, 2, 1, 0}, 1.5)
    .5   1.0    .0    .5   1.0    .0

matrix.sps:19.7-19.32: error: MATRIX: Argument 2 to matrix function MOD must
not be equal to 0.
   19 | PRINT MOD({5, 4, 3, 2, 1, 0}, 0).
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:2108"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_892
#AT_START_893
at_fn_group_banner 893 'matrix.at:2165' \
  "MATRIX - MSSQ MSUM NCOL NROW RANK" "              " 75
at_xfail=no
(
  printf "%s\n" "893. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT MSSQ({1, 0, 1; -2, -3, 1; 3, 3, 0}).

PRINT MSUM({1, 0, 1; -2, -3, 1; 3, 3, 0}).

PRINT NCOL({1, 0; -2, -3; 3, 3}).

PRINT NROW({1, 0; -2, -3; 3, 3}).

PRINT RANK({1, 0, 1; -2, -3, 1; 3, 3, 0}).
PRINT RANK({1, 1, 0, 2; -1, -1, 0, -2}).
PRINT RANK({1, -1; 1, -1; 0, 0; 2, -2}).
PRINT RANK({1, 2, 1; -2, -3, 1; 3, 5, 0}).
PRINT RANK({1, 0, 2; 2, 1, 0; 3, 2, 1}).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2183: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2183"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "MSSQ({1, 0, 1; -2, -3, 1; 3, 3, 0})
  34

MSUM({1, 0, 1; -2, -3, 1; 3, 3, 0})
  4

NCOL({1, 0; -2, -3; 3, 3})
  2

NROW({1, 0; -2, -3; 3, 3})
  3

RANK({1, 0, 1; -2, -3, 1; 3, 3, 0})
  2

RANK({1, 1, 0, 2; -1, -1, 0, -2})
  1

RANK({1, -1; 1, -1; 0, 0; 2, -2})
  1

RANK({1, 2, 1; -2, -3, 1; 3, 5, 0})
  2

RANK({1, 0, 2; 2, 1, 0; 3, 2, 1})
  3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2183"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_893
#AT_START_894
at_fn_group_banner 894 'matrix.at:2213' \
  "MATRIX - RESHAPE RMAX RMIN RND RNKORDER" "        " 75
at_xfail=no
(
  printf "%s\n" "894. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT RESHAPE(1:12, 1, 12).
PRINT RESHAPE(1:12, 2, 6).
PRINT RESHAPE(1:12, 3, 4).
PRINT RESHAPE(1:12, 4, 3).
PRINT RESHAPE(1:12, 6, 2).
PRINT RESHAPE(1:12, 12, 1).

PRINT RMAX({1, 0, 1; -2, -3, 1; 3, 3, 0}).

PRINT RMIN({1, 0, 1; -2, -3, 1; 3, 3, 0}).

PRINT RND({-1.6, -1.5, -1.4;
           -.6, -.5, -.4;
           .4, .5, .6;
           1.4, 1.5, 1.6})/FORMAT F5.1.

PRINT RNKORDER({1, 0, 3; 3, 1, 2; 3, 0, 5}) /FORMAT F5.1.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2235: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2235"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "RESHAPE(1:12, 1, 12)
   1   2   3   4   5   6   7   8   9  10  11  12

RESHAPE(1:12, 2, 6)
   1   2   3   4   5   6
   7   8   9  10  11  12

RESHAPE(1:12, 3, 4)
   1   2   3   4
   5   6   7   8
   9  10  11  12

RESHAPE(1:12, 4, 3)
   1   2   3
   4   5   6
   7   8   9
  10  11  12

RESHAPE(1:12, 6, 2)
   1   2
   3   4
   5   6
   7   8
   9  10
  11  12

RESHAPE(1:12, 12, 1)
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12

RMAX({1, 0, 1; -2, -3, 1; 3, 3, 0})
  1
  1
  3

RMIN({1, 0, 1; -2, -3, 1; 3, 3, 0})
  0
 -3
  0

RND({-1.6, -1.5, -1.4;
           -.6, -.5, -.4;
           .4, .5, .6;
           1.4, 1.5, 1.6})
  -2.0  -2.0  -1.0
  -1.0    .0    .0
    .0    .0   1.0
   1.0   2.0   2.0

RNKORDER({1, 0, 3; 3, 1, 2; 3, 0, 5})
   3.5   1.5   7.0
   7.0   3.5   5.0
   7.0   1.5   9.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2235"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_894
#AT_START_895
at_fn_group_banner 895 'matrix.at:2302' \
  "MATRIX - RSSQ RSUM SIN SOLVE SQRT" "              " 75
at_xfail=no
(
  printf "%s\n" "895. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT RSSQ({1, 2, 3; 4, 5, 6; 7, 8, 9}).
PRINT RSUM({1, 2, 3; 4, 5, 6; 7, 8, 9}).

PRINT SIN({0, .78, 1.57, 2.35, 3.14}) /FORMAT F5.2.

PRINT SOLVE({2, 3; 4, 9}, {6, 2; 15, 5}) /FORMAT=F6.2.
PRINT SOLVE({1, 3, -2; 3, 5, 6; 2, 4, 3}, {5; 7; 8}) /FORMAT=F6.2.
PRINT SOLVE({2, 1, -1; -3, -1, 2; -2, 1, 2}, {8; -11; -3}) /FORMAT=F6.2.
PRINT SOLVE({1, 2; 3, 4}, {1, 2}).

PRINT SQRT({0, 1, 2, 3, 4, 9, 81}) /FORMAT=F5.2.
PRINT SQRT(-1).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2319: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2319"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "RSSQ({1, 2, 3; 4, 5, 6; 7, 8, 9})
   14
   77
  194

RSUM({1, 2, 3; 4, 5, 6; 7, 8, 9})
   6
  15
  24

SIN({0, .78, 1.57, 2.35, 3.14})
   .00   .70  1.00   .71   .00

SOLVE({2, 3; 4, 9}, {6, 2; 15, 5})
   1.50    .50
   1.00    .33

SOLVE({1, 3, -2; 3, 5, 6; 2, 4, 3}, {5; 7; 8})
 -15.00
   8.00
   2.00

SOLVE({2, 1, -1; -3, -1, 2; -2, 1, 2}, {8; -11; -3})
   2.00
   3.00
  -1.00

matrix.sps:10.7-10.33: error: MATRIX: SOLVE arguments must have the same number
of rows.
   10 | PRINT SOLVE({1, 2; 3, 4}, {1, 2}).
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~

matrix.sps:10.13-10.24: note: MATRIX: Argument 1 has dimensions 2×2.
   10 | PRINT SOLVE({1, 2; 3, 4}, {1, 2}).
      |             ^~~~~~~~~~~~

matrix.sps:10.27-10.32: note: MATRIX: Argument 2 has dimensions 1×2.
   10 | PRINT SOLVE({1, 2; 3, 4}, {1, 2}).
      |                           ^~~~~~

SQRT({0, 1, 2, 3, 4, 9, 81})
   .00  1.00  1.41  1.73  2.00  3.00  9.00

matrix.sps:13.7-13.14: error: MATRIX: Argument 1 to matrix function SQRT must
be greater than or equal to 0.
   13 | PRINT SQRT(-1).
      |       ^~~~~~~~

matrix.sps:13.12-13.13: note: MATRIX: Argument 1 is -1.
   13 | PRINT SQRT(-1).
      |            ^~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:2319"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_895
#AT_START_896
at_fn_group_banner 896 'matrix.at:2374' \
  "MATRIX - SSCP SVAL SWEEP TRACE TRANSPOS TRUNC" "  " 75
at_xfail=no
(
  printf "%s\n" "896. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE m={1, 2, 3; 4, 5, 6}
COMPUTE sscp1=SSCP(m).
COMPUTE sscp2=T(m)*m.
PRINT sscp1.
PRINT (sscp1 <> sscp2).

PRINT SVAL({1, 1; 0, 0})/FORMAT F5.2.
PRINT SVAL({1, 0, 1; 0, 1, 1; 0, 0, 0})/FORMAT F5.2.
PRINT SVAL({1, 0, 0, 0, 2; 0, 0, 3, 0, 0; 0, 0, 0, 0, 0; 0, 2, 0, 0, 0})
    /FORMAT F5.2.
PRINT SVAL({2, 4; 1, 3; 0, 0; 0, 0})/FORMAT F5.2.

COMPUTE s0 = {6, 12, 0, 12; 12, 28, 0, 25; 0, 0, 6, 2; 12, 25, 2, 28}.
PRINT SWEEP(s0, 1)/FORMAT F5.2.
PRINT SWEEP(SWEEP(s0, 1), 2)/FORMAT F5.2.
PRINT SWEEP(SWEEP(SWEEP(s0, 1), 2), 3)/FORMAT F5.2.

COMPUTE s1 = {6, 12, 0, 12; 12, 0, 0, 25; 0, 0, 6, 2; 12, 25, 2, 28}.
PRINT SWEEP(s1, 2).

COMPUTE s2 = {0, 1, 2; 3, 4, 5; 6, 7, 8}.
PRINT SWEEP(s2, 1).
PRINT SWEEP(s2, 2).
PRINT SWEEP(s2, 3).

PRINT TRACE(s0).

PRINT T(s0).
PRINT TRANSPOS(s0).
PRINT ALL(T(T(s0)) = s0).

PRINT TRUNC(SVAL({2, 4; 1, 3; 0, 0; 0, 0})).
PRINT TRUNC(-SVAL({2, 4; 1, 3; 0, 0; 0, 0})).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2412: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2412"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "sscp1
  17  22  27
  22  29  36
  27  36  45

(sscp1 <> sscp2)
 0 0 0
 0 0 0
 0 0 0

SVAL({1, 1; 0, 0})
  1.41
   .00

SVAL({1, 0, 1; 0, 1, 1; 0, 0, 0})
  1.73
  1.00
   .00

SVAL({1, 0, 0, 0, 2; 0, 0, 3, 0, 0; 0, 0, 0, 0, 0; 0, 2, 0, 0, 0})
  3.00
  2.24
  2.00
   .00

SVAL({2, 4; 1, 3; 0, 0; 0, 0})
  5.46
   .37

SWEEP(s0, 1)
   .17  2.00   .00  2.00
 -2.00  4.00   .00  1.00
   .00   .00  6.00  2.00
 -2.00  1.00  2.00  4.00

SWEEP(SWEEP(s0, 1), 2)
  1.17  -.50   .00  1.50
  -.50   .25   .00   .25
   .00   .00  6.00  2.00
 -1.50  -.25  2.00  3.75

SWEEP(SWEEP(SWEEP(s0, 1), 2), 3)
  1.17  -.50   .00  1.50
  -.50   .25   .00   .25
   .00   .00   .17   .33
 -1.50  -.25  -.33  3.08

SWEEP(s1, 2)
   6   0   0  12
   0   0   0   0
   0   0   6   2
  12   0   2  28

SWEEP(s2, 1)
  0  0  0
  0  4  5
  0  7  8

SWEEP(s2, 2)
  -.7500000000  -.2500000000   .7500000000
   .7500000000   .2500000000  1.2500000000
   .7500000000 -1.7500000000  -.7500000000

SWEEP(s2, 3)
 -1.5000000000  -.7500000000  -.2500000000
  -.7500000000  -.3750000000  -.6250000000
   .7500000000   .8750000000   .1250000000

TRACE(s0)
  68

T(s0)
   6  12   0  12
  12  28   0  25
   0   0   6   2
  12  25   2  28

TRANSPOS(s0)
   6  12   0  12
  12  28   0  25
   0   0   6   2
  12  25   2  28

ALL(T(T(s0)) = s0)
  1

TRUNC(SVAL({2, 4; 1, 3; 0, 0; 0, 0}))
  5
  0

TRUNC(-SVAL({2, 4; 1, 3; 0, 0; 0, 0}))
 -5
  0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2412"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_896
#AT_START_897
at_fn_group_banner 897 'matrix.at:2509' \
  "MATRIX - UNIFORM" "                               " 75
at_xfail=no
(
  printf "%s\n" "897. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
SET SEED=10.
MATRIX.
PRINT (UNIFORM(4, 5)*10)/FORMAT F5.2.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2516: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2516"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(UNIFORM(4, 5)*10)
  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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2516"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_897
#AT_START_898
at_fn_group_banner 898 'matrix.at:2525' \
  "MATRIX - invalid function arguments" "            " 75
at_xfail=no
(
  printf "%s\n" "898. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE x=MOD({1,2,3},{4,5,6}).
COMPUTE x=MDIAG({1, 2; 3, 4}).
COMPUTE x=ARSIN(2).
COMPUTE x=ARSIN({1, 1; -1, 2}).
COMPUTE x=CDF.UNIFORM(2,1,1).
COMPUTE x=CDF.UNIFORM(1,2,1).
COMPUTE x=CDF.UNIFORM({1,2},1,1).
COMPUTE x=MAGIC(2).
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2538: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2538"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.23-2.29: error: MATRIX: Function MOD argument 2 must be a scalar,
not a 1×3 matrix.
    2 | COMPUTE x=MOD({1,2,3},{4,5,6}).
      |                       ^~~~~~~

matrix.sps:3.17-3.28: error: MATRIX: Function MDIAG argument 1 must be a
vector, not a 2×2 matrix.
    3 | COMPUTE x=MDIAG({1, 2; 3, 4}).
      |                 ^~~~~~~~~~~~

matrix.sps:4.17: error: MATRIX: Argument 1 to matrix function ARSIN is 2, which
is outside the valid range [-1,1].
    4 | COMPUTE x=ARSIN(2).
      |                 ^

matrix.sps:5.17-5.29: error: MATRIX: Row 2, column 2 of argument 1 to matrix
function ARSIN is 2, which is outside the valid range [-1,1].
    5 | COMPUTE x=ARSIN({1, 1; -1, 2}).
      |                 ^~~~~~~~~~~~~

error: Argument 1 to matrix function CDF.UNIFORM must be less than or equal to
argument 3.

matrix.sps:6.23: note: MATRIX: Argument 1 is 2.
    6 | COMPUTE x=CDF.UNIFORM(2,1,1).
      |                       ^

matrix.sps:6.27: note: MATRIX: Argument 3 is 1.
    6 | COMPUTE x=CDF.UNIFORM(2,1,1).
      |                           ^

error: Argument 2 to matrix function CDF.UNIFORM must be less than or equal to
argument 3.

matrix.sps:7.25: note: MATRIX: Argument 2 is 2.
    7 | COMPUTE x=CDF.UNIFORM(1,2,1).
      |                         ^

matrix.sps:7.27: note: MATRIX: Argument 3 is 1.
    7 | COMPUTE x=CDF.UNIFORM(1,2,1).
      |                           ^

error: Argument 1 to matrix function CDF.UNIFORM must be less than or equal to
argument 3.

matrix.sps:8.23-8.27: note: MATRIX: Row 1, column 2 of argument 1 is 2.
    8 | COMPUTE x=CDF.UNIFORM({1,2},1,1).
      |                       ^~~~~

matrix.sps:8.31: note: MATRIX: Argument 3 is 1.
    8 | COMPUTE x=CDF.UNIFORM({1,2},1,1).
      |                               ^

matrix.sps:9.11-9.18: error: MATRIX: Argument 1 to matrix function MAGIC must
be greater than or equal to 3.
    9 | COMPUTE x=MAGIC(2).
      |           ^~~~~~~~

matrix.sps:9.17: note: MATRIX: Argument 1 is 2.
    9 | COMPUTE x=MAGIC(2).
      |                 ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:2538"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_898
#AT_START_899
at_fn_group_banner 899 'matrix.at:2603' \
  "MATRIX - invalid number function arguments" "     " 75
at_xfail=no
(
  printf "%s\n" "899. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE x=ABS().
COMPUTE x=ABS(1,2).
COMPUTE x=KRONEKER(1,2,3).
COMPUTE x=IDENT().
COMPUTE x=IDENT(1,2,3).
COMPUTE x=BLOCK().
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2614: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2614"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2: error: COMPUTE: Matrix function ABS requires 1 argument.

matrix.sps:3: error: COMPUTE: Matrix function ABS requires 1 argument.

matrix.sps:4: error: COMPUTE: Matrix function KRONEKER requires 2 arguments.

matrix.sps:5: error: COMPUTE: Matrix function IDENT requires 1 or 2 arguments,
but 0 were provided.

matrix.sps:6: error: COMPUTE: Matrix function IDENT requires 1 or 2 arguments,
but 3 were provided.

matrix.sps:7: error: COMPUTE: Matrix function BLOCK requires at least one
argument.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:2614"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_899
#AT_START_900
at_fn_group_banner 900 'matrix.at:2632' \
  "MATRIX - CALL SETDIAG" "                          " 75
at_xfail=no
(
  printf "%s\n" "900. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE x={1, 2, 3; 4, 5, 6; 7, 8, 9}.

COMPUTE x1=x.
CALL SETDIAG(x1, 10).
PRINT x1.

COMPUTE x2=x.
CALL SETDIAG(x2, {10, 11}).
PRINT x2.

COMPUTE x3=x.
CALL SETDIAG(x3, {10, 11, 12}).
PRINT x3.

COMPUTE x4=x.
CALL SETDIAG(x4, {10, 11, 12, 13}).
PRINT x4.

COMPUTE x5=x.
CALL SETDIAG(x5, {10, 11; 12, 13}).
PRINT x5.

END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2659: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2659"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "x1
  10   2   3
   4  10   6
   7   8  10

x2
  10   2   3
   4  11   6
   7   8   9

x3
  10   2   3
   4  11   6
   7   8  12

x4
  10   2   3
   4  11   6
   7   8  12

matrix.sps:21.18-21.33: error: MATRIX: SETDIAG argument 2 must be a scalar or a
vector, not a 2×2 matrix.
   21 | CALL SETDIAG(x5, {10, 11; 12, 13}).
      |                  ^~~~~~~~~~~~~~~~

x5
  1  2  3
  4  5  6
  7  8  9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:2659"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_900
#AT_START_901
at_fn_group_banner 901 'matrix.at:2693' \
  "MATRIX - CALL EIGEN" "                            " 75
at_xfail=no
(
  printf "%s\n" "901. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
CALL EIGEN({1, 0; 0, 1}, evec, eval).
PRINT evec.
PRINT eval.

CALL EIGEN({3, 2, 4; 2, 0, 2; 4, 2, 3}, evec2, eval2).
PRINT evec2.
PRINT eval2.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2705: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2705"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "evec
  1  0
  0  1

eval
  1
  1

evec2
  -.6666666667   .0000000000   .7453559925
  -.3333333333  -.8944271910  -.2981423970
  -.6666666667   .4472135955  -.5962847940

eval2
  8.0000000000
 -1.0000000000
 -1.0000000000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2705"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_901
#AT_START_902
at_fn_group_banner 902 'matrix.at:2726' \
  "MATRIX - CALL SVD" "                              " 75
at_xfail=no
(
  printf "%s\n" "902. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
CALL SVD({3, 2, 2; 2, 3, -2}, u, s, v).
PRINT (u * s * T(v))/FORMAT F5.1.

CALL SVD({2, 4; 1, 3; 0, 0; 0, 0}, u, s, v).
PRINT (u*s*T(v))/FORMAT F5.1.

CALL SVD({-3, 1; 6, -2; 6, -2}, u, s, v).
PRINT (u*s*T(v))/FORMAT F5.1.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2739: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2739"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "(u * s * T(v))
   3.0   2.0   2.0
   2.0   3.0  -2.0

(u*s*T(v))
   2.0   4.0
   1.0   3.0
    .0    .0
    .0    .0

(u*s*T(v))
  -3.0   1.0
   6.0  -2.0
   6.0  -2.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2739"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_902
#AT_START_903
at_fn_group_banner 903 'matrix.at:2757' \
  "MATRIX - PRINT" "                                 " 75
at_xfail=no
(
  printf "%s\n" "903. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT/TITLE="title 1".
PRINT/SPACE=2/TITLE="title 2".

COMPUTE m={1, 2, 3; 3, 4, 5; 6, 7, 8}.
PRINT m/RLABELS=123, a b c, long name.
PRINT m/RNAMES={'123', 'a b c', 'long name'}.
PRINT m/CLABELS=col1, col2, long column name.
PRINT m/CNAMES={'col1', 'col2', 'long column name'}.
PRINT m/RLABELS=123, a b c, long name
       /CLABELS=col1, col2, long column name.
PRINT m/RNAMES={'123', 'a b c', 'long name'}
       /CNAMES={'col1', 'col2', 'long column name'}.
PRINT {123e10, 456e10, 500}.
END MATRIX.
_ATEOF


cat >matrix-tables.sps <<'_ATEOF'
SET MDISPLAY=TABLES.
INCLUDE 'matrix.sps'.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2781: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2781"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "title 1



title 2

m
123       1  2  3
a b c     3  4  5
long nam  6  7  8

m
123       1  2  3
a b c     3  4  5
long nam  6  7  8

m
     col1     col2 long col
        1        2        3
        3        4        5
        6        7        8

m
     col1     col2 long col
        1        2        3
        3        4        5
        6        7        8

m
             col1     col2 long col
123             1        2        3
a b c           3        4        5
long nam        6        7        8

m
             col1     col2 long col
123             1        2        3
a b c           3        4        5
long nam        6        7        8

{123e10, 456e10, 500}
  10 ** 12   X
  1.2300000000  4.5600000000   .0000000005
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2781"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2827: pspp matrix-tables.sps"
at_fn_check_prepare_trace "matrix.at:2827"
( $at_check_trace; pspp matrix-tables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "title 1



title 2

        m
+---------+-----+
|123      |1 2 3|
|a b c    |3 4 5|
|long name|6 7 8|
+---------+-----+

        m
+--------+-----+
|123     |1 2 3|
|a b c   |3 4 5|
|long nam|6 7 8|
+--------+-----+

              m
+----+----+----------------+
|col1|col2|long column name|
+----+----+----------------+
|   1|   2|               3|
|   3|   4|               5|
|   6|   7|               8|
+----+----+----------------+

          m
+----+----+--------+
|col1|col2|long col|
+----+----+--------+
|   1|   2|       3|
|   3|   4|       5|
|   6|   7|       8|
+----+----+--------+

                   m
+---------+----+----+----------------+
|         |col1|col2|long column name|
+---------+----+----+----------------+
|123      |   1|   2|               3|
|a b c    |   3|   4|               5|
|long name|   6|   7|               8|
+---------+----+----+----------------+

              m
+--------+----+----+--------+
|        |col1|col2|long col|
+--------+----+----+--------+
|123     |   1|   2|       3|
|a b c   |   3|   4|       5|
|long nam|   6|   7|       8|
+--------+----+----+--------+

              {123e10, 456e10, 500}
+----------------------------------------------+
|1.2300000000[a] 4.5600000000[a] .0000000005[a]|
+----------------------------------------------+
a. × 10**12
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:2827"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_903
#AT_START_904
at_fn_group_banner 904 'matrix.at:2892' \
  "MATRIX - PRINT - negative" "                      " 75
at_xfail=no
(
  printf "%s\n" "904. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
PRINT !.
PRINT/FORMAT=!.
PRINT/FORMAT=P52.
PRINT/TITLE=!.
PRINT/SPACE=0.
PRINT/RNAMES=!.
PRINT/CNAMES=!.
PRINT/!.
END MATRIX.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2906: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2906"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.7: error: PRINT: Syntax error expecting matrix expression.
    2 | PRINT !.
      |       ^

matrix.sps:3.14: error: PRINT: Syntax error expecting valid format specifier.
    3 | PRINT/FORMAT=!.
      |              ^

matrix.sps:4.14-4.16: error: PRINT: Output format P52.0 specifies width 52, but
P requires a width between 1 and 16.
    4 | PRINT/FORMAT=P52.
      |              ^~~

matrix.sps:5.13: error: PRINT: Syntax error expecting string.
    5 | PRINT/TITLE=!.
      |             ^

matrix.sps:6.13: error: PRINT: Syntax error expecting positive integer for
SPACE.
    6 | PRINT/SPACE=0.
      |             ^

matrix.sps:7.14: error: PRINT: Syntax error expecting matrix expression.
    7 | PRINT/RNAMES=!.
      |              ^

matrix.sps:8.14: error: PRINT: Syntax error expecting matrix expression.
    8 | PRINT/CNAMES=!.
      |              ^

matrix.sps:9.7: error: PRINT: Syntax error expecting FORMAT, TITLE, SPACE,
RLABELS, CLABELS, RNAMES, or CNAMES.
    9 | PRINT/!.
      |       ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:2906"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_904
#AT_START_905
at_fn_group_banner 905 'matrix.at:2944' \
  "MATRIX - DO IF" "                                 " 75
at_xfail=no
(
  printf "%s\n" "905. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
DO IF 1.
PRINT/TITLE '1'.
END IF.

DO IF 0.
PRINT/TITLE '2'.
ELSE IF 1.
PRINT/TITLE '3'.
END IF.

DO IF -1.
PRINT/TITLE '4'.
ELSE IF 0.
PRINT/TITLE '5'.
ELSE.
PRINT/TITLE '6'.
END IF.

DO IF {1, 2}.
END IF.

DO IF 0.
ELSE IF {}.
END IF.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:2973: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:2973"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1

3

6

matrix.sps:20.7-20.12: error: MATRIX: Expression for DO IF must evaluate to
scalar, not a 1×2 matrix.
   20 | DO IF {1, 2}.
      |       ^~~~~~

matrix.sps:24.9-24.10: error: MATRIX: Expression for ELSE IF must evaluate to
scalar, not a 0×0 matrix.
   24 | ELSE IF {}.
      |         ^~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:2973"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_905
#AT_START_906
at_fn_group_banner 906 'matrix.at:2992' \
  "MATRIX - unbounded LOOP" "                        " 75
at_xfail=no
(
  printf "%s\n" "906. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
* Truly unbounded loop.
COMPUTE x=0.
COMPUTE y={}.
LOOP.
COMPUTE x=x+1.
COMPUTE y={y, x}.
END LOOP.
PRINT x.
PRINT y.

* Unbounded loop terminates with BREAK.
COMPUTE x=0.
COMPUTE y={}.
LOOP.
COMPUTE x=x+1.
COMPUTE y={y, x}.
DO IF x >= 20.
    BREAK.
END IF.
END LOOP.
PRINT x.
PRINT y.

END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3020: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3020"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "x
  40

y
   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

x
  20

y
   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
20
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:3020"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_906
#AT_START_907
at_fn_group_banner 907 'matrix.at:3038' \
  "MATRIX - indexed or conditional LOOP" "           " 75
at_xfail=no
(
  printf "%s\n" "907. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
* Indexed loop terminates based on index.
COMPUTE y={}.
LOOP x=1 TO 20.
COMPUTE y={y, x}.
END LOOP.
PRINT x.
PRINT y.

* Indexed loop terminates based on MXLOOPS.
COMPUTE y={}.
LOOP x=1 TO 50.
COMPUTE y={y, x}.
END LOOP.
PRINT x.
PRINT y.

* Indexed loop terminates with BREAK.
COMPUTE y={}.
LOOP x=1 TO 50.
COMPUTE y={y, x}.
DO IF x >= 20.
    BREAK.
END IF.
END LOOP.
PRINT x.
PRINT y.

* Indexed loop terminates with top IF.
COMPUTE y={}.
LOOP x=1 TO 50 IF NCOL(y) < 15.
COMPUTE y={y, x}.
END LOOP.
PRINT x.
PRINT y.

* Indexed loop terminates with bottom IF.
COMPUTE y={}.
LOOP x=1 TO 50.
COMPUTE y={y, x}.
END LOOP IF NCOL(y) >= 22.
PRINT x.
PRINT y.

* Index behavior.
COMPUTE indexing={
    1, 10, 1;
    1, 10, 2;
    1, 10, 3;
    1, 10, -1;
    1, 10, 0;
    10, 1, -1;
    10, 1, -2;
    10, 1, -3;
    10, 1, 1;
    10, 1, 0
}.
LOOP i=1 TO NROW(indexing).
    COMPUTE y={}.
    LOOP j=indexing(i, 1) TO indexing(i, 2) BY indexing(i, 3).
        COMPUTE y={y, j}.
    END LOOP.
    PRINT {indexing(i, :), y}.
END LOOP.

LOOP i={} TO 5.
END LOOP.

LOOP i=5 TO {}.
END LOOP.

LOOP i=5 TO 8 BY {}.
END LOOP.

LOOP IF {}.
END LOOP.

LOOP.
END LOOP IF {}.

LOOP i=1e100 to 1e200.
END LOOP.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3124: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3124"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "x
  20

y
   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
20

x
  40

y
   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

x
  20

y
   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
20

x
  16

y
   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15

x
  22

y
   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
20  21  22

{indexing(i, :), y}
   1  10   1   1   2   3   4   5   6   7   8   9  10
{indexing(i, :), y}
   1  10   2   1   3   5   7   9
{indexing(i, :), y}
   1  10   3   1   4   7  10
{indexing(i, :), y}
   1  10  -1
{indexing(i, :), y}
   1  10   0
{indexing(i, :), y}
  10   1  -1  10   9   8   7   6   5   4   3   2   1
{indexing(i, :), y}
  10   1  -2  10   8   6   4   2
{indexing(i, :), y}
  10   1  -3  10   7   4   1
{indexing(i, :), y}
  10   1   1
{indexing(i, :), y}
  10   1   0

matrix.sps:66.8-66.9: error: MATRIX: Expression for LOOP must evaluate to
scalar, not a 0×0 matrix.
   66 | LOOP i={} TO 5.
      |        ^~

matrix.sps:69.13-69.14: error: MATRIX: Expression for TO must evaluate to
scalar, not a 0×0 matrix.
   69 | LOOP i=5 TO {}.
      |             ^~

matrix.sps:72.18-72.19: error: MATRIX: Expression for BY must evaluate to
scalar, not a 0×0 matrix.
   72 | LOOP i=5 TO 8 BY {}.
      |                  ^~

matrix.sps:75.9-75.10: error: MATRIX: Expression for LOOP IF must evaluate to
scalar, not a 0×0 matrix.
   75 | LOOP IF {}.
      |         ^~

matrix.sps:79.13-79.14: error: MATRIX: Expression for END LOOP IF must evaluate
to scalar, not a 0×0 matrix.
   79 | END LOOP IF {}.
      |             ^~

matrix.sps:81.8-81.12: error: MATRIX: Expression for LOOP is outside the
supported integer range.
   81 | LOOP i=1e100 to 1e200.
      |        ^~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:3124"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_907
#AT_START_908
at_fn_group_banner 908 'matrix.at:3213' \
  "MATRIX - BREAK outside LOOP" "                    " 75
at_xfail=no
(
  printf "%s\n" "908. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
BREAK.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3219: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3219"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.1-2.5: error: BREAK: BREAK not inside LOOP.
    2 | BREAK.
      | ^~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:3219"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_908
#AT_START_909
at_fn_group_banner 909 'matrix.at:3226' \
  "MATRIX - READ" "                                  " 75
at_xfail=no
(
  printf "%s\n" "909. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.txt <<'_ATEOF'
9
8
7
6
1 2 3
4 5 6
7 8 9
10 11 12,13
14, 15 ,16 , 17
18
19
20 21 22 23
    12        34
5    6
    78        89
10   11
$1 $2 3
4 $5 6
$1   $2   $3   4
   $5$6      $78
1% 2% 3% 4
  56%  7%8
abcdefghijkl
ABCDEFGHIJKL
_ATEOF

cat >matrix2.txt <<'_ATEOF'
2, 3, 5, 7
11, 13, 17, 19
23, 29, 31, 37
41, 43, 47, 53
_ATEOF

cat >matrix3.txt <<'_ATEOF'
1 5
3 1 2 3
5 6 -1 2 5 1
2 8 9
3 1 3 2
_ATEOF

cat >matrix.sps <<'_ATEOF'
MATRIX.
READ x/FILE='matrix.txt'/SIZE=4/FIELD=1 TO 1.
PRINT x.
READ x/FILE='matrix.txt'/SIZE={3,3}/FIELD=1 TO 80.
PRINT x.
READ x/SIZE={2,4}/FIELD=1 TO 80.
PRINT x.
READ x(:,2)/FILE='matrix.txt'/FIELD=1 TO 80.
PRINT x.
READ x(1,:)/SIZE={1,4}/FIELD=1 TO 80.
PRINT x.

READ x/SIZE={2,6}/FIELD=1 TO 20 BY 5.
PRINT x.
READ x/SIZE={2,3}/FIELD=1 TO 20/FORMAT=DOLLAR.
PRINT x.
READ x/SIZE={2,4}/FIELD=1 TO 20/FORMAT=DOLLAR5.1.
PRINT x.
READ x/SIZE={2,4}/FIELD=1 TO 12/FORMAT='4PCT'.
PRINT x.
READ x/SIZE={2,4}/FIELD=1 TO 12/FORMAT='4A'.
PRINT x/FORMAT=A3.

COMPUTE y={}.
LOOP IF NOT EOF('matrix2.txt').
READ x/FILE='matrix2.txt'/SIZE={1,4}/FIELD=1 TO 80.
COMPUTE y={y; x}.
END LOOP.
PRINT y.

COMPUTE m = MAKE(5, 5, 0).
LOOP i = 1 TO 5.
READ count /FILE='matrix3.txt' /FIELD=1 TO 1 /SIZE=1.
READ m(i, 1:count) /FIELD=3 TO 100 /REREAD.
END LOOP.
PRINT m.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3305: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3305"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "x
  9
  8
  7
  6

x
  1  2  3
  4  5  6
  7  8  9

x
  10  11  12  13
  14  15  16  17

x
  10  18  12  13
  14  19  16  17

x
  20  21  22  23
  14  19  16  17

x
   1   2   3   4   5   6
   7   8   8   9  10  11

x
  1  2  3
  4  5  6

x
  1  2  3  4
  5  6  7  8

x
  1  2  3  4
  5  6  7  8

x
 abc def ghi jkl
 ABC DEF GHI JKL

y
   2   3   5   7
  11  13  17  19
  23  29  31  37
  41  43  47  53

m
  5  0  0  0  0
  1  2  3  0  0
  6 -1  2  5  1
  8  9  0  0  0
  1  3  2  0  0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:3305"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_909
#AT_START_910
at_fn_group_banner 910 'matrix.at:3364' \
  "MATRIX - READ - negative" "                       " 75
at_xfail=no
(
  printf "%s\n" "910. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
READ !.
READ x/FILE=!.
READ x/ENCODING=!.
READ x/FIELD=!.
READ x/FIELD=1 !.
READ x/FIELD=1 TO !.
READ x/FIELD=1 TO 0.
READ x/FIELD=1 TO 10 BY !.
READ x/FIELD=1 TO 10 BY 6.
READ x/SIZE=!.
READ x/MODE=!.
READ x/FORMAT=!.
READ x/FORMAT=F8.2/FORMAT=F8.2.
READ x/FORMAT='5XYZZY'.
READ x/FORMAT=XYZZY.
READ x/!.
READ x.
READ x/FIELD=1 TO 10.
READ x/FIELD=1 TO 10/SIZE={1,2}.
READ x/FIELD=1 TO 10/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT='15F'.
READ x/FIELD=1 TO 10 BY 2/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT=F5.
READ x/FIELD=1 TO 10 BY 2/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT='2F'.
READ x/FIELD=1 TO 10/SIZE={1,2;3,4}/FILE='matrix.txt'.
READ x/FIELD=1 TO 10/SIZE={1,2,3}/FILE='matrix.txt'.
READ x/FIELD=1 TO 10/SIZE={-1}/FILE='matrix.txt'.
COMPUTE x={1,2,3}.
READ x(:,:)/FIELD=1 TO 10/SIZE={2,2}/FILE='matrix.txt'.
READ x/FIELD=1 TO 10/SIZE={1,3}/FILE='matrix.txt'/MODE=SYMMETRIC.
READ x/FIELD=1 TO 10/SIZE=2/FILE='matrix.txt'.
END MATRIX.
_ATEOF

cat >matrix.txt <<'_ATEOF'
xyzzy
.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3402: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3402"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.6: error: READ: Syntax error expecting identifier.
    2 | READ !.
      |      ^

matrix.sps:3.13: error: READ: Syntax error expecting a file name or handle
name.
    3 | READ x/FILE=!.
      |             ^

matrix.sps:4.17: error: READ: Syntax error expecting string.
    4 | READ x/ENCODING=!.
      |                 ^

matrix.sps:5.14: error: READ: Syntax error expecting positive integer for
FIELD.
    5 | READ x/FIELD=!.
      |              ^

matrix.sps:6.16: error: READ: Syntax error expecting \`TO'.
    6 | READ x/FIELD=1 !.
      |                ^

matrix.sps:7.19: error: READ: Syntax error expecting positive integer for TO.
    7 | READ x/FIELD=1 TO !.
      |                   ^

matrix.sps:8.19: error: READ: Syntax error expecting positive integer for TO.
    8 | READ x/FIELD=1 TO 0.
      |                   ^

matrix.sps:9.25: error: READ: Syntax error expecting integer between 1 and 10
for BY.
    9 | READ x/FIELD=1 TO 10 BY !.
      |                         ^

matrix.sps:10.14-10.25: error: READ: Field width 6 does not evenly divide
record width 10.
   10 | READ x/FIELD=1 TO 10 BY 6.
      |              ^~~~~~~~~~~~

matrix.sps:10.14-10.20: note: READ: This syntax designates the record width.
   10 | READ x/FIELD=1 TO 10 BY 6.
      |              ^~~~~~~

matrix.sps:10.25: note: READ: This syntax specifies the field width.
   10 | READ x/FIELD=1 TO 10 BY 6.
      |                         ^

matrix.sps:11.13: error: READ: Syntax error expecting matrix expression.
   11 | READ x/SIZE=!.
      |             ^

matrix.sps:12.13: error: READ: Syntax error expecting RECTANGULAR or SYMMETRIC.
   12 | READ x/MODE=!.
      |             ^

matrix.sps:13.15: error: READ: Syntax error expecting identifier.
   13 | READ x/FORMAT=!.
      |               ^

matrix.sps:14.20-14.25: error: READ: Subcommand FORMAT may only be specified
once.
   14 | READ x/FORMAT=F8.2/FORMAT=F8.2.
      |                    ^~~~~~

matrix.sps:15.15-15.22: error: READ: Unknown format XYZZY.
   15 | READ x/FORMAT='5XYZZY'.
      |               ^~~~~~~~

matrix.sps:16.15-16.19: error: READ: Unknown format type \`XYZZY'.
   16 | READ x/FORMAT=XYZZY.
      |               ^~~~~

matrix.sps:17.8: error: READ: Syntax error expecting FILE, FIELD, MODE, REREAD,
or FORMAT.
   17 | READ x/!.
      |        ^

matrix.sps:18.1-18.7: error: READ: Required subcommand FIELD was not specified.
   18 | READ x.
      | ^~~~~~~

matrix.sps:19: error: READ: SIZE is required for reading data into a full
matrix (as opposed to a submatrix).

matrix.sps:19.6: note: READ: This expression designates a full matrix.
   19 | READ x/FIELD=1 TO 10.
      |      ^

matrix.sps:20.1-20.32: error: READ: Required subcommand FILE was not specified.
   20 | READ x/FIELD=1 TO 10/SIZE={1,2}.
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

matrix.sps:21: error: READ: 15 repetitions cannot fit in record width 10.

matrix.sps:21.57-21.61: note: READ: This syntax designates the number of
repetitions.
   21 | READ x/FIELD=1 TO 10/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT='15F'.
      |                                                         ^~~~~

matrix.sps:21.14-21.20: note: READ: This syntax designates the record width.
   21 | READ x/FIELD=1 TO 10/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT='15F'.
      |              ^~~~~~~

matrix.sps:22: error: READ: This command specifies two different field widths.

matrix.sps:22.62-22.63: note: READ: This syntax specifies field width 5.
   22 | READ x/FIELD=1 TO 10 BY 2/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT=F5.
      |                                                              ^~

matrix.sps:22.25: note: READ: This syntax specifies field width 2.
   22 | READ x/FIELD=1 TO 10 BY 2/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT=F5.
      |                         ^

matrix.sps:23: error: READ: This command specifies two different field widths.

matrix.sps:23.62-23.65: note: READ: This syntax specifies 2 repetitions.
   23 | READ x/FIELD=1 TO 10 BY 2/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT='2F'.
      |                                                              ^~~~

matrix.sps:23.14-23.20: note: READ: This syntax designates record width 10,
which divided by 2 repetitions implies field width 5.
   23 | READ x/FIELD=1 TO 10 BY 2/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT='2F'.
      |              ^~~~~~~

matrix.sps:23.25: note: READ: This syntax specifies field width 2.
   23 | READ x/FIELD=1 TO 10 BY 2/SIZE={1,2}/FILE='xyzzy.txt'/FORMAT='2F'.
      |                         ^

matrix.sps:24.27-24.35: error: MATRIX: SIZE must evaluate to a scalar or a 2-
element vector, not a 2×2 matrix.
   24 | READ x/FIELD=1 TO 10/SIZE={1,2;3,4}/FILE='matrix.txt'.
      |                           ^~~~~~~~~

matrix.sps:25.27-25.33: error: MATRIX: SIZE must evaluate to a scalar or a 2-
element vector, not a 1×3 matrix.
   25 | READ x/FIELD=1 TO 10/SIZE={1,2,3}/FILE='matrix.txt'.
      |                           ^~~~~~~

matrix.sps:26.28-26.29: error: MATRIX: Matrix dimensions -1×1 specified on SIZE
are outside valid range.
   26 | READ x/FIELD=1 TO 10/SIZE={-1}/FILE='matrix.txt'.
      |                            ^~

matrix.sps:28: error: MATRIX: Dimensions specified on SIZE differ from
dimensions of destination submatrix.

matrix.sps:28.32-28.36: note: MATRIX: SIZE specifies dimensions 2×2.
   28 | READ x(:,:)/FIELD=1 TO 10/SIZE={2,2}/FILE='matrix.txt'.
      |                                ^~~~~

matrix.sps:28.6-28.11: note: MATRIX: Destination submatrix has dimensions 1×3.
   28 | READ x(:,:)/FIELD=1 TO 10/SIZE={2,2}/FILE='matrix.txt'.
      |      ^~~~~~

matrix.sps:29: error: MATRIX: Cannot read non-square 1×3 matrix using READ with
MODE=SYMMETRIC.

matrix.txt:1.1-1.5: warning: Error reading \"xyzzy\" as format F for matrix row
1, column 1: Field contents are not numeric.

matrix.txt:2.1: warning: Error reading \".\" as format F for matrix row 2, column
1: Matrix data may not contain missing value.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:3402"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_910
#AT_START_911
at_fn_group_banner 911 'matrix.at:3569' \
  "MATRIX - WRITE" "                                 " 75
at_xfail=no
(
  printf "%s\n" "911. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
WRITE {1.5, 2; 3, 4.12345}/OUTFILE='matrix.txt'/FIELD=1 TO 80.
WRITE {1.5, 2; 3, 4.12345}/OUTFILE='matrix.txt'/FIELD=1 TO 5.
WRITE {1, 2; 3, 4}/OUTFILE='matrix.txt'/FIELD=1 TO 80 BY 5.
WRITE {1, 2; 3, 4}/OUTFILE='matrix.txt'/FIELD=1 TO 80/FORMAT=F8.2.
WRITE {1, 2; 3, 4}/OUTFILE='matrix.txt'/FIELD=1 TO 80/FORMAT=E.
WRITE {1, 2; 3, 4}/OUTFILE='matrix.txt'/FIELD=1 TO 10 BY 10/FORMAT=E.
WRITE "abcdefhi"/OUTFILE='matrix.txt'/FIELD=1 TO 80/FORMAT=A8.
WRITE "abcdefhi"/OUTFILE='matrix.txt'/FIELD=1 TO 80/FORMAT=A4.
WRITE "abcdefhi"/OUTFILE='matrix.txt'/FIELD=1 TO 80/FORMAT=AHEX12.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3583: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3583"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:3583"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3584: cat matrix.txt"
at_fn_check_prepare_trace "matrix.at:3584"
( $at_check_trace; cat matrix.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1.5 2
 3 4.12345
 1.5 2
 3
 4.12345
     1    2
     3    4
     1.00    2.00
     3.00    4.00
 1 2
 3 4
    1.E+000
    2.E+000
    3.E+000
    4.E+000
 abcdefhi
 abcd
 616263646566
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:3584"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_911
#AT_START_912
at_fn_group_banner 912 'matrix.at:3606' \
  "MATRIX - WRITE - negative" "                      " 75
at_xfail=no
(
  printf "%s\n" "912. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
WRITE !.
WRITE 1/OUTFILE=!.
WRITE 1/ENCODING=!.
WRITE 1/FIELD=!.
WRITE 1/FIELD=1 !.
WRITE 1/FIELD=1 TO 0.
WRITE 1/FIELD=1 TO 10 BY 20.
WRITE 1/FIELD=1 TO 10 BY 6.
WRITE 1/MODE=TRAPEZOIDAL.
WRITE 1/FORMAT=F5/FORMAT=F5.
WRITE 1/FORMAT='5ASDF'.
WRITE 1/FORMAT=ASDF5.
WRITE 1/!.
WRITE 1.
WRITE 1/FIELD=1 TO 10.
WRITE 1/FIELD=1 TO 10/OUTFILE='matrix.txt'/FORMAT='15F'.
WRITE 1/FIELD=1 TO 10 BY 5/OUTFILE='matrix.txt'/FORMAT='5F'.
WRITE 1/FIELD=1 TO 10 BY 5/OUTFILE='matrix.txt'/FORMAT=E.
WRITE 1/FIELD=1 TO 10/OUTFILE='matrix.txt'/FORMAT=A9.
WRITE {1,2}/FIELD=1 TO 10/OUTFILE='matrix.txt'/MODE=TRIANGULAR.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3631: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3631"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.7: error: WRITE: Syntax error expecting matrix expression.
    2 | WRITE !.
      |       ^

matrix.sps:3.17: error: WRITE: Syntax error expecting a file name or handle
name.
    3 | WRITE 1/OUTFILE=!.
      |                 ^

matrix.sps:4.18: error: WRITE: Syntax error expecting string.
    4 | WRITE 1/ENCODING=!.
      |                  ^

matrix.sps:5.15: error: WRITE: Syntax error expecting positive integer for
FIELD.
    5 | WRITE 1/FIELD=!.
      |               ^

matrix.sps:6.17: error: WRITE: Syntax error expecting \`TO'.
    6 | WRITE 1/FIELD=1 !.
      |                 ^

matrix.sps:7.20: error: WRITE: Syntax error expecting positive integer for TO.
    7 | WRITE 1/FIELD=1 TO 0.
      |                    ^

matrix.sps:8.26-8.27: error: WRITE: Syntax error expecting integer between 1
and 10 for BY.
    8 | WRITE 1/FIELD=1 TO 10 BY 20.
      |                          ^~

matrix.sps:9.15-9.26: error: WRITE: Field width 6 does not evenly divide record
width 10.
    9 | WRITE 1/FIELD=1 TO 10 BY 6.
      |               ^~~~~~~~~~~~

matrix.sps:9.15-9.21: note: WRITE: This syntax designates the record width.
    9 | WRITE 1/FIELD=1 TO 10 BY 6.
      |               ^~~~~~~

matrix.sps:9.26: note: WRITE: This syntax specifies the field width.
    9 | WRITE 1/FIELD=1 TO 10 BY 6.
      |                          ^

matrix.sps:10.14-10.24: error: WRITE: Syntax error expecting RECTANGULAR or
TRIANGULAR.
   10 | WRITE 1/MODE=TRAPEZOIDAL.
      |              ^~~~~~~~~~~

matrix.sps:11.19-11.24: error: WRITE: Subcommand FORMAT may only be specified
once.
   11 | WRITE 1/FORMAT=F5/FORMAT=F5.
      |                   ^~~~~~

matrix.sps:12.16-12.22: error: WRITE: Unknown format ASDF.
   12 | WRITE 1/FORMAT='5ASDF'.
      |                ^~~~~~~

matrix.sps:13.16-13.20: error: WRITE: Unknown format type \`ASDF'.
   13 | WRITE 1/FORMAT=ASDF5.
      |                ^~~~~

matrix.sps:14.9: error: WRITE: Syntax error expecting OUTFILE, FIELD, MODE,
HOLD, or FORMAT.
   14 | WRITE 1/!.
      |         ^

matrix.sps:15.1-15.8: error: WRITE: Required subcommand FIELD was not
specified.
   15 | WRITE 1.
      | ^~~~~~~~

matrix.sps:16.1-16.22: error: WRITE: Required subcommand OUTFILE was not
specified.
   16 | WRITE 1/FIELD=1 TO 10.
      | ^~~~~~~~~~~~~~~~~~~~~~

matrix.sps:17.51-17.55: note: WRITE: This syntax designates the number of
repetitions.
   17 | WRITE 1/FIELD=1 TO 10/OUTFILE='matrix.txt'/FORMAT='15F'.
      |                                                   ^~~~~

matrix.sps:17.15-17.21: note: WRITE: This syntax designates the record width.
   17 | WRITE 1/FIELD=1 TO 10/OUTFILE='matrix.txt'/FORMAT='15F'.
      |               ^~~~~~~

matrix.sps:18: error: WRITE: This command specifies two different field widths.

matrix.sps:18.56-18.59: note: WRITE: This syntax specifies 5 repetitions.
   18 | WRITE 1/FIELD=1 TO 10 BY 5/OUTFILE='matrix.txt'/FORMAT='5F'.
      |                                                        ^~~~

matrix.sps:18.15-18.21: note: WRITE: This syntax designates record width 10,
which divided by 5 repetitions implies field width 2.
   18 | WRITE 1/FIELD=1 TO 10 BY 5/OUTFILE='matrix.txt'/FORMAT='5F'.
      |               ^~~~~~~

matrix.sps:18.26: note: WRITE: This syntax specifies field width 5.
   18 | WRITE 1/FIELD=1 TO 10 BY 5/OUTFILE='matrix.txt'/FORMAT='5F'.
      |                          ^

matrix.sps:19: error: WRITE: Output format E5.0 specifies width 5, but E
requires a width between 6 and 40.

matrix.sps:19.56: note: WRITE: This syntax specifies format E.
   19 | WRITE 1/FIELD=1 TO 10 BY 5/OUTFILE='matrix.txt'/FORMAT=E.
      |                                                        ^

matrix.sps:19.26: note: WRITE: This syntax specifies field width 5.
   19 | WRITE 1/FIELD=1 TO 10 BY 5/OUTFILE='matrix.txt'/FORMAT=E.
      |                          ^

matrix.sps:20.51-20.52: error: WRITE: Format A9 is too wide for 8-byte matrix
elements.
   20 | WRITE 1/FIELD=1 TO 10/OUTFILE='matrix.txt'/FORMAT=A9.
      |                                                   ^~

matrix.sps:21.7-21.11: error: MATRIX: WRITE with MODE=TRIANGULAR requires a
square matrix but the matrix to be written has dimensions 1×2.
   21 | WRITE {1,2}/FIELD=1 TO 10/OUTFILE='matrix.txt'/MODE=TRIANGULAR.
      |       ^~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:3631"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_912
#AT_START_913
at_fn_group_banner 913 'matrix.at:3756' \
  "MATRIX - GET" "                                   " 75
at_xfail=no
(
  printf "%s\n" "913. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /a b c.
MISSING VALUES a(1) b(5).
BEGIN DATA.
0 0 0
1 2 3
4 5 6
7 8 .
END DATA.

MATRIX.
GET x0 /NAMES=names0.
PRINT x0.
PRINT names0/FORMAT=A8.
END MATRIX.

MATRIX.
GET x1 /VARIABLES=a b c /NAMES=names1 /MISSING=OMIT.
PRINT x1.
PRINT names1/FORMAT=A8.
END MATRIX.

MATRIX.
GET x2 /VARIABLES=a b /NAMES=names2 /MISSING=OMIT.
PRINT x2.
PRINT names2/FORMAT=A8.
END MATRIX.

MATRIX.
GET x3 /FILE=* /VARIABLES=a b c /NAMES=names3 /MISSING=5.
PRINT x3.
PRINT names3/FORMAT=A8.
END MATRIX.

MATRIX.
GET x4 /FILE=* /VARIABLES=a b /NAMES=names4 /MISSING=5.
PRINT x4.
PRINT names4/FORMAT=A8.
END MATRIX.

SAVE OUTFILE='matrix.sav'.
NEW FILE.

MATRIX.
GET x5 /FILE='matrix.sav' /VARIABLES=a b c /NAMES=names5 /MISSING=ACCEPT.
PRINT x5.
PRINT names5/FORMAT=A8.
END MATRIX.

MATRIX.
GET x6 /FILE='matrix.sav' /VARIABLES=a b c /NAMES=names6 /MISSING=ACCEPT /SYSMIS=9.
PRINT x6.
PRINT names6/FORMAT=A8.
END MATRIX.

MATRIX.
GET x7 /FILE='matrix.sav' /VARIABLES=a b c /NAMES=names7 /MISSING=ACCEPT /SYSMIS=OMIT.
PRINT x7.
PRINT names7/FORMAT=A8.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3818: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3818"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:11: error: MATRIX: Variable a in case 2 has user-missing value 1.

matrix.sps:12.7-12.8: error: MATRIX: Uninitialized variable x0 used in
expression.
   12 | PRINT x0.
      |       ^~

names0
 a
 b
 c

matrix.sps:17: error: MATRIX: Variable c in case 4 is system-missing.

matrix.sps:18.7-18.8: error: MATRIX: Uninitialized variable x1 used in
expression.
   18 | PRINT x1.
      |       ^~

names1
 a
 b
 c

x2
  0  0
  7  8

names2
 a
 b

matrix.sps:29: error: MATRIX: Variable c in case 4 is system-missing.

matrix.sps:30.7-30.8: error: MATRIX: Uninitialized variable x3 used in
expression.
   30 | PRINT x3.
      |       ^~

names3
 a
 b
 c

x4
  0  0
  5  2
  4  5
  7  8

names4
 a
 b

matrix.sps:44: error: MATRIX: Variable c in case 4 is system-missing.

matrix.sps:45.7-45.8: error: MATRIX: Uninitialized variable x5 used in
expression.
   45 | PRINT x5.
      |       ^~

names5
 a
 b
 c

x6
  0  0  0
  1  2  3
  4  5  6
  7  8  9

names6
 a
 b
 c

x7
  0  0  0
  1  2  3
  4  5  6

names7
 a
 b
 c
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:3818"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_913
#AT_START_914
at_fn_group_banner 914 'matrix.at:3908' \
  "MATRIX - GET - negative" "                        " 75
at_xfail=no
(
  printf "%s\n" "914. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /a b c * d(a1).
MISSING VALUES a(1) b(5).
BEGIN DATA.
0 0 0 a
1 2 3 b
4 5 6 b
7 8 . d
END DATA.
SAVE OUTFILE='matrix.sav'.

MATRIX.
GET !.
GET x/VARIABLES=!.
GET x/FILE=!.
GET x/ENCODING=!.
GET x/NAMES=!.
GET x/MISSING=!.
GET x/SYSMIS=!.
GET x/!.
GET x/VARIABLES=!.
GET x/VARIABLES=x TO !.
GET x/VARIABLES=x.
GET x/VARIABLES=c TO a.
GET x/VARIABLES=d.
GET x.
END MATRIX.

NEW FILE.
MATRIX.
GET x/VARIABLES=a.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:3942: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:3942"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:12.5: error: GET: Syntax error expecting identifier.
   12 | GET !.
      |     ^

matrix.sps:13.17: error: GET: Syntax error expecting variable name.
   13 | GET x/VARIABLES=!.
      |                 ^

matrix.sps:14.12: error: GET: Syntax error expecting a file name or handle
name.
   14 | GET x/FILE=!.
      |            ^

matrix.sps:15.16: error: GET: Syntax error expecting string.
   15 | GET x/ENCODING=!.
      |                ^

matrix.sps:16.13: error: GET: Syntax error expecting identifier.
   16 | GET x/NAMES=!.
      |             ^

matrix.sps:17.15: error: GET: Syntax error expecting ACCEPT or OMIT or a number
for MISSING.
   17 | GET x/MISSING=!.
      |               ^

matrix.sps:18.14: error: GET: Syntax error expecting OMIT or a number for
SYSMIS.
   18 | GET x/SYSMIS=!.
      |              ^

matrix.sps:19.7: error: GET: Syntax error expecting FILE, VARIABLES, NAMES,
MISSING, or SYSMIS.
   19 | GET x/!.
      |       ^

matrix.sps:20.17: error: GET: Syntax error expecting variable name.
   20 | GET x/VARIABLES=!.
      |                 ^

matrix.sps:21.22: error: GET: Syntax error expecting variable name.
   21 | GET x/VARIABLES=x TO !.
      |                      ^

matrix.sps:22.17: error: MATRIX: x is not a variable name.
   22 | GET x/VARIABLES=x.
      |                 ^

matrix.sps:23.17-23.22: error: MATRIX: c TO a is not valid syntax since c
precedes a in the dictionary.
   23 | GET x/VARIABLES=c TO a.
      |                 ^~~~~~

matrix.sps:24.17: error: MATRIX: d is not a numeric variable.
   24 | GET x/VARIABLES=d.
      |                 ^

matrix.sps:25: error: MATRIX: Variable d is not numeric.

matrix.sps:30: error: MATRIX: The GET command cannot read an empty active file.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:3942"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_914
#AT_START_915
at_fn_group_banner 915 'matrix.at:4006' \
  "MATRIX - SAVE" "                                  " 75
at_xfail=no
(
  printf "%s\n" "915. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
SAVE {1,2,3; 4,5,6}/OUTFILE='matrix.sav'.
SAVE {7,8,9}/VARIABLES=a b c d.

SAVE {1,2,3}/OUTFILE='matrix2.sav'/VARIABLES=v01 TO v03.
SAVE {4,5,6}/NAMES={'x', 'y', 'z', 'w'}.

SAVE {1,'abcd',3}/OUTFILE='matrix3.sav'/NAMES={'a', 'b', 'c'}/STRINGS=b.
SAVE {4,'xyzw',6}/STRINGS=a, b.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4019: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4019"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4019"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4020: pspp-convert matrix.sav matrix.csv && cat matrix.csv"
at_fn_check_prepare_trace "matrix.at:4020"
( $at_check_trace; pspp-convert matrix.sav matrix.csv && cat matrix.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "COL1,COL2,COL3
1,2,3
4,5,6
7,8,9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4020"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4026: pspp-convert matrix2.sav matrix2.csv && cat matrix2.csv"
at_fn_check_prepare_trace "matrix.at:4026"
( $at_check_trace; pspp-convert matrix2.sav matrix2.csv && cat matrix2.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "v01,v02,v03
1,2,3
4,5,6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4026"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4031: pspp-convert matrix3.sav matrix3.csv && cat matrix3.csv"
at_fn_check_prepare_trace "matrix.at:4031"
( $at_check_trace; pspp-convert matrix3.sav matrix3.csv && cat matrix3.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a,b,c
1,abcd,3
4,xyzw,6
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4031"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_915
#AT_START_916
at_fn_group_banner 916 'matrix.at:4038' \
  "MATRIX - SAVE - inline" "                         " 75
at_xfail=no
(
  printf "%s\n" "916. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
SAVE {1,2,3; 4,5,6}/OUTFILE=*.
SAVE {7,8,9}/VARIABLES=a b c d.
END MATRIX.
LIST.

MATRIX.
SAVE {1,2,3}/OUTFILE=*/VARIABLES=v01 TO v03.
SAVE {4,5,6}/NAMES={'x', 'y', 'z', 'w'}.
END MATRIX.
LIST.

MATRIX.
SAVE {1,'abcd',3}/OUTFILE=*/NAMES={'a', 'b', 'c'}/STRINGS=b.
SAVE {4,'xyzw',6}/STRINGS=a, b.
END MATRIX.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4058: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4058"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
COL1,COL2,COL3
1.00,2.00,3.00
4.00,5.00,6.00
7.00,8.00,9.00

Table: Data List
v01,v02,v03
1.00,2.00,3.00
4.00,5.00,6.00

Table: Data List
a,b,c
1.00,abcd,3.00
4.00,xyzw,6.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4058"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_916
#AT_START_917
at_fn_group_banner 917 'matrix.at:4077' \
  "MATRIX - SAVE - negative" "                       " 75
at_xfail=no
(
  printf "%s\n" "917. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
SAVE !.
SAVE 1/OUTFILE=!.
SAVE 1/VARIABLES=!.
SAVE 1/NAMES=!.
SAVE 1/!.
SAVE 1.
SAVE 1/OUTFILE='matrix.sav'/NAMES={'a'}/VARIABLES=a.
SAVE 1/OUTFILE='matrix2.sav'.
SAVE {1,2}/OUTFILE='matrix2.sav'.
SAVE {1,2}/OUTFILE='matrix3.sav'/NAMES={'a', 'a'}.
SAVE {1,2}/OUTFILE='matrix4.sav'/STRINGS=a.
SAVE {1,2}/OUTFILE='matrix5.sav'/STRINGS=a, b.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4094: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4094"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.6: error: SAVE: Syntax error expecting matrix expression.
    2 | SAVE !.
      |      ^

matrix.sps:3.16: error: SAVE: Syntax error expecting a file name or handle
name.
    3 | SAVE 1/OUTFILE=!.
      |                ^

matrix.sps:4.18: error: SAVE: Syntax error expecting variable name.
    4 | SAVE 1/VARIABLES=!.
      |                  ^

matrix.sps:5.14: error: SAVE: Syntax error expecting matrix expression.
    5 | SAVE 1/NAMES=!.
      |              ^

matrix.sps:6.8: error: SAVE: Syntax error expecting OUTFILE, VARIABLES, NAMES,
or STRINGS.
    6 | SAVE 1/!.
      |        ^

matrix.sps:7.1-7.7: error: SAVE: Required subcommand OUTFILE was not specified.
    7 | SAVE 1.
      | ^~~~~~~

matrix.sps:8.35-8.39: warning: SAVE: Ignoring NAMES because VARIABLES was also
specified.
    8 | SAVE 1/OUTFILE='matrix.sav'/NAMES={'a'}/VARIABLES=a.
      |                                   ^~~~~

matrix.sps:10: error: MATRIX: Cannot save 1×2 matrix to \`matrix2.sav' because
the first SAVE to \`matrix2.sav' in this matrix program wrote a 1-column matrix.

matrix.sps:9: error: MATRIX: This is the location of the first SAVE to
\`matrix2.sav'.

error: Duplicate variable name a in SAVE statement.

error: The SAVE command STRINGS subcommand specifies an unknown variable a.

error: The SAVE command STRINGS subcommand specifies 2 unknown variables,
including a.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4094"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_917
#AT_START_918
at_fn_group_banner 918 'matrix.at:4141' \
  "MATRIX - MGET" "                                  " 75
at_xfail=no
(
  printf "%s\n" "918. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=ROWTYPE_ var01 TO var08.
BEGIN DATA.
MEAN  24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
SD     5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
N       92    92    92    92    92    92    92    92
CORR  1.00
CORR   .18  1.00
CORR  -.22  -.17  1.00
CORR   .36   .31  -.14  1.00
CORR   .27   .16  -.12   .22  1.00
CORR   .33   .15  -.17   .24   .21  1.00
CORR   .50   .29  -.20   .32   .12   .38  1.00
CORR   .17   .29  -.05   .20   .27   .20   .04  1.00
END DATA.

MATRIX.
MGET.
PRINT MN/FORMAT=F5.1.
PRINT SD/FORMAT=F5.1.
PRINT NC/FORMAT=F5.0.
PRINT CR/FORMAT=F5.2.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4167: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4167"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Matrix Variables Created by MGET
,Dimensions,
,Rows,Columns
MN,1,8
SD,1,8
NC,1,8
CR,8,8

MN
24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7

SD
5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5

NC
92    92    92    92    92    92    92    92

CR
1.00   .18  -.22   .36   .27   .33   .50   .17
.18  1.00  -.17   .31   .16   .15   .29   .29
-.22  -.17  1.00  -.14  -.12  -.17  -.20  -.05
.36   .31  -.14  1.00   .22   .24   .32   .20
.27   .16  -.12   .22  1.00   .21   .12   .27
.33   .15  -.17   .24   .21  1.00   .38   .20
.50   .29  -.20   .32   .12   .38  1.00   .04
.17   .29  -.05   .20   .27   .20   .04  1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4167"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_918
#AT_START_919
at_fn_group_banner 919 'matrix.at:4197' \
  "MATRIX - MGET with split variables" "             " 75
at_xfail=no
(
  printf "%s\n" "919. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
matrix data
    variables = s1 s2 rowtype_  var01 var02 var03
    /split=s1 s2.

begin data
8 0   mean     21.4  5.0  72.9
8 0   sd       6.5   1.6  22.8
8 0   n        106   106  106
8 0   corr     1
8 0   corr    .41  1
8 0   corr    -.16  -.22  1
8 1   mean     11.4  1.0  52.9
8 1   sd       9.5   8.6  12.8
8 1   n        10   11  12
8 1   corr     1
8 1   corr    .51  1
8 1   corr    .36  -.41  1
end data.

MATRIX.
MGET.
PRINT MNS1/FORMAT=F5.1.
PRINT SDS1/FORMAT=F5.1.
PRINT NCS1/FORMAT=F5.0.
PRINT CRS1/FORMAT=F5.2.
PRINT MNS2/FORMAT=F5.1.
PRINT SDS2/FORMAT=F5.1.
PRINT NCS2/FORMAT=F5.0.
PRINT CRS2/FORMAT=F5.2.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4230: pspp -O format=csv matrix.sps"
at_fn_check_prepare_trace "matrix.at:4230"
( $at_check_trace; pspp -O format=csv matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Matrix Variables Created by MGET
,Split Values,,Dimensions,
,s1,s2,Rows,Columns
MNS1,8,0,1,3
SDS1,8,0,1,3
NCS1,8,0,1,3
CRS1,8,0,3,3
MNS2,8,1,1,3
SDS2,8,1,1,3
NCS2,8,1,1,3
CRS2,8,1,3,3

MNS1
21.4   5.0  72.9

SDS1
6.5   1.6  22.8

NCS1
106   106   106

CRS1
1.00   .41  -.16
.41  1.00  -.22
-.16  -.22  1.00

MNS2
11.4   1.0  52.9

SDS2
9.5   8.6  12.8

NCS2
10    11    12

CRS2
1.00   .51   .36
.51  1.00  -.41
.36  -.41  1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4230"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_919
#AT_START_920
at_fn_group_banner 920 'matrix.at:4273' \
  "MATRIX - MGET with factor variables" "            " 75
at_xfail=no
(
  printf "%s\n" "920. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=ROWTYPE_ f1 var01 TO var04
    /FACTOR=f1.
BEGIN DATA.
MEAN 0 34 35 36 37
SD   0 22 11 55 66
N    0 99 98 99 92
MEAN 1 44 45 34 39
SD   1 23 15 51 46
N    1 98 34 87 23
CORR .  1
CORR . .9  1
CORR . .8 .6  1
CORR . .7 .5 .4  1
END DATA.
FORMATS var01 TO var04(F5.1).
SAVE OUTFILE='matrix.sav'.
_ATEOF

cat >matrix2.sps <<'_ATEOF'
MATRIX.
MGET FILE='matrix.sav'.
PRINT MNF1/FORMAT=F2.0.
PRINT SDF1/FORMAT=F2.0.
PRINT NCF1/FORMAT=F2.0.
PRINT MNF2/FORMAT=F2.0.
PRINT SDF2/FORMAT=F2.0.
PRINT NCF2/FORMAT=F2.0.
PRINT CR/FORMAT=F3.1.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4305: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4305"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4305"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4306: pspp -O format=csv matrix2.sps"
at_fn_check_prepare_trace "matrix.at:4306"
( $at_check_trace; pspp -O format=csv matrix2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Matrix Variables Created by MGET
,Factors,Dimensions,
,f1,Rows,Columns
MNF1,0,1,4
SDF1,0,1,4
NCF1,0,1,4
MNF2,1,1,4
SDF2,1,1,4
NCF2,1,1,4
CR,.,4,4

MNF1
34 35 36 37

SDF1
22 11 55 66

NCF1
99 98 99 92

MNF2
44 45 34 39

SDF2
23 15 51 46

NCF2
98 34 87 23

CR
1.0  .9  .8  .7
.9 1.0  .6  .5
.8  .6 1.0  .4
.7  .5  .4 1.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4306"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_920
#AT_START_921
at_fn_group_banner 921 'matrix.at:4344' \
  "MATRIX - MGET with factor and split variables" "  " 75
at_xfail=no
(
  printf "%s\n" "921. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
matrix data
    variables = s f rowtype_  var01 var02 var03
    /split=s
    /factor=f.

begin data
8 0   mean     21.4  5.0  72.9
8 0   sd       6.5   1.6  22.8
8 0   n        106   106  106
8 .   corr     1
8 .   corr    .41  1
8 .   corr    -.16  -.22  1
9 1   mean     11.4  1.0  52.9
9 1   sd       9.5   8.6  12.8
9 1   n        10   11  12
9 .   corr     1
9 .   corr    .51  1
9 .   corr    .36  -.41  1
end data.

MATRIX.
MGET.
PRINT MNF1S1/FORMAT=F5.1.
PRINT SDF1S1/FORMAT=F5.1.
PRINT NCF1S1/FORMAT=F5.0.
PRINT CRS1/FORMAT=F5.2.
PRINT MNF1S2/FORMAT=F5.1.
PRINT SDF1S2/FORMAT=F5.1.
PRINT NCF1S2/FORMAT=F5.0.
PRINT CRS2/FORMAT=F5.2.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4378: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4378"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Matrix Variables Created by MGET
,Split Values,Factors,Dimensions,
,s,f,Rows,Columns
MNF1S1,8,0,1,3
SDF1S1,8,0,1,3
NCF1S1,8,0,1,3
CRS1,8,.,3,3
MNF1S2,9,1,1,3
SDF1S2,9,1,1,3
NCF1S2,9,1,1,3
CRS2,9,.,3,3

MNF1S1
21.4   5.0  72.9

SDF1S1
6.5   1.6  22.8

NCF1S1
106   106   106

CRS1
1.00   .41  -.16
.41  1.00  -.22
-.16  -.22  1.00

MNF1S2
11.4   1.0  52.9

SDF1S2
9.5   8.6  12.8

NCF1S2
10    11    12

CRS2
1.00   .51   .36
.51  1.00  -.41
.36  -.41  1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4378"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_921
#AT_START_922
at_fn_group_banner 922 'matrix.at:4421' \
  "MATRIX - MGET with TYPE" "                        " 75
at_xfail=no
(
  printf "%s\n" "922. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX DATA
    VARIABLES=ROWTYPE_ f1 var01 TO var04
    /FACTOR=f1.
BEGIN DATA.
MEAN 0 34 35 36 37
SD   0 22 11 55 66
N    0 99 98 99 92
MEAN 1 44 45 34 39
SD   1 23 15 51 46
N    1 98 34 87 23
CORR .  1
CORR . .9  1
CORR . .8 .6  1
CORR . .7 .5 .4  1
END DATA.
FORMATS var01 TO var04(F5.1).
SAVE OUTFILE='matrix.sav'.
_ATEOF

cat >matrix2.sps <<'_ATEOF'
MATRIX.
MGET/FILE='matrix.sav'/TYPE=CORR.
PRINT CR/FORMAT=F3.1.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4447: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4447"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4447"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4448: pspp -O format=csv matrix2.sps"
at_fn_check_prepare_trace "matrix.at:4448"
( $at_check_trace; pspp -O format=csv matrix2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Matrix Variables Created by MGET
,Factors,Dimensions,
,f1,Rows,Columns
CR,.,4,4

CR
1.0  .9  .8  .7
.9 1.0  .6  .5
.8  .6 1.0  .4
.7  .5  .4 1.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4448"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_922
#AT_START_923
at_fn_group_banner 923 'matrix.at:4462' \
  "MATRIX - MGET - negative - parsing" "             " 75
at_xfail=no
(
  printf "%s\n" "923. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
MGET !.
MGET FILE=!.
MGET ENCODING=!.
MGET TYPE=!.
MGET TYPE=CORR !.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4472: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4472"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.6: error: MGET: Syntax error expecting FILE or TYPE.
    2 | MGET !.
      |      ^

matrix.sps:3.11: error: MGET: Syntax error expecting a file name or handle
name.
    3 | MGET FILE=!.
      |           ^

matrix.sps:4.15: error: MGET: Syntax error expecting string.
    4 | MGET ENCODING=!.
      |               ^

matrix.sps:5.11: error: MGET: Syntax error expecting COV, CORR, MEAN, STDDEV,
N, or COUNT.
    5 | MGET TYPE=!.
      |           ^

matrix.sps:6.16: error: MGET: Syntax error expecting COV, CORR, MEAN, STDDEV,
N, or COUNT.
    6 | MGET TYPE=CORR !.
      |                ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4472"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_923
#AT_START_924
at_fn_group_banner 924 'matrix.at:4498' \
  "MATRIX - MGET - missing VARNAME_ and ROWTYPE_" "  " 75
at_xfail=no
(
  printf "%s\n" "924. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x.
BEGIN DATA.
1
END DATA.

MATRIX.
MGET.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4509: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4509"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:7: error: MATRIX: Matrix data file lacks ROWTYPE_ variable.

matrix.sps:7: error: MATRIX: Matrix data file lacks VARNAME_ variable.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4509"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_924
#AT_START_925
at_fn_group_banner 925 'matrix.at:4516' \
  "MATRIX - MGET - wrong format for VARNAME_ and ROWTYPE_" "" 75
at_xfail=no
(
  printf "%s\n" "925. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /VARNAME_ * ROWTYPE_ (A7).
BEGIN DATA.
1 asdf
END DATA.

MATRIX.
MGET.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4527: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4527"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:7: error: MATRIX: ROWTYPE_ variable in matrix data file must be 8-
byte string, but it has width 7.

matrix.sps:7: error: MATRIX: VARNAME_ variable in matrix data file must be 8-
byte string, but it has width 0.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4527"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_925
#AT_START_926
at_fn_group_banner 926 'matrix.at:4536' \
  "MATRIX - MGET - wrong order for VARNAME_ and ROWTYPE_" "" 75
at_xfail=no
(
  printf "%s\n" "926. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /VARNAME_ ROWTYPE_ (A8).
BEGIN DATA.
asdf jkl;
END DATA.

MATRIX.
MGET.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4547: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4547"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:7: error: MATRIX: ROWTYPE_ must precede VARNAME_ in matrix data
file.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4547"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_926
#AT_START_927
at_fn_group_banner 927 'matrix.at:4553' \
  "MATRIX - MGET - no continuous variables" "        " 75
at_xfail=no
(
  printf "%s\n" "927. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /ROWTYPE_ VARNAME_ (A8).
BEGIN DATA.
asdf jkl;
END DATA.

MATRIX.
MGET.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4564: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4564"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:7: error: MATRIX: Matrix data file contains no continuous variables.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4564"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_927
#AT_START_928
at_fn_group_banner 928 'matrix.at:4569' \
  "MATRIX - MGET - unexpected string variables" "    " 75
at_xfail=no
(
  printf "%s\n" "928. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /ROWTYPE_ VARNAME_ cvar1 (A8).
BEGIN DATA.
asdf jkl; zxcv
END DATA.

MATRIX.
MGET.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4580: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4580"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:7: error: MATRIX: Matrix data file contains unexpected string
variable cvar1.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4580"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_928
#AT_START_929
at_fn_group_banner 929 'matrix.at:4586' \
  "MATRIX - MGET - unknown ROWTYPE_" "               " 75
at_xfail=no
(
  printf "%s\n" "929. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /ROWTYPE_ VARNAME_ (A8) cvar1.
BEGIN DATA.
asdf jkl; 1
END DATA.

MATRIX.
MGET.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4597: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4597"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"matrix.sps:7: error: MATRIX: Matrix data file contains unknown ROWTYPE_ \"\"asdf\"\".\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4597"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_929
#AT_START_930
at_fn_group_banner 930 'matrix.at:4602' \
  "MATRIX - MGET - duplicate matrix variable name" " " 75
at_xfail=no
(
  printf "%s\n" "930. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /ROWTYPE_ VARNAME_ (A8) cvar1.
BEGIN DATA.
corr jkl; 1
END DATA.

MATRIX.
MGET.
MGET.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4614: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4614"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Matrix Variables Created by MGET
,Dimensions,
,Rows,Columns
CR,1,1

matrix.sps:8: warning: MATRIX: Matrix data file contains variable with existing name CR.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4614"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_930
#AT_START_931
at_fn_group_banner 931 'matrix.at:4624' \
  "MATRIX - MGET - missing values in input" "        " 75
at_xfail=no
(
  printf "%s\n" "931. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /s1 * ROWTYPE_ VARNAME_ (A8) cvar1 cvar2.
BEGIN DATA.
1 n "" 1 .
2 n "" . .
END DATA.

MATRIX.
MGET.
PRINT ncs1/FORMAT=F5.
PRINT ncs2/FORMAT=F5.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4638: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4638"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"matrix.sps:8: error: MATRIX: Matrix data file variable NCS1 contains a missing value, which was treated as zero.\"

\"matrix.sps:8: error: MATRIX: Matrix data file variable NCS2 contains 2 missing values, which were treated as zero.\"

Table: Matrix Variables Created by MGET
,Split Values,Dimensions,
,s1,Rows,Columns
NCS1,1.00,1,2
NCS2,2.00,1,2

ncs1
1     0

ncs2
0     0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4638"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_931
#AT_START_932
at_fn_group_banner 932 'matrix.at:4657' \
  "MATRIX - MSAVE" "                                 " 75
at_xfail=no
(
  printf "%s\n" "932. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
MSAVE {1, 2; 3, 4}/TYPE=CORR/VARIABLES=X,Y/OUTFILE='matrix.sav'.
MSAVE {5, 6; 7, 8; 9, 10}/TYPE=COV/VARIABLES=X,Y.
MSAVE {11, 12}/TYPE=MEAN.
MSAVE {13, 14}/TYPE=STDDEV.
MSAVE {15, 16}/TYPE=N.
MSAVE {17, 18}/TYPE=COUNT.
END MATRIX.
GET 'matrix.sav'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4670: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4670"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,VARNAME_,X,Y
CORR,X,1.00,2.00
CORR,Y,3.00,4.00
COV,X,5.00,6.00
COV,Y,7.00,8.00
COV,,9.00,10.00
MEAN,,11.00,12.00
STDDEV,,13.00,14.00
N,,15.00,16.00
COUNT,,17.00,18.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4670"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_932
#AT_START_933
at_fn_group_banner 933 'matrix.at:4685' \
  "MATRIX - MSAVE with factor variables" "           " 75
at_xfail=no
(
  printf "%s\n" "933. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
MSAVE {1, 2; 3, 4}/TYPE=CORR/FACTOR={1,1}/FNAMES=X,Y/OUTFILE='matrix.sav'.
MSAVE {5, 6; 7, 8; 9, 10}/TYPE=COV.
MSAVE {11, 12}/TYPE=MEAN.
MSAVE {13, 14}/FACTOR={2,1}/TYPE=STDDEV.
MSAVE {15, 16}/TYPE=N.
MSAVE {17, 18}/FACTOR={1,2}/TYPE=COUNT.
END MATRIX.
GET 'matrix.sav'.
LIST.

MATRIX.
MSAVE {1, 2; 3, 4}/TYPE=CORR/FACTOR={5,6,7,8}/OUTFILE='matrix2.sav'.
END MATRIX.
GET 'matrix2.sav'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4704: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4704"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
ROWTYPE_,X,Y,VARNAME_,COL1,COL2
CORR,1.00,1.00,COL1,1.00,2.00
CORR,1.00,1.00,COL2,3.00,4.00
COV,1.00,1.00,COL1,5.00,6.00
COV,1.00,1.00,COL2,7.00,8.00
COV,1.00,1.00,,9.00,10.00
MEAN,1.00,1.00,,11.00,12.00
STDDEV,2.00,1.00,,13.00,14.00
N,2.00,1.00,,15.00,16.00
COUNT,1.00,2.00,,17.00,18.00

Table: Data List
ROWTYPE_,FAC1,FAC2,FAC3,FAC4,VARNAME_,COL1,COL2
CORR,5.00,6.00,7.00,8.00,COL1,1.00,2.00
CORR,5.00,6.00,7.00,8.00,COL2,3.00,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4704"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_933
#AT_START_934
at_fn_group_banner 934 'matrix.at:4724' \
  "MATRIX - MSAVE with split variables" "            " 75
at_xfail=no
(
  printf "%s\n" "934. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
MSAVE {1, 2; 3, 4}/TYPE=CORR/SPLIT={1,1}/SNAMES=X,Y/OUTFILE='matrix.sav'.
MSAVE {5, 6; 7, 8; 9, 10}/TYPE=COV.
MSAVE {11, 12}/TYPE=MEAN.
MSAVE {13, 14}/SPLIT={2,1}/TYPE=STDDEV.
MSAVE {15, 16}/TYPE=N.
MSAVE {17, 18}/SPLIT={1,2}/TYPE=COUNT.
END MATRIX.
GET 'matrix.sav'.
LIST.

MATRIX.
MSAVE {1, 2; 3, 4}/TYPE=CORR/SPLIT={5,6,7,8}/OUTFILE='matrix2.sav'.
END MATRIX.
GET 'matrix2.sav'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4743: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4743"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X,Y,ROWTYPE_,VARNAME_,COL1,COL2
1.00,1.00,CORR,COL1,1.00,2.00
1.00,1.00,CORR,COL2,3.00,4.00
1.00,1.00,COV,COL1,5.00,6.00
1.00,1.00,COV,COL2,7.00,8.00
1.00,1.00,COV,,9.00,10.00
1.00,1.00,MEAN,,11.00,12.00
2.00,1.00,STDDEV,,13.00,14.00
2.00,1.00,N,,15.00,16.00
1.00,2.00,COUNT,,17.00,18.00

Table: Data List
SPL1,SPL2,SPL3,SPL4,ROWTYPE_,VARNAME_,COL1,COL2
5.00,6.00,7.00,8.00,CORR,COL1,1.00,2.00
5.00,6.00,7.00,8.00,CORR,COL2,3.00,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4743"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_934
#AT_START_935
at_fn_group_banner 935 'matrix.at:4763' \
  "MATRIX - MSAVE with factor and split variables" " " 75
at_xfail=no
(
  printf "%s\n" "935. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
MSAVE {1, 2; 3, 4}/TYPE=CORR/SPLIT=1/FACTOR=1/OUTFILE='matrix.sav'.
MSAVE {5, 6; 7, 8; 9, 10}/TYPE=COV.
MSAVE {11, 12}/FACTOR=2/TYPE=MEAN.
MSAVE {13, 14}/FACTOR=1/SPLIT=2/TYPE=STDDEV.
MSAVE {15, 16}/TYPE=N.
MSAVE {17, 18}/FACTOR=2/TYPE=COUNT.
END MATRIX.
GET 'matrix.sav'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4776: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:4776"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
SPL1,ROWTYPE_,FAC1,VARNAME_,COL1,COL2
1.00,CORR,1.00,COL1,1.00,2.00
1.00,CORR,1.00,COL2,3.00,4.00
1.00,COV,1.00,COL1,5.00,6.00
1.00,COV,1.00,COL2,7.00,8.00
1.00,COV,1.00,,9.00,10.00
1.00,MEAN,2.00,,11.00,12.00
2.00,STDDEV,1.00,,13.00,14.00
2.00,N,1.00,,15.00,16.00
2.00,COUNT,2.00,,17.00,18.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:4776"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_935
#AT_START_936
at_fn_group_banner 936 'matrix.at:4791' \
  "MATRIX - MSAVE - negative" "                      " 75
at_xfail=no
(
  printf "%s\n" "936. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
MSAVE !.
MSAVE 1/TYPE=!.
MSAVE 1/OUTFILE=!.
MSAVE 1/VARIABLES=!.
MSAVE 1/FNAMES=!.
MSAVE 1/SNAMES=!.
MSAVE 1/SPLIT=!.
MSAVE 1/FACTOR=!.
MSAVE 1/!.
MSAVE 1.
MSAVE 1/TYPE=COV/FNAMES=x.
MSAVE 1/TYPE=COV/SNAMES=x.
MSAVE 1/TYPE=COV.

MSAVE 1/TYPE=COV/OUTFILE='matrix.sav'
    /FACTOR=1 /FNAMES=y
    /SPLIT=2 /SNAMES=z
    /VARIABLES=w.
MSAVE 1/TYPE=COV/OUTFILE='matrix2.sav'.
MSAVE 1/TYPE=COV/VARIABLES=x.
MSAVE 1/TYPE=COV/FNAMES=x.
MSAVE 1/TYPE=COV/SNAMES=x.
END MATRIX.

MATRIX.
MSAVE 1/TYPE=COV/VARIABLES=x/OUTFILE='matrix3.sav'/FACTOR=1/SPLIT=2.
MSAVE {1,2}/TYPE=COV/VARIABLES=x/OUTFILE='matrix3.sav'/FACTOR=1/SPLIT=2.
MSAVE {1,2;3}/TYPE=COV.
MSAVE 0/TYPE=COV/FACTOR={1,2}.
MSAVE 0/TYPE=COV/FACTOR=1/SPLIT={1;2}.
END MATRIX.

MATRIX.
MSAVE 1/TYPE=COV/OUTFILE='matrix4.sav'/SNAMES=x,x/SPLIT=1.
END MATRIX.

MATRIX.
MSAVE 1/TYPE=COV/OUTFILE='matrix5.sav'/SNAMES=x/FNAMES=x/SPLIT=1/FACTOR=1.
END MATRIX.

MATRIX.
MSAVE 1/TYPE=COV/OUTFILE='matrix6.sav'/VARIABLES=x/FNAMES=x/FACTOR=1.
END MATRIX.

MATRIX.
MSAVE 1/TYPE=COV/OUTFILE='matrix6.sav'/VARIABLES=x/SNAMES=x/SPLIT=1.
END MATRIX.

MATRIX.
MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/SNAMES=VARNAME_.
MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/SNAMES=ROWTYPE_.
MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/FNAMES=VARNAME_.
MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/FNAMES=ROWTYPE_.
MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/VARIABLES=VARNAME_.
MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/VARIABLES=ROWTYPE_.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:4851: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:4851"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.7: error: MSAVE: Syntax error expecting matrix expression.
    2 | MSAVE !.
      |       ^

matrix.sps:3.14: error: MSAVE: Syntax error expecting COV, CORR, MEAN, STDDEV,
N, or COUNT.
    3 | MSAVE 1/TYPE=!.
      |              ^

matrix.sps:4.17: error: MSAVE: Syntax error expecting a file name or handle
name.
    4 | MSAVE 1/OUTFILE=!.
      |                 ^

matrix.sps:5.19: error: MSAVE: Syntax error expecting variable name.
    5 | MSAVE 1/VARIABLES=!.
      |                   ^

matrix.sps:6.16: error: MSAVE: Syntax error expecting variable name.
    6 | MSAVE 1/FNAMES=!.
      |                ^

matrix.sps:7.16: error: MSAVE: Syntax error expecting variable name.
    7 | MSAVE 1/SNAMES=!.
      |                ^

matrix.sps:8.15: error: MSAVE: Syntax error expecting matrix expression.
    8 | MSAVE 1/SPLIT=!.
      |               ^

matrix.sps:9.16: error: MSAVE: Syntax error expecting matrix expression.
    9 | MSAVE 1/FACTOR=!.
      |                ^

matrix.sps:10.9: error: MSAVE: Syntax error expecting TYPE, OUTFILE, VARIABLES,
FNAMES, SNAMES, SPLIT, or FACTOR.
   10 | MSAVE 1/!.
      |         ^

matrix.sps:11.1-11.8: error: MSAVE: Required subcommand TYPE was not specified.
   11 | MSAVE 1.
      | ^~~~~~~~

matrix.sps:12.25: error: MSAVE: FNAMES requires FACTOR.
   12 | MSAVE 1/TYPE=COV/FNAMES=x.
      |                         ^

matrix.sps:13.25: error: MSAVE: SNAMES requires SPLIT.
   13 | MSAVE 1/TYPE=COV/SNAMES=x.
      |                         ^

matrix.sps:14.1-14.17: error: MSAVE: Required subcommand OUTFILE was not
specified.
   14 | MSAVE 1/TYPE=COV.
      | ^~~~~~~~~~~~~~~~~

matrix.sps:20: error: MSAVE: OUTFILE must name the same file on each MSAVE
within a single MATRIX command.

matrix.sps:16.26-16.37: note: MSAVE: This is the OUTFILE on the first MSAVE
command.
   16 | MSAVE 1/TYPE=COV/OUTFILE='matrix.sav'
      |                          ^~~~~~~~~~~~

matrix.sps:20.26-20.38: note: MSAVE: This is the OUTFILE on a later MSAVE
command.
   20 | MSAVE 1/TYPE=COV/OUTFILE='matrix2.sav'.
      |                          ^~~~~~~~~~~~~

matrix.sps:21: error: MSAVE: VARIABLES must specify the same variables on each
MSAVE within a given MATRIX.

matrix.sps:19.16: error: MSAVE: This is the specification of VARIABLES on the
first MSAVE.
   19 |     /VARIABLES=w.
      |                ^

matrix.sps:21.28: error: MSAVE: This is a different specification of VARIABLES
on a later MSAVE.
   21 | MSAVE 1/TYPE=COV/VARIABLES=x.
      |                            ^

matrix.sps:22: error: MSAVE: FNAMES must specify the same variables on each
MSAVE within a given MATRIX.

matrix.sps:17.23: error: MSAVE: This is the specification of FNAMES on the
first MSAVE.
   17 |     /FACTOR=1 /FNAMES=y
      |                       ^

matrix.sps:22.25: error: MSAVE: This is a different specification of FNAMES on
a later MSAVE.
   22 | MSAVE 1/TYPE=COV/FNAMES=x.
      |                         ^

matrix.sps:23: error: MSAVE: SNAMES must specify the same variables on each
MSAVE within a given MATRIX.

matrix.sps:18.22: error: MSAVE: This is the specification of SNAMES on the
first MSAVE.
   18 |     /SPLIT=2 /SNAMES=z
      |                      ^

matrix.sps:23.25: error: MSAVE: This is a different specification of SNAMES on
a later MSAVE.
   23 | MSAVE 1/TYPE=COV/SNAMES=x.
      |                         ^

matrix.sps:28.7-28.11: error: MATRIX: Matrix on MSAVE has 2 columns but there
are 1 variables.
   28 | MSAVE {1,2}/TYPE=COV/VARIABLES=x/OUTFILE='matrix3.sav'/FACTOR=1/
SPLIT=2.
      |       ^~~~~

matrix.sps:29.7-29.13: error: MATRIX: This expression tries to vertically join
matrices with differing numbers of columns.
   29 | MSAVE {1,2;3}/TYPE=COV.
      |       ^~~~~~~

matrix.sps:29.8-29.10: note: MATRIX: This operand is a 1×2 matrix.
   29 | MSAVE {1,2;3}/TYPE=COV.
      |        ^~~

matrix.sps:29.12: note: MATRIX: This operand is a 1×1 matrix.
   29 | MSAVE {1,2;3}/TYPE=COV.
      |            ^

matrix.sps:30.25-30.29: error: MATRIX: There are 1 factor variables, but 2
factor values were supplied.
   30 | MSAVE 0/TYPE=COV/FACTOR={1,2}.
      |                         ^~~~~

matrix.sps:31.33-31.37: error: MATRIX: There are 1 split variables, but 2 split
values were supplied.
   31 | MSAVE 0/TYPE=COV/FACTOR=1/SPLIT={1;2}.
      |                                 ^~~~~

matrix.sps:35.49: error: MSAVE: Variable x appears twice in variable list.
   35 | MSAVE 1/TYPE=COV/OUTFILE='matrix4.sav'/SNAMES=x,x/SPLIT=1.
      |                                                 ^

matrix.sps:39.56: error: MATRIX: Duplicate or invalid FACTOR variable name x.
   39 | MSAVE 1/TYPE=COV/OUTFILE='matrix5.sav'/SNAMES=x/FNAMES=x/SPLIT=1/
FACTOR=1.
      |                                                        ^

matrix.sps:43.50: error: MATRIX: Duplicate or invalid variable name x.
   43 | MSAVE 1/TYPE=COV/OUTFILE='matrix6.sav'/VARIABLES=x/FNAMES=x/FACTOR=1.
      |                                                  ^

matrix.sps:47.50: error: MATRIX: Duplicate or invalid variable name x.
   47 | MSAVE 1/TYPE=COV/OUTFILE='matrix6.sav'/VARIABLES=x/SNAMES=x/SPLIT=1.
      |                                                  ^

matrix.sps:51.47-51.54: error: MSAVE: Variable name VARNAME_ is reserved.
   51 | MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/SNAMES=VARNAME_.
      |                                               ^~~~~~~~

matrix.sps:52.47-52.54: error: MSAVE: Variable name ROWTYPE_ is reserved.
   52 | MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/SNAMES=ROWTYPE_.
      |                                               ^~~~~~~~

matrix.sps:53.47-53.54: error: MSAVE: Variable name VARNAME_ is reserved.
   53 | MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/FNAMES=VARNAME_.
      |                                               ^~~~~~~~

matrix.sps:54.47-54.54: error: MSAVE: Variable name ROWTYPE_ is reserved.
   54 | MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/FNAMES=ROWTYPE_.
      |                                               ^~~~~~~~

matrix.sps:55.50-55.57: error: MSAVE: Variable name VARNAME_ is reserved.
   55 | MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/VARIABLES=VARNAME_.
      |                                                  ^~~~~~~~

matrix.sps:56.50-56.57: error: MSAVE: Variable name ROWTYPE_ is reserved.
   56 | MSAVE 1/TYPE=COV/OUTFILE='matrix7.sav'/VARIABLES=ROWTYPE_.
      |                                                  ^~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:4851"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_936
#AT_START_937
at_fn_group_banner 937 'matrix.at:5032' \
  "MATRIX - DISPLAY" "                               " 75
at_xfail=no
(
  printf "%s\n" "937. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix-template.sps <<'_ATEOF'
MATRIX.
COMPUTE a={1,2,3}.
COMPUTE b={1;2;3}.
COMPUTE c={T(b),a}.
COMPUTE d={T(a),b}.
command.
END MATRIX.
_ATEOF

for command in 'DISPLAY' 'DISPLAY DICTIONARY' 'DISPLAY STATUS'; do
    sed "s/command/$command/" < matrix-template.sps > matrix.sps
    { set +x
printf "%s\n" "$at_srcdir/matrix.at:5044: pspp matrix.sps -O format=csv"
at_fn_check_prepare_trace "matrix.at:5044"
( $at_check_trace; pspp matrix.sps -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Matrix Variables
,Dimension,,Size (kB)
,Rows,Columns,
a,1,3,0
b,3,1,0
c,1,6,0
d,3,2,0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/matrix.at:5044"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_937
#AT_START_938
at_fn_group_banner 938 'matrix.at:5056' \
  "MATRIX - DISPLAY - negative" "                    " 75
at_xfail=no
(
  printf "%s\n" "938. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
DISPLAY !.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:5062: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:5062"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.9: error: DISPLAY: Syntax error expecting DICTIONARY or STATUS.
    2 | DISPLAY !.
      |         ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:5062"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_938
#AT_START_939
at_fn_group_banner 939 'matrix.at:5069' \
  "MATRIX - RELEASE" "                               " 75
at_xfail=no
(
  printf "%s\n" "939. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
COMPUTE x=1.
PRINT x.
RELEASE X.
PRINT x.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:5078: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:5078"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "x
  1

matrix.sps:5.7: error: MATRIX: Uninitialized variable x used in expression.
    5 | PRINT x.
      |       ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:5078"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_939
#AT_START_940
at_fn_group_banner 940 'matrix.at:5088' \
  "MATRIX - RELEASE - negative" "                    " 75
at_xfail=no
(
  printf "%s\n" "940. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >matrix.sps <<'_ATEOF'
MATRIX.
RELEASE !.
RELEASE x.
COMPUTE x=1.
RELEASE x, !.
COMPUTE x=1.
RELEASE x y.
COMPUTE x=1.
RELEASE x.
RELEASE x.
END MATRIX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/matrix.at:5102: pspp matrix.sps"
at_fn_check_prepare_trace "matrix.at:5102"
( $at_check_trace; pspp matrix.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "matrix.sps:2.9: error: RELEASE: Syntax error expecting end of command.
    2 | RELEASE !.
      |         ^

matrix.sps:3.9: error: RELEASE: Syntax error expecting variable name.
    3 | RELEASE x.
      |         ^

matrix.sps:5.12: error: RELEASE: Syntax error expecting end of command.
    5 | RELEASE x, !.
      |            ^

matrix.sps:7.11: error: RELEASE: Syntax error expecting end of command.
    7 | RELEASE x y.
      |           ^
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/matrix.at:5102"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_940
#AT_START_941
at_fn_group_banner 941 'mconvert.at:19' \
  "MCONVERT" "                                       " 76
at_xfail=no
(
  printf "%s\n" "941. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >mconvert.sps <<'_ATEOF'
MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
BEGIN DATA.
0 COV  1.0
0 COV  1.0 16.0
0 COV  8.1 18.0 81.0
1 CORR 1
1 CORR .25 1
1 CORR .9 .5 1
1 STDDEV 1 4 9
END DATA.
FORMATS var01 TO var03(F5.2).
SPLIT FILE OFF.
MCONVERT.
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:37: pspp -O format=csv mconvert.sps"
at_fn_check_prepare_trace "mconvert.at:37"
( $at_check_trace; pspp -O format=csv mconvert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,ROWTYPE_,VARNAME_,var01,var02,var03
0,CORR,var01,1.00,.25,.90
0,CORR,var02,.25,1.00,.50
0,CORR,var03,.90,.50,1.00
0,STDDEV,,1.00,4.00,9.00
1,STDDEV,,1.00,4.00,9.00
1,COV,var01,1.00,1.00,8.10
1,COV,var02,1.00,16.00,18.00
1,COV,var03,8.10,18.00,81.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mconvert.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_941
#AT_START_942
at_fn_group_banner 942 'mconvert.at:51' \
  "MCONVERT from .sav file" "                        " 76
at_xfail=no
(
  printf "%s\n" "942. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input.sps <<'_ATEOF'
MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
BEGIN DATA.
0 COV  1.0
0 COV  1.0 16.0
0 COV  8.1 18.0 81.0
1 CORR 1
1 CORR .25 1
1 CORR .9 .5 1
1 STDDEV 1 4 9
END DATA.
FORMATS var01 TO var03(F5.2).
SPLIT FILE OFF.
SAVE OUTFILE='input.sav'.
_ATEOF

cat >mconvert.sps <<'_ATEOF'
MCONVERT MATRIX=IN('input.sav').
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:72: pspp -O format=csv input.sps"
at_fn_check_prepare_trace "mconvert.at:72"
( $at_check_trace; pspp -O format=csv input.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mconvert.at:72"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:73: pspp -O format=csv mconvert.sps"
at_fn_check_prepare_trace "mconvert.at:73"
( $at_check_trace; pspp -O format=csv mconvert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,ROWTYPE_,VARNAME_,var01,var02,var03
0,CORR,var01,1.00,.25,.90
0,CORR,var02,.25,1.00,.50
0,CORR,var03,.90,.50,1.00
0,STDDEV,,1.00,4.00,9.00
1,STDDEV,,1.00,4.00,9.00
1,COV,var01,1.00,1.00,8.10
1,COV,var02,1.00,16.00,18.00
1,COV,var03,8.10,18.00,81.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mconvert.at:73"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_942
#AT_START_943
at_fn_group_banner 943 'mconvert.at:87' \
  "MCONVERT to .sav file" "                          " 76
at_xfail=no
(
  printf "%s\n" "943. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >mconvert.sps <<'_ATEOF'
MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
BEGIN DATA.
0 COV  1.0
0 COV  1.0 16.0
0 COV  8.1 18.0 81.0
1 CORR 1
1 CORR .25 1
1 CORR .9 .5 1
1 STDDEV 1 4 9
END DATA.
FORMATS var01 TO var03(F5.2).
SPLIT FILE OFF.
MCONVERT/REPLACE/OUT('output.sav').
LIST.
_ATEOF

cat >output.sps <<'_ATEOF'
GET 'output.sav'.
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:109: pspp -O format=csv mconvert.sps"
at_fn_check_prepare_trace "mconvert.at:109"
( $at_check_trace; pspp -O format=csv mconvert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,ROWTYPE_,VARNAME_,var01,var02,var03
0,COV,var01,1.00,1.00,8.10
0,COV,var02,1.00,16.00,18.00
0,COV,var03,8.10,18.00,81.00
1,CORR,var01,1.00,.25,.90
1,CORR,var02,.25,1.00,.50
1,CORR,var03,.90,.50,1.00
1,STDDEV,,1.00,4.00,9.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mconvert.at:109"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:120: pspp -O format=csv output.sps"
at_fn_check_prepare_trace "mconvert.at:120"
( $at_check_trace; pspp -O format=csv output.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,ROWTYPE_,VARNAME_,var01,var02,var03
0,CORR,var01,1.00,.25,.90
0,CORR,var02,.25,1.00,.50
0,CORR,var03,.90,.50,1.00
0,STDDEV,,1.00,4.00,9.00
1,STDDEV,,1.00,4.00,9.00
1,COV,var01,1.00,1.00,8.10
1,COV,var02,1.00,16.00,18.00
1,COV,var03,8.10,18.00,81.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mconvert.at:120"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_943
#AT_START_944
at_fn_group_banner 944 'mconvert.at:134' \
  "MCONVERT from .sav file to .sav file" "           " 76
at_xfail=no
(
  printf "%s\n" "944. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >input.sps <<'_ATEOF'
MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
BEGIN DATA.
0 COV  1.0
0 COV  1.0 16.0
0 COV  8.1 18.0 81.0
1 CORR 1
1 CORR .25 1
1 CORR .9 .5 1
1 STDDEV 1 4 9
END DATA.
FORMATS var01 TO var03(F5.2).
SPLIT FILE OFF.
SAVE OUTFILE='input.sav'.
_ATEOF

cat >mconvert.sps <<'_ATEOF'
MCONVERT MATRIX=IN('input.sav') OUT('output.sav')/REPLACE.
LIST.
_ATEOF

cat >output.sps <<'_ATEOF'
GET 'output.sav'.
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:159: pspp -O format=csv input.sps"
at_fn_check_prepare_trace "mconvert.at:159"
( $at_check_trace; pspp -O format=csv input.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mconvert.at:159"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:160: pspp -O format=csv mconvert.sps"
at_fn_check_prepare_trace "mconvert.at:160"
( $at_check_trace; pspp -O format=csv mconvert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"mconvert.sps:2.1-2.4: error: LIST: LIST is allowed only after the active dataset has been defined.
    2 | LIST.
      | ^~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/mconvert.at:160"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:165: pspp -O format=csv output.sps"
at_fn_check_prepare_trace "mconvert.at:165"
( $at_check_trace; pspp -O format=csv output.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,ROWTYPE_,VARNAME_,var01,var02,var03
0,CORR,var01,1.00,.25,.90
0,CORR,var02,.25,1.00,.50
0,CORR,var03,.90,.50,1.00
0,STDDEV,,1.00,4.00,9.00
1,STDDEV,,1.00,4.00,9.00
1,COV,var01,1.00,1.00,8.10
1,COV,var02,1.00,16.00,18.00
1,COV,var03,8.10,18.00,81.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mconvert.at:165"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_944
#AT_START_945
at_fn_group_banner 945 'mconvert.at:179' \
  "MCONVERT with APPEND" "                           " 76
at_xfail=no
(
  printf "%s\n" "945. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >mconvert.sps <<'_ATEOF'
MATRIX DATA VARIABLES=s ROWTYPE_ var01 TO var03/SPLIT s.
BEGIN DATA.
0 COV  1.0
0 COV  1.0 16.0
0 COV  8.1 18.0 81.0
1 CORR 1
1 CORR .25 1
1 CORR .9 .5 1
1 STDDEV 1 4 9
END DATA.
FORMATS var01 TO var03(F5.2).
SPLIT FILE OFF.
MCONVERT/APPEND.
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:197: pspp -O format=csv mconvert.sps"
at_fn_check_prepare_trace "mconvert.at:197"
( $at_check_trace; pspp -O format=csv mconvert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,ROWTYPE_,VARNAME_,var01,var02,var03
0,COV,var01,1.00,1.00,8.10
0,COV,var02,1.00,16.00,18.00
0,COV,var03,8.10,18.00,81.00
0,CORR,var01,1.00,.25,.90
0,CORR,var02,.25,1.00,.50
0,CORR,var03,.90,.50,1.00
0,STDDEV,,1.00,4.00,9.00
1,CORR,var01,1.00,.25,.90
1,CORR,var02,.25,1.00,.50
1,CORR,var03,.90,.50,1.00
1,STDDEV,,1.00,4.00,9.00
1,COV,var01,1.00,1.00,8.10
1,COV,var02,1.00,16.00,18.00
1,COV,var03,8.10,18.00,81.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mconvert.at:197"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_945
#AT_START_946
at_fn_group_banner 946 'mconvert.at:217' \
  "MCONVERT negative test" "                         " 76
at_xfail=no
(
  printf "%s\n" "946. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >mconvert.sps <<'_ATEOF'
MCONVERT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/mconvert.at:220: pspp mconvert.sps"
at_fn_check_prepare_trace "mconvert.at:220"
( $at_check_trace; pspp mconvert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "mconvert.sps:1: error: MCONVERT: No active file is defined and no external file
is specified on MATRIX=IN.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/mconvert.at:220"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_946
#AT_START_947
at_fn_group_banner 947 'means.at:19' \
  "MEANS simple" "                                   " 77
at_xfail=no
(
  printf "%s\n" "947. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-simple.sps <<'_ATEOF'
data list notable list /hand * score * w *.
begin data.
1 17 4
1 16 5
2 21 1
2 22 1
2 20 8
end data.

weight by w.

means tables = score by hand
 /cells = mean count.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:38: pspp -O format=csv means-simple.sps"
at_fn_check_prepare_trace "means.at:38"
( $at_check_trace; pspp -O format=csv means-simple.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score * hand,19,100.0%,0,.0%,19,100.0%

Table: Report
hand,Mean,N
1.00,16.44,9
2.00,20.30,10
Total,18.47,19
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_947
#AT_START_948
at_fn_group_banner 948 'means.at:54' \
  "MEANS very simple" "                              " 77
at_xfail=no
(
  printf "%s\n" "948. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >very-simple.sps <<'_ATEOF'
data list notable list /score *.
begin data.
17
17
17
16
17
16
16
16
16
21
22
20
20
20
20
20
20
20
20
end data.

means tables = score
 /cells = mean count.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:85: pspp -O format=csv very-simple.sps"
at_fn_check_prepare_trace "means.at:85"
( $at_check_trace; pspp -O format=csv very-simple.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score,19,100.0%,0,.0%,19,100.0%

Table: Report
Mean,N
18.47,19
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:85"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_948
#AT_START_949
at_fn_group_banner 949 'means.at:100' \
  "MEANS empty factor spec" "                        " 77
at_xfail=no
(
  printf "%s\n" "949. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-bad.sps <<'_ATEOF'
data list list /outcome *.
begin data.
1
2
3
end data.

MEANS TABLES =  outcome
	BY.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:115: pspp -O format=csv means-bad.sps"
at_fn_check_prepare_trace "means.at:115"
( $at_check_trace; pspp -O format=csv means-bad.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/means.at:115"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_949
#AT_START_950
at_fn_group_banner 950 'means.at:121' \
  "MEANS parser bug" "                               " 77
at_xfail=no
(
  printf "%s\n" "950. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-bad.sps <<'_ATEOF'
DATA LIST notable LIST /a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 fylo *.
begin data.
1 2 3 4 5 6 7 8 9 0 11
end data.

MEANS TABLES = a1 a2 a3 a4 a5 a6 a7 a8 a9 a10a BY fylo.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:134: pspp -O format=csv means-bad.sps"
at_fn_check_prepare_trace "means.at:134"
( $at_check_trace; pspp -O format=csv means-bad.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/means.at:134"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_950
#AT_START_951
at_fn_group_banner 951 'means.at:140' \
  "MEANS default missing behaviour" "                " 77
at_xfail=no
(
  printf "%s\n" "951. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-missing.sps <<'_ATEOF'
data list notable list /w * score * a * b *.
begin data
     12      . 0 0
     13      . 0 1
     11      . 1 0
      7      . 1 1
      5      1 0 .
     91      1 0 0
    130      1 0 1
      4      1 1 .
     90      1 1 0
     72      1 1 1
end data.

weight by w.

MEANS tables=score
	/cells = count.

MEANS tables=score by a
	/cells = count.

MEANS tables=score by a by b
      /cells = count.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:170: pspp -O format=csv means-missing.sps"
at_fn_check_prepare_trace "means.at:170"
( $at_check_trace; pspp -O format=csv means-missing.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score,392,90.1%,43,9.9%,435,100.0%

Table: Report
N
392

Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score * a,392,90.1%,43,9.9%,435,100.0%

Table: Report
a,N
.00,226
1.00,166
Total,392

Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score * a * b,383,88.0%,52,12.0%,435,100.0%

Table: Report
a,b,N
.00,.00,91
,1.00,130
,Total,221
1.00,.00,90
,1.00,72
,Total,162
Total,.00,181
,1.00,202
,Total,383
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:170"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_951
#AT_START_952
at_fn_group_banner 952 'means.at:216' \
  "MEANS two way" "                                  " 77
at_xfail=no
(
  printf "%s\n" "952. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-freelancer.sps <<'_ATEOF'
data list notable list /income_2010 * gender  sector_2010.
begin data
6072.40 0 5
12706.65 1 4
14912.82 0 2
16338.36 1 5
22606.99 0 .
23544.95 1 1
24985.21 0 2
26586.48 0 1
29076.24 1 3
31010.18 0 2
33190.63 1 1
35570.67 1 4
36202.60 1 4
36205.85 1 2
36262.56 1 .
38283.56 0 1
38569.91 1 5
39057.56 1 4
39594.68 1 5
42087.38 0 1
42370.92 0 2
42931.32 1 2
45907.58 0 4
45911.32 1 .
47227.09 1 3
50440.71 1 5
57440.17 1 3
58918.86 0 5
59430.07 1 2
61135.95 0 4
64193.85 0 4
64857.02 0 3
65903.42 0 4
66592.38 1 3
70986.10 0 3
71229.94 0 4
74663.05 1 4
76676.14 1 4
79260.80 0 4
80311.71 0 4
end data.

means income_2010 by gender by sector_2010
	/cells count min mean stddev.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:268: pspp -O format=csv means-freelancer.sps"
at_fn_check_prepare_trace "means.at:268"
( $at_check_trace; pspp -O format=csv means-freelancer.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
income_2010 * gender * sector_2010,37,92.5%,3,7.5%,40,100.0%

Table: Report
gender,sector_2010,N,Minimum,Mean,Std. Deviation
.00,1.00,3,26586.48,35652.47,8078.46
,2.00,4,14912.82,28319.78,11482.43
,3.00,2,64857.02,67921.56,4333.91
,4.00,7,45907.58,66849.04,11787.11
,5.00,2,6072.40,32495.63,37368.09
,Total,18,6072.40,49389.68,22371.48
1.00,1.00,2,23544.95,28367.79,6820.53
,2.00,3,36205.85,46189.08,11949.93
,3.00,4,29076.24,50083.97,16084.44
,4.00,6,12706.65,45812.78,24995.16
,5.00,4,16338.36,36235.92,14311.04
,Total,19,12706.65,42918.90,17851.64
Total,1.00,5,23544.95,32738.60,7757.62
,2.00,7,14912.82,35978.05,14309.27
,3.00,6,29076.24,56029.83,15615.06
,4.00,13,12706.65,57139.99,21187.85
,5.00,6,6072.40,34989.15,20146.69
,Total,37,6072.40,46066.84,20160.12
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_952
#AT_START_953
at_fn_group_banner 953 'means.at:303' \
  "MEANS unbalanced" "                               " 77
at_xfail=no
(
  printf "%s\n" "953. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-unbalanced.sps <<'_ATEOF'
data list notable list /b c x *.
begin data.
4 1 123
3 1 123
5 0 246
4 0 246
3 0 246
end data.

* The data above lack a 5 1 case.

means
	table=x by b by c
	/cells = mean count
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:324: pspp -O format=csv means-unbalanced.sps"
at_fn_check_prepare_trace "means.at:324"
( $at_check_trace; pspp -O format=csv means-unbalanced.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
x * b * c,5,100.0%,0,.0%,5,100.0%

Table: Report
b,c,Mean,N
3.00,.00,246.00,1
,1.00,123.00,1
,Total,184.50,2
4.00,.00,246.00,1
,1.00,123.00,1
,Total,184.50,2
5.00,.00,246.00,1
,Total,246.00,1
Total,.00,246.00,3
,1.00,123.00,2
,Total,196.80,5
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:324"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_953
#AT_START_954
at_fn_group_banner 954 'means.at:349' \
  "MEANS three way" "                                " 77
at_xfail=no
(
  printf "%s\n" "954. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-threeway.sps <<'_ATEOF'
data list notable list /score a b c.
begin data.
3  0 0 0
4  0 0 1
41 0 0 2
5  0 1 0
6  0 1 1
7  1 0 0
8  1 0 1
9  1 1 0
10 1 1 1
end data.

means score by a by b by c.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:369: pspp -O format=csv means-threeway.sps"
at_fn_check_prepare_trace "means.at:369"
( $at_check_trace; pspp -O format=csv means-threeway.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score * a * b * c,9,100.0%,0,.0%,9,100.0%

Table: Report
a,b,c,Mean,N,Std. Deviation
.00,.00,.00,3.00,1,NaN
,,1.00,4.00,1,NaN
,,2.00,41.00,1,NaN
,,Total,16.00,3,21.66
,1.00,.00,5.00,1,NaN
,,1.00,6.00,1,NaN
,,Total,5.50,2,.71
,Total,.00,4.00,2,1.41
,,1.00,5.00,2,1.41
,,2.00,41.00,1,NaN
,,Total,11.80,5,16.36
1.00,.00,.00,7.00,1,NaN
,,1.00,8.00,1,NaN
,,Total,7.50,2,.71
,1.00,.00,9.00,1,NaN
,,1.00,10.00,1,NaN
,,Total,9.50,2,.71
,Total,.00,8.00,2,1.41
,,1.00,9.00,2,1.41
,,Total,8.50,4,1.29
Total,.00,.00,5.00,2,2.83
,,1.00,6.00,2,2.83
,,2.00,41.00,1,NaN
,,Total,12.60,5,16.01
,1.00,.00,7.00,2,2.83
,,1.00,8.00,2,2.83
,,Total,7.50,4,2.38
,Total,.00,6.00,4,2.58
,,1.00,7.00,4,2.58
,,2.00,41.00,1,NaN
,,Total,10.33,9,11.73
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:369"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_954
#AT_START_955
at_fn_group_banner 955 'means.at:415' \
  "MEANS three way string" "                         " 77
at_xfail=no
(
  printf "%s\n" "955. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-threeway-string.sps <<'_ATEOF'
data list notable list /score (f22.2) a (a24) b (a16) c (a8).
begin data.
3  fooberrycrumblexzaQ  fosilationwereqd  zero
4  fooberrycrumblexzaQ  fosilationwereqd  one
41 fooberrycrumblexzaQ  fosilationwereqd  two
5  fooberrycrumblexzaQ  onlyonekonboys    zero
6  fooberrycrumblexzaQ  onlyonekonboys    one
7  wontledingbatsXASDF  fosilationwereqd  zero
8  wontledingbatsXASDF  fosilationwereqd  one
9  wontledingbatsXASDF  onlyonekonboys    zero
10 wontledingbatsXASDF  onlyonekonboys    one
end data.

means score by a by b by c.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:435: pspp -O format=csv means-threeway-string.sps"
at_fn_check_prepare_trace "means.at:435"
( $at_check_trace; pspp -O format=csv means-threeway-string.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score * a * b * c,9,100.0%,0,.0%,9,100.0%

Table: Report
a,b,c,Mean,N,Std. Deviation
fooberrycrumblexzaQ,fosilationwereqd,one,4.00,1,NaN
,,two,41.00,1,NaN
,,zero,3.00,1,NaN
,,Total,16.00,3,21.66
,onlyonekonboys,one,6.00,1,NaN
,,zero,5.00,1,NaN
,,Total,5.50,2,.71
,Total,one,5.00,2,1.41
,,two,41.00,1,NaN
,,zero,4.00,2,1.41
,,Total,11.80,5,16.36
wontledingbatsXASDF,fosilationwereqd,one,8.00,1,NaN
,,zero,7.00,1,NaN
,,Total,7.50,2,.71
,onlyonekonboys,one,10.00,1,NaN
,,zero,9.00,1,NaN
,,Total,9.50,2,.71
,Total,one,9.00,2,1.41
,,zero,8.00,2,1.41
,,Total,8.50,4,1.29
Total,fosilationwereqd,one,6.00,2,2.83
,,two,41.00,1,NaN
,,zero,5.00,2,2.83
,,Total,12.60,5,16.01
,onlyonekonboys,one,8.00,2,2.83
,,zero,7.00,2,2.83
,,Total,7.50,4,2.38
,Total,one,7.00,4,2.58
,,two,41.00,1,NaN
,,zero,6.00,4,2.58
,,Total,10.33,9,11.73
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:435"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_955
#AT_START_956
at_fn_group_banner 956 'means.at:482' \
  "MEANS multiple tables" "                          " 77
at_xfail=no
(
  printf "%s\n" "956. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-multi-table.sps <<'_ATEOF'
data list notable list /a * b * c * x * y *.
begin data.
6 3 0 123 456
6 3 1 123 456
6 4 0 123 456
6 4 1 123 456
6 5 0 123 456
6 5 1 123 456
7 3 0 123 456
7 3 1 123 456
7 4 0 123 456
7 4 1 123 456
7 5 0 123 456
7 5 1 123 456
8 3 0 123 456
8 3 1 123 456
8 4 0 123 456
8 4 1 123 456
8 5 0 123 456
8 5 1 123 456
9 3 0 123 456
9 3 1 123 456
9 4 0 123 456
9 4 1 123 456
9 5 0 123 456
9 5 1 123 456
end data.


means table = x by b by c
	/x by b
	/y by a by b
  cells = min count  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:521: pspp -O format=csv means-multi-table.sps"
at_fn_check_prepare_trace "means.at:521"
( $at_check_trace; pspp -O format=csv means-multi-table.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
x * b * c,24,100.0%,0,.0%,24,100.0%

Table: Report
b,c,Minimum,N
3.00,.00,123.00,4
,1.00,123.00,4
,Total,123.00,8
4.00,.00,123.00,4
,1.00,123.00,4
,Total,123.00,8
5.00,.00,123.00,4
,1.00,123.00,4
,Total,123.00,8
Total,.00,123.00,12
,1.00,123.00,12
,Total,123.00,24

Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
x * b,24,100.0%,0,.0%,24,100.0%

Table: Report
b,Minimum,N
3.00,123.00,8
4.00,123.00,8
5.00,123.00,8
Total,123.00,24

Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
y * a * b,24,100.0%,0,.0%,24,100.0%

Table: Report
a,b,Minimum,N
6.00,3.00,456.00,2
,4.00,456.00,2
,5.00,456.00,2
,Total,456.00,6
7.00,3.00,456.00,2
,4.00,456.00,2
,5.00,456.00,2
,Total,456.00,6
8.00,3.00,456.00,2
,4.00,456.00,2
,5.00,456.00,2
,Total,456.00,6
9.00,3.00,456.00,2
,4.00,456.00,2
,5.00,456.00,2
,Total,456.00,6
Total,3.00,456.00,8
,4.00,456.00,8
,5.00,456.00,8
,Total,456.00,24
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:521"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_956
#AT_START_957
at_fn_group_banner 957 'means.at:592' \
  "MEANS multi variable" "                           " 77
at_xfail=no
(
  printf "%s\n" "957. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-multi-variable.sps <<'_ATEOF'
data list notable list /b c x y.
begin data.
5 1 123 55
5 1 123 55
5 1 123 55
5 1 123 55
4 1 456 44
4 1 456 44
4 1 456 44
4 1 456 44
3 1 789 55
3 1 789 55
3 1 789 55
3 1 789 55
5 0 246 99
5 0 246 99
5 0 246 99
5 0 246 .
4 0 987 99
4 0 987 99
4 0 987 99
4 0 987 99
3 0 654 11
3 0 654 11
3 0 654 11
3 0 654 11
end data.

means
	table = x y by b by c
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:629: pspp -O format=csv means-multi-variable.sps"
at_fn_check_prepare_trace "means.at:629"
( $at_check_trace; pspp -O format=csv means-multi-variable.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
x * b * c,24,100.0%,0,.0%,24,100.0%
y * b * c,23,95.8%,1,4.2%,24,100.0%

Table: x * y * b * c
b,c,,x,y
3.00,.00,Mean,654.00,11.00
,,N,4,4
,,Std. Deviation,.00,.00
,1.00,Mean,789.00,55.00
,,N,4,4
,,Std. Deviation,.00,.00
,Total,Mean,721.50,33.00
,,N,8,8
,,Std. Deviation,72.16,23.52
4.00,.00,Mean,987.00,99.00
,,N,4,4
,,Std. Deviation,.00,.00
,1.00,Mean,456.00,44.00
,,N,4,4
,,Std. Deviation,.00,.00
,Total,Mean,721.50,71.50
,,N,8,8
,,Std. Deviation,283.83,29.40
5.00,.00,Mean,246.00,99.00
,,N,4,3
,,Std. Deviation,.00,.00
,1.00,Mean,123.00,55.00
,,N,4,4
,,Std. Deviation,.00,.00
,Total,Mean,184.50,73.86
,,N,8,7
,,Std. Deviation,65.75,23.52
Total,.00,Mean,629.00,67.00
,,N,12,11
,,Std. Deviation,316.50,44.40
,1.00,Mean,456.00,51.33
,,N,12,12
,,Std. Deviation,283.98,5.42
,Total,Mean,542.50,58.83
,,N,24,23
,,Std. Deviation,307.06,31.22
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:629"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_957
#AT_START_958
at_fn_group_banner 958 'means.at:684' \
  "MEANS multi combination" "                        " 77
at_xfail=no
(
  printf "%s\n" "958. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-multi-combination.sps <<'_ATEOF'
data list notable list /one (F22.5) two (F22.5) three four five six.
begin data
1 1 1 1 1 1
2 1 1 1 1 1
1 2 1 1 1 1
2 2 1 1 1 1
1 1 2 1 1 1
2 1 2 1 1 1
1 2 2 1 1 1
2 2 2 1 1 1
1 1 1 2 1 1
2 1 1 2 1 1
1 2 1 2 1 1
2 2 1 2 1 1
1 1 2 2 1 1
2 1 2 2 1 1
1 2 2 2 1 1
2 2 2 2 1 1
1 1 1 1 2 1
2 1 1 1 2 1
1 2 1 1 2 1
2 2 1 1 2 1
1 1 2 1 2 1
2 1 2 1 2 1
1 2 2 1 2 1
2 2 2 1 2 1
1 1 1 2 2 1
2 1 1 2 2 1
1 2 1 2 2 1
2 2 1 2 2 1
1 1 2 2 2 1
2 1 2 2 2 1
1 2 2 2 2 1
2 2 2 2 2 1
1 1 1 1 1 2
2 1 1 1 1 2
1 2 1 1 1 2
2 2 1 1 1 2
1 1 2 1 1 2
2 1 2 1 1 2
1 2 2 1 1 2
2 2 2 1 1 2
1 1 1 2 1 2
2 1 1 2 1 2
1 2 1 2 1 2
2 2 1 2 1 2
1 1 2 2 1 2
2 1 2 2 1 2
1 2 2 2 1 2
2 2 2 2 1 2
1 1 1 1 2 2
2 1 1 1 2 2
1 2 1 1 2 2
2 2 1 1 2 2
1 1 2 1 2 2
2 1 2 1 2 2
1 2 2 1 2 2
2 2 2 1 2 2
1 1 1 2 2 2
2 1 1 2 2 2
1 2 1 2 2 2
2 2 1 2 2 2
1 1 2 2 2 2
2 1 2 2 2 2
1 2 2 2 2 2
2 2 2 2 2 2
end data.

recode six  (2 = 62) (1 = 61).
recode five (2 = 52) (1 = 51).
recode four (2 = 42) (1 = 41).
recode three (2 = 32) (1 = 31).

means tables = one two BY three four BY five six.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:764: pspp -O format=csv means-multi-combination.sps"
at_fn_check_prepare_trace "means.at:764"
( $at_check_trace; pspp -O format=csv means-multi-combination.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
one * three * five,64,100.0%,0,.0%,64,100.0%
two * three * five,64,100.0%,0,.0%,64,100.0%
one * three * six,64,100.0%,0,.0%,64,100.0%
two * three * six,64,100.0%,0,.0%,64,100.0%
one * four * five,64,100.0%,0,.0%,64,100.0%
two * four * five,64,100.0%,0,.0%,64,100.0%
one * four * six,64,100.0%,0,.0%,64,100.0%
two * four * six,64,100.0%,0,.0%,64,100.0%

Table: one * two * three * five
three,five,,one,two
31.00,51.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,52.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,Total,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
32.00,51.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,52.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,Total,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
Total,51.00,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
,52.00,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
,Total,Mean,1.50000,1.50000
,,N,64,64
,,Std. Deviation,.50395,.50395

Table: one * two * three * six
three,six,,one,two
31.00,61.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,62.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,Total,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
32.00,61.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,62.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,Total,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
Total,61.00,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
,62.00,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
,Total,Mean,1.50000,1.50000
,,N,64,64
,,Std. Deviation,.50395,.50395

Table: one * two * four * five
four,five,,one,two
41.00,51.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,52.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,Total,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
42.00,51.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,52.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,Total,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
Total,51.00,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
,52.00,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
,Total,Mean,1.50000,1.50000
,,N,64,64
,,Std. Deviation,.50395,.50395

Table: one * two * four * six
four,six,,one,two
41.00,61.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,62.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,Total,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
42.00,61.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,62.00,Mean,1.50000,1.50000
,,N,16,16
,,Std. Deviation,.51640,.51640
,Total,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
Total,61.00,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
,62.00,Mean,1.50000,1.50000
,,N,32,32
,,Std. Deviation,.50800,.50800
,Total,Mean,1.50000,1.50000
,,N,64,64
,,Std. Deviation,.50395,.50395
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:764"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_958
#AT_START_959
at_fn_group_banner 959 'means.at:904' \
  "MEANS clean up" "                                 " 77
at_xfail=no
(
  printf "%s\n" "959. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-bad.sps <<'_ATEOF'
data list notable list /one two three four five six.
begin data
1 1 1 1 1 1
2 1 1 1 1 !
1 2 2 2 2 2
2 2 2 2 2 2
end data.

means tables = one two BY thsee four BY five six.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:919: pspp -O format=csv means-bad.sps"
at_fn_check_prepare_trace "means.at:919"
( $at_check_trace; pspp -O format=csv means-bad.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/means.at:919"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_959
#AT_START_960
at_fn_group_banner 960 'means.at:926' \
  "MEANS control all missing" "                      " 77
at_xfail=no
(
  printf "%s\n" "960. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-bad.sps <<'_ATEOF'
data list notable list /a * b *  y * uu *.
begin data.
6 3 . 5
6 3 . 5
6 4 . 5
end data.

means table = b by a by y by uu
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:941: pspp -O format=csv means-bad.sps"
at_fn_check_prepare_trace "means.at:941"
( $at_check_trace; pspp -O format=csv means-bad.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
b * a * y * uu,0,.0%,3,100.0%,3,100.0%

\"warning: The table \"\"a * y * uu\"\" has no non-empty control variables.  No result for this table will be displayed.\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:941"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_960
#AT_START_961
at_fn_group_banner 961 'means.at:955' \
  "MEANS missing classes" "                          " 77
at_xfail=no
(
  printf "%s\n" "961. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-missing-classes.sps <<'_ATEOF'
data list notable list /hand * score *.
begin data.
1 17
1 17
1 17
1 16
1 17
1 16
1 16
1 .
1 99
2 21
2 22
2 20
2 20
2 20
2 20
2 20
2 20
2 20
2 20
9 55
end data.

missing values score (99).
missing values hand (9).

means tables=score  by hand
	/cells = count max
	/missing = dependent
	.

means tables=score  by hand
	/cells = count max
	/missing = include
	.

means tables=score  by hand
	/cells = count max
	.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:1002: pspp -O format=csv means-missing-classes.sps"
at_fn_check_prepare_trace "means.at:1002"
( $at_check_trace; pspp -O format=csv means-missing-classes.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score * hand,18,90.0%,2,10.0%,20,100.0%

Table: Report
hand,N,Maximum
1.00,7,17.00
2.00,10,22.00
9.00,1,55.00
Total,18,55.00

Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score * hand,19,95.0%,1,5.0%,20,100.0%

Table: Report
hand,N,Maximum
1.00,8,99.00
2.00,10,22.00
9.00,1,55.00
Total,19,99.00

Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
score * hand,17,85.0%,3,15.0%,20,100.0%

Table: Report
hand,N,Maximum
1.00,7,17.00
2.00,10,22.00
Total,17,22.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:1002"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_961
#AT_START_962
at_fn_group_banner 962 'means.at:1046' \
  "MEANS split" "                                    " 77
at_xfail=no
(
  printf "%s\n" "962. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-split.sps <<'_ATEOF'
data list notable list /b g *.
begin data
2    0
2    0
4    0
4    0
11   1
11   1
end data.

split file by g.

means b /cells = count mean.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:1065: pspp -O format=csv means-split.sps"
at_fn_check_prepare_trace "means.at:1065"
( $at_check_trace; pspp -O format=csv means-split.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
b,4,100.0%,0,.0%,4,100.0%

Table: Report
N,Mean
4,3.00

Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
b,2,100.0%,0,.0%,2,100.0%

Table: Report
N,Mean
2,11.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:1065"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_962
#AT_START_963
at_fn_group_banner 963 'means.at:1091' \
  "MEANS formats" "                                  " 77
at_xfail=no
(
  printf "%s\n" "963. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >means-formats.sps <<'_ATEOF'
data list notable list /hours (TIME11.0) rate (DOLLAR8.2).
begin data
12:00 4.09
14:01 5.23
end data.

means hours rate
 /cells = mean count max range.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/means.at:1105: pspp -O format=csv means-formats.sps"
at_fn_check_prepare_trace "means.at:1105"
( $at_check_trace; pspp -O format=csv means-formats.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Processing Summary
,Cases,,,,,
,Included,,Excluded,,Total,
,N,Percent,N,Percent,N,Percent
hours,2,100.0%,0,.0%,2,100.0%
rate,2,100.0%,0,.0%,2,100.0%

Table: hours * rate
,hours,rate
Mean,13:00:30,\$4.66
N,2,2
Maximum,14:01:00,\$5.23
Range,02:01:00,\$1.14
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/means.at:1105"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_963
#AT_START_964
at_fn_group_banner 964 'means.at:1123' \
  "MEANS syntax errors" "                            " 77
at_xfail=no
(
  printf "%s\n" "964. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >means.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
MEANS TABLES **.
MEANS x BY **.
MEANS x/MISSING=**.
MEANS x/CELLS=**.
MEANS x/ **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/means.at:1132: pspp -O format=csv means.sps"
at_fn_check_prepare_trace "means.at:1132"
( $at_check_trace; pspp -O format=csv means.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"means.sps:2.14-2.15: error: MEANS: Syntax error expecting \`='.
    2 | MEANS TABLES **.
      |              ^~\"

\"means.sps:3.12-3.13: error: MEANS: Syntax error expecting variable name.
    3 | MEANS x BY **.
      |            ^~\"

\"means.sps:4.17-4.18: error: MEANS: Syntax error expecting INCLUDE or DEPENDENT.
    4 | MEANS x/MISSING=**.
      |                 ^~\"

\"means.sps:5.15-5.16: error: MEANS: Syntax error expecting one of the following: MEAN, COUNT, STDDEV, SEMEAN, SUM, MIN, MAX, RANGE, VARIANCE, KURT, SEKURT, SKEW, SESKEW, FIRST, LAST, HARMONIC, GEOMETRIC.
    5 | MEANS x/CELLS=**.
      |               ^~\"

\"means.sps:6.10-6.11: error: MEANS: Syntax error expecting MISSING or CELLS.
    6 | MEANS x/ **.
      |          ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/means.at:1132"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_964
#AT_START_965
at_fn_group_banner 965 'missing-values.at:19' \
  "MISSING VALUES valid cases" "                     " 78
at_xfail=no
(
  printf "%s\n" "965. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >missing-values.sps <<'_ATEOF'
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).
DISPLAY DICTIONARY date1 num1.
MISSING VALUES date1 num1 (1, 2).
DISPLAY DICTIONARY date1 num1.
MISSING VALUES date1 num1 (1, 2, 3).
DISPLAY DICTIONARY date1 num1.
MISSING VALUES date1 num1 (9999998, 9999984, 3).
DISPLAY DICTIONARY date1 num1.

* Numeric missing values using the first variable's format.
MISSING VALUES num1 date1 ('1').
DISPLAY DICTIONARY date1 num1.
MISSING VALUES num1 date1 ('1', '2').
DISPLAY DICTIONARY date1 num1.
MISSING VALUES num1 date1 ('1', '2', '3').
DISPLAY DICTIONARY date1 num1.
MISSING VALUES date1 num1 ('06-AUG-05').
DISPLAY DICTIONARY date1 num1.
MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78').
DISPLAY DICTIONARY date1 num1.
MISSING VALUES date1 num1 ('06-AUG-05', '01-OCT-78', '14-FEB-81').
DISPLAY DICTIONARY date1 num1.

* Ranges of numeric missing values.
MISSING VALUES num1 (1 THRU 2).
DISPLAY DICTIONARY num1.
MISSING VALUES num1 (LO THRU 2).
DISPLAY DICTIONARY num1.
MISSING VALUES num1 (LOWEST THRU 2).
DISPLAY DICTIONARY num1.
MISSING VALUES num1 (1 THRU HI).
DISPLAY DICTIONARY num1.
MISSING VALUES num1 (1 THRU HIGHEST).
DISPLAY DICTIONARY num1.

* A range of numeric missing values, plus an individual value.
MISSING VALUES num1 (1 THRU 2, 3).
DISPLAY DICTIONARY num1.
MISSING VALUES num1 (LO THRU 2, 3).
DISPLAY DICTIONARY num1.
MISSING VALUES num1 (LOWEST THRU 2, 3).
DISPLAY DICTIONARY num1.
MISSING VALUES num1 (1 THRU HI, -1).
DISPLAY DICTIONARY num1.
MISSING VALUES num1 (1 THRU HIGHEST, -1).
DISPLAY DICTIONARY num1.

* String missing values.
MISSING VALUES str1 str2 longstr ('abc  ','def').
DISPLAY DICTIONARY str1 str2 longstr.

* May mix variable types when clearing missing values.
MISSING VALUES ALL ().
MISSING VALUES num1 (1).
DISPLAY DICTIONARY
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/missing-values.at:81: pspp -o pspp.csv missing-values.sps"
at_fn_check_prepare_trace "missing-values.at:81"
( $at_check_trace; pspp -o pspp.csv missing-values.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/missing-values.at:81"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/missing-values.at:82: cat pspp.csv | sed '/^Table/d
/^Name/d
s/^\\([a-z0-9]*\\),.*,\\([^,]*\\)\$/\\1: \\2/'"
at_fn_check_prepare_notrace 'an embedded newline' "missing-values.at:82"
( $at_check_trace; cat pspp.csv | sed '/^Table/d
/^Name/d
s/^\([a-z0-9]*\),.*,\([^,]*\)$/\1: \2/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "date1: 1
num1: 1

date1: 1; 2
num1: 1; 2

date1: 1; 2; 3
num1: 1; 2; 3

date1: 9999998; 9999984; 3
num1: 9999998; 9999984; 3

date1: 1
num1: 1

date1: 1; 2
num1: 1; 2

date1: 1; 2; 3
num1: 1; 2; 3

date1: 13342665600
num1: 13342665600

date1: 13342665600; 12495427200
num1: 13342665600; 12495427200

date1: 13342665600; 12495427200; 12570336000
num1: 13342665600; 12495427200; 12570336000

num1: 1 THRU 2

num1: LOWEST THRU 2

num1: LOWEST THRU 2

num1: 1 THRU HIGHEST

num1: 1 THRU HIGHEST

num1: 1 THRU 2; 3

num1: LOWEST THRU 2; 3

num1: LOWEST THRU 2; 3

num1: 1 THRU HIGHEST; -1

num1: 1 THRU HIGHEST; -1

str1: \"\"\"abc  \"\"; \"\"def  \"\"\"
str2: \"\"\"abc\"\"; \"\"def\"\"\"
longstr: \"\"\"abc     \"\"; \"\"def     \"\"\"

str1: 
str2: 
date1: 
num1: 1
longstr: 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/missing-values.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_965
#AT_START_966
at_fn_group_banner 966 'missing-values.at:147' \
  "MISSING VALUES invalid cases" "                   " 78
at_xfail=no
(
  printf "%s\n" "966. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >missing-values.sps <<'_ATEOF'
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').

* Too many values.
MISSING VALUES num1 (1, 2, 3, 4).
MISSING VALUES num1 (1 THRU 2, 3 THRU 4).
MISSING VALUES num1 (1, 2 THRU 3, 4).
MISSING VALUES str1 ('abc', 'def', 'ghi', 'jkl').

* Bad range.
MISSING VALUES num1 (2 THRU 1).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/missing-values.at:173: pspp -O format=csv missing-values.sps"
at_fn_check_prepare_trace "missing-values.at:173"
( $at_check_trace; pspp -O format=csv missing-values.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"missing-values.sps:5.35-5.41: error: MISSING VALUES: Missing values are too long to assign to variable str2 with width 3.
    5 | MISSING VALUES str1 str2 longstr ('abcde').
      |                                   ^~~~~~~\"

\"missing-values.sps:8.25-8.37: error: MISSING VALUES: Truncating missing value to maximum acceptable length (8 bytes).
    8 | MISSING VALUES longstr ('abcdefghijk').
      |                         ^~~~~~~~~~~~~\"

\"missing-values.sps:11.26-11.29: error: MISSING VALUES: Syntax error expecting string.
   11 | MISSING VALUES str1 ('a' THRU 'z').
      |                          ^~~~\"

\"missing-values.sps:14.27-14.31: error: MISSING VALUES: Cannot assign string missing values to numeric variable num1.
   14 | MISSING VALUES str1 num1 ('123').
      |                           ^~~~~\"

\"missing-values.sps:17.22-17.31: error: MISSING VALUES: Too many numeric missing values.  At most three individual values or one value and one range are allowed.
   17 | MISSING VALUES num1 (1, 2, 3, 4).
      |                      ^~~~~~~~~~\"

\"missing-values.sps:18.22-18.39: error: MISSING VALUES: Too many numeric missing values.  At most three individual values or one value and one range are allowed.
   18 | MISSING VALUES num1 (1 THRU 2, 3 THRU 4).
      |                      ^~~~~~~~~~~~~~~~~~\"

\"missing-values.sps:19.22-19.35: error: MISSING VALUES: Too many numeric missing values.  At most three individual values or one value and one range are allowed.
   19 | MISSING VALUES num1 (1, 2 THRU 3, 4).
      |                      ^~~~~~~~~~~~~~\"

\"missing-values.sps:20.22-20.47: error: MISSING VALUES: Too many string missing values.  At most three individual values are allowed.
   20 | MISSING VALUES str1 ('abc', 'def', 'ghi', 'jkl').
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"missing-values.sps:23.22-23.29: warning: MISSING VALUES: The high end of the range (1) is below the low end (2).  The range will be treated as if reversed.
   23 | MISSING VALUES num1 (2 THRU 1).
      |                      ^~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/missing-values.at:173"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_966
#AT_START_967
at_fn_group_banner 967 'missing-values.at:212' \
  "MISSING VALUES syntax errors" "                   " 78
at_xfail=no
(
  printf "%s\n" "967. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >missing-values.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/n1 to n10 (F8.2) s1 to s10 (A8).
MISSING VALUES **.
MISSING VALUES n1 **.
MISSING VALUES s1 (1).
MISSING VALUES n1 (1**).
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='missing-values.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/missing-values.at:223: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "missing-values.at:223"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"missing-values.sps:2.16-2.17: error: MISSING VALUES: Syntax error expecting variable name.
    2 | MISSING VALUES **.
      |                ^~\"

\"missing-values.sps:3.19-3.20: error: MISSING VALUES: Syntax error expecting \`('.
    3 | MISSING VALUES n1 **.
      |                   ^~\"

\"missing-values.sps:4.20: error: MISSING VALUES: Syntax error expecting string.
    4 | MISSING VALUES s1 (1).
      |                    ^\"

\"missing-values.sps:5.21-5.22: error: MISSING VALUES: Syntax error expecting number.
    5 | MISSING VALUES n1 (1**).
      |                     ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/missing-values.at:223"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_967
#AT_START_968
at_fn_group_banner 968 'mrsets.at:128' \
  "MRSETS add, display, delete" "                    " 79
at_xfail=no
(
  printf "%s\n" "968. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >mrsets.sps <<'_ATEOF'
DATA LIST NOTABLE /w x y z 1-4 a b c d 5-8 (a).
BEGIN DATA.
1234acbd
5678efgh
END DATA.

VARIABLE LABEL
    w 'duplicate variable label'
    x 'Variable x'
    z 'Duplicate variable label'.
VALUE LABELS
    /w 1 'w value 1'
    /y 1 'duplicate Value label'
    /z 1 'duplicate value Label'
    /a b c d 'a' 'burger' 'b' 'fries' 'c' 'shake' 'd' 'taco'.
ADD VALUE LABELS
    /b 'b' 'Fries'
    /c 'b' 'XXX'.
MRSETS
    /MDGROUP NAME=$a
     LABEL='First multiple dichotomy group'
     CATEGORYLABELS=VARLABELS
     VARIABLES=w x y z
     VALUE=5
    /MDGROUP NAME=$b
     CATEGORYLABELS=COUNTEDVALUES
     VARIABLES=z y
     VALUE=123
    /MDGROUP NAME=$c
     LABELSOURCE=VARLABEL
     CATEGORYLABELS=COUNTEDVALUES
     VARIABLES=w x y z
     VALUE=1
    /MDGROUP NAME=$d
     LABELSOURCE=VARLABEL
     VARIABLES=a b c d
     VALUE='c'
    /MCGROUP NAME=$e
     LABEL='First multiple category group'
     VARIABLES=w x y z
    /MCGROUP NAME=$f
     VARIABLES=a b c d.

MRSETS
    /DISPLAY NAME=[$a]
    /DISPLAY NAME=ALL
    /DELETE NAME=[$c]
    /DISPLAY NAME=ALL
    /DELETE NAME=ALL
    /DISPLAY NAME=ALL.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/mrsets.at:139: pspp -o - -O format=csv -o mrsets.csv -o mrsets.txt mrsets.sps"
at_fn_check_prepare_trace "mrsets.at:139"
( $at_check_trace; pspp -o - -O format=csv -o mrsets.csv -o mrsets.txt mrsets.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"mrsets.sps:23.16-23.22: warning: MRSETS: Variables w and z specified as part of multiple dichotomy group \$a have the same variable label.  Categories represented by these variables will not be distinguishable in output.
   23 |      VARIABLES=w x y z
      |                ^~~~~~~\"

\"mrsets.sps:27.16-27.18: warning: MRSETS: Variable z specified as part of multiple dichotomy group \$b (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value.  This category will not be distinguishable in output.
   27 |      VARIABLES=z y
      |                ^~~\"

\"mrsets.sps:27.16-27.18: warning: MRSETS: Variable y specified as part of multiple dichotomy group \$b (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value.  This category will not be distinguishable in output.
   27 |      VARIABLES=z y
      |                ^~~\"

\"mrsets.sps:32.16-32.22: warning: MRSETS: Variable x specified as part of multiple dichotomy group \$c (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value.  This category will not be distinguishable in output.
   32 |      VARIABLES=w x y z
      |                ^~~~~~~\"

\"mrsets.sps:32.16-32.22: warning: MRSETS: Variables y and z specified as part of multiple dichotomy group \$c (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the group's counted value.  These categories will not be distinguishable in output.
   32 |      VARIABLES=w x y z
      |                ^~~~~~~\"

\"mrsets.sps:35.6-35.25: warning: MRSETS: MDGROUP subcommand for group \$d specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES.  Ignoring LABELSOURCE.
   35 |      LABELSOURCE=VARLABEL
      |      ^~~~~~~~~~~~~~~~~~~~\"

\"mrsets.sps:40.16-40.22: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but w and y (and possibly others) in multiple category group \$e have different value labels for value 1.
   40 |      VARIABLES=w x y z
      |                ^~~~~~~\"

\"mrsets.sps:42.16-42.22: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but a and c (and possibly others) in multiple category group \$f have different value labels for value b.
   42 |      VARIABLES=a b c d.
      |                ^~~~~~~\"

Table: Multiple Response Sets
Name,Label,Encoding,Counted Value,Member Variables
\$a,First multiple dichotomy group,Dichotomies,5,\"w
x
y
z\"

Table: Multiple Response Sets
Name,Label,Encoding,Counted Value,Member Variables
\$a,First multiple dichotomy group,Dichotomies,5,\"w
x
y
z\"
\$b,,Dichotomies,123,\"z
y\"
\$c,duplicate variable label,Dichotomies,1,\"w
x
y
z\"
\$d,,Dichotomies,c,\"a
b
c
d\"
\$e,First multiple category group,Categories,,\"w
x
y
z\"
\$f,,Categories,,\"a
b
c
d\"

Table: Multiple Response Sets
Name,Label,Encoding,Counted Value,Member Variables
\$a,First multiple dichotomy group,Dichotomies,5,\"w
x
y
z\"
\$b,,Dichotomies,123,\"z
y\"
\$d,,Dichotomies,c,\"a
b
c
d\"
\$e,First multiple category group,Categories,,\"w
x
y
z\"
\$f,,Categories,,\"a
b
c
d\"

\"mrsets.sps:50.19-50.21: note: MRSETS: The active dataset dictionary does not contain any multiple response sets.
   50 |     /DISPLAY NAME=ALL.
      |                   ^~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mrsets.at:139"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_968
#AT_START_969
at_fn_group_banner 969 'mrsets.at:200' \
  "MRSETS read and write" "                          " 79
at_xfail=no
(
  printf "%s\n" "969. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >mrsets.sps <<'_ATEOF'
DATA LIST NOTABLE /w x y z 1-4 a b c d 5-8 (a).
BEGIN DATA.
1234acbd
5678efgh
END DATA.

VARIABLE LABEL
    w 'duplicate variable label'
    x 'Variable x'
    z 'Duplicate variable label'.
VALUE LABELS
    /w 1 'w value 1'
    /y 1 'duplicate Value label'
    /z 1 'duplicate value Label'
    /a b c d 'a' 'burger' 'b' 'fries' 'c' 'shake' 'd' 'taco'.
ADD VALUE LABELS
    /b 'b' 'Fries'
    /c 'b' 'XXX'.
MRSETS
    /MDGROUP NAME=$a
     LABEL='First multiple dichotomy group'
     CATEGORYLABELS=VARLABELS
     VARIABLES=w x y z
     VALUE=5
    /MDGROUP NAME=$b
     CATEGORYLABELS=COUNTEDVALUES
     VARIABLES=z y
     VALUE=123
    /MDGROUP NAME=$c
     LABELSOURCE=VARLABEL
     CATEGORYLABELS=COUNTEDVALUES
     VARIABLES=w x y z
     VALUE=1
    /MDGROUP NAME=$d
     LABELSOURCE=VARLABEL
     VARIABLES=a b c d
     VALUE='c'
    /MCGROUP NAME=$e
     LABEL='First multiple category group'
     VARIABLES=w x y z
    /MCGROUP NAME=$f
     VARIABLES=a b c d.

SAVE OUTFILE='mrsets.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/mrsets.at:205: pspp -O format=csv mrsets.sps"
at_fn_check_prepare_trace "mrsets.at:205"
( $at_check_trace; pspp -O format=csv mrsets.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"mrsets.sps:23.16-23.22: warning: MRSETS: Variables w and z specified as part of multiple dichotomy group \$a have the same variable label.  Categories represented by these variables will not be distinguishable in output.
   23 |      VARIABLES=w x y z
      |                ^~~~~~~\"

\"mrsets.sps:27.16-27.18: warning: MRSETS: Variable z specified as part of multiple dichotomy group \$b (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value.  This category will not be distinguishable in output.
   27 |      VARIABLES=z y
      |                ^~~\"

\"mrsets.sps:27.16-27.18: warning: MRSETS: Variable y specified as part of multiple dichotomy group \$b (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value.  This category will not be distinguishable in output.
   27 |      VARIABLES=z y
      |                ^~~\"

\"mrsets.sps:32.16-32.22: warning: MRSETS: Variable x specified as part of multiple dichotomy group \$c (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value.  This category will not be distinguishable in output.
   32 |      VARIABLES=w x y z
      |                ^~~~~~~\"

\"mrsets.sps:32.16-32.22: warning: MRSETS: Variables y and z specified as part of multiple dichotomy group \$c (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the group's counted value.  These categories will not be distinguishable in output.
   32 |      VARIABLES=w x y z
      |                ^~~~~~~\"

\"mrsets.sps:35.6-35.25: warning: MRSETS: MDGROUP subcommand for group \$d specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES.  Ignoring LABELSOURCE.
   35 |      LABELSOURCE=VARLABEL
      |      ^~~~~~~~~~~~~~~~~~~~\"

\"mrsets.sps:40.16-40.22: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but w and y (and possibly others) in multiple category group \$e have different value labels for value 1.
   40 |      VARIABLES=w x y z
      |                ^~~~~~~\"

\"mrsets.sps:42.16-42.22: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but a and c (and possibly others) in multiple category group \$f have different value labels for value b.
   42 |      VARIABLES=a b c d.
      |                ^~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mrsets.at:205"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >mrsets2.sps <<'_ATEOF'
GET FILE='mrsets.sav'.
MRSETS /DISPLAY NAME=ALL.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/mrsets.at:210: pspp -O format=csv mrsets2.sps"
at_fn_check_prepare_trace "mrsets.at:210"
( $at_check_trace; pspp -O format=csv mrsets2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Multiple Response Sets
Name,Label,Encoding,Counted Value,Member Variables
\$a,First multiple dichotomy group,Dichotomies,5,\"w
x
y
z\"
\$b,,Dichotomies,123,\"z
y\"
\$c,duplicate variable label,Dichotomies,1,\"w
x
y
z\"
\$d,,Dichotomies,c,\"a
b
c
d\"
\$e,First multiple category group,Categories,,\"w
x
y
z\"
\$f,,Categories,,\"a
b
c
d\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/mrsets.at:210"
if $at_failed
then :
  hd mrsets.sav
fi
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_969
#AT_START_970
at_fn_group_banner 970 'mrsets.at:214' \
  "MRSETS syntax errors" "                           " 79
at_xfail=no
(
  printf "%s\n" "970. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >mrsets.sps <<'_ATEOF'
DATA LIST NOTABLE /w x y z 1-4 a b c d 5-8 (a).
BEGIN DATA.
1234acbd
5678efgh
END DATA.
VARIABLE LABEL
    w 'duplicate variable label'
    x 'Variable x'
    z 'Duplicate variable label'.
VALUE LABELS
    /w 1 'w value 1'
    /y 1 'duplicate Value label'
    /z 1 'duplicate value Label'
    /a b c d 'a' 'burger' 'b' 'fries' 'c' 'shake' 'd' 'taco'.
ADD VALUE LABELS
    /b 'b' 'Fries'
    /c 'b' 'XXX'.

MRSETS /MDGROUP NAME **.
MRSETS /MDGROUP NAME=**.
MRSETS /MDGROUP NAME=x.
MRSETS /MDGROUP VARIABLES **.
MRSETS /MDGROUP VARIABLES=**.
MRSETS /MDGROUP VARIABLES=a.
MRSETS /MDGROUP LABEL **.
MRSETS /MDGROUP LABEL=**.
MRSETS /MDGROUP LABELSOURCE=**.
MRSETS /MDGROUP VALUE **.
MRSETS /MDGROUP VALUE=1.5.
MRSETS /MDGROUP VALUE=**.
MRSETS /MDGROUP CATEGORYLABELS **.
MRSETS /MDGROUP CATEGORYLABELS=**.
MRSETS /MDGROUP **.
MRSETS /MCGROUP **.
MRSETS /MDGROUP.
MRSETS /MDGROUP NAME=$x.
MRSETS /MDGROUP NAME=$x VARIABLES=a b VALUE=1.
MRSETS /MDGROUP NAME=$x VARIABLES=x y VALUE='a'.
MRSETS /MDGROUP NAME=$x VARIABLES=a b VALUE='xyzzy'.
MRSETS /MDGROUP NAME=$x VARIABLES=a b VALUE='y' LABELSOURCE=VARLABEL.
MRSETS /MDGROUP NAME=$x VARIABLES=w z VALUE=1 CATEGORYLABELS=VARLABELS.
MRSETS /MDGROUP NAME=$x VARIABLES=a b VALUE='y'
  LABELSOURCE=VARLABEL CATEGORYLABELS=COUNTEDVALUES
  LABEL='foo'.
MRSETS /MDGROUP NAME=$x VARIABLES=y z VALUE=1
  LABELSOURCE=VARLABEL CATEGORYLABELS=COUNTEDVALUES.
MRSETS /MCGROUP NAME=$x VARIABLES=w x y z.

MRSETS /DELETE **.
MRSETS /DELETE NAME**.
MRSETS /DELETE NAME=[**].
MRSETS /DELETE NAME=[$x].
MRSETS /DELETE NAME=**.

MRSETS /DISPLAY NAME=ALL.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/mrsets.at:272: pspp -O format=csv mrsets.sps"
at_fn_check_prepare_trace "mrsets.at:272"
( $at_check_trace; pspp -O format=csv mrsets.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"mrsets.sps:19.22-19.23: error: MRSETS: Syntax error expecting \`='.
   19 | MRSETS /MDGROUP NAME **.
      |                      ^~\"

\"mrsets.sps:20.22-20.23: error: MRSETS: Syntax error expecting identifier.
   20 | MRSETS /MDGROUP NAME=**.
      |                      ^~\"

\"mrsets.sps:21.22: error: MRSETS: \`x' is not valid here because this identifier must start with \`\$'.
   21 | MRSETS /MDGROUP NAME=x.
      |                      ^\"

\"mrsets.sps:22.27-22.28: error: MRSETS: Syntax error expecting \`='.
   22 | MRSETS /MDGROUP VARIABLES **.
      |                           ^~\"

\"mrsets.sps:23.27-23.28: error: MRSETS: Syntax error expecting variable name.
   23 | MRSETS /MDGROUP VARIABLES=**.
      |                           ^~\"

\"mrsets.sps:24.27: error: MRSETS: At least two variables are required.
   24 | MRSETS /MDGROUP VARIABLES=a.
      |                           ^\"

\"mrsets.sps:25.23-25.24: error: MRSETS: Syntax error expecting \`='.
   25 | MRSETS /MDGROUP LABEL **.
      |                       ^~\"

\"mrsets.sps:26.23-26.24: error: MRSETS: Syntax error expecting string.
   26 | MRSETS /MDGROUP LABEL=**.
      |                       ^~\"

\"mrsets.sps:27.28-27.30: error: MRSETS: Syntax error expecting \`=VARLABEL'.
   27 | MRSETS /MDGROUP LABELSOURCE=**.
      |                            ^~~\"

\"mrsets.sps:28.23-28.24: error: MRSETS: Syntax error expecting \`='.
   28 | MRSETS /MDGROUP VALUE **.
      |                       ^~\"

\"mrsets.sps:29.23-29.25: error: MRSETS: Numeric VALUE must be an integer.
   29 | MRSETS /MDGROUP VALUE=1.5.
      |                       ^~~\"

\"mrsets.sps:30.23-30.24: error: MRSETS: Syntax error expecting integer or string.
   30 | MRSETS /MDGROUP VALUE=**.
      |                       ^~\"

\"mrsets.sps:31.32-31.33: error: MRSETS: Syntax error expecting \`='.
   31 | MRSETS /MDGROUP CATEGORYLABELS **.
      |                                ^~\"

\"mrsets.sps:32.32-32.33: error: MRSETS: Syntax error expecting VARLABELS or COUNTEDVALUES.
   32 | MRSETS /MDGROUP CATEGORYLABELS=**.
      |                                ^~\"

\"mrsets.sps:33.17-33.18: error: MRSETS: Syntax error expecting NAME, VARIABLES, LABEL, LABELSOURCE, VALUE, or CATEGORYLABELS.
   33 | MRSETS /MDGROUP **.
      |                 ^~\"

\"mrsets.sps:34.17-34.18: error: MRSETS: Syntax error expecting NAME, VARIABLES, or LABEL.
   34 | MRSETS /MCGROUP **.
      |                 ^~\"

\"mrsets.sps:35.16: error: MRSETS: Required NAME specification missing from MDGROUP subcommand.
   35 | MRSETS /MDGROUP.
      |                ^\"

\"mrsets.sps:36.24: error: MRSETS: Required VARIABLES specification missing from MDGROUP subcommand.
   36 | MRSETS /MDGROUP NAME=\$x.
      |                        ^\"

mrsets.sps:37: error: MRSETS: VARIABLES and VALUE must have the same type.

\"mrsets.sps:37.35-37.37: note: MRSETS: These are string variables.
   37 | MRSETS /MDGROUP NAME=\$x VARIABLES=a b VALUE=1.
      |                                   ^~~\"

\"mrsets.sps:37.45: note: MRSETS: This is a numeric value.
   37 | MRSETS /MDGROUP NAME=\$x VARIABLES=a b VALUE=1.
      |                                             ^\"

mrsets.sps:38: error: MRSETS: VARIABLES and VALUE must have the same type.

\"mrsets.sps:38.35-38.37: note: MRSETS: These are numeric variables.
   38 | MRSETS /MDGROUP NAME=\$x VARIABLES=x y VALUE='a'.
      |                                   ^~~\"

\"mrsets.sps:38.45-38.47: note: MRSETS: This is a string value.
   38 | MRSETS /MDGROUP NAME=\$x VARIABLES=x y VALUE='a'.
      |                                             ^~~\"

mrsets.sps:39: error: MRSETS: The VALUE string must be no longer than the narrowest variable in the group.

\"mrsets.sps:39.45-39.51: note: MRSETS: The VALUE string is 5 bytes long.
   39 | MRSETS /MDGROUP NAME=\$x VARIABLES=a b VALUE='xyzzy'.
      |                                             ^~~~~~~\"

\"mrsets.sps:39.35-39.37: note: MRSETS: Variable a has a width of 1 bytes.
   39 | MRSETS /MDGROUP NAME=\$x VARIABLES=a b VALUE='xyzzy'.
      |                                   ^~~\"

\"mrsets.sps:40.49-40.68: warning: MRSETS: MDGROUP subcommand for group \$x specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES.  Ignoring LABELSOURCE.
   40 | MRSETS /MDGROUP NAME=\$x VARIABLES=a b VALUE='y' LABELSOURCE=VARLABEL.
      |                                                 ^~~~~~~~~~~~~~~~~~~~\"

\"mrsets.sps:41.35-41.37: warning: MRSETS: Variables w and z specified as part of multiple dichotomy group \$x have the same variable label.  Categories represented by these variables will not be distinguishable in output.
   41 | MRSETS /MDGROUP NAME=\$x VARIABLES=w z VALUE=1 CATEGORYLABELS=VARLABELS.
      |                                   ^~~\"

\"mrsets.sps:44: warning: MRSETS: MDGROUP subcommand for group \$x specifies both LABEL and LABELSOURCE, but only one of these subcommands may be used at a time.  Ignoring LABELSOURCE.\"

\"mrsets.sps:44.3-44.13: note: MRSETS: Here is the LABEL setting.
   44 |   LABEL='foo'.
      |   ^~~~~~~~~~~\"

\"mrsets.sps:43.3-43.22: note: MRSETS: Here is the LABELSOURCE setting.
   43 |   LABELSOURCE=VARLABEL CATEGORYLABELS=COUNTEDVALUES
      |   ^~~~~~~~~~~~~~~~~~~~\"

\"mrsets.sps:42.35-42.37: warning: MRSETS: Variable a specified as part of multiple dichotomy group \$x (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value.  This category will not be distinguishable in output.
   42 | MRSETS /MDGROUP NAME=\$x VARIABLES=a b VALUE='y'
      |                                   ^~~\"

\"mrsets.sps:42.35-42.37: warning: MRSETS: Variable b specified as part of multiple dichotomy group \$x (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value.  This category will not be distinguishable in output.
   42 | MRSETS /MDGROUP NAME=\$x VARIABLES=a b VALUE='y'
      |                                   ^~~\"

\"mrsets.sps:45.35-45.37: warning: MRSETS: Variables y and z specified as part of multiple dichotomy group \$x (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the group's counted value.  These categories will not be distinguishable in output.
   45 | MRSETS /MDGROUP NAME=\$x VARIABLES=y z VALUE=1
      |                                   ^~~\"

\"mrsets.sps:47.35-47.41: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but w and y (and possibly others) in multiple category group \$x have different value labels for value 1.
   47 | MRSETS /MCGROUP NAME=\$x VARIABLES=w x y z.
      |                                   ^~~~~~~\"

\"mrsets.sps:49.16-49.17: error: MRSETS: Syntax error expecting \`NAME='.
   49 | MRSETS /DELETE **.
      |                ^~\"

\"mrsets.sps:50.16-50.21: error: MRSETS: Syntax error expecting \`NAME='.
   50 | MRSETS /DELETE NAME**.
      |                ^~~~~~\"

\"mrsets.sps:51.22-51.23: error: MRSETS: Syntax error expecting identifier.
   51 | MRSETS /DELETE NAME=[**].
      |                      ^~\"

\"mrsets.sps:53.21-53.22: error: MRSETS: Syntax error expecting \`[' or ALL.
   53 | MRSETS /DELETE NAME=**.
      |                     ^~\"

\"mrsets.sps:55.22-55.24: note: MRSETS: The active dataset dictionary does not contain any multiple response sets.
   55 | MRSETS /DISPLAY NAME=ALL.
      |                      ^~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/mrsets.at:272"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_970
#AT_START_971
at_fn_group_banner 971 'npar.at:19' \
  "NPAR TESTS BINOMIAL P < 0.5; N1/N2 < 1" "         " 80
at_xfail=no
(
  printf "%s\n" "971. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:35: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:35"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
x,Group 1,1.000,6.000,.286,.300,.551
,Group 2,2.000,15.000,.714,,
,Total,,21.000,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_971
#AT_START_972
at_fn_group_banner 972 'npar.at:44' \
  "NPAR TESTS BINOMIAL P < 0.5; N1/N2 > 1" "         " 80
at_xfail=no
(
  printf "%s\n" "972. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:60: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:60"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
x,Group 1,1,7,.538,.400,.229
,Group 2,2,6,.462,,
,Total,,13,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_972
#AT_START_973
at_fn_group_banner 973 'npar.at:69' \
  "NPAR TESTS BINOMIAL P < 0.5; N1/N2 = 1" "         " 80
at_xfail=no
(
  printf "%s\n" "973. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:85: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:85"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
x,Group 1,1,8,.500,.400,.284
,Group 2,2,8,.500,,
,Total,,16,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:85"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_973
#AT_START_974
at_fn_group_banner 974 'npar.at:94' \
  "NPAR TESTS BINOMIAL P > 0.5; N1/N2 < 1" "         " 80
at_xfail=no
(
  printf "%s\n" "974. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:110: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:110"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
x,Group 1,1,11,.478,.600,.164
,Group 2,2,12,.522,,
,Total,,23,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:110"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_974
#AT_START_975
at_fn_group_banner 975 'npar.at:119' \
  "NPAR TESTS BINOMIAL P > 0.5; N1/N2 > 1" "         " 80
at_xfail=no
(
  printf "%s\n" "975. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:134: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:134"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
x,Group 1,1,11,.550,.600,.404
,Group 2,2,9,.450,,
,Total,,20,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:134"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_975
#AT_START_976
at_fn_group_banner 976 'npar.at:143' \
  "NPAR TESTS BINOMIAL P > 0.5; N1/N2 = 1" "         " 80
at_xfail=no
(
  printf "%s\n" "976. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:158: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:158"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
x,Group 1,1,11,.500,.600,.228
,Group 2,2,11,.500,,
,Total,,22,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:158"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_976
#AT_START_977
at_fn_group_banner 977 'npar.at:167' \
  "NPAR TESTS BINOMIAL P = 0.5; N1/N2 < 1" "         " 80
at_xfail=no
(
  printf "%s\n" "977. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:183: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:183"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
x,Group 1,1,8,.348,.500,.210
,Group 2,2,15,.652,,
,Total,,23,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:183"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_977
#AT_START_978
at_fn_group_banner 978 'npar.at:192' \
  "NPAR TESTS BINOMIAL P = 0.5; N1/N2 > 1" "         " 80
at_xfail=no
(
  printf "%s\n" "978. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:207: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:207"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
x,Group 1,1,12,.667,.500,.238
,Group 2,2,6,.333,,
,Total,,18,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:207"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_978
#AT_START_979
at_fn_group_banner 979 'npar.at:216' \
  "NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1" "         " 80
at_xfail=no
(
  printf "%s\n" "979. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:232: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:232"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
x,Group 1,1,10,.500,.500,1.000
,Group 2,2,10,.500,,
,Total,,20,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:232"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_979
#AT_START_980
at_fn_group_banner 980 'npar.at:241' \
  "NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1 Cutpoint" "" 80
at_xfail=no
(
  printf "%s\n" "980. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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)
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:258: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:258"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
x,Group 1,<= 10,10.000,.385,.500,.327
,Group 2,,16.000,.615,,
,Total,,26.000,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:258"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_980
#AT_START_981
at_fn_group_banner 981 'npar.at:267' \
  "NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1 Named values" "" 80
at_xfail=no
(
  printf "%s\n" "981. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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)
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:284: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:284"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Binomial Test
,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
x,Group 1,10.000,10.000,.435,.500,.678
,Group 2,20.000,13.000,.565,,
,Total,,23.000,1.000,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:284"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_981
#AT_START_982
at_fn_group_banner 982 'npar.at:296' \
  "NPAR TESTS BINOMIAL - crash" "                    " 80
at_xfail=no
(
  printf "%s\n" "982. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >nparX.sps <<'_ATEOF'
data list list /range *.
begin data.
0
1
end data.

* This is invalid syntax
NPAR TEST
	/BINOMIAL(0.5) = Range().

_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:309: pspp -O format=csv nparX.sps"
at_fn_check_prepare_trace "npar.at:309"
( $at_check_trace; pspp -O format=csv nparX.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/npar.at:309"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_982
#AT_START_983
at_fn_group_banner 983 'npar.at:315' \
  "NPAR TESTS CHISQUARE" "                           " 80
at_xfail=no
(
  printf "%s\n" "983. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:345: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:345"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: x
Value,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
Value,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
,Chi-square,df,Asymp. Sig.
x,3.14,5,.678
y,6.00,3,.112

Table: y
Value,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
,Chi-square,df,Asymp. Sig.
y,10.61,3,.014

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
,Chi-square,df,Asymp. Sig.
x,.13,2,.936
y,4.13,2,.127
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:345"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_983
#AT_START_984
at_fn_group_banner 984 'npar.at:397' \
  "NPAR TESTS CHISQUARE expected values missing" "   " 80
at_xfail=no
(
  printf "%s\n" "984. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:418: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:418"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"error: CHISQUARE test specified 6 expected values, but variable y has 4 distinct values.\"

Table: Test Statistics
,Chi-square,df,Asymp. Sig.
y,.00,0,1.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/npar.at:418"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_984
#AT_START_985
at_fn_group_banner 985 'npar.at:428' \
  "NPAR TESTS CHISQUARE with DESCRIPTIVES" "         " 80
at_xfail=no
(
  printf "%s\n" "985. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:453: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:453"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
,Chi-square,df,Asymp. Sig.
x,17.33,7,.015
y,22.87,7,.002

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:453"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_985
#AT_START_986
at_fn_group_banner 986 'npar.at:479' \
  "NPAR TESTS CHISQUARE, listwise missing" "         " 80
at_xfail=no
(
  printf "%s\n" "986. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
  .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:504: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:504"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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
,Chi-square,df,Asymp. Sig.
x,13.43,7,.062
y,26.00,7,.001

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:504"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_986
#AT_START_987
at_fn_group_banner 987 'npar.at:530' \
  "NPAR TESTS WILCOXON" "                            " 80
at_xfail=no
(
  printf "%s\n" "987. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:560: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:560"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,,N,Mean Rank,Sum of Ranks
first - second,Negative Ranks,8,6.00,48.00
,Positive Ranks,5,8.60,43.00
,Ties,2,,
,Total,15,,

Table: Test Statistics
,first - second
Z,-.18
Asymp. Sig. (2-tailed),.861
Exact Sig. (2-tailed),.893
Exact Sig. (1-tailed),.446
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:560"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_987
#AT_START_988
at_fn_group_banner 988 'npar.at:578' \
  "NPAR TESTS WILCOXON with missing values" "        " 80
at_xfail=no
(
  printf "%s\n" "988. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:609: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:609"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,,N,Mean Rank,Sum of Ranks
first - second,Negative Ranks,8,6.00,48.00
,Positive Ranks,5,8.60,43.00
,Ties,2,,
,Total,15,,

Table: Test Statistics
,first - second
Z,-.18
Asymp. Sig. (2-tailed),.861
Exact Sig. (2-tailed),.893
Exact Sig. (1-tailed),.446
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:609"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_988
#AT_START_989
at_fn_group_banner 989 'npar.at:626' \
  "NPAR TESTS SIGN" "                                " 80
at_xfail=no
(
  printf "%s\n" "989. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:646: pspp -o pspp.csv npar.sps"
at_fn_check_prepare_trace "npar.at:646"
( $at_check_trace; pspp -o pspp.csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:646"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/npar.at:649: sed -e 's/\\.313\$/.312/' -e 's/^Exact Sig\\. (1-tailed),\\.313/Exact Sig. (1-tailed),.312/' pspp.csv"
at_fn_check_prepare_dynamic "sed -e 's/\\.313$/.312/' -e 's/^Exact Sig\\. (1-tailed),\\.313/Exact Sig. (1-tailed),.312/' pspp.csv" "npar.at:649"
( $at_check_trace; sed -e 's/\.313$/.312/' -e 's/^Exact Sig\. (1-tailed),\.313/Exact Sig. (1-tailed),.312/' pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Frequencies
,,N
age - height,Negative Differences,3
,Positive Differences,1
,Ties,2
,Total,6
height - rank,Negative Differences,2
,Positive Differences,3
,Ties,1
,Total,6

Table: Test Statistics
,age - height,height - rank
Exact Sig. (2-tailed),.625,1.000
Exact Sig. (1-tailed),.312,.500
Point Probability,.250,.312
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:649"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_989
#AT_START_990
at_fn_group_banner 990 'npar.at:670' \
  "NPAR Kruskal-Wallis test" "                       " 80
at_xfail=no
(
  printf "%s\n" "990. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >kw-simple.sps <<'_ATEOF'
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)
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:704: pspp -o pspp.csv -o pspp.txt kw-simple.sps"
at_fn_check_prepare_trace "npar.at:704"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt kw-simple.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:704"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/npar.at:705: cat pspp.csv"
at_fn_check_prepare_trace "npar.at:705"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,,N,Mean Rank
xscore,timed out,5,4.400
,hit wicket,5,7.400
,handled the ball,4,11.500
,Total,14,

Table: Test Statistics
,xscore
Chi-Square,6.406
df,2
Asymp. Sig.,.041
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:705"
$at_failed && at_fn_log_failure
$at_traceon; }



cat >kw-missing-group.sps <<'_ATEOF'
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
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:757: pspp -o pspp2.csv kw-missing-group.sps"
at_fn_check_prepare_trace "npar.at:757"
( $at_check_trace; pspp -o pspp2.csv kw-missing-group.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:757"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/npar.at:760: diff pspp.csv pspp2.csv"
at_fn_check_prepare_trace "npar.at:760"
( $at_check_trace; diff pspp.csv pspp2.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:760"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >kw-reverse-group.sps <<'_ATEOF'
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
end data.

value label /gv
       1 "timed out"
       2 "hit wicket"
       3 "handled the ball".

npar tests
	/kruskal-wallis xscore by gv (3, 1)
	/missing=exclude
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:795: pspp -o pspp2.csv kw-reverse-group.sps"
at_fn_check_prepare_trace "npar.at:795"
( $at_check_trace; pspp -o pspp2.csv kw-reverse-group.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:795"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/npar.at:798: diff pspp.csv pspp2.csv"
at_fn_check_prepare_trace "npar.at:798"
( $at_check_trace; diff pspp.csv pspp2.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:798"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_990
#AT_START_991
at_fn_group_banner 991 'npar.at:803' \
  "NPAR Kruskal-Wallis multiple-variables" "         " 80
at_xfail=no
(
  printf "%s\n" "991. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >kw-multi.sps <<'_ATEOF'
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)
	.

_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/npar.at:846: pspp -o pspp.csv kw-multi.sps"
at_fn_check_prepare_trace "npar.at:846"
( $at_check_trace; pspp -o pspp.csv kw-multi.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:846"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/npar.at:847: cat pspp.csv"
at_fn_check_prepare_trace "npar.at:847"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,,N,Mean Rank
xscore,timed out,5,4.400
,hit wicket,5,7.400
,handled the ball,4,11.500
,Total,14,
yscore,hit wicket,5,7.400
,handled the ball,4,11.500
,bowled,5,4.400
,Total,14,

Table: Test Statistics
,xscore,yscore
Chi-Square,6.406,6.406
df,2,2
Asymp. Sig.,.041,.041
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:847"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_991
#AT_START_992
at_fn_group_banner 992 'npar.at:870' \
  "NPAR TESTS Runs" "                                " 80
at_xfail=no
(
  printf "%s\n" "992. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar-runs.sps <<'_ATEOF'
set format F11.4.
data list notable list /score * w *.
begin data
4     6
.     4
4     3
3    20
2    29
1    42
6    18
5     7
6    78
5    10
6    46
5     5
6    17
5     1
6    11
4     2
3     7
2     6
1    10
4    13
3    22
3    11
2    24
1    18
4     4
3    12
2    10
1    25
4     4
3     7
2     3
1     4
4     2
3     3
2     2
1     4
end data.

weight by w.

npar tests
	/runs (MEDIAN) = score
	/runs (MEAN) = score
	/runs (MODE) = score
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:922: pspp -O format=csv npar-runs.sps"
at_fn_check_prepare_trace "npar.at:922"
( $at_check_trace; pspp -O format=csv npar-runs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Runs Test
,score
Test Value (median),3.0000
Cases < Test Value,177.0000
Cases ≥ Test Value,309.0000
Total Cases,486.0000
Number of Runs,12
Z,-20.9931
Asymp. Sig. (2-tailed),.000

Table: Runs Test
,score
Test Value (mean),3.6379
Cases < Test Value,259.0000
Cases ≥ Test Value,227.0000
Total Cases,486.0000
Number of Runs,12
Z,-21.0650
Asymp. Sig. (2-tailed),.000

Table: Runs Test
,score
Test Value (mode),6.0000
Cases < Test Value,316.0000
Cases ≥ Test Value,170.0000
Total Cases,486.0000
Number of Runs,11
Z,-21.0742
Asymp. Sig. (2-tailed),.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:922"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_992
#AT_START_993
at_fn_group_banner 993 'npar.at:958' \
  "NPAR TESTS Runs (2)" "                            " 80
at_xfail=no
(
  printf "%s\n" "993. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar-runs.sps <<'_ATEOF'
data list notable free /y.
begin data
1 1 2 1 2 1 1 2 1 1 1 2 1 2
end data.
NPAR TEST /RUNS(1.5) = y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:967: pspp -O format=csv npar-runs.sps"
at_fn_check_prepare_trace "npar.at:967"
( $at_check_trace; pspp -O format=csv npar-runs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Runs Test
,y
Test Value,1.50
Cases < Test Value,9
Cases ≥ Test Value,5
Total Cases,14
Number of Runs,10
Z,1.26
Asymp. Sig. (2-tailed),.206
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:967"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_993
#AT_START_994
at_fn_group_banner 994 'npar.at:981' \
  "NPAR TESTS Friedman" "                            " 80
at_xfail=no
(
  printf "%s\n" "994. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar-friedman.sps <<'_ATEOF'
set format F15.4.
data list notable list /x * y * z.
begin data
9.5 6.5	8.1
8.0 6.0	6.0
7.0 6.5	4.2
9.5 5.0	7.3
9.0 7.0 6.2
8.5 6.9	6.5
7.5 8.0	6.5
6.0 8.0	3.1
5.0 6.0	4.9
7.5 7.5	6.2
end data.

npar tests
     /friedman = x y z.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1002: pspp -O format=csv npar-friedman.sps"
at_fn_check_prepare_trace "npar.at:1002"
( $at_check_trace; pspp -O format=csv npar-friedman.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,Mean Rank
x,2.6500
y,2.1000
z,1.2500

Table: Test Statistics
N,10
Chi-Square,10.4737
df,2
Asymp. Sig.,.005
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1002"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_994
#AT_START_995
at_fn_group_banner 995 'npar.at:1020' \
  "NPAR TESTS Mann-Whitney" "                        " 80
at_xfail=no
(
  printf "%s\n" "995. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar-mann-whitney.sps <<'_ATEOF'
SET FORMAT     = F11.4

data list notable list /height * sex (f1.0).
begin data.
201 1
84 1
83 1
94 1
88 0
99 0
55 0
69 0
86 1
79 1
91 0
201 0
88 1
85 1
82 1
88 0
75 0
99 0
81 0
72 1
89 1
92 1
80 0
82 0
76 0
65 0
85 0
76 1
145 1
24 1
1 4
-4 5
34 5
21 4
end data.

NPAR TESTS
     /M-W = height BY sex (0,1).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1066: pspp -O format=csv npar-mann-whitney.sps"
at_fn_check_prepare_trace "npar.at:1066"
( $at_check_trace; pspp -O format=csv npar-mann-whitney.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,,N,Mean Rank,Sum of Ranks
height,0,15,14.5333,218.0000
,1,15,16.4667,247.0000
,Total,30,,

Table: Test Statistics
,Mann-Whitney U,Wilcoxon W,Z,Asymp. Sig. (2-tailed)
height,98.0000,218.0000,-.6020,.547
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1066"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_995
#AT_START_996
at_fn_group_banner 996 'npar.at:1082' \
  "NPAR TESTS Mann-Whitney Multiple" "               " 80
at_xfail=no
(
  printf "%s\n" "996. $at_setup_line: testing $at_desc ..."
  $at_traceon


cp "$abs_srcdir/language/mann-whitney.txt" .

cat >npar-mann-whitney.sps <<'_ATEOF'
SET FORMAT     = F11.3

DATA LIST NOTABLE FILE='mann-whitney.txt'
     LIST /I002_01 I002_02 I002_03 I002_04 sum_HL *.

VARIABLE LABELS
  I002_01 'IOS: Familie'
  I002_02 'IOS: Freunde'
  I002_03 'IOS: Partner*in'
  I002_04 'IOS: Bekannte'.

MISSING VALUES I002_01 I002_02 I002_03 I002_04 (-9 -1).

NPAR TESTS
    /MISSING=ANALYSIS
    /M-W=I002_01 I002_02 I002_03 I002_04 BY sum_HL (0 1).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1107: pspp -O format=csv npar-mann-whitney.sps"
at_fn_check_prepare_trace "npar.at:1107"
( $at_check_trace; pspp -O format=csv npar-mann-whitney.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,,N,Mean Rank,Sum of Ranks
IOS: Familie,.000,114,110.018,12542.000
,1.000,115,119.939,13793.000
,Total,229,,
IOS: Freunde,.000,115,108.339,12459.000
,1.000,115,122.661,14106.000
,Total,230,,
IOS: Partner*in,.000,97,95.351,9249.000
,1.000,91,93.593,8517.000
,Total,188,,
IOS: Bekannte,.000,115,111.065,12772.500
,1.000,115,119.935,13792.500
,Total,230,,

Table: Test Statistics
,Mann-Whitney U,Wilcoxon W,Z,Asymp. Sig. (2-tailed)
IOS: Familie,5987.000,12542.000,-1.167,.243
IOS: Freunde,5789.000,12459.000,-1.674,.094
IOS: Partner*in,4331.000,8517.000,-.245,.807
IOS: Bekannte,6102.500,12772.500,-1.046,.296
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1107"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_996
#AT_START_997
at_fn_group_banner 997 'npar.at:1135' \
  "NPAR TESTS Cochran" "                             " 80
at_xfail=no
(
  printf "%s\n" "997. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar-cochran.sps <<'_ATEOF'
set format f11.3.

data list notable list /v1 * v2 * v3 * v4 * v5 * v6 * v7 *.
begin data.
2 1 1 2 1 1 2
2 2 2 2 1 1 1
1 1 2 2 1 1 2
2 2 2 2 1 1 2
2 1 2 1 1 2 1
1 2 2 1 1 1 1
1 2 2 2 2 2 2
2 2 1 2 1 1 1
1 2 1 2 1 1 2
end data.

npar tests
	/cochran = v1 to v7 .

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1157: pspp -o pspp.csv npar-cochran.sps"
at_fn_check_prepare_trace "npar.at:1157"
( $at_check_trace; pspp -o pspp.csv npar-cochran.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1157"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1159: cat pspp.csv"
at_fn_check_prepare_trace "npar.at:1159"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Frequencies
,Value,
,Success (2),Failure (1)
v1,5,4
v2,6,3
v3,6,3
v4,7,2
v5,1,8
v6,2,7
v7,5,4

Table: Test Statistics
,Value
N,9
Cochran's Q,12.735
df,6
Asymp. Sig.,.047
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1159"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_997
#AT_START_998
at_fn_group_banner 998 'npar.at:1183' \
  "NPAR TESTS Kendall" "                             " 80
at_xfail=no
(
  printf "%s\n" "998. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar-kendall.sps <<'_ATEOF'
SET FORMAT F14.3.

data list notable list /v1 * v2 * v3
begin data.
 7  7  2
 5  6  5
 8  6  4
 5  7  4
 5  4  4
 8  6  5
 6  3  5
 7  6  5
 8  5  5
 .  2  2
 5  4  5
 3  4  4
 5  1  2
 5  2  1
 7  6  5
 6  3  4
 6  6  6
 5  4  5
 4  3  4
 9  1  1
 6  2  1
 3  7  8
 6  3  4
 4  4  4
 5  4  3
 6  5  2
 4  4  8
 4  6  4
 6  5  5
 7  8  6
 5  3  5
end data.

npar tests
	/kendall = all
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1227: pspp -o pspp.csv npar-kendall.sps"
at_fn_check_prepare_trace "npar.at:1227"
( $at_check_trace; pspp -o pspp.csv npar-kendall.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1227"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1229: cat pspp.csv"
at_fn_check_prepare_trace "npar.at:1229"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,Mean Rank
v1,2.500
v2,1.817
v3,1.683

Table: Test Statistics
N,30
Kendall's W,.233
Chi-Square,13.960
df,2
Asymp. Sig.,.001
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1229"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_998
#AT_START_999
at_fn_group_banner 999 'npar.at:1248' \
  "NPAR TESTS McNemar" "                             " 80
at_xfail=no
(
  printf "%s\n" "999. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >mcnemar.sps <<'_ATEOF'
set format = F12.3.
data list notable list /v1 * v2 * junk *.
begin data.
0 0 0
0 0 0
0 0 0
0 0 0
0 1 0
0 1 0
0 1 0
0 1 0
0 1 1
0 1 1
0 1 1
0 1 1
0 1 1
1 0 1
1 0 1
1 1 1
1 1 1
1 1 0
1 1 0
1 1 1
end data.

npar tests
     /mcnemar = v1 WITH v2 junk.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1280: pspp -O format=csv mcnemar.sps"
at_fn_check_prepare_trace "npar.at:1280"
( $at_check_trace; pspp -O format=csv mcnemar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: v1 & v2
v1,v2,
,.000,1.000
.000,4,9
1.000,2,5

Table: v1 & junk
v1,junk,
,.000,1.000
.000,8,5
1.000,2,5

Table: Test Statistics
,N,Exact Sig. (2-tailed),Exact Sig. (1-tailed),Point Probability
v1 & v2,20,.065,.033,.027
v1 & junk,20,.453,.227,.164
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1280"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_999
#AT_START_1000
at_fn_group_banner 1000 'npar.at:1302' \
  "NPAR TESTS McNemar Symetricity" "                 " 80
at_xfail=no
(
  printf "%s\n" "1000. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >mcnemar.sps <<'_ATEOF'
data list notable list /var1 var2 w (F2.0).
begin data
0 0 9
0 1 8
1 0 1
1 1 5
end data.

weight by w.

NPAR TEST
	/MCNEMAR var1 WITH  var2 (PAIRED).

NPAR TEST
	/MCNEMAR var2 WITH  var1 (PAIRED).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1322: pspp -O format=csv mcnemar.sps"
at_fn_check_prepare_trace "npar.at:1322"
( $at_check_trace; pspp -O format=csv mcnemar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: var1 & var2
var1,var2,
,0,1
0,9,8
1,1,5

Table: Test Statistics
,N,Exact Sig. (2-tailed),Exact Sig. (1-tailed),Point Probability
var1 & var2,23,.039,.020,.02

Table: var2 & var1
var2,var1,
,0,1
0,9,1
1,8,5

Table: Test Statistics
,N,Exact Sig. (2-tailed),Exact Sig. (1-tailed),Point Probability
var2 & var1,23,.039,.020,.02
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1322"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1000
#AT_START_1001
at_fn_group_banner 1001 'npar.at:1346' \
  "NPAR TESTS Kolmogorov-Smirnov Uniform parameters given" "" 80
at_xfail=no
(
  printf "%s\n" "1001. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >ks-uniform.sps <<'_ATEOF'
set format F12.3.
data list notable list /x *.
begin data
.554
.382
.329
.480
.711
.503
.203
.477
.621
.581
end data.

npar tests k-s (uniform 0 1) = x.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1367: pspp -O format=csv ks-uniform.sps"
at_fn_check_prepare_trace "npar.at:1367"
( $at_check_trace; pspp -O format=csv ks-uniform.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: One-Sample Kolmogorov-Smirnov Test
,,x
N,,10
Uniform Parameters,Minimum,.000
,Maximum,1.000
Most Extreme Differences,Absolute,.289
,Positive,.289
,Negative,-.229
Kolmogorov-Smirnov Z,,.914
Asymp. Sig. (2-tailed),,.374
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1367"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1001
#AT_START_1002
at_fn_group_banner 1002 'npar.at:1383' \
  "NPAR TESTS Kolmogorov-Smirnov Normal parameters imputed" "" 80
at_xfail=no
(
  printf "%s\n" "1002. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >ks-normal.sps <<'_ATEOF'
set format = F12.3.

data list notable list /foo * bar *.
begin data.
65 12.5
59 14.2
43 12.6
57
68
79
51
62
57
73
58
58
68
75
47
70
59
71
52
48 13.0
58 14.1
37 15.0
39 13.1
58 13.2
43 14.5
58 13.5
86 14.0
63 12.5
80 12.8
70
63
53
53
48
49
51
47
81
66
78
65
69
70 12.1
63 12.5
64 12.4
39 13.8
51 13.2
68 14.0
76 12.6
53 12.1
71 13.5
47 13.8
87 14.1
72 12.9
48 12.1
75 12.8
51 13.4
63 13.9
61 12.5
61 12.4
66 12.8
82 12.9
81 13.6
46
52
71
73
58
57
46
58
52 13.5
71 13.2
57 12.8
78 14.1
73 12.1
50 12.6
71
51
51
68
84
64
66
65
52
56
70
68
66
78
65
71
53
81
53
57
64
61
43
56
37
74
66
81
67
80
68
76
70
80
42
74
80
70
60
39
72
69
63
72
63
49
53 13.2
43 13.8
51 12.5
63 12.6
64 12.9
65 13.0
64 12.5
66 12.0
55
62
58
48
67
46
36
61
55
77
74
60
70
69
57
49
63
69
63
76
53
54
42
64
66
61
62
73
73
60
79
40
48
76
60
76
54
69
65
69
51
54
82
end data.

npar tests
	/k-s (normal) = foo bar.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1570: pspp -O format=csv ks-normal.sps"
at_fn_check_prepare_trace "npar.at:1570"
( $at_check_trace; pspp -O format=csv ks-normal.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: One-Sample Kolmogorov-Smirnov Test
,,foo,bar
N,,174,48
Normal Parameters,Mean,62.109,13.108
,Std. Deviation,11.548,.718
Most Extreme Differences,Absolute,.059,.115
,Positive,.055,.115
,Negative,-.059,-.082
Kolmogorov-Smirnov Z,,.785,.795
Asymp. Sig. (2-tailed),,.569,.552
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1570"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1002
#AT_START_1003
at_fn_group_banner 1003 'npar.at:1587' \
  "NPAR TESTS Median Test (median imputed)" "        " 80
at_xfail=no
(
  printf "%s\n" "1003. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >median1.sps <<'_ATEOF'
set format F12.3.
data list notable list /ignore * animal * years * w *.
begin data
99  1   10  1
99  4    1  1
99  5   11  1
99  5   10  1
99  3    7  1
99  6   10  1
99  0    7  1
99  3   14  1
99  2    3  1
99  1    1  1
99  4    7  1
99  5   12  1
99  3    6  1
99  4    1  1
99  3    5  1
99  5    7  1
99  4    6  1
99  3   14  1
99  4    8  1
99  5   13  1
99  2    0  1
99  4    7  1
99  4    7  1
99  1    0  1
99  2    8  1
99  4   10  1
99  2    3  1
99  2    0  1
99  4    8  1
99  1    8  1
end data.


variable label years 'Years expected'.
variable label animal 'Animal Genus'.

add value labels animal 1 'Animal 1' 2 'Animal 2' 3 'Animal 3' 4 'Animal 4' 5 'Animal 5'.

npar tests
     /median = years by animal (1, 5)
     .
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/npar.at:1637: pspp -O format=csv median1.sps"
at_fn_check_prepare_trace "npar.at:1637"
( $at_check_trace; pspp -O format=csv median1.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Frequencies
,,Animal Genus,,,,
,,Animal 1,Animal 2,Animal 3,Animal 4,Animal 5
Years expected,> Median,2,1,2,3,4
,≤ Median,2,4,3,6,1

Table: Test Statistics
,N,Median,Chi-Square,df,Asymp. Sig.
Years expected,28,7.000,4.317,4,.365
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1637"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1003
#AT_START_1004
at_fn_group_banner 1004 'npar.at:1652' \
  "NPAR TESTS Median Test (median given)" "          " 80
at_xfail=no
(
  printf "%s\n" "1004. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >median2.sps <<'_ATEOF'
set format F12.3.
data list notable list /ignore * animal * years * w *.
begin data
99  1   10  1
99  4    1  1
99  5   11  1
99  5   10  1
99  3    7  1
99  3   14  1
99  2    3  1
99  1    1  1
99  4    7  1
99  5   12  1
99  3    6  1
99  4    1  1
99  3    5  1
99  5    7  1
99  4    6  1
99  3   14  1
99  4    8  1
99  5   13  1
99  2    0  1
99  4    7  1
99  4    7  1
99  1    0  1
99  2    8  1
99  4   10  1
99  2    3  1
99  2    0  1
99  4    8  1
99  1    8  1
end data.


variable label years 'Years expected'.
variable label animal 'Animal Genus'.

add value labels animal 1 'Animal 1' 2 'Animal 2' 3 'Animal 3' 4 'Animal 4' 5 'Animal 5'.

npar tests
     /median (7) = years by animal (1, 5)
     .
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/npar.at:1700: pspp -O format=csv median2.sps"
at_fn_check_prepare_trace "npar.at:1700"
( $at_check_trace; pspp -O format=csv median2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Frequencies
,,Animal Genus,,,,
,,Animal 1,Animal 2,Animal 3,Animal 4,Animal 5
Years expected,> Median,2,1,2,3,4
,≤ Median,2,4,3,6,1

Table: Test Statistics
,N,Median,Chi-Square,df,Asymp. Sig.
Years expected,28,7.000,4.317,4,.365
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1700"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1004
#AT_START_1005
at_fn_group_banner 1005 'npar.at:1715' \
  "NPAR TESTS Median Test (two sample)" "            " 80
at_xfail=no
(
  printf "%s\n" "1005. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >median3.sps <<'_ATEOF'
set format F12.3.
data list notable list /xx * animal * years * w *.
begin data
99  1   10  1
99  4    1  1
99  5   11  1
99  5   10  1
99  3    7  1
99  3   14  1
99  2    3  1
99  1    1  1
99  4    7  1
99  5   12  1
99  3    6  1
99  4    1  1
99  3    5  1
99  5    7  1
99  4    6  1
99  3   14  1
99  4    8  1
99  5   13  1
99  2    0  1
99  4    7  1
99  4    7  1
99  1    0  1
99  2    8  1
99  4   10  1
99  2    3  1
99  2    0  1
99  4    8  1
99  1    8  1
end data.


variable label years 'Years expected'.
variable label animal 'Animal Genus'.

add value labels animal 1 'Animal 1' 2 'Animal 2' 3 'Animal 3' 4 'Animal 4' 5 'Animal 5'.

npar tests
     /median (7) = xx years by animal (5, 1)
     .
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/npar.at:1763: pspp -O format=csv median3.sps"
at_fn_check_prepare_trace "npar.at:1763"
( $at_check_trace; pspp -O format=csv median3.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Frequencies
,,Animal Genus,
,,Animal 1,Animal 5
xx,> Median,4,5
,≤ Median,0,0
Years expected,> Median,2,4
,≤ Median,2,1

Table: Test Statistics
,N,Median,Chi-Square,df,Asymp. Sig.
xx,9,7.000,NaN,1,NaN
Years expected,9,7.000,.900,1,.343
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1763"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1005
#AT_START_1006
at_fn_group_banner 1006 'npar.at:1781' \
  "NPAR TESTS Jonckheere-Terpstra" "                 " 80
at_xfail=no
(
  printf "%s\n" "1006. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >jt.sps <<'_ATEOF'
set format = F12.3.
data list notable list /x * g * w *.
begin data.
52  2  2
58  2  1
60  2  1
62  2  1
58  0  1
44  2  1
46  2  1
14  3  1
32  2  1
16  3  1
56  2  1
26  3  1
40  3  2
50  4  1
6   5  1
34  2  3
36  2  2
40  2  2
50  2  1
end data.

weight by w.

npar test /jonckheere-terpstra = x by g (5, 2).
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/npar.at:1814: pspp -O format=csv jt.sps"
at_fn_check_prepare_trace "npar.at:1814"
( $at_check_trace; pspp -O format=csv jt.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Jonckheere-Terpstra Test
,Number of levels in g,N,Observed J-T Statistic,Mean J-T Statistic,Std. Deviation of J-T Statistic,Std. J-T Statistic,Asymp. Sig. (2-tailed)
x,4,24.000,29.500,65.000,15.902,-2.232,.026
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1814"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1006
#AT_START_1007
at_fn_group_banner 1007 'npar.at:1824' \
  "NPAR TESTS (PAIRED)" "                            " 80
at_xfail=no
(
  printf "%s\n" "1007. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
set format = F12.3.
data list notable list /a * b * c *.
begin data.
1 2 4
4 5 3
1 2 2
4 5 1
end data.

npar tests /wilcoxon a b with c c (paired).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1838: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:1838"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Ranks
,,N,Mean Rank,Sum of Ranks
a - c,Negative Ranks,2,2.500,5.000
,Positive Ranks,2,2.500,5.000
,Ties,0,,
,Total,4,,
b - c,Negative Ranks,1,1.500,1.500
,Positive Ranks,2,2.250,4.500
,Ties,1,,
,Total,4,,

Table: Test Statistics
,a - c,b - c
Z,.000,-.816
Asymp. Sig. (2-tailed),1.000,.414
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/npar.at:1838"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1007
#AT_START_1008
at_fn_group_banner 1008 'npar.at:1861' \
  "NPAR TESTS CHISQUARE crash" "                     " 80
at_xfail=no
(
  printf "%s\n" "1008. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >npar.sps <<'_ATEOF'
data list list /x *.
begin data.
1
2
3
4
5
6
7
8
9
10
end data.

* This happens to be invalid syntax.  But should not crash.
NPAR TEST
	/CHISQUARE= x(0.098, 99.098)
	/EXPECTED =  1.2.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1885: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:1885"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/npar.at:1885"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1008
#AT_START_1009
at_fn_group_banner 1009 'npar.at:1890' \
  "NPAR TESTS - crash on invalid syntax" "           " 80
at_xfail=no
(
  printf "%s\n" "1009. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >npar.sps <<'_ATEOF'
data list notable list /ev * xscore *.
begin data.
2 109
3 115
1 61
1 101
3 147
end data.


npar tests
        /kruskal-wallis xscore by(gv (1, 3).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/npar.at:1907: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:1907"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/npar.at:1907"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1009
#AT_START_1010
at_fn_group_banner 1010 'npar.at:1914' \
  "NPAR TESTS - crash on unterminated string" "      " 80
at_xfail=no
(
  printf "%s\n" "1010. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >npar.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /x * y * w * .
BEGIN DATA.
3.1 1  4
3.2 2  1
4   2  6
END DATA.


NPAR TESTS
" CHISQUARE=x y(-2,5)
  /STATISTICS=DESCRIPTIVES
  .
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:1931: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:1931"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/npar.at:1931"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1010
#AT_START_1011
at_fn_group_banner 1011 'npar.at:1935' \
  "NPAR TESTS - syntax errors" "                     " 80
at_xfail=no
(
  printf "%s\n" "1011. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >npar.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
NPAR TESTS COCHRAN **.
NPAR TESTS FRIEDMAN **.
NPAR TESTS KENDALL **.
NPAR TESTS RUNS **.
NPAR TESTS RUNS (**).
NPAR TESTS RUNS (MEAN **).
NPAR TESTS RUNS (MEAN)=**.
NPAR TESTS CHISQUARE **.
NPAR TESTS CHISQUARE x **.
NPAR TESTS CHISQUARE x (**).
NPAR TESTS CHISQUARE x (1 **).
NPAR TESTS CHISQUARE x (1, -1).
NPAR TESTS CHISQUARE x (1, 2 **).
NPAR TESTS CHISQUARE x /EXPECTED **.
NPAR TESTS CHISQUARE x /EXPECTED=1* **.
NPAR TESTS CHISQUARE x (1,5)/EXPECTED=2.
NPAR TESTS BINOMIAL (**).
NPAR TESTS BINOMIAL (1 **).
NPAR TESTS BINOMIAL (1)**.
NPAR TESTS BINOMIAL x(**).
NPAR TESTS BINOMIAL x(1,**).
NPAR TESTS BINOMIAL x(1,2**).
NPAR TESTS BINOMIAL x(1**).
NPAR TESTS K-S **.
NPAR TESTS K-S (**).
NPAR TESTS K-S (NORMAL **).
NPAR TESTS K-S (NORMAL)=**.
NPAR TESTS J-T **.
NPAR TESTS J-T x **.
NPAR TESTS J-T x BY **.
NPAR TESTS J-T x BY y **.
NPAR TESTS J-T x BY y (**).
NPAR TESTS J-T x BY y (1, **).
NPAR TESTS J-T x BY y (1, 2 **).
NPAR TESTS MCNEMAR **.
NPAR TESTS MCNEMAR x **.
NPAR TESTS MCNEMAR x WITH **.
NPAR TESTS MCNEMAR x WITH y (**).
NPAR TESTS MCNEMAR x WITH y (PAIRED **).
NPAR TESTS MCNEMAR x WITH y z (PAIRED).
NPAR TESTS MEDIAN (**).
NPAR TESTS MEDIAN (1 **).
NPAR TESTS MISSING/MISSING.
NPAR TESTS MISSING **.
NPAR TESTS METHOD/METHOD.
NPAR TESTS METHOD EXACT TIMER(**).
NPAR TESTS METHOD EXACT TIMER(5 **).
NPAR TESTS STATISTICS **.
NPAR TESTS ALGORITHM **.
NPAR TESTS **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/npar.at:1989: pspp -O format=csv npar.sps"
at_fn_check_prepare_trace "npar.at:1989"
( $at_check_trace; pspp -O format=csv npar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"npar.sps:2.20-2.21: error: NPAR TESTS: Syntax error expecting variable name.
    2 | NPAR TESTS COCHRAN **.
      |                    ^~\"

\"npar.sps:3.21-3.22: error: NPAR TESTS: Syntax error expecting variable name.
    3 | NPAR TESTS FRIEDMAN **.
      |                     ^~\"

\"npar.sps:4.20-4.21: error: NPAR TESTS: Syntax error expecting variable name.
    4 | NPAR TESTS KENDALL **.
      |                    ^~\"

\"npar.sps:5.17-5.18: error: NPAR TESTS: Syntax error expecting \`('.
    5 | NPAR TESTS RUNS **.
      |                 ^~\"

\"npar.sps:6.18-6.19: error: NPAR TESTS: Syntax error expecting MEAN, MEDIAN, MODE or a number.
    6 | NPAR TESTS RUNS (**).
      |                  ^~\"

\"npar.sps:7.23-7.24: error: NPAR TESTS: Syntax error expecting \`)='.
    7 | NPAR TESTS RUNS (MEAN **).
      |                       ^~\"

\"npar.sps:8.24-8.25: error: NPAR TESTS: Syntax error expecting variable name.
    8 | NPAR TESTS RUNS (MEAN)=**.
      |                        ^~\"

\"npar.sps:9.22-9.23: error: NPAR TESTS: Syntax error expecting variable name.
    9 | NPAR TESTS CHISQUARE **.
      |                      ^~\"

\"npar.sps:10.24-10.25: error: NPAR TESTS: Syntax error expecting \`BEGIN DATA'.
   10 | NPAR TESTS CHISQUARE x **.
      |                        ^~\"

\"npar.sps:10.24-10.25: error: NPAR TESTS: Syntax error expecting end of command.
   10 | NPAR TESTS CHISQUARE x **.
      |                        ^~\"

\"npar.sps:11.25-11.26: error: NPAR TESTS: Syntax error expecting number.
   11 | NPAR TESTS CHISQUARE x (**).
      |                         ^~\"

\"npar.sps:12.27-12.28: error: NPAR TESTS: Syntax error expecting \`,'.
   12 | NPAR TESTS CHISQUARE x (1 **).
      |                           ^~\"

\"npar.sps:13.28-13.29: error: NPAR TESTS: Syntax error expecting number greater than 1 for HI.
   13 | NPAR TESTS CHISQUARE x (1, -1).
      |                            ^~\"

\"npar.sps:14.30-14.31: error: NPAR TESTS: Syntax error expecting \`)'.
   14 | NPAR TESTS CHISQUARE x (1, 2 **).
      |                              ^~\"

\"npar.sps:15.34-15.35: error: NPAR TESTS: Syntax error expecting \`='.
   15 | NPAR TESTS CHISQUARE x /EXPECTED **.
      |                                  ^~\"

\"npar.sps:16.37-16.38: error: NPAR TESTS: Syntax error expecting number.
   16 | NPAR TESTS CHISQUARE x /EXPECTED=1* **.
      |                                     ^~\"

\"npar.sps:17.39: error: NPAR TESTS: 1 expected values were given, but the specified range (1-5) requires exactly 5 values.
   17 | NPAR TESTS CHISQUARE x (1,5)/EXPECTED=2.
      |                                       ^\"

\"npar.sps:18.22-18.23: error: NPAR TESTS: Syntax error expecting number.
   18 | NPAR TESTS BINOMIAL (**).
      |                      ^~\"

\"npar.sps:19.24-19.25: error: NPAR TESTS: Syntax error expecting \`)'.
   19 | NPAR TESTS BINOMIAL (1 **).
      |                        ^~\"

\"npar.sps:20.24-20.25: error: NPAR TESTS: Syntax error expecting \`='.
   20 | NPAR TESTS BINOMIAL (1)**.
      |                        ^~\"

\"npar.sps:21.23-21.24: error: NPAR TESTS: Syntax error expecting number.
   21 | NPAR TESTS BINOMIAL x(**).
      |                       ^~\"

\"npar.sps:22.25-22.26: error: NPAR TESTS: Syntax error expecting number.
   22 | NPAR TESTS BINOMIAL x(1,**).
      |                         ^~\"

\"npar.sps:23.26-23.27: error: NPAR TESTS: Syntax error expecting \`)'.
   23 | NPAR TESTS BINOMIAL x(1,2**).
      |                          ^~\"

\"npar.sps:24.24-24.25: error: NPAR TESTS: Syntax error expecting \`)'.
   24 | NPAR TESTS BINOMIAL x(1**).
      |                        ^~\"

\"npar.sps:25.16-25.17: error: NPAR TESTS: Syntax error expecting \`('.
   25 | NPAR TESTS K-S **.
      |                ^~\"

\"npar.sps:26.17-26.18: error: NPAR TESTS: Syntax error expecting NORMAL, POISSON, UNIFORM, or EXPONENTIAL.
   26 | NPAR TESTS K-S (**).
      |                 ^~\"

\"npar.sps:27.24-27.25: error: NPAR TESTS: Syntax error expecting \`)'.
   27 | NPAR TESTS K-S (NORMAL **).
      |                        ^~\"

\"npar.sps:28.25-28.26: error: NPAR TESTS: Syntax error expecting variable name.
   28 | NPAR TESTS K-S (NORMAL)=**.
      |                         ^~\"

\"npar.sps:29.16-29.17: error: NPAR TESTS: Syntax error expecting variable name.
   29 | NPAR TESTS J-T **.
      |                ^~\"

\"npar.sps:30.18-30.19: error: NPAR TESTS: Syntax error expecting \`BY'.
   30 | NPAR TESTS J-T x **.
      |                  ^~\"

\"npar.sps:31.21-31.22: error: NPAR TESTS: Syntax error expecting variable name.
   31 | NPAR TESTS J-T x BY **.
      |                     ^~\"

\"npar.sps:32.23-32.24: error: NPAR TESTS: Syntax error expecting \`('.
   32 | NPAR TESTS J-T x BY y **.
      |                       ^~\"

\"npar.sps:33.24-33.25: error: NPAR TESTS: Syntax error expecting number.
   33 | NPAR TESTS J-T x BY y (**).
      |                        ^~\"

\"npar.sps:34.27-34.28: error: NPAR TESTS: Syntax error expecting number.
   34 | NPAR TESTS J-T x BY y (1, **).
      |                           ^~\"

\"npar.sps:35.29-35.30: error: NPAR TESTS: Syntax error expecting \`)'.
   35 | NPAR TESTS J-T x BY y (1, 2 **).
      |                             ^~\"

\"npar.sps:36.20-36.21: error: NPAR TESTS: Syntax error expecting variable name.
   36 | NPAR TESTS MCNEMAR **.
      |                    ^~\"

\"npar.sps:37.22-37.23: error: NPAR TESTS: Syntax error expecting end of command.
   37 | NPAR TESTS MCNEMAR x **.
      |                      ^~\"

\"npar.sps:38.27-38.28: error: NPAR TESTS: Syntax error expecting variable name.
   38 | NPAR TESTS MCNEMAR x WITH **.
      |                           ^~\"

\"npar.sps:39.30-39.31: error: NPAR TESTS: Syntax error expecting \`PAIRED)'.
   39 | NPAR TESTS MCNEMAR x WITH y (**).
      |                              ^~\"

\"npar.sps:40.30-40.38: error: NPAR TESTS: Syntax error expecting \`PAIRED)'.
   40 | NPAR TESTS MCNEMAR x WITH y (PAIRED **).
      |                              ^~~~~~~~~\"

\"npar.sps:41.20-41.29: error: NPAR TESTS: PAIRED was specified, but the number of variables preceding WITH (1) does not match the number following (2).
   41 | NPAR TESTS MCNEMAR x WITH y z (PAIRED).
      |                    ^~~~~~~~~~\"

\"npar.sps:42.20-42.21: error: NPAR TESTS: Syntax error expecting number.
   42 | NPAR TESTS MEDIAN (**).
      |                    ^~\"

\"npar.sps:43.22-43.23: error: NPAR TESTS: Syntax error expecting \`)'.
   43 | NPAR TESTS MEDIAN (1 **).
      |                      ^~\"

\"npar.sps:44.20-44.26: error: NPAR TESTS: Subcommand MISSING may only be specified once.
   44 | NPAR TESTS MISSING/MISSING.
      |                    ^~~~~~~\"

\"npar.sps:45.20-45.21: error: NPAR TESTS: Syntax error expecting ANALYSIS, LISTWISE, INCLUDE, or EXCLUDE.
   45 | NPAR TESTS MISSING **.
      |                    ^~\"

\"npar.sps:46.19-46.24: error: NPAR TESTS: Subcommand METHOD may only be specified once.
   46 | NPAR TESTS METHOD/METHOD.
      |                   ^~~~~~\"

\"npar.sps:47.31-47.32: error: NPAR TESTS: Syntax error expecting number.
   47 | NPAR TESTS METHOD EXACT TIMER(**).
      |                               ^~\"

\"npar.sps:48.33-48.34: error: NPAR TESTS: Syntax error expecting \`)'.
   48 | NPAR TESTS METHOD EXACT TIMER(5 **).
      |                                 ^~\"

\"npar.sps:49.23-49.24: error: NPAR TESTS: Syntax error expecting DESCRIPTIVES, QUARTILES, or ALL.
   49 | NPAR TESTS STATISTICS **.
      |                       ^~\"

\"npar.sps:50.22-50.23: error: NPAR TESTS: Syntax error expecting COMPATIBLE or ENHANCED.
   50 | NPAR TESTS ALGORITHM **.
      |                      ^~\"

\"npar.sps:51.12-51.13: error: NPAR TESTS: Syntax error expecting one of the following: COCHRAN, FRIEDMAN, KENDALL, RUNS, CHISQUARE, BINOMIAL, K-S, J-T, K-W, MCNEMAR, M-W, MEDIAN, WILCOXON, SIGN, MISSING, METHOD, STATISTICS, ALGORITHM.
   51 | NPAR TESTS **.
      |            ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/npar.at:1989"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1011
#AT_START_1012
at_fn_group_banner 1012 'numeric.at:3' \
  "NUMERIC" "                                        " 81
at_xfail=no
(
  printf "%s\n" "1012. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >numeric.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
NUMERIC n/k(F5).
DISPLAY DICTIONARY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/numeric.at:9: pspp -O format=csv numeric.sps"
at_fn_check_prepare_trace "numeric.at:9"
( $at_check_trace; pspp -O format=csv numeric.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
x,1,Unknown,Input,8,Right,F8.2,F8.2
y,2,Unknown,Input,8,Right,F8.2,F8.2
z,3,Unknown,Input,8,Right,F8.2,F8.2
n,4,Unknown,Input,8,Right,F8.2,F8.2
k,5,Unknown,Input,8,Right,F5.0,F5.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/numeric.at:9"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1012
#AT_START_1013
at_fn_group_banner 1013 'numeric.at:20' \
  "NUMERIC syntax errors" "                          " 81
at_xfail=no
(
  printf "%s\n" "1013. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >numeric.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
NUMERIC **.
NUMERIC n **.
NUMERIC x.
NUMERIC n (**).
NUMERIC n (F50).
NUMERIC n (A8).
NUMERIC n (F8.0 **).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/numeric.at:31: pspp -O format=csv numeric.sps"
at_fn_check_prepare_trace "numeric.at:31"
( $at_check_trace; pspp -O format=csv numeric.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"numeric.sps:2.9-2.10: error: NUMERIC: Syntax error expecting variable name.
    2 | NUMERIC **.
      |         ^~\"

\"numeric.sps:3.11-3.12: error: NUMERIC: Syntax error expecting end of command.
    3 | NUMERIC n **.
      |           ^~\"

\"numeric.sps:4.9: error: NUMERIC: There is already a variable named x.
    4 | NUMERIC x.
      |         ^\"

\"numeric.sps:5.12-5.13: error: NUMERIC: Syntax error expecting valid format specifier.
    5 | NUMERIC n (**).
      |            ^~\"

\"numeric.sps:6.12-6.14: error: NUMERIC: Output format F50.0 specifies width 50, but F requires a width between 1 and 40.
    6 | NUMERIC n (F50).
      |            ^~~\"

\"numeric.sps:7.12-7.13: error: NUMERIC: Format type A8 may not be used with a numeric variable.
    7 | NUMERIC n (A8).
      |            ^~\"

\"numeric.sps:8.17-8.18: error: NUMERIC: Syntax error expecting \`)'.
    8 | NUMERIC n (F8.0 **).
      |                 ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/numeric.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1013
#AT_START_1014
at_fn_group_banner 1014 'oneway.at:19' \
  "ONEWAY basic operation" "                         " 82
at_xfail=no
(
  printf "%s\n" "1014. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >oneway.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /QUALITY * BRAND * .
BEGIN DATA
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

VARIABLE LABELS brand 'Manufacturer'.
VARIABLE LABELS quality 'Breaking Strain'.

VALUE LABELS /brand 1 'Aspeger' 2 'Bloggs' 3 'Charlies'.

ONEWAY
	quality BY brand
	/STATISTICS descriptives homogeneity
	/CONTRAST =  -2 1 1
	/CONTRAST = 0 -1 1
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:54: pspp -o pspp.csv -o pspp.txt oneway.sps"
at_fn_check_prepare_trace "oneway.at:54"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt oneway.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:54"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/oneway.at:55: cat pspp.csv"
at_fn_check_prepare_trace "oneway.at:55"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptives
,Manufacturer,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
,,,,,,Lower Bound,Upper Bound,,
Breaking Strain,Aspeger,5,2.20,1.30,.58,.58,3.82,1.00,4.00
,Bloggs,5,3.20,1.30,.58,1.58,4.82,2.00,5.00
,Charlies,5,5.00,1.58,.71,3.04,6.96,3.00,7.00
,Total,15,3.47,1.77,.46,2.49,4.45,1.00,7.00

Table: Test of Homogeneity of Variances
,Levene Statistic,df1,df2,Sig.
Breaking Strain,.09,2,12,.913

Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
Breaking Strain,Between Groups,20.13,2,10.07,5.12,.025
,Within Groups,23.60,12,1.97,,
,Total,43.73,14,,,

Table: Contrast Coefficients
Contrast,Manufacturer,,
,Aspeger,Bloggs,Charlies
1,-2,1,1
2,0,-1,1

Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
Breaking Strain,Assume equal variances,1,3.80,1.54,2.47,12.00,.029
,,2,1.80,.89,2.03,12.00,.065
,Does not assume equal variances,1,3.80,1.48,2.56,8.74,.031
,,2,1.80,.92,1.96,7.72,.086
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1014
#AT_START_1015
at_fn_group_banner 1015 'oneway.at:90' \
  "ONEWAY with splits" "                             " 82
at_xfail=no
(
  printf "%s\n" "1015. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >oneway-splits.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /QUALITY * BRAND * S *.
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 2
2 2 2
3 2 2
7  3 2
4  3 2
5  3 2
3  3 2
6  3 2
END DATA

VARIABLE LABELS brand 'Manufacturer'.
VARIABLE LABELS quality 'Breaking Strain'.

VALUE LABELS /brand 1 'Aspeger' 2 'Bloggs' 3 'Charlies'.

SPLIT FILE by s.

ONEWAY
	quality BY brand
	/STATISTICS descriptives homogeneity
	/CONTRAST =  -2 2
	/CONTRAST = -1 1
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:127: pspp -o pspp.csv -o pspp.txt oneway-splits.sps"
at_fn_check_prepare_trace "oneway.at:127"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt oneway-splits.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:127"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/oneway.at:128: cat pspp.csv"
at_fn_check_prepare_trace "oneway.at:128"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
S,1.00

Table: Descriptives
,Manufacturer,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
,,,,,,Lower Bound,Upper Bound,,
Breaking Strain,Aspeger,5,2.20,1.30,.58,.58,3.82,1.00,4.00
,Bloggs,2,3.50,2.12,1.50,-15.56,22.56,2.00,5.00
,Total,7,2.57,1.51,.57,1.17,3.97,1.00,5.00

Table: Test of Homogeneity of Variances
,Levene Statistic,df1,df2,Sig.
Breaking Strain,1.09,1,5,.345

Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
Breaking Strain,Between Groups,2.41,1,2.41,1.07,.349
,Within Groups,11.30,5,2.26,,
,Total,13.71,6,,,

Table: Contrast Coefficients
Contrast,Manufacturer,
,Aspeger,Bloggs
1,-2,2
2,-1,1

Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
Breaking Strain,Assume equal variances,1,2.60,2.52,1.03,5.00,.349
,,2,1.30,1.26,1.03,5.00,.349
,Does not assume equal variances,1,2.60,3.22,.81,1.32,.539
,,2,1.30,1.61,.81,1.32,.539

Table: Split Values
Variable,Value
S,2.00

Table: Descriptives
,Manufacturer,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
,,,,,,Lower Bound,Upper Bound,,
Breaking Strain,Bloggs,3,3.00,1.00,.58,.52,5.48,2.00,4.00
,Charlies,5,5.00,1.58,.71,3.04,6.96,3.00,7.00
,Total,8,4.25,1.67,.59,2.85,5.65,2.00,7.00

Table: Test of Homogeneity of Variances
,Levene Statistic,df1,df2,Sig.
Breaking Strain,.92,1,6,.374

Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
Breaking Strain,Between Groups,7.50,1,7.50,3.75,.101
,Within Groups,12.00,6,2.00,,
,Total,19.50,7,,,

Table: Contrast Coefficients
Contrast,Manufacturer,
,Bloggs,Charlies
1,-2,2
2,-1,1

Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
Breaking Strain,Assume equal variances,1,4.00,2.07,1.94,6.00,.101
,,2,2.00,1.03,1.94,6.00,.101
,Does not assume equal variances,1,4.00,1.83,2.19,5.88,.072
,,2,2.00,.91,2.19,5.88,.072
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1015
#AT_START_1016
at_fn_group_banner 1016 'oneway.at:200' \
  "ONEWAY with missing values" "                     " 82
at_xfail=no
(
  printf "%s\n" "1016. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >oneway-missing1.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /v1 * v2 * dep * vn *.
BEGIN DATA
. .  1  4
3 3  1  2
2 2  1  2
1 1  1  2
1 1  1  2
4 4  1  2
5 5  2  2
2 2  2  2
4 4  2  2
2 2  2  2
3 3  2  2
7 7  3  2
4 4  3  2
5 5  3  2
3 3  3  2
6 6  3  2
END DATA

ONEWAY
	v1 v2 BY dep
	/STATISTICS descriptives homogeneity
	/MISSING ANALYSIS
	.
_ATEOF


cat >oneway-missing2.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /v1 * v2 * dep * vn * .
BEGIN DATA
4 .  1  2
3 3  1  2
2 2  1  2
1 1  1  2
1 1  1  2
4 4  1  2
5 5  2  2
2 2  2  2
4 4  2  2
2 2  2  2
3 3  2  2
7 7  3  2
4 4  3  2
5 5  3  2
3 3  3  2
6 6  3  2
END DATA

ONEWAY
	v1 v2 BY dep
	/STATISTICS descriptives homogeneity
	/MISSING LISTWISE
	.
_ATEOF




{ set +x
printf "%s\n" "$at_srcdir/oneway.at:261: pspp -O format=csv oneway-missing1.sps > first.out"
at_fn_check_prepare_trace "oneway.at:261"
( $at_check_trace; pspp -O format=csv oneway-missing1.sps > first.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:261"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:263: pspp -O format=csv oneway-missing2.sps > second.out"
at_fn_check_prepare_trace "oneway.at:263"
( $at_check_trace; pspp -O format=csv oneway-missing2.sps > second.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:263"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:265: diff first.out second.out"
at_fn_check_prepare_trace "oneway.at:265"
( $at_check_trace; diff first.out second.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:265"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >oneway-missing3.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /v1 * v2 * dep * vn * .
BEGIN DATA
4 2  .  2
3 3  1  2
2 2  1  2
1 1  1  2
1 1  1  2
4 4  1  2
5 5  2  2
2 2  2  2
4 4  2  2
2 2  2  2
3 3  2  2
7 7  3  2
4 4  3  2
5 5  3  4
3 3  3  2
6 6  3  2
END DATA

ONEWAY
	v1 v2 BY dep
	/STATISTICS descriptives homogeneity
	/MISSING ANALYSIS
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:296: pspp -O format=csv oneway-missing3.sps > third.out"
at_fn_check_prepare_trace "oneway.at:296"
( $at_check_trace; pspp -O format=csv oneway-missing3.sps > third.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:296"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:298: diff first.out third.out"
at_fn_check_prepare_trace "oneway.at:298"
( $at_check_trace; diff first.out third.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:298"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1016
#AT_START_1017
at_fn_group_banner 1017 'oneway.at:306' \
  "ONEWAY descriptives subcommand" "                 " 82
at_xfail=no
(
  printf "%s\n" "1017. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >oneway-descriptives.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /QUALITY * BRAND * .
BEGIN DATA
13 11
12 11
11 11
11 11
14 11
15 25
12 25
14 25
12 25
13 25
17  301
14  301
15  301
13  301
16  301
END DATA


ONEWAY
	quality BY brand
	/STATISTICS descriptives
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:336: pspp -O format=csv oneway-descriptives.sps"
at_fn_check_prepare_trace "oneway.at:336"
( $at_check_trace; pspp -O format=csv oneway-descriptives.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptives
,BRAND,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
,,,,,,Lower Bound,Upper Bound,,
QUALITY,11.00,5,12.20,1.30,.58,10.58,13.82,11.00,14.00
,25.00,5,13.20,1.30,.58,11.58,14.82,12.00,15.00
,301.00,5,15.00,1.58,.71,13.04,16.96,13.00,17.00
,Total,15,13.47,1.77,.46,12.49,14.45,11.00,17.00

Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
QUALITY,Between Groups,20.13,2,10.07,5.12,.025
,Within Groups,23.60,12,1.97,,
,Total,43.73,14,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:336"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1017
#AT_START_1018
at_fn_group_banner 1018 'oneway.at:356' \
  "ONEWAY homogeneity subcommand" "                  " 82
at_xfail=no
(
  printf "%s\n" "1018. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >oneway-homogeneity.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /QUALITY * BRAND * .
BEGIN DATA
13 11
12 11
11 11
11 11
14 11
15 25
12 25
14 25
12 25
13 25
17  301
14  301
15  301
13  301
16  301
END DATA


ONEWAY
	quality BY brand
	/STATISTICS homogeneity
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:386: pspp -O format=csv oneway-homogeneity.sps"
at_fn_check_prepare_trace "oneway.at:386"
( $at_check_trace; pspp -O format=csv oneway-homogeneity.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Test of Homogeneity of Variances
,Levene Statistic,df1,df2,Sig.
QUALITY,.09,2,12,.913

Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
QUALITY,Between Groups,20.13,2,10.07,5.12,.025
,Within Groups,23.60,12,1.97,,
,Total,43.73,14,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:386"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1018
#AT_START_1019
at_fn_group_banner 1019 'oneway.at:402' \
  "ONEWAY multiple variables" "                      " 82
at_xfail=no
(
  printf "%s\n" "1019. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >multivar.sps <<'_ATEOF'
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
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:443: pspp -o pspp.csv -o pspp.txt multivar.sps"
at_fn_check_prepare_trace "oneway.at:443"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt multivar.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:443"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:446: sed -e 's/^,Within Groups,3.88/,Within Groups,3.87/' pspp.csv"
at_fn_check_prepare_trace "oneway.at:446"
( $at_check_trace; sed -e 's/^,Within Groups,3.88/,Within Groups,3.87/' pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptives
,g,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
,,,,,,Lower Bound,Upper Bound,,
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,Sig.
x,18.76,3,20,.000
y,71.41,3,20,.000
z,.89,3,20,.463

Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
x,Between Groups,56.16,3,18.72,2.92,.059
,Within Groups,128.34,20,6.42,,
,Total,184.50,23,,,
y,Between Groups,7.75,3,2.58,13.33,.000
,Within Groups,3.87,20,.19,,
,Total,11.63,23,,,
z,Between Groups,17.47,3,5.82,.62,.610
,Within Groups,187.87,20,9.39,,
,Total,205.33,23,,,

Table: Contrast Coefficients
Contrast,g,,,
,10.00,20.00,30.00,40.00
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.00,.280
,,2,6.26,12.32,.51,20.00,.617
,Does not assume equal variances,1,-7.40,10.04,-.74,4.53,.497
,,2,6.26,5.85,1.07,2.87,.366
y,Assume equal variances,1,-6.88,1.16,-5.94,20.00,.000
,,2,3.50,2.14,1.63,20.00,.118
,Does not assume equal variances,1,-6.88,.91,-7.51,7.00,.000
,,2,3.50,1.32,2.65,7.00,.033
z,Assume equal variances,1,-9.70,8.07,-1.20,20.00,.243
,,2,11.73,14.91,.79,20.00,.440
,Does not assume equal variances,1,-9.70,9.57,-1.01,3.64,.373
,,2,11.73,14.53,.81,9.88,.438
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:446"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1019
#AT_START_1020
at_fn_group_banner 1020 'oneway.at:511' \
  "ONEWAY vs. weights" "                             " 82
at_xfail=no
(
  printf "%s\n" "1020. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >oneway-unweighted.sps <<'_ATEOF'
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
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:546: pspp -o pspp-unweighted.csv oneway-unweighted.sps"
at_fn_check_prepare_trace "oneway.at:546"
( $at_check_trace; pspp -o pspp-unweighted.csv oneway-unweighted.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:546"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >oneway-weighted.sps <<'_ATEOF'
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
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:575: pspp -o pspp-weighted.csv oneway-weighted.sps"
at_fn_check_prepare_trace "oneway.at:575"
( $at_check_trace; pspp -o pspp-weighted.csv oneway-weighted.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:575"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:577: diff pspp-weighted.csv pspp-unweighted.csv"
at_fn_check_prepare_trace "oneway.at:577"
( $at_check_trace; diff pspp-weighted.csv pspp-unweighted.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:577"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1020
#AT_START_1021
at_fn_group_banner 1021 'oneway.at:583' \
  "ONEWAY posthoc LSD and BONFERRONI" "              " 82
at_xfail=no
(
  printf "%s\n" "1021. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >oneway-pig.sps <<'_ATEOF'
SET FORMAT F12.3.
data list notable list /pigmentation * family *.
begin data.
36 1
39 1
43 1
38 1
37 1
46 2
47 2
47 2
47 2
43 2
40 3
50 3
44 3
48 3
50 3
45 4
53 4
56 4
52 4
56 4
end data.


oneway pigmentation by family
	/statistics = descriptives
	/posthoc = lsd bonferroni alpha (0.05)
	 .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:618: pspp -o pspp.csv -o pspp.txt oneway-pig.sps"
at_fn_check_prepare_trace "oneway.at:618"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt oneway-pig.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:618"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/oneway.at:619: cat pspp.csv"
at_fn_check_prepare_trace "oneway.at:619"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptives
,family,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
,,,,,,Lower Bound,Upper Bound,,
pigmentation,1.000,5,38.600,2.702,1.208,35.245,41.955,36.000,43.000
,2.000,5,46.000,1.732,.775,43.849,48.151,43.000,47.000
,3.000,5,46.400,4.336,1.939,41.016,51.784,40.000,50.000
,4.000,5,52.400,4.506,2.015,46.806,57.994,45.000,56.000
,Total,20,45.850,5.967,1.334,43.057,48.643,36.000,56.000

Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
pigmentation,Between Groups,478.950,3,159.650,12.927,.000
,Within Groups,197.600,16,12.350,,
,Total,676.550,19,,,

Table: Multiple Comparisons (pigmentation)
,(I) Family,(J) Family,Mean Difference (I - J),Std. Error,Sig.,95% Confidence Interval,
,,,,,,Lower Bound,Upper Bound
LSD,1.000,2.000,-7.400,2.223,.004,-12.112,-2.688
,,3.000,-7.800,2.223,.003,-12.512,-3.088
,,4.000,-13.800,2.223,.000,-18.512,-9.088
,2.000,1.000,7.400,2.223,.004,2.688,12.112
,,3.000,-.400,2.223,.859,-5.112,4.312
,,4.000,-6.400,2.223,.011,-11.112,-1.688
,3.000,1.000,7.800,2.223,.003,3.088,12.512
,,2.000,.400,2.223,.859,-4.312,5.112
,,4.000,-6.000,2.223,.016,-10.712,-1.288
,4.000,1.000,13.800,2.223,.000,9.088,18.512
,,2.000,6.400,2.223,.011,1.688,11.112
,,3.000,6.000,2.223,.016,1.288,10.712
Bonferroni,1.000,2.000,-7.400,2.223,.025,-14.086,-.714
,,3.000,-7.800,2.223,.017,-14.486,-1.114
,,4.000,-13.800,2.223,.000,-20.486,-7.114
,2.000,1.000,7.400,2.223,.025,.714,14.086
,,3.000,-.400,2.223,1.000,-7.086,6.286
,,4.000,-6.400,2.223,.065,-13.086,.286
,3.000,1.000,7.800,2.223,.017,1.114,14.486
,,2.000,.400,2.223,1.000,-6.286,7.086
,,4.000,-6.000,2.223,.095,-12.686,.686
,4.000,1.000,13.800,2.223,.000,7.114,20.486
,,2.000,6.400,2.223,.065,-.286,13.086
,,3.000,6.000,2.223,.095,-.686,12.686
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:619"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1021
#AT_START_1022
at_fn_group_banner 1022 'oneway.at:666' \
  "ONEWAY posthoc Tukey HSD and Games-Howell" "      " 82
at_xfail=no
(
  printf "%s\n" "1022. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >oneway-tukey.sps <<'_ATEOF'
set format = f11.3.
data list notable list /libido * dose *.
begin data.
3 0
2 0
1 0
1 0
4 0
5 1
2 1
4 1
2 1
3 1
7 2
4 2
5 2
3 2
6 2
end data.

variable label dose 'Dose of Viagra'.

add value labels dose 0 'Placebo' 1 '1 Dose' 2 '2 Doses'.

oneway libido by dose
	/posthoc tukey gh.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:697: pspp -o pspp.csv -o pspp.txt oneway-tukey.sps"
at_fn_check_prepare_trace "oneway.at:697"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt oneway-tukey.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:697"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/oneway.at:698: cat pspp.csv"
at_fn_check_prepare_trace "oneway.at:698"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
libido,Between Groups,20.133,2,10.067,5.119,.025
,Within Groups,23.600,12,1.967,,
,Total,43.733,14,,,

Table: Multiple Comparisons (libido)
,(I) Family,(J) Family,Mean Difference (I - J),Std. Error,Sig.,95% Confidence Interval,
,,,,,,Lower Bound,Upper Bound
Tukey HSD,Placebo,1 Dose,-1.000,.887,.516,-3.366,1.366
,,2 Doses,-2.800,.887,.021,-5.166,-.434
,1 Dose,Placebo,1.000,.887,.516,-1.366,3.366
,,2 Doses,-1.800,.887,.147,-4.166,.566
,2 Doses,Placebo,2.800,.887,.021,.434,5.166
,,1 Dose,1.800,.887,.147,-.566,4.166
Games-Howell,Placebo,1 Dose,-1.000,.887,.479,-3.356,1.356
,,2 Doses,-2.800,.887,.039,-5.439,-.161
,1 Dose,Placebo,1.000,.887,.479,-1.356,3.356
,,2 Doses,-1.800,.887,.185,-4.439,.839
,2 Doses,Placebo,2.800,.887,.039,.161,5.439
,,1 Dose,1.800,.887,.185,-.839,4.439
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:698"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1022
#AT_START_1023
at_fn_group_banner 1023 'oneway.at:724' \
  "ONEWAY posthoc Sidak" "                           " 82
at_xfail=no
(
  printf "%s\n" "1023. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >oneway-sidak.sps <<'_ATEOF'
SET FORMAT F20.4.

DATA LIST notable LIST /program score.
BEGIN DATA.
1   9
1  12
1  14
1  11
1  13
2  10
2   6
2   9
2   9
2  10
3  12
3  14
3  11
3  13
3  11
4   9
4   8
4  11
4   7
4   8
END DATA.

ONEWAY
  score BY program
  /MISSING ANALYSIS
  /POSTHOC = SIDAK.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:759: pspp -O format=csv oneway-sidak.sps"
at_fn_check_prepare_trace "oneway.at:759"
( $at_check_trace; pspp -O format=csv oneway-sidak.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
score,Between Groups,54.9500,3,18.3167,7.0449,.003
,Within Groups,41.6000,16,2.6000,,
,Total,96.5500,19,,,

Table: Multiple Comparisons (score)
,(I) Family,(J) Family,Mean Difference (I - J),Std. Error,Sig.,95% Confidence Interval,
,,,,,,Lower Bound,Upper Bound
Šidák,1.0000,2.0000,3.0000,1.0198,.056,-.0575,6.0575
,,3.0000,-.4000,1.0198,.999,-3.4575,2.6575
,,4.0000,3.2000,1.0198,.038,.1425,6.2575
,2.0000,1.0000,-3.0000,1.0198,.056,-6.0575,.0575
,,3.0000,-3.4000,1.0198,.025,-6.4575,-.3425
,,4.0000,.2000,1.0198,1.000,-2.8575,3.2575
,3.0000,1.0000,.4000,1.0198,.999,-2.6575,3.4575
,,2.0000,3.4000,1.0198,.025,.3425,6.4575
,,4.0000,3.6000,1.0198,.017,.5425,6.6575
,4.0000,1.0000,-3.2000,1.0198,.038,-6.2575,-.1425
,,2.0000,-.2000,1.0198,1.000,-3.2575,2.8575
,,3.0000,-3.6000,1.0198,.017,-6.6575,-.5425
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:759"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1023
#AT_START_1024
at_fn_group_banner 1024 'oneway.at:785' \
  "ONEWAY posthoc Scheffe" "                         " 82
at_xfail=no
(
  printf "%s\n" "1024. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >oneway-scheffe.sps <<'_ATEOF'
set format = f11.3.
data list notable list /usage * group *.
begin data.
21.00     1
19.00     1
18.00     1
25.00     1
14.00     1
13.00     1
24.00     1
19.00     1
20.00     1
21.00     1
15.00     2
10.00     2
13.00     2
16.00     2
14.00     2
24.00     2
16.00     2
14.00     2
18.00     2
16.00     2
10.00     3
 7.00     3
13.00     3
20.00     3
  .00     3
 8.00     3
 6.00     3
 1.00     3
12.00     3
14.00     3
18.00     4
15.00     4
 3.00     4
27.00     4
 6.00     4
14.00     4
13.00     4
11.00     4
 9.00     4
18.00     4
end data.

variable label usage 'Days of Use'.

add value labels group 0 'none' 1 'one' 2 'two' 3 'three' 4 'four'.

oneway usage by group
	/posthoc scheffe.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:841: pspp -O format=csv oneway-scheffe.sps"
at_fn_check_prepare_trace "oneway.at:841"
( $at_check_trace; pspp -O format=csv oneway-scheffe.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
Days of Use,Between Groups,555.275,3,185.092,6.663,.001
,Within Groups,1000.100,36,27.781,,
,Total,1555.375,39,,,

Table: Multiple Comparisons (Days of Use)
,(I) Family,(J) Family,Mean Difference (I - J),Std. Error,Sig.,95% Confidence Interval,
,,,,,,Lower Bound,Upper Bound
Scheffé,one,two,3.800,2.357,.467,-3.112,10.712
,,three,10.300,2.357,.001,3.388,17.212
,,four,6.000,2.357,.110,-.912,12.912
,two,one,-3.800,2.357,.467,-10.712,3.112
,,three,6.500,2.357,.072,-.412,13.412
,,four,2.200,2.357,.832,-4.712,9.112
,three,one,-10.300,2.357,.001,-17.212,-3.388
,,two,-6.500,2.357,.072,-13.412,.412
,,four,-4.300,2.357,.358,-11.212,2.612
,four,one,-6.000,2.357,.110,-12.912,.912
,,two,-2.200,2.357,.832,-9.112,4.712
,,three,4.300,2.357,.358,-2.612,11.212
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:841"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1024
#AT_START_1025
at_fn_group_banner 1025 'oneway.at:868' \
  "ONEWAY bad contrast count" "                      " 82
at_xfail=no
(
  printf "%s\n" "1025. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >oneway-bad-contrast.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /height * weight * temperature * sex *.
BEGIN DATA.
1884     88.6       39.97     0
1801     90.9       39.03     0
1801     91.7       38.98     0
1607     56.3       36.26     1
1608     46.3       46.26     1
1607     55.9       37.84     1
1604     56.6       36.81     1
1606     56.1       34.56     1
END DATA.

ONEWAY /VARIABLES= height weight temperature BY sex
 /CONTRAST = -1  1
 /CONTRAST = -3  3
 /CONTRAST =  2 -2  1
 /CONTRAST = -9  9
 .
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/oneway.at:893: pspp -o pspp.csv -o pspp.txt oneway-bad-contrast.sps"
at_fn_check_prepare_trace "oneway.at:893"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt oneway-bad-contrast.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "oneway-bad-contrast.sps:18: warning: ONEWAY: In contrast list 3, the number of coefficients (3) does not equal the number of groups (2). This contrast list will be ignored.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:893"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/oneway.at:896: cat pspp.csv"
at_fn_check_prepare_trace "oneway.at:896"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"oneway-bad-contrast.sps:18: warning: ONEWAY: In contrast list 3, the number of coefficients (3) does not equal the number of groups (2). This contrast list will be ignored.\"

Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
height,Between Groups,92629.63,1,92629.63,120.77,.000
,Within Groups,4601.87,6,766.98,,
,Total,97231.50,7,,,
weight,Between Groups,2451.65,1,2451.65,174.59,.000
,Within Groups,84.25,6,14.04,,
,Total,2535.90,7,,,
temperature,Between Groups,1.80,1,1.80,.13,.733
,Within Groups,84.55,6,14.09,,
,Total,86.36,7,,,

Table: Contrast Coefficients
Contrast,sex,
,.00,1.00
1,-1,1
2,-3,3
3,-9,9

Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
height,Assume equal variances,1,-222.27,20.23,-10.99,6.00,.000
,,2,-666.80,60.68,-10.99,6.00,.000
,,3,-2000.40,182.03,-10.99,6.00,.000
,Does not assume equal variances,1,-222.27,27.67,-8.03,2.00,.015
,,2,-666.80,83.02,-8.03,2.00,.015
,,3,-2000.40,249.07,-8.03,2.00,.015
weight,Assume equal variances,1,-36.16,2.74,-13.21,6.00,.000
,,2,-108.48,8.21,-13.21,6.00,.000
,,3,-325.44,24.63,-13.21,6.00,.000
,Does not assume equal variances,1,-36.16,2.19,-16.48,5.42,.000
,,2,-108.48,6.58,-16.48,5.42,.000
,,3,-325.44,19.75,-16.48,5.42,.000
temperature,Assume equal variances,1,-.98,2.74,-.36,6.00,.733
,,2,-2.94,8.22,-.36,6.00,.733
,,3,-8.83,24.67,-.36,6.00,.733
,Does not assume equal variances,1,-.98,2.07,-.47,4.19,.660
,,2,-2.94,6.22,-.47,4.19,.660
,,3,-8.83,18.66,-.47,4.19,.660
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:896"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1025
#AT_START_1026
at_fn_group_banner 1026 'oneway.at:942' \
  "ONEWAY crash on single category independent variable" "" 82
at_xfail=no
(
  printf "%s\n" "1026. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >crash.sps <<'_ATEOF'

input program.
loop #i = 1 to 10.
compute test = #i.
end case.
end loop.
end file.
end input program.

compute x = 1.

oneway test by x.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:958: pspp -O format=csv crash.sps"
at_fn_check_prepare_trace "oneway.at:958"
( $at_check_trace; pspp -O format=csv crash.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:958"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1026
#AT_START_1027
at_fn_group_banner 1027 'oneway.at:964' \
  "ONEWAY crash on missing dependent variable" "     " 82
at_xfail=no
(
  printf "%s\n" "1027. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >crash2.sps <<'_ATEOF'
data list notable list /dv1 * dv2  *  y * .
begin data.
2  .  2
1  .  2
1  .  1
2  .  4
3  .  4
4  .  4
5  .  4
end data.

ONEWAY
       /VARIABLES= dv1 dv2  BY y
       /STATISTICS = DESCRIPTIVES
       /POSTHOC = BONFERRONI LSD SCHEFFE SIDAK TUKEY
       /MISSING = ANALYSIS
       .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:986: pspp -O format=csv crash2.sps"
at_fn_check_prepare_trace "oneway.at:986"
( $at_check_trace; pspp -O format=csv crash2.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:986"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1027
#AT_START_1028
at_fn_group_banner 1028 'oneway.at:993' \
  "ONEWAY Games-Howell test with few cases" "        " 82
at_xfail=no
(
  printf "%s\n" "1028. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >crash3.sps <<'_ATEOF'
data list notable list /dv * y * .
begin data.
2 2
1 2
1 1
2 4
3 4
end data.

ONEWAY
 /VARIABLES= dv BY y
 /POSTHOC = GH
 .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:1011: pspp -O format=csv crash3.sps"
at_fn_check_prepare_trace "oneway.at:1011"
( $at_check_trace; pspp -O format=csv crash3.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:1011"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1028
#AT_START_1029
at_fn_group_banner 1029 'oneway.at:1016' \
  "ONEWAY Crash on empty data" "                     " 82
at_xfail=no
(
  printf "%s\n" "1029. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >crash4.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /height * weight * temperature * sex *.
BEGIN DATA.
1801     .       .     0
1606     .       .     1
END DATA.

ONEWAY /VARIABLES= height weight temperature BY sex
 /CONTRAST = -1  1
 /CONTRAST = -3  3
 /CONTRAST =  2 -2  1
 /CONTRAST = -9  9
 .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:1033: pspp -O format=csv crash4.sps"
at_fn_check_prepare_trace "oneway.at:1033"
( $at_check_trace; pspp -O format=csv crash4.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:1033"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1029
#AT_START_1030
at_fn_group_banner 1030 'oneway.at:1039' \
  "ONEWAY Crash on invalid dependent variable" "     " 82
at_xfail=no
(
  printf "%s\n" "1030. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >crash5.sps <<'_ATEOF'
data list notable list /a * b *.
begin data.
3 0
2 0
6 2
end data.

oneway a"by b.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:1053: pspp -O format=csv crash5.sps"
at_fn_check_prepare_trace "oneway.at:1053"
( $at_check_trace; pspp -O format=csv crash5.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/oneway.at:1053"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1030
#AT_START_1031
at_fn_group_banner 1031 'oneway.at:1060' \
  "ONEWAY Crash on unterminated string" "            " 82
at_xfail=no
(
  printf "%s\n" "1031. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >crash6.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /height * weight * temperature * sex *.
BEGIN DATA.
1801     .       .     0
1606     .   0   .     1
END DATA.

ONEWAY /VARIABLES= height weight temperature BY sex
 /CONTRAST =" 2 -2  1
 .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:1075: pspp -O format=csv crash6.sps"
at_fn_check_prepare_trace "oneway.at:1075"
( $at_check_trace; pspp -O format=csv crash6.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/oneway.at:1075"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1031
#AT_START_1032
at_fn_group_banner 1032 'oneway.at:1080' \
  "ONEWAY contrast bug" "                            " 82
at_xfail=no
(
  printf "%s\n" "1032. $at_setup_line: testing $at_desc ..."
  $at_traceon






cat >contrasts.sps <<'_ATEOF'

SET FORMAT=F10.3.

DATA LIST notable LIST /relieftime drugs *.
begin data.
12 0
15 0
18 0
16 0
20 0
20 1
21 1
22 1
19 1
20 1
17 2
16 2
19 2
15 2
19 2
14 3
13 3
12 3
14 3
11 3
end data.

ONEWAY relieftime by drugs
	/CONTRAST 3 -1 -1 -1
	/CONTRAST 0 2 -1 -1
        /CONTRAST 0 0 1 -1
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/oneway.at:1122: pspp -O format=csv contrasts.sps"
at_fn_check_prepare_trace "oneway.at:1122"
( $at_check_trace; pspp -O format=csv contrasts.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
relieftime,Between Groups,146.950,3,48.983,12.723,.000
,Within Groups,61.600,16,3.850,,
,Total,208.550,19,,,

Table: Contrast Coefficients
Contrast,drugs,,,
,.000,1.000,2.000,3.000
1,3,-1,-1,-1
2,0,2,-1,-1
3,0,0,1,-1

Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
relieftime,Assume equal variances,1,-1.800,3.040,-.592,16.000,.562
,,2,10.800,2.149,5.025,16.000,.000
,,3,4.400,1.241,3.546,16.000,.003
,Does not assume equal variances,1,-1.800,4.219,-.427,4.611,.689
,,2,10.800,1.421,7.599,10.158,.000
,,3,4.400,.990,4.445,7.315,.003
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/oneway.at:1122"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1032
#AT_START_1033
at_fn_group_banner 1033 'oneway.at:1146' \
  "ONEWAY syntax errors" "                           " 82
at_xfail=no
(
  printf "%s\n" "1033. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >oneway.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
ONEWAY/ **.
ONEWAY **.
ONEWAY x **.
ONEWAY x BY **.
ONEWAY x BY y/STATISTICS=**.
ONEWAY x BY y/POSTHOC=ALPHA **.
ONEWAY x BY y/POSTHOC=ALPHA(**).
ONEWAY x BY y/POSTHOC=ALPHA(123 **).
ONEWAY x BY y/POSTHOC=**.
ONEWAY x BY y/CONTRAST=**.
ONEWAY x BY y/MISSING=**.
ONEWAY x BY y/ **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/oneway.at:1162: pspp -O format=csv oneway.sps"
at_fn_check_prepare_trace "oneway.at:1162"
( $at_check_trace; pspp -O format=csv oneway.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"oneway.sps:2.9-2.10: error: ONEWAY: Syntax error expecting VARIABLES.
    2 | ONEWAY/ **.
      |         ^~\"

\"oneway.sps:3.8-3.9: error: ONEWAY: Syntax error expecting variable name.
    3 | ONEWAY **.
      |        ^~\"

\"oneway.sps:4.10-4.11: error: ONEWAY: Syntax error expecting \`BY'.
    4 | ONEWAY x **.
      |          ^~\"

\"oneway.sps:5.13-5.14: error: ONEWAY: Syntax error expecting variable name.
    5 | ONEWAY x BY **.
      |             ^~\"

\"oneway.sps:6.26-6.27: error: ONEWAY: Syntax error expecting DESCRIPTIVES or HOMOGENEITY.
    6 | ONEWAY x BY y/STATISTICS=**.
      |                          ^~\"

\"oneway.sps:7.29-7.30: error: ONEWAY: Syntax error expecting \`('.
    7 | ONEWAY x BY y/POSTHOC=ALPHA **.
      |                             ^~\"

\"oneway.sps:8.29-8.30: error: ONEWAY: Syntax error expecting number.
    8 | ONEWAY x BY y/POSTHOC=ALPHA(**).
      |                             ^~\"

\"oneway.sps:9.33-9.34: error: ONEWAY: Syntax error expecting \`)'.
    9 | ONEWAY x BY y/POSTHOC=ALPHA(123 **).
      |                                 ^~\"

\"oneway.sps:10.23-10.24: error: ONEWAY: Unknown post hoc analysis method.
   10 | ONEWAY x BY y/POSTHOC=**.
      |                       ^~\"

\"oneway.sps:11.24-11.25: error: ONEWAY: Syntax error expecting number.
   11 | ONEWAY x BY y/CONTRAST=**.
      |                        ^~\"

\"oneway.sps:12.23-12.24: error: ONEWAY: Syntax error expecting INCLUDE, EXCLUDE, LISTWISE, or ANALYSIS.
   12 | ONEWAY x BY y/MISSING=**.
      |                       ^~\"

\"oneway.sps:13.16-13.17: error: ONEWAY: Syntax error expecting STATISTICS, POSTHOC, CONTRAST, or MISSING.
   13 | ONEWAY x BY y/ **.
      |                ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/oneway.at:1162"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1033
#AT_START_1034
at_fn_group_banner 1034 'output.at:3' \
  "OUTPUT MODIFY syntax errors" "                    " 83
at_xfail=no
(
  printf "%s\n" "1034. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >output.sps <<'_ATEOF'
OUTPUT MODIFY/SELECT **.
OUTPUT MODIFY/TABLECELLS SELECT **.
OUTPUT MODIFY/TABLECELLS SELECT=**.
OUTPUT MODIFY/TABLECELLS SELECT=[**].
OUTPUT MODIFY/TABLECELLS FORMAT **.
OUTPUT MODIFY/TABLECELLS FORMAT=ASDF5.
OUTPUT MODIFY/TABLECELLS **.
OUTPUT MODIFY/TABLECELLS SELECT="xyzzy" FORMAT=F8.2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/output.at:14: pspp -O format=csv output.sps"
at_fn_check_prepare_trace "output.at:14"
( $at_check_trace; pspp -O format=csv output.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"output.sps:1.22-1.23: error: OUTPUT MODIFY: Syntax error expecting TABLES.
    1 | OUTPUT MODIFY/SELECT **.
      |                      ^~\"

\"output.sps:2.33-2.34: error: OUTPUT MODIFY: Syntax error expecting \`='.
    2 | OUTPUT MODIFY/TABLECELLS SELECT **.
      |                                 ^~\"

\"output.sps:3.33-3.34: error: OUTPUT MODIFY: Syntax error expecting \`['.
    3 | OUTPUT MODIFY/TABLECELLS SELECT=**.
      |                                 ^~\"

\"output.sps:4.34-4.35: error: OUTPUT MODIFY: Syntax error expecting \`]'.
    4 | OUTPUT MODIFY/TABLECELLS SELECT=[**].
      |                                  ^~\"

\"output.sps:5.33-5.34: error: OUTPUT MODIFY: Syntax error expecting \`='.
    5 | OUTPUT MODIFY/TABLECELLS FORMAT **.
      |                                 ^~\"

\"output.sps:6.38: error: OUTPUT MODIFY: Unknown format type \`ASDF'.
    6 | OUTPUT MODIFY/TABLECELLS FORMAT=ASDF5.
      |                                      ^\"

\"output.sps:7.26-7.27: error: OUTPUT MODIFY: Syntax error expecting SELECT or FORMAT.
    7 | OUTPUT MODIFY/TABLECELLS **.
      |                          ^~\"

\"output.sps:8.33-8.39: error: OUTPUT MODIFY: Syntax error expecting \`['.
    8 | OUTPUT MODIFY/TABLECELLS SELECT=\"\"xyzzy\"\" FORMAT=F8.2.
      |                                 ^~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/output.at:14"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1034
#AT_START_1035
at_fn_group_banner 1035 'permissions.at:19' \
  "PERMISSIONS" "                                    " 84
at_xfail=no
(
  printf "%s\n" "1035. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >foobar <<'_ATEOF'
Hello
_ATEOF


chmod 666 foobar
{ set +x
printf "%s\n" "$at_srcdir/permissions.at:24: ls -l foobar"
at_fn_check_prepare_trace "permissions.at:24"
( $at_check_trace; ls -l foobar
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/permissions.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/permissions.at:25: sed 's/^\\(..........\\).*/\\1/' stdout"
at_fn_check_prepare_trace "permissions.at:25"
( $at_check_trace; sed 's/^\(..........\).*/\1/' stdout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "-rw-rw-rw-
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/permissions.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >permissions.sps <<'_ATEOF'
PERMISSIONS /FILE='foobar' PERMISSIONS=READONLY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/permissions.at:30: pspp -O format=csv permissions.sps"
at_fn_check_prepare_trace "permissions.at:30"
( $at_check_trace; pspp -O format=csv permissions.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/permissions.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/permissions.at:31: ls -l foobar"
at_fn_check_prepare_trace "permissions.at:31"
( $at_check_trace; ls -l foobar
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/permissions.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/permissions.at:32: sed 's/^\\(..........\\).*/\\1/' stdout"
at_fn_check_prepare_trace "permissions.at:32"
( $at_check_trace; sed 's/^\(..........\).*/\1/' stdout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "-r--r--r--
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/permissions.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >permissions.sps <<'_ATEOF'
PERMISSIONS /FILE='foobar' PERMISSIONS=WRITEABLE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/permissions.at:37: pspp -O format=csv permissions.sps"
at_fn_check_prepare_trace "permissions.at:37"
( $at_check_trace; pspp -O format=csv permissions.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/permissions.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/permissions.at:38: ls -l foobar"
at_fn_check_prepare_trace "permissions.at:38"
( $at_check_trace; ls -l foobar
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/permissions.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/permissions.at:39: sed 's/^\\(..........\\).*/\\1/' stdout"
at_fn_check_prepare_trace "permissions.at:39"
( $at_check_trace; sed 's/^\(..........\).*/\1/' stdout
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "-rw-r--r--
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/permissions.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1035
#AT_START_1036
at_fn_group_banner 1036 'permissions.at:45' \
  "PERMISSIONS - bad syntax" "                       " 84
at_xfail=no
(
  printf "%s\n" "1036. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pe.sps <<'_ATEOF'
PERMI|SIONS /FILE='foobar' PERMISSIONS=WRITEABLE.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/permissions.at:49: pspp -O format=csv pe.sps"
at_fn_check_prepare_trace "permissions.at:49"
( $at_check_trace; pspp -O format=csv pe.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"pe.sps:1.6: error: PERMISSIONS: Syntax error expecting STRING.
    1 | PERMI|SIONS /FILE='foobar' PERMISSIONS=WRITEABLE.
      |      ^\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/permissions.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1036
#AT_START_1037
at_fn_group_banner 1037 'print-space.at:19' \
  "PRINT SPACE without arguments" "                  " 85
at_xfail=no
(
  printf "%s\n" "1037. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print-space.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
1
2
END DATA.
PRINT/x.
PRINT SPACE.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print-space.at:30: pspp -O format=csv print-space.sps"
at_fn_check_prepare_trace "print-space.at:30"
( $at_check_trace; pspp -O format=csv print-space.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1 

2 

" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print-space.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1037
#AT_START_1038
at_fn_group_banner 1038 'print-space.at:38' \
  "PRINT SPACE with number" "                        " 85
at_xfail=no
(
  printf "%s\n" "1038. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print-space.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
1
2
END DATA.
PRINT/x.
PRINT SPACE 2.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print-space.at:49: pspp -O format=csv print-space.sps"
at_fn_check_prepare_trace "print-space.at:49"
( $at_check_trace; pspp -O format=csv print-space.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1 


2 


" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print-space.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1038
#AT_START_1039
at_fn_group_banner 1039 'print-space.at:59' \
  "PRINT SPACE to file" "                            " 85
at_xfail=no
(
  printf "%s\n" "1039. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >print-space.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
1
2
END DATA.
PRINT OUTFILE='output.txt'/x.
PRINT SPACE OUTFILE='output.txt'.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print-space.at:71: pspp -O format=csv print-space.sps"
at_fn_check_prepare_trace "print-space.at:71"
( $at_check_trace; pspp -O format=csv print-space.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print-space.at:71"
$at_failed && at_fn_log_failure  \
"output.txt"
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print-space.at:72: cat output.txt"
at_fn_check_prepare_trace "print-space.at:72"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1 
 
 2 
 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print-space.at:72"
$at_failed && at_fn_log_failure  \
"output.txt"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1039
#AT_START_1040
at_fn_group_banner 1040 'print-space.at:80' \
  "PRINT SPACE to file with number" "                " 85
at_xfail=no
(
  printf "%s\n" "1040. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >print-space.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
1
2
END DATA.
PRINT OUTFILE='output.txt'/x.
PRINT SPACE OUTFILE='output.txt' 2.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print-space.at:92: pspp -O format=csv print-space.sps"
at_fn_check_prepare_trace "print-space.at:92"
( $at_check_trace; pspp -O format=csv print-space.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print-space.at:92"
$at_failed && at_fn_log_failure  \
"output.txt"
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print-space.at:93: cat output.txt"
at_fn_check_prepare_trace "print-space.at:93"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1 
 
 
 2 
 
 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print-space.at:93"
$at_failed && at_fn_log_failure  \
"output.txt"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1040
#AT_START_1041
at_fn_group_banner 1041 'print-space.at:103' \
  "PRINT SPACE syntax errors" "                      " 85
at_xfail=no
(
  printf "%s\n" "1041. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print-space.sps <<'_ATEOF'
DATA LIST NOTABLE /x 1.
PRINT SPACE OUTFILE=**.
PRINT SPACE OUTFILE='out.txt' ENCODING=**.
PRINT SPACE **.
PRINT SPACE 1 'xyzzy'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print-space.at:111: pspp -O format=csv print-space.sps"
at_fn_check_prepare_trace "print-space.at:111"
( $at_check_trace; pspp -O format=csv print-space.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"print-space.sps:2.21-2.22: error: PRINT SPACE: Syntax error expecting a file name or handle name.
    2 | PRINT SPACE OUTFILE=**.
      |                     ^~\"

\"print-space.sps:3.40-3.41: error: PRINT SPACE: Syntax error expecting string.
    3 | PRINT SPACE OUTFILE='out.txt' ENCODING=**.
      |                                        ^~\"

\"print-space.sps:4.13-4.14: error: PRINT SPACE: Syntax error parsing expression.
    4 | PRINT SPACE **.
      |             ^~\"

\"print-space.sps:5.15-5.21: error: PRINT SPACE: Syntax error expecting end of command.
    5 | PRINT SPACE 1 'xyzzy'.
      |               ^~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/print-space.at:111"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1041
#AT_START_1042
at_fn_group_banner 1042 'print-space.at:130' \
  "PRINT SPACE evaluation errors" "                  " 85
at_xfail=no
(
  printf "%s\n" "1042. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print-space.sps <<'_ATEOF'
DATA LIST NOTABLE /x 1.
BEGIN DATA.
1
END DATA.
PRINT SPACE $SYSMIS.
PRINT SPACE -1.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print-space.at:140: pspp -O format=csv print-space.sps"
at_fn_check_prepare_trace "print-space.at:140"
( $at_check_trace; pspp -O format=csv print-space.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"print-space.sps:5.13-5.19: warning: EXECUTE: The expression on PRINT SPACE evaluated to the system-missing value.
    5 | PRINT SPACE \$SYSMIS.
      |             ^~~~~~~\"



\"print-space.sps:6.13-6.14: warning: EXECUTE: The expression on PRINT SPACE evaluated to -1.
    6 | PRINT SPACE -1.
      |             ^~\"


" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print-space.at:140"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1042
#AT_START_1043
at_fn_group_banner 1043 'print.at:36' \
  "PRINT numeric variables" "                        " 86
at_xfail=no
(
  printf "%s\n" "1043. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:54: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:54"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1 2 



12
1 -2 

3 4 



34
3 -4 

. 6 



.6
. -6 

7 . 



7.
7 -. 

9 0 



90
9 -0 

" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:54"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1043
#AT_START_1044
at_fn_group_banner 1044 'print.at:93' \
  "PRINT string variables" "                         " 86
at_xfail=no
(
  printf "%s\n" "1044. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:113: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:113"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:113"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:114: cat print.txt"
at_fn_check_prepare_trace "print.at:114"
( $at_check_trace; cat print.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " AaaaaaaaaZ AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ 
 AnnnnnnnnZ AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1044
#AT_START_1045
at_fn_group_banner 1045 'print.at:120' \
  "PRINT to file" "                                  " 86
at_xfail=no
(
  printf "%s\n" "1045. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:138: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:138"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:138"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:139: cat print.out"
at_fn_check_prepare_trace "print.at:139"
( $at_check_trace; cat print.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1 2 
112
 1 -2 
 
 3 4 
134
 3 -4 
 
 . 6 
1.6
 . -6 
 
 7 . 
17.
 7 -. 
 
 9 0 
190
 9 -0 
 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:139"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1045
#AT_START_1046
at_fn_group_banner 1046 'print.at:165' \
  "PRINT crash bug" "                                " 86
at_xfail=no
(
  printf "%s\n" "1046. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /a * b *.
BEGIN DATA.
1 2
3 4
END DATA.

PRINT F8.2
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:176: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:176"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"print.sps:7.7-7.10: error: PRINT: Syntax error expecting OUTFILE, ENCODING, RECORDS, TABLE, or NOTABLE.
    7 | PRINT F8.2
      |       ^~~~\"

Table: Data List
a,b
1.00,2.00
3.00,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/print.at:176"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1046
#AT_START_1047
at_fn_group_banner 1047 'print.at:188' \
  "WRITE to file" "                                  " 86
at_xfail=no
(
  printf "%s\n" "1047. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >write.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:206: pspp -O format=csv write.sps"
at_fn_check_prepare_trace "print.at:206"
( $at_check_trace; pspp -O format=csv write.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:206"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:207: cat write.out"
at_fn_check_prepare_trace "print.at:207"
( $at_check_trace; cat write.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "12
12
1-2

34
34
3-4

 6
 6
 -6

7 
7 
7- 

90
90
9-0

" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:207"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1047
#AT_START_1048
at_fn_group_banner 1048 'print.at:231' \
  "PRINT overwrites file" "                          " 86
at_xfail=no
(
  printf "%s\n" "1048. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >output.txt <<'_ATEOF'
abcdef
_ATEOF

cat >print.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
PRINT OUTFILE='output.txt'/x.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:242: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:242"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:242"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:243: cat output.txt"
at_fn_check_prepare_trace "print.at:243"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 5 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:243"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1048
#AT_START_1049
at_fn_group_banner 1049 'print.at:247' \
  "PRINT overwrites file atomically" "               " 86
at_xfail=no
(
  printf "%s\n" "1049. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >output.txt <<'_ATEOF'
abcdef
_ATEOF

cat >print.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
PRINT OUTFILE='output.txt'/x.
HOST COMMAND=['kill -TERM $PPID'].
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:258: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:258"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 143 $at_status "$at_srcdir/print.at:258"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:259: cat output.txt"
at_fn_check_prepare_trace "print.at:259"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "abcdef
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:259"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:261: for file in *.tmp*; do if test -e \$file; then echo \$file; exit 1; fi; done"
at_fn_check_prepare_dynamic "for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done" "print.at:261"
( $at_check_trace; for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:261"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1049
#AT_START_1050
at_fn_group_banner 1050 'print.at:265' \
  "PRINT to same file being read" "                  " 86
at_xfail=no
(
  printf "%s\n" "1050. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.txt <<'_ATEOF'
5
_ATEOF

cat >print.sps <<'_ATEOF'
DATA LIST FILE='data.txt' NOTABLE/x 1.
COMPUTE y = x + 1.
PRINT OUTFILE='data.txt'/y.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:274: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:274"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:274"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:275: cat data.txt"
at_fn_check_prepare_trace "print.at:275"
( $at_check_trace; cat data.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "     6.00 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:275"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:277: for file in *.tmp*; do if test -e \$file; then echo \$file; exit 1; fi; done"
at_fn_check_prepare_dynamic "for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done" "print.at:277"
( $at_check_trace; for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:277"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1050
#AT_START_1051
at_fn_group_banner 1051 'print.at:281' \
  "PRINT to special file" "                          " 86
at_xfail=no
(
  printf "%s\n" "1051. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "print.at:282" >"$at_check_line_file"
(test ! -c /dev/null) \
  && at_fn_check_skip 77 "$at_srcdir/print.at:282"
{ set +x
printf "%s\n" "$at_srcdir/print.at:283: ln -s /dev/null foo.out || exit 77"
at_fn_check_prepare_trace "print.at:283"
( $at_check_trace; ln -s /dev/null foo.out || exit 77
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:283"
$at_failed && at_fn_log_failure
$at_traceon; }

printf "%s\n" "print.at:284" >"$at_check_line_file"
(test ! -c foo.out) \
  && at_fn_check_skip 77 "$at_srcdir/print.at:284"
cat >print.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:298: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:298"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:298"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:299: cat foo2.out"
at_fn_check_prepare_trace "print.at:299"
( $at_check_trace; cat foo2.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1 
 2 
 3 
 4 
 5 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:299"
$at_failed && at_fn_log_failure
$at_traceon; }

ls -l foo.out foo2.out
{ set +x
printf "%s\n" "$at_srcdir/print.at:307: test -c foo.out"
at_fn_check_prepare_trace "print.at:307"
( $at_check_trace; test -c foo.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:307"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1051
#AT_START_1052
at_fn_group_banner 1052 'print.at:310' \
  "PRINT with special line ends" "                   " 86
at_xfail=no
(
  printf "%s\n" "1052. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print.sps <<'_ATEOF'
FILE HANDLE lf   /NAME='lf.txt'   /ENDS=LF.
FILE HANDLE crlf /NAME='crlf.txt' /ENDS=CRLF.
DATA LIST NOTABLE /x 1.
BEGIN DATA.
1
2
3
4
5
END DATA.
PRINT OUTFILE=lf/x.
PRINT OUTFILE=crlf/x.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:326: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:326"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:326"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:327: cat lf.txt"
at_fn_check_prepare_trace "print.at:327"
( $at_check_trace; cat lf.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1 
 2 
 3 
 4 
 5 
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:327"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/print.at:334: tr '\\r' R < crlf.txt"
at_fn_check_prepare_trace "print.at:334"
( $at_check_trace; tr '\r' R < crlf.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " 1 R
 2 R
 3 R
 4 R
 5 R
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/print.at:334"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1052
#AT_START_1053
at_fn_group_banner 1053 'print.at:343' \
  "PRINT syntax errors" "                            " 86
at_xfail=no
(
  printf "%s\n" "1053. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >print.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x.
PRINT OUTFILE=**.
PRINT ENCODING=**.
PRINT RECORDS=-1.
PRINT **.
PRINT/ **.
PRINT/'string' 0.
PRINT/'string' 5-3.
PRINT/y.
PRINT/x 0.
PRINT/x (A8).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/print.at:357: pspp -O format=csv print.sps"
at_fn_check_prepare_trace "print.at:357"
( $at_check_trace; pspp -O format=csv print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"print.sps:2.15-2.16: error: PRINT: Syntax error expecting a file name or handle name.
    2 | PRINT OUTFILE=**.
      |               ^~\"

\"print.sps:3.16-3.17: error: PRINT: Syntax error expecting string.
    3 | PRINT ENCODING=**.
      |                ^~\"

\"print.sps:4.15-4.16: error: PRINT: Syntax error expecting non-negative integer for RECORDS.
    4 | PRINT RECORDS=-1.
      |               ^~\"

\"print.sps:5.7-5.8: error: PRINT: Syntax error expecting OUTFILE, ENCODING, RECORDS, TABLE, or NOTABLE.
    5 | PRINT **.
      |       ^~\"

\"print.sps:6.8-6.9: error: PRINT: Syntax error expecting variable name.
    6 | PRINT/ **.
      |        ^~\"

\"print.sps:7.16: error: PRINT: Column positions for fields must be positive.
    7 | PRINT/'string' 0.
      |                ^\"

\"print.sps:8.16-8.18: error: PRINT: The ending column for a field must be greater than the starting column.
    8 | PRINT/'string' 5-3.
      |                ^~~\"

\"print.sps:9.7: error: PRINT: y is not a variable name.
    9 | PRINT/y.
      |       ^\"

\"print.sps:10.9: error: PRINT: Column positions for fields must be positive.
   10 | PRINT/x 0.
      |         ^\"

\"print.sps:11.9-11.12: error: PRINT: Numeric variable x is not compatible with string format A8.
   11 | PRINT/x (A8).
      |         ^~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/print.at:357"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1053
#AT_START_1054
at_fn_group_banner 1054 'quick-cluster.at:19' \
  "QUICK CLUSTER with small data set" "              " 87
at_xfail=no
(
  printf "%s\n" "1054. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >quick-cluster.sps <<'_ATEOF'
DATA LIST LIST /x y z.
BEGIN DATA.
22,2930,4099
17,3350,4749
22,2640,3799
20, 3250,4816
15,4080,7827
4,5,4
5,6,5
6,7,6
7,8,7
8,9,8
9,10,9
END DATA.
QUICK CLUSTER x y z
  /CRITERIA=CLUSTER(2) MXITER(20).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:38: pspp -o pspp.csv quick-cluster.sps"
at_fn_check_prepare_trace "quick-cluster.at:38"
( $at_check_trace; pspp -o pspp.csv quick-cluster.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:39: cat pspp.csv"
at_fn_check_prepare_trace "quick-cluster.at:39"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0
y,F8.0
z,F8.0

Table: Final Cluster Centers
,Cluster,
,1,2
x,6.50,19.20
y,7.50,3250.00
z,6.50,5058.00

Table: Number of Cases in each Cluster
,,Count
Cluster,1,6
,2,5
Valid,,11
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1054
#AT_START_1055
at_fn_group_banner 1055 'quick-cluster.at:61' \
  "QUICK CLUSTER with large data set" "              " 87
at_xfail=no
(
  printf "%s\n" "1055. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >quick-cluster.sps <<'_ATEOF'
input program.
loop #i = 1 to 50000.
compute x = 3.
end case.
end loop.
end file.
end input program.
QUICK CLUSTER x /CRITERIA = CLUSTER(4) NOINITIAL.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:73: pspp -o pspp.csv quick-cluster.sps"
at_fn_check_prepare_trace "quick-cluster.at:73"
( $at_check_trace; pspp -o pspp.csv quick-cluster.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:73"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:74: cat pspp.csv"
at_fn_check_prepare_trace "quick-cluster.at:74"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Final Cluster Centers
,Cluster,,,
,1,2,3,4
x,NaN,NaN,NaN,3.00

Table: Number of Cases in each Cluster
,,Count
Cluster,1,0
,2,0
,3,0
,4,50000
Valid,,50000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:74"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1055
#AT_START_1056
at_fn_group_banner 1056 'quick-cluster.at:91' \
  "QUICK CLUSTER with weights" "                     " 87
at_xfail=no
(
  printf "%s\n" "1056. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >qc-weighted.sps <<'_ATEOF'
input program.
loop #i = 1 to 400.
 compute x = mod (#i, 4).
 compute w = 5.
 end case.
end loop.
loop #i = 1 to 400.
 compute x = mod (#i, 4).
 compute w = 3.
 end case.
end loop.
end file.
end input program.

weight by w.

QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:112: pspp -o pspp-w.csv qc-weighted.sps"
at_fn_check_prepare_trace "quick-cluster.at:112"
( $at_check_trace; pspp -o pspp-w.csv qc-weighted.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:112"
$at_failed && at_fn_log_failure
$at_traceon; }



cat >qc-unweighted.sps <<'_ATEOF'
input program.
loop #i = 1 to 3200.
 compute x = mod (#i, 4).
 end case.
end loop.
end file.
end input program.

QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:127: pspp -o pspp-unw.csv qc-unweighted.sps"
at_fn_check_prepare_trace "quick-cluster.at:127"
( $at_check_trace; pspp -o pspp-unw.csv qc-unweighted.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:127"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:129: diff pspp-w.csv pspp-unw.csv"
at_fn_check_prepare_trace "quick-cluster.at:129"
( $at_check_trace; diff pspp-w.csv pspp-unw.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:129"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1056
#AT_START_1057
at_fn_group_banner 1057 'quick-cluster.at:133' \
  "QUICK CLUSTER with listwise missing" "            " 87
at_xfail=no
(
  printf "%s\n" "1057. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >quick-miss.sps <<'_ATEOF'
data list notable list /x *.
begin data.
1
1
2
3
4
.
2
end data.

QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:149: pspp -o pspp-m.csv quick-miss.sps"
at_fn_check_prepare_trace "quick-cluster.at:149"
( $at_check_trace; pspp -o pspp-m.csv quick-miss.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:149"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >quick-nmiss.sps <<'_ATEOF'
data list notable list /x *.
begin data.
1
1
2
3
4
2
end data.

QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (10).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:165: pspp -o pspp-nm.csv quick-nmiss.sps"
at_fn_check_prepare_trace "quick-cluster.at:165"
( $at_check_trace; pspp -o pspp-nm.csv quick-nmiss.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:165"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:167: diff pspp-m.csv pspp-nm.csv"
at_fn_check_prepare_trace "quick-cluster.at:167"
( $at_check_trace; diff pspp-m.csv pspp-nm.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:167"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1057
#AT_START_1058
at_fn_group_banner 1058 'quick-cluster.at:172' \
  "QUICK CLUSTER with pairwise missing" "            " 87
at_xfail=no
(
  printf "%s\n" "1058. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >quick-s.sps <<'_ATEOF'
data list notable list /x * y *.
begin data.
1   2
1   2.2
1.1 1.9
1   9
1   10
1.3 9.5
0.9 8.9
3.5 2
3.4 3
3.5 2.5
3.1 2.0
end data.

QUICK CLUSTER x y
	/PRINT = INITIAL
	/CRITERIA = CLUSTER(3) NOINITIAL NOUPDATE
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:201: pspp -O format=csv quick-s.sps  > pspp-s.csv"
at_fn_check_prepare_trace "quick-cluster.at:201"
( $at_check_trace; pspp -O format=csv quick-s.sps  > pspp-s.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:201"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >quick-pw.sps <<'_ATEOF'
data list notable list /x * y *.
begin data.
1   2
1   2.2
1.1 1.9
1   9
1   10
1.3 9.5
0.9 8.9
3.5 2
3.4 3
3.5 2.5
3.1 2.0
.   2.3
end data.

QUICK CLUSTER x y
	/CRITERIA = CLUSTER(3) NOINITIAL NOUPDATE
	/PRINT = INITIAL
	/MISSING = PAIRWISE
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:227: pspp -O format=csv quick-pw.sps  > pspp-pw.csv"
at_fn_check_prepare_trace "quick-cluster.at:227"
( $at_check_trace; pspp -O format=csv quick-pw.sps  > pspp-pw.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:227"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:229: head -n 13  pspp-s.csv > top-s.csv"
at_fn_check_prepare_trace "quick-cluster.at:229"
( $at_check_trace; head -n 13  pspp-s.csv > top-s.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:229"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:230: head -n 13  pspp-pw.csv > top-pw.csv"
at_fn_check_prepare_trace "quick-cluster.at:230"
( $at_check_trace; head -n 13  pspp-pw.csv > top-pw.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:230"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:231: diff top-s.csv top-pw.csv"
at_fn_check_prepare_trace "quick-cluster.at:231"
( $at_check_trace; diff top-s.csv top-pw.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:231"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:234: grep Valid pspp-s.csv"
at_fn_check_prepare_trace "quick-cluster.at:234"
( $at_check_trace; grep Valid pspp-s.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Valid,,11
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:234"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:237: grep Valid pspp-pw.csv"
at_fn_check_prepare_trace "quick-cluster.at:237"
( $at_check_trace; grep Valid pspp-pw.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Valid,,12
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:237"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1058
#AT_START_1059
at_fn_group_banner 1059 'quick-cluster.at:245' \
  "QUICK CLUSTER crash on bad cluster quantity" "    " 87
at_xfail=no
(
  printf "%s\n" "1059. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >badn.sps <<'_ATEOF'
data list notable list /x * y *.
begin data.
1   2
1   2.2
end data.

QUICK CLUSTER x y
	/CRITERIA = CLUSTER(0)
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:258: pspp -O format=csv badn.sps"
at_fn_check_prepare_trace "quick-cluster.at:258"
( $at_check_trace; pspp -O format=csv badn.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/quick-cluster.at:258"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1059
#AT_START_1060
at_fn_group_banner 1060 'quick-cluster.at:262' \
  "QUICK CLUSTER infinite loop on bad command name" "" 87
at_xfail=no
(
  printf "%s\n" "1060. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >quick-cluster.sps <<'_ATEOF'
data list notable list /x y.
begin data.
1   2
1   2.2
end data.

QUICK CLUSTER x y /UNSUPPORTED.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:272: pspp -O format=csv quick-cluster.sps"
at_fn_check_prepare_trace "quick-cluster.at:272"
( $at_check_trace; pspp -O format=csv quick-cluster.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"quick-cluster.sps:7.20-7.30: error: QUICK CLUSTER: Syntax error expecting MISSING, PRINT, SAVE, or CRITERIA.
    7 | QUICK CLUSTER x y /UNSUPPORTED.
      |                    ^~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/quick-cluster.at:272"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1060
#AT_START_1061
at_fn_group_banner 1061 'quick-cluster.at:281' \
  "QUICK CLUSTER /PRINT subcommand" "                " 87
at_xfail=no
(
  printf "%s\n" "1061. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >quick-cluster.sps <<'_ATEOF'
data list notable list /cluster (A8) x y (F8.0).
begin data.
A 10.45 9.38
A 10.67 9.17
A 10.86 9.63
A 8.77 8.45
A 8.04 11.77
A 10.34 9.83
A 10.37 10.54
A 11.49 8.18
A 10.17 11.10
A 11.37 9.16
A 10.25 8.83
A 8.69 9.92
A 10.36 10.39
A 10.89 10.51
A 9.9 11.39
A 11.1 10.91
A 11.77 8.47
A 9.5 10.46
B -11.01 -9.21
B -10.8 -11.76
B -10.03 -10.29
B -9.54 -9.17
B -10.16 -9.82
B -10.01 -8.63
B -9.6 -10.22
B -11.36 -10.93
B -10.63 -10.97
B -9.53 -10.78
B -9.40 -10.26
B -10.76 -9.76
B -9.9 -10.11
B -10.16 -9.75
B -8.65 -11.31
B -10.10 -10.90
B -11.67 -9.89
B -11.11 -9.23
B -8.7 -8.43
B -11.35 -8.68
C -10.20 9.00
C -10.12 9.92
C -10.41 10.16
C -9.86 10.12
C -10.31 10.12
C -9.57 10.16
C -9.69 9.93
C -9.14 10.84
C -9.8 10.19
C -9.97 10.22
C -11.65 10.81
C -9.80 11.39
C -10.31 10.74
C -10.26 10.38
C -11.57 10.02
C -10.50 9.75
C -9.06 9.63
C -10.17 10.82
C -10.22 9.99
end data.

QUICK CLUSTER x y
  /CRITERIA=CLUSTERS(3)
  /PRINT=INITIAL CLUSTER.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:349: pspp -O format=csv quick-cluster.sps"
at_fn_check_prepare_trace "quick-cluster.at:349"
( $at_check_trace; pspp -O format=csv quick-cluster.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Initial Cluster Centers
,Cluster,,
,1,2,3
x,-11,-12,11
y,-12,11,11

Table: Final Cluster Centers
,Cluster,,
,1,2,3
x,-10,-10,10
y,-10,10,10

Table: Number of Cases in each Cluster
,,Count
Cluster,1,20
,2,19
,3,18
Valid,,57

Table: Cluster Membership
Case Number,Cluster
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
10,3
11,3
12,3
13,3
14,3
15,3
16,3
17,3
18,3
19,1
20,1
21,1
22,1
23,1
24,1
25,1
26,1
27,1
28,1
29,1
30,1
31,1
32,1
33,1
34,1
35,1
36,1
37,1
38,1
39,2
40,2
41,2
42,2
43,2
44,2
45,2
46,2
47,2
48,2
49,2
50,2
51,2
52,2
53,2
54,2
55,2
56,2
57,2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:349"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1061
#AT_START_1062
at_fn_group_banner 1062 'quick-cluster.at:434' \
  "QUICK CLUSTER -- Empty Parentheses" "             " 87
at_xfail=no
(
  printf "%s\n" "1062. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >empty-parens.sps <<'_ATEOF'
data list notable list /x * y *.
begin data.
1   2
1   2.2
end data.

QUICK CLUSTER x y
	/CRITERIA = CONVERGE()
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:448: pspp -o pspp.csv empty-parens.sps"
at_fn_check_prepare_trace "quick-cluster.at:448"
( $at_check_trace; pspp -o pspp.csv empty-parens.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/quick-cluster.at:448"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1062
#AT_START_1063
at_fn_group_banner 1063 'quick-cluster.at:454' \
  "QUICK CLUSTER with save" "                        " 87
at_xfail=no
(
  printf "%s\n" "1063. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >quick-cluster.sps <<'_ATEOF'
DATA LIST notable LIST /x y z.
BEGIN DATA.
22,2930,4099
17,3350,4749
22,2640,3799
20, 3250,4816
15,4080,7827
4,5,4
5,6,5
6,7,6
7,8,7
8,9,8
9,10,9
END DATA.
QUICK CLUSTER x y z
  /CRITERIA=CLUSTER(2) MXITER(20)
  /SAVE = CLUSTER (cluster) DISTANCE (distance).

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:477: pspp -O format=csv quick-cluster.sps"
at_fn_check_prepare_trace "quick-cluster.at:477"
( $at_check_trace; pspp -O format=csv quick-cluster.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Final Cluster Centers
,Cluster,
,1,2
x,6.50,19.20
y,7.50,3250.00
z,6.50,5058.00

Table: Number of Cases in each Cluster
,,Count
Cluster,1,6
,2,5
Valid,,11

Table: Data List
x,y,z,cluster,distance
22.00,2930.00,4099.00,2.00,1010.98
17.00,3350.00,4749.00,2.00,324.79
22.00,2640.00,3799.00,2.00,1399.00
20.00,3250.00,4816.00,2.00,242.00
15.00,4080.00,7827.00,2.00,2890.72
4.00,5.00,4.00,1.00,4.33
5.00,6.00,5.00,1.00,2.60
6.00,7.00,6.00,1.00,.87
7.00,8.00,7.00,1.00,.87
8.00,9.00,8.00,1.00,2.60
9.00,10.00,9.00,1.00,4.33
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:477"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1063
#AT_START_1064
at_fn_group_banner 1064 'quick-cluster.at:508' \
  "QUICK CLUSTER with single save" "                 " 87
at_xfail=no
(
  printf "%s\n" "1064. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >quick-cluster.sps <<'_ATEOF'
DATA LIST notable LIST /x y z.
BEGIN DATA.
22,2930,4099
17,3350,4749
22,2640,3799
20, 3250,4816
15,4080,7827
4,5,4
5,6,5
6,7,6
7,8,7
8,9,8
9,10,9
END DATA.
QUICK CLUSTER x y z
  /CRITERIA=CLUSTER(2) MXITER(20)
  /SAVE = DISTANCE.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:531: pspp -O format=csv quick-cluster.sps"
at_fn_check_prepare_trace "quick-cluster.at:531"
( $at_check_trace; pspp -O format=csv quick-cluster.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Final Cluster Centers
,Cluster,
,1,2
x,6.50,19.20
y,7.50,3250.00
z,6.50,5058.00

Table: Number of Cases in each Cluster
,,Count
Cluster,1,6
,2,5
Valid,,11

Table: Data List
x,y,z,QCL_0
22.00,2930.00,4099.00,1010.98
17.00,3350.00,4749.00,324.79
22.00,2640.00,3799.00,1399.00
20.00,3250.00,4816.00,242.00
15.00,4080.00,7827.00,2890.72
4.00,5.00,4.00,4.33
5.00,6.00,5.00,2.60
6.00,7.00,6.00,.87
7.00,8.00,7.00,.87
8.00,9.00,8.00,2.60
9.00,10.00,9.00,4.33
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/quick-cluster.at:531"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1064
#AT_START_1065
at_fn_group_banner 1065 'quick-cluster.at:563' \
  "QUICK CLUSTER crash on bizarre input" "           " 87
at_xfail=no
(
  printf "%s\n" "1065. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >badn.sps <<'_ATEOF'
data list notable list /x.
begin da\a*
22
17
22
22
15
4,
5,
6,
7,j8,
9,
end data.

quick cluster x
" /criteria=cluster(2) mxiter(20)
  /save = distance
  .

list.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:587: pspp -O format=csv badn.sps"
at_fn_check_prepare_trace "quick-cluster.at:587"
( $at_check_trace; pspp -O format=csv badn.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/quick-cluster.at:587"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1065
#AT_START_1066
at_fn_group_banner 1066 'quick-cluster.at:591' \
  "QUICK CLUSTER syntax errors" "                    " 87
at_xfail=no
(
  printf "%s\n" "1066. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >quick-cluster.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y.
QUICK CLUSTER **.
QUICK CLUSTER x/MISSING=**.
QUICK CLUSTER x/PRINT=**.
QUICK CLUSTER x/SAVE=CLUSTER(**).
QUICK CLUSTER x/SAVE=CLUSTER(x).
QUICK CLUSTER x/SAVE=CLUSTER(c **).
QUICK CLUSTER x/SAVE=DISTANCE(**).
QUICK CLUSTER x/SAVE=DISTANCE(x).
QUICK CLUSTER x/SAVE=DISTANCE(d **).
QUICK CLUSTER x/SAVE=**.
QUICK CLUSTER x/CRITERIA=CLUSTERS **.
QUICK CLUSTER x/CRITERIA=CLUSTERS(**).
QUICK CLUSTER x/CRITERIA=CLUSTERS(5 **).
QUICK CLUSTER x/CRITERIA=CONVERGE **.
QUICK CLUSTER x/CRITERIA=CONVERGE(**).
QUICK CLUSTER x/CRITERIA=CONVERGE(5 **).
QUICK CLUSTER x/CRITERIA=**.
QUICK CLUSTER x/ **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/quick-cluster.at:613: pspp -O format=csv quick-cluster.sps"
at_fn_check_prepare_trace "quick-cluster.at:613"
( $at_check_trace; pspp -O format=csv quick-cluster.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"quick-cluster.sps:2.15-2.16: error: QUICK CLUSTER: Syntax error expecting variable name.
    2 | QUICK CLUSTER **.
      |               ^~\"

\"quick-cluster.sps:3.25-3.26: error: QUICK CLUSTER: Syntax error expecting LISTWISE, DEFAULT, PAIRWISE, INCLUDE, or EXCLUDE.
    3 | QUICK CLUSTER x/MISSING=**.
      |                         ^~\"

\"quick-cluster.sps:4.23-4.24: error: QUICK CLUSTER: Syntax error expecting CLUSTER or INITIAL.
    4 | QUICK CLUSTER x/PRINT=**.
      |                       ^~\"

\"quick-cluster.sps:5.30-5.31: error: QUICK CLUSTER: Syntax error expecting identifier.
    5 | QUICK CLUSTER x/SAVE=CLUSTER(**).
      |                              ^~\"

\"quick-cluster.sps:6.30: error: QUICK CLUSTER: A variable called \`x' already exists.
    6 | QUICK CLUSTER x/SAVE=CLUSTER(x).
      |                              ^\"

\"quick-cluster.sps:7.32-7.33: error: QUICK CLUSTER: Syntax error expecting \`)'.
    7 | QUICK CLUSTER x/SAVE=CLUSTER(c **).
      |                                ^~\"

\"quick-cluster.sps:8.31-8.32: error: QUICK CLUSTER: Syntax error expecting identifier.
    8 | QUICK CLUSTER x/SAVE=DISTANCE(**).
      |                               ^~\"

\"quick-cluster.sps:9.31: error: QUICK CLUSTER: A variable called \`x' already exists.
    9 | QUICK CLUSTER x/SAVE=DISTANCE(x).
      |                               ^\"

\"quick-cluster.sps:10.33-10.34: error: QUICK CLUSTER: Syntax error expecting \`)'.
   10 | QUICK CLUSTER x/SAVE=DISTANCE(d **).
      |                                 ^~\"

\"quick-cluster.sps:11.22-11.23: error: QUICK CLUSTER: Syntax error expecting CLUSTER or DISTANCE.
   11 | QUICK CLUSTER x/SAVE=**.
      |                      ^~\"

\"quick-cluster.sps:12.35-12.36: error: QUICK CLUSTER: Syntax error expecting \`('.
   12 | QUICK CLUSTER x/CRITERIA=CLUSTERS **.
      |                                   ^~\"

\"quick-cluster.sps:13.35-13.36: error: QUICK CLUSTER: Syntax error expecting positive integer for CLUSTERS.
   13 | QUICK CLUSTER x/CRITERIA=CLUSTERS(**).
      |                                   ^~\"

\"quick-cluster.sps:14.37-14.38: error: QUICK CLUSTER: Syntax error expecting \`)'.
   14 | QUICK CLUSTER x/CRITERIA=CLUSTERS(5 **).
      |                                     ^~\"

\"quick-cluster.sps:15.35-15.36: error: QUICK CLUSTER: Syntax error expecting \`('.
   15 | QUICK CLUSTER x/CRITERIA=CONVERGE **.
      |                                   ^~\"

\"quick-cluster.sps:16.35-16.36: error: QUICK CLUSTER: Syntax error expecting positive number for CONVERGE.
   16 | QUICK CLUSTER x/CRITERIA=CONVERGE(**).
      |                                   ^~\"

\"quick-cluster.sps:17.37-17.38: error: QUICK CLUSTER: Syntax error expecting \`)'.
   17 | QUICK CLUSTER x/CRITERIA=CONVERGE(5 **).
      |                                     ^~\"

\"quick-cluster.sps:18.26-18.27: error: QUICK CLUSTER: Syntax error expecting CLUSTERS, CONVERGE, MXITER, NOINITIAL, or NOUPDATE.
   18 | QUICK CLUSTER x/CRITERIA=**.
      |                          ^~\"

\"quick-cluster.sps:19.18-19.19: error: QUICK CLUSTER: Syntax error expecting MISSING, PRINT, SAVE, or CRITERIA.
   19 | QUICK CLUSTER x/ **.
      |                  ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/quick-cluster.at:613"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1066
#AT_START_1067
at_fn_group_banner 1067 'rank.at:19' \
  "RANK simple case with defaults" "                 " 88
at_xfail=no
(
  printf "%s\n" "1067. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x (f8).
BEGIN DATA.
-1
0
1
2
2
4
5
END DATA.

RANK x.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:36: pspp -o pspp.csv rank.sps"
at_fn_check_prepare_trace "rank.at:36"
( $at_check_trace; pspp -o pspp.csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rank.at:37: cat pspp.csv"
at_fn_check_prepare_trace "rank.at:37"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function
x,Rx,RANK

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1067
#AT_START_1068
at_fn_group_banner 1068 'rank.at:57' \
  "RANK multiple variables with defaults" "          " 88
at_xfail=no
(
  printf "%s\n" "1068. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x * y * z *.
BEGIN DATA.
    1.00     2.00     3.00
    4.00     5.00     6.00
END DATA.

RANK ALL.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:69: pspp -o pspp.csv rank.sps"
at_fn_check_prepare_trace "rank.at:69"
( $at_check_trace; pspp -o pspp.csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:69"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rank.at:70: cat pspp.csv"
at_fn_check_prepare_trace "rank.at:70"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function
x,Rx,RANK
y,Ry,RANK
z,Rz,RANK

Table: Data List
x,y,z,Rx,Ry,Rz
1.00,2.00,3.00,1.000,1.000,1.000
4.00,5.00,6.00,2.000,2.000,2.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:70"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1068
#AT_START_1069
at_fn_group_banner 1069 'rank.at:84' \
  "RANK with RANK, RFRACTION, N" "                   " 88
at_xfail=no
(
  printf "%s\n" "1069. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:112: pspp -o pspp.csv rank.sps"
at_fn_check_prepare_trace "rank.at:112"
( $at_check_trace; pspp -o pspp.csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:112"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rank.at:113: cat pspp.csv"
at_fn_check_prepare_trace "rank.at:113"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function
a,Ra,RANK
b,Rb,RANK
a,RFR001,RFRACTION
b,RFR002,RFRACTION
a,count,N
b,Nb,N

Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format
a,1,,Nominal,Input,8,Right,F8.2,F8.2
b,2,,Nominal,Input,8,Right,F8.2,F8.2
Ra,3,RANK of a,Ordinal,Input,8,Right,F9.3,F9.3
RFR001,4,RFRACTION of a,Ordinal,Input,8,Right,F6.4,F6.4
count,5,N of a,Scale,Input,8,Right,F6.0,F6.0
Rb,6,RANK of b,Ordinal,Input,8,Right,F9.3,F9.3
RFR002,7,RFRACTION of b,Ordinal,Input,8,Right,F6.4,F6.4
Nb,8,N of b,Scale,Input,8,Right,F6.0,F6.0

Table: Data List
a,b,Ra,RFR001,count,Rb,RFR002,Nb
.00,24.00,10.000,1.0000,10,8.000,.8889,9
1.00,32.00,9.000,.9000,10,4.000,.4444,9
2.00,31.00,8.000,.8000,10,5.000,.5556,9
2.00,32.00,8.000,.8000,10,4.000,.4444,9
4.00,30.00,6.000,.6000,10,6.000,.6667,9
5.00,29.00,5.000,.5000,10,7.000,.7778,9
6.00,1.00,4.000,.4000,10,9.000,1.0000,9
7.00,43.00,3.000,.3000,10,2.000,.2222,9
8.00,.  ,2.000,.2000,10,.   ,.    ,.
9.00,45.00,1.000,.1000,10,1.000,.1111,9
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:113"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1069
#AT_START_1070
at_fn_group_banner 1070 'rank.at:149' \
  "RANK with SAVAGE, PERCENT, PROPORTION, NTILES" "  " 88
at_xfail=no
(
  printf "%s\n" "1070. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:177: pspp -o pspp.csv rank.sps"
at_fn_check_prepare_trace "rank.at:177"
( $at_check_trace; pspp -o pspp.csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:177"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rank.at:178: cat pspp.csv"
at_fn_check_prepare_trace "rank.at:178"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function,Fraction
a,Sa,SAVAGE,
a,Pa,PERCENT,
a,PRO001,PROPORTION,BLOM
a,Na,NTILES,
a,NOR001,NORMAL,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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:178"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1070
#AT_START_1071
at_fn_group_banner 1071 'rank.at:202' \
  "RANK with SPLIT FILE" "                           " 88
at_xfail=no
(
  printf "%s\n" "1071. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:250: pspp -o pspp.csv rank.sps"
at_fn_check_prepare_trace "rank.at:250"
( $at_check_trace; pspp -o pspp.csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:250"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rank.at:251: cat pspp.csv"
at_fn_check_prepare_trace "rank.at:251"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function,Fraction,Grouping Variables
a,Ra,RANK,,g2 g1
a,Na,NORMAL,RANKIT,g2 g1

Table: Variables Created by RANK
Existing Variable,New Variable,Function,Fraction,Grouping Variables
a,RAN001,RANK,,g2
a,NOR001,NORMAL,RANKIT,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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:251"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1071
#AT_START_1072
at_fn_group_banner 1072 'rank.at:286' \
  "RANK with fractional ranks" "                     " 88
at_xfail=no
(
  printf "%s\n" "1072. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:310: pspp -o pspp.csv rank.sps"
at_fn_check_prepare_trace "rank.at:310"
( $at_check_trace; pspp -o pspp.csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:310"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rank.at:311: cat pspp.csv"
at_fn_check_prepare_trace "rank.at:311"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function,Fraction
a,Pa,PROPORTION,TUKEY
a,Sa,SAVAGE,

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:311"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1072
#AT_START_1073
at_fn_group_banner 1073 'rank.at:330' \
  "RANK all-ties due to tiny weights" "              " 88
at_xfail=no
(
  printf "%s\n" "1073. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:368: pspp -o pspp.csv rank.sps"
at_fn_check_prepare_trace "rank.at:368"
( $at_check_trace; pspp -o pspp.csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:368"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rank.at:369: cat pspp.csv"
at_fn_check_prepare_trace "rank.at:369"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function
x,xl,RANK

Table: Variables Created by RANK
Existing Variable,New Variable,Function
x,xh,RANK

Table: Variables Created by RANK
Existing Variable,New Variable,Function
x,xc,RANK

Table: Variables Created by RANK
Existing Variable,New Variable,Function,Fraction
x,Nx,NORMAL,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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:369"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1073
#AT_START_1074
at_fn_group_banner 1074 'rank.at:399' \
  "RANK and TEMPORARY" "                             " 88
at_xfail=no
(
  printf "%s\n" "1074. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /age (f2) gender (a1).
BEGIN DATA.
44 m
32 f
43 m
49 m
33 f
35 f
29 f
50 m
42 m
33 f
48 m
END DATA.

TEMPORARY.
SELECT IF gender = 'm'.
RANK age /RANK INTO Rm.

TEMPORARY.
SELECT IF gender = 'f'.
RANK age /RANK INTO Rf.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:426: pspp -O format=csv rank.sps"
at_fn_check_prepare_trace "rank.at:426"
( $at_check_trace; pspp -O format=csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function
age,Rm,RANK

Table: Variables Created by RANK
Existing Variable,New Variable,Function
age,Rf,RANK

Table: Data List
age,gender,Rm,Rf
44,m,3.000,.   
32,f,.   ,2.000
43,m,2.000,.   
49,m,5.000,.   
33,f,.   ,3.500
35,f,.   ,5.000
29,f,.   ,1.000
50,m,6.000,.   
42,m,1.000,.   
33,f,.   ,3.500
48,m,4.000,.   
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:426"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1074
#AT_START_1075
at_fn_group_banner 1075 'rank.at:451' \
  "RANK variable name fallback" "                    " 88
at_xfail=no
(
  printf "%s\n" "1075. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:472: pspp -o pspp.csv rank.sps"
at_fn_check_prepare_trace "rank.at:472"
( $at_check_trace; pspp -o pspp.csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:472"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rank.at:473: cat pspp.csv"
at_fn_check_prepare_trace "rank.at:473"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function
foo,RAN001,RANK

Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format
foo,1,,Nominal,Input,8,Right,F8.2,F8.2
rfoo,2,,Nominal,Input,8,Right,F8.2,F8.2
ran003,3,,Nominal,Input,8,Right,F8.2,F8.2
RAN001,4,RANK of foo,Ordinal,Input,8,Right,F9.3,F9.3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:473"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1075
#AT_START_1076
at_fn_group_banner 1076 'rank.at:487' \
  "RANK robust variable name creation" "             " 88
at_xfail=no
(
  printf "%s\n" "1076. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:506: pspp -O format=csv rank.sps"
at_fn_check_prepare_trace "rank.at:506"
( $at_check_trace; pspp -O format=csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"rank.sps:3: warning: 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: 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: 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: 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: 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: 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: Missing value(s) for all variables from rx onward.  These will be filled with the system-missing value or blanks, as appropriate.\"

Table: Variables Created by RANK
Existing Variable,New Variable,Function
x,RNKRA01,RANK

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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rank.at:506"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1076
#AT_START_1077
at_fn_group_banner 1077 'rank.at:538' \
  "RANK handling of invalid input" "                 " 88
at_xfail=no
(
  printf "%s\n" "1077. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:555: pspp -O format=csv --testing-mode rank.sps"
at_fn_check_prepare_trace "rank.at:555"
( $at_check_trace; pspp -O format=csv --testing-mode rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables Created by RANK
Existing Variable,New Variable,Function
x,Rx,RANK

rank.sps:14: error: RANK: DEBUG XFORM FAIL transformation executed
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/rank.at:555"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1077
#AT_START_1078
at_fn_group_banner 1078 'rank.at:564' \
  "RANK syntax errors" "                             " 88
at_xfail=no
(
  printf "%s\n" "1078. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rank.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z * a b c (a2).
RANK VARIABLES **.
RANK **.
RANK x BY **.
RANK x/TIES **.
RANK x/TIES=**.
RANK x/FRACTION **.
RANK x/FRACTIO=**.
RANK x/PRINT **.
RANK x/PRINT=**.
RANK x/MISSING **.
RANK x/MISSING=**.
RANK x/NTILES **.
RANK x/NTILES(**).
RANK x/NTILES(5 **).
RANK x/ **.
RANK x/N INTO v w.
RANK x/N INTO y.
RANK x y/N INTO v v.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rank.at:586: pspp -O format=csv rank.sps"
at_fn_check_prepare_trace "rank.at:586"
( $at_check_trace; pspp -O format=csv rank.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"rank.sps:2.16-2.17: error: RANK: Syntax error expecting \`='.
    2 | RANK VARIABLES **.
      |                ^~\"

\"rank.sps:3.6-3.7: error: RANK: Syntax error expecting variable name.
    3 | RANK **.
      |      ^~\"

\"rank.sps:4.11-4.12: error: RANK: Syntax error expecting variable name.
    4 | RANK x BY **.
      |           ^~\"

\"rank.sps:5.13-5.14: error: RANK: Syntax error expecting \`='.
    5 | RANK x/TIES **.
      |             ^~\"

\"rank.sps:6.13-6.14: error: RANK: Syntax error expecting MEAN, LOW, HIGH, or CONDENSE.
    6 | RANK x/TIES=**.
      |             ^~\"

\"rank.sps:7.17-7.18: error: RANK: Syntax error expecting \`='.
    7 | RANK x/FRACTION **.
      |                 ^~\"

\"rank.sps:8.16-8.17: error: RANK: Syntax error expecting BLOM, TUKEY, VW, or RANKIT.
    8 | RANK x/FRACTIO=**.
      |                ^~\"

\"rank.sps:9.14-9.15: error: RANK: Syntax error expecting \`='.
    9 | RANK x/PRINT **.
      |              ^~\"

\"rank.sps:10.14-10.15: error: RANK: Syntax error expecting YES or NO.
   10 | RANK x/PRINT=**.
      |              ^~\"

\"rank.sps:11.16-11.17: error: RANK: Syntax error expecting \`='.
   11 | RANK x/MISSING **.
      |                ^~\"

\"rank.sps:12.16-12.17: error: RANK: Syntax error expecting INCLUDE or EXCLUDE.
   12 | RANK x/MISSING=**.
      |                ^~\"

\"rank.sps:13.15-13.16: error: RANK: Syntax error expecting \`('.
   13 | RANK x/NTILES **.
      |               ^~\"

\"rank.sps:14.15-14.16: error: RANK: Syntax error expecting positive integer for NTILES.
   14 | RANK x/NTILES(**).
      |               ^~\"

\"rank.sps:15.17-15.18: error: RANK: Syntax error expecting \`)'.
   15 | RANK x/NTILES(5 **).
      |                 ^~\"

\"rank.sps:16.9-16.10: error: RANK: Syntax error expecting RANK, NORMAL, RFRACTION, N, SAVAGE, PERCENT, PROPORTION, or NTILES.
   16 | RANK x/ **.
      |         ^~\"

\"rank.sps:17.15-17.17: error: RANK: Too many variables in INTO clause.
   17 | RANK x/N INTO v w.
      |               ^~~\"

\"rank.sps:18.15: error: RANK: Variable y already exists.
   18 | RANK x/N INTO y.
      |               ^\"

\"rank.sps:19.19: error: RANK: Duplicate variable name v.
   19 | RANK x y/N INTO v v.
      |                   ^\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/rank.at:586"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1078
#AT_START_1079
at_fn_group_banner 1079 'recode.at:37' \
  "RECODE numeric to numeric, without INTO" "        " 89
at_xfail=no
(
  printf "%s\n" "1079. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
MISSING VALUES x(9)/s('xxx').
BEGIN DATA.
0, '', ''
1, a, a
2, ab, ab
3, abc, abc
4, abcd, abcd
5, 123, 123
6, ' 123', ' 123'
7, +1, +1
8, 1x, 1x
9, abcd, abcdefghi
,  xxx, abcdefghij
END DATA.

NUMERIC x0 TO x8 (F3).
MISSING VALUES x0 to x8 (9).
COMPUTE x0=value(x).
RECODE x0 (1=9).
COMPUTE x1=value(x).
RECODE x1 (1=9)(3=8)(5=7).
COMPUTE x2=value(x).
RECODE x2 (1=8)(2,3,4,5,6,8=9)(9=1).
COMPUTE x3=value(x).
RECODE x3 (1 THRU 9=10)(MISSING=11).
COMPUTE x4=value(x).
RECODE x4 (MISSING=11)(1 THRU 9=10).
COMPUTE x5=value(x).
RECODE x5 (LOWEST THRU 5=1).
COMPUTE x6=value(x).
RECODE x6 (4 THRU HIGHEST=2).
COMPUTE x7=value(x).
RECODE x7 (LO THRU HI=3).
COMPUTE x8=value(x).
RECODE x8 (SYSMIS=4).
LIST x x0 TO x8.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:62: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:62"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,x0,x1,x2,x3,x4,x5,x6,x7,x8
0,0,0,0,0,0,1,0,3,0
1,9,9,8,10,10,1,1,3,1
2,2,2,9,10,10,1,2,3,2
3,3,8,9,10,10,1,3,3,3
4,4,4,9,10,10,1,2,3,4
5,5,7,9,10,10,1,2,3,5
6,6,6,9,10,10,6,2,3,6
7,7,7,7,10,10,7,2,3,7
8,8,8,9,10,10,8,2,3,8
9,9,9,1,10,11,9,2,3,9
.,.,.,.,11,11,.,.,.,4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:62"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1079
#AT_START_1080
at_fn_group_banner 1080 'recode.at:79' \
  "RECODE numeric to numeric, with INTO, without COPY" "" 89
at_xfail=no
(
  printf "%s\n" "1080. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
MISSING VALUES x(9)/s('xxx').
BEGIN DATA.
0, '', ''
1, a, a
2, ab, ab
3, abc, abc
4, abcd, abcd
5, 123, 123
6, ' 123', ' 123'
7, +1, +1
8, 1x, 1x
9, abcd, abcdefghi
,  xxx, abcdefghij
END DATA.

NUMERIC ix0 TO ix8 (F3).
RECODE x (1=9) INTO ix0.
RECODE x (1=9)(3=8)(5=7) INTO ix1.
RECODE x (1=8)(2,3,4,5,6,8=9)(9=1) INTO ix2.
RECODE x (1 THRU 9=10)(MISSING=11) INTO ix3.
RECODE x (MISSING=11)(1 THRU 9=10) INTO ix4.
RECODE x (LOWEST THRU 5=1) INTO ix5.
RECODE x (4 THRU HIGHEST=2) INTO ix6.
RECODE x (LO THRU HI=3) INTO ix7.
RECODE x (SYSMIS=4) INTO ix8.
LIST x ix0 TO ix8.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:94: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:94"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,ix0,ix1,ix2,ix3,ix4,ix5,ix6,ix7,ix8
0,.,.,.,.,.,1,.,3,.
1,9,9,8,10,10,1,.,3,.
2,.,.,9,10,10,1,.,3,.
3,.,8,9,10,10,1,.,3,.
4,.,.,9,10,10,1,2,3,.
5,.,7,9,10,10,1,2,3,.
6,.,.,9,10,10,.,2,3,.
7,.,.,.,10,10,.,2,3,.
8,.,.,9,10,10,.,2,3,.
9,.,.,1,10,11,.,2,3,.
.,.,.,.,11,11,.,.,.,4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:94"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1080
#AT_START_1081
at_fn_group_banner 1081 'recode.at:111' \
  "RECODE numeric to numeric, with INTO, with COPY" "" 89
at_xfail=no
(
  printf "%s\n" "1081. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
MISSING VALUES x(9)/s('xxx').
BEGIN DATA.
0, '', ''
1, a, a
2, ab, ab
3, abc, abc
4, abcd, abcd
5, 123, 123
6, ' 123', ' 123'
7, +1, +1
8, 1x, 1x
9, abcd, abcdefghi
,  xxx, abcdefghij
END DATA.

NUMERIC cx0 TO cx8 (F3).
RECODE x (1=9)(ELSE=COPY) INTO cx0.
RECODE x (1=9)(3=8)(5=7)(ELSE=COPY) INTO cx1.
RECODE x (1=8)(2,3,4,5,6,8=9)(9=1)(ELSE=COPY) INTO cx2.
RECODE x (1 THRU 9=10)(MISSING=11)(ELSE=COPY) INTO cx3.
RECODE x (MISSING=11)(1 THRU 9=10)(ELSE=COPY) INTO cx4.
RECODE x (LOWEST THRU 5=1)(ELSE=COPY) INTO cx5.
RECODE x (4 THRU HIGHEST=2)(ELSE=COPY) INTO cx6.
RECODE x (LO THRU HI=3)(ELSE=COPY) INTO cx7.
RECODE x (SYSMIS=4)(ELSE=COPY) INTO cx8.
RECODE x (5=COPY)(ELSE=22) INTO cx9.
LIST x cx0 TO cx9.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:127: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:127"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,cx0,cx1,cx2,cx3,cx4,cx5,cx6,cx7,cx8,cx9
0,0,0,0,0,0,1,0,3,0,22.00
1,9,9,8,10,10,1,1,3,1,22.00
2,2,2,9,10,10,1,2,3,2,22.00
3,3,8,9,10,10,1,3,3,3,22.00
4,4,4,9,10,10,1,2,3,4,22.00
5,5,7,9,10,10,1,2,3,5,5.00
6,6,6,9,10,10,6,2,3,6,22.00
7,7,7,7,10,10,7,2,3,7,22.00
8,8,8,9,10,10,8,2,3,8,22.00
9,9,9,1,10,11,9,2,3,9,22.00
.,.,.,.,11,11,.,.,.,4,22.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:127"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1081
#AT_START_1082
at_fn_group_banner 1082 'recode.at:144' \
  "RECODE string to string, with INTO, without COPY" "" 89
at_xfail=no
(
  printf "%s\n" "1082. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
MISSING VALUES x(9)/s('xxx').
BEGIN DATA.
0, '', ''
1, a, a
2, ab, ab
3, abc, abc
4, abcd, abcd
5, 123, 123
6, ' 123', ' 123'
7, +1, +1
8, 1x, 1x
9, abcd, abcdefghi
,  xxx, abcdefghij
END DATA.

STRING s0 TO s3 (A4)/t0 TO t3 (A10).
RECODE s t ('a'='b')('ab'='bc') INTO s0 t0.
RECODE s t ('abcd'='xyzw') INTO s1 t1.
RECODE s t ('abc'='def')(ELSE='xyz') INTO s2 t2.
RECODE t ('a'='b')('abcdefghi'='xyz')('abcdefghij'='jklmnopqr') INTO t3.
RECODE s (MISSING='gone') INTO s3.
LIST s t s0 TO s3 t0 TO t3.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:155: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:155"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,t,s0,s1,s2,s3,t0,t1,t2,t3
,,,,xyz,,,,xyz,
a,a,b,,xyz,,b,,xyz,b
ab,ab,bc,,xyz,,bc,,xyz,
abc,abc,,,def,,,,def,
abcd,abcd,,xyzw,xyz,,,xyzw,xyz,
123,123,,,xyz,,,,xyz,
123,123,,,xyz,,,,xyz,
+1,+1,,,xyz,,,,xyz,
1x,1x,,,xyz,,,,xyz,
abcd,abcdefghi,,xyzw,xyz,,,,xyz,xyz
xxx,abcdefghij,,,xyz,gone,,,xyz,jklmnopqr
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:155"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1082
#AT_START_1083
at_fn_group_banner 1083 'recode.at:172' \
  "RECODE string to string" "                        " 89
at_xfail=no
(
  printf "%s\n" "1083. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
MISSING VALUES x(9)/s('xxx').
BEGIN DATA.
0, '', ''
1, a, a
2, ab, ab
3, abc, abc
4, abcd, abcd
5, 123, 123
6, ' 123', ' 123'
7, +1, +1
8, 1x, 1x
9, abcd, abcdefghi
,  xxx, abcdefghij
END DATA.

STRING cs0 TO cs2 (A4)/ct0 TO ct3 (A10).
RECODE s t ('a'='b')('ab'='bc')(ELSE=COPY) INTO cs0 ct0.
RECODE s t ('abcd'='xyzw')(ELSE=COPY) INTO cs1 ct1.
RECODE s t ('abc'='def')(ELSE='xyz')(ELSE=COPY) INTO cs2 ct2.
RECODE t ('a'='b')('abcdefghi'='xyz')('abcdefghij'='jklmnopqr')(ELSE=COPY)
    INTO ct3.
LIST s t cs0 TO cs2 ct0 TO ct3.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:183: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:183"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,t,cs0,cs1,cs2,ct0,ct1,ct2,ct3
,,,,xyz,,,xyz,
a,a,b,a,xyz,b,a,xyz,b
ab,ab,bc,ab,xyz,bc,ab,xyz,ab
abc,abc,abc,abc,def,abc,abc,def,abc
abcd,abcd,abcd,xyzw,xyz,abcd,xyzw,xyz,abcd
123,123,123,123,xyz,123,123,xyz,123
123,123,123,123,xyz,123,123,xyz,123
+1,+1,+1,+1,xyz,+1,+1,xyz,+1
1x,1x,1x,1x,xyz,1x,1x,xyz,1x
abcd,abcdefghi,abcd,xyzw,xyz,abcdefghi,abcdefghi,xyz,xyz
xxx,abcdefghij,xxx,xxx,xyz,abcdefghij,abcdefghij,xyz,jklmnopqr
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:183"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1083
#AT_START_1084
at_fn_group_banner 1084 'recode.at:200' \
  "RECODE string to numeric" "                       " 89
at_xfail=no
(
  printf "%s\n" "1084. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
MISSING VALUES x(9)/s('xxx').
BEGIN DATA.
0, '', ''
1, a, a
2, ab, ab
3, abc, abc
4, abcd, abcd
5, 123, 123
6, ' 123', ' 123'
7, +1, +1
8, 1x, 1x
9, abcd, abcdefghi
,  xxx, abcdefghij
END DATA.

NUMERIC ns0 TO ns2 (F3)/nt0 TO nt2 (F3).
RECODE s t (CONVERT)(' '=0)('abcd'=1) INTO ns0 nt0.
RECODE s t (' '=0)(CONVERT)('abcd'=1) INTO ns1 nt1.
RECODE s t ('1x'=1)('abcd'=2)(ELSE=3) INTO ns2 nt2.
LIST s t ns0 TO ns2 nt0 TO nt2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:209: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:209"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
s,t,ns0,ns1,ns2,nt0,nt1,nt2
,,.,0,3,.,0,3
a,a,.,.,3,.,.,3
ab,ab,.,.,3,.,.,3
abc,abc,.,.,3,.,.,3
abcd,abcd,1,1,2,1,1,2
123,123,123,123,3,123,123,3
123,123,123,123,3,123,123,3
+1,+1,1,1,3,1,1,3
1x,1x,.,.,1,.,.,1
abcd,abcdefghi,1,1,2,.,.,3
xxx,abcdefghij,.,.,3,.,.,3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:209"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1084
#AT_START_1085
at_fn_group_banner 1085 'recode.at:226' \
  "RECODE numeric to string" "                       " 89
at_xfail=no
(
  printf "%s\n" "1085. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
MISSING VALUES x(9)/s('xxx').
BEGIN DATA.
0, '', ''
1, a, a
2, ab, ab
3, abc, abc
4, abcd, abcd
5, 123, 123
6, ' 123', ' 123'
7, +1, +1
8, 1x, 1x
9, abcd, abcdefghi
,  xxx, abcdefghij
END DATA.

STRING sx0 TO sx2 (a10).
RECODE x (1 THRU 9='abcdefghij') INTO sx0.
RECODE x (0,1,3,5,7,MISSING='xxx') INTO sx1.
RECODE x (2 THRU 6,SYSMIS='xyz')(ELSE='foobar') INTO sx2.
LIST x sx0 TO sx2.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:235: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:235"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,sx0,sx1,sx2
0,,xxx,foobar
1,abcdefghij,xxx,foobar
2,abcdefghij,,xyz
3,abcdefghij,xxx,xyz
4,abcdefghij,,xyz
5,abcdefghij,xxx,xyz
6,abcdefghij,,xyz
7,abcdefghij,xxx,foobar
8,abcdefghij,,foobar
9,abcdefghij,xxx,foobar
.,,xxx,xyz
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:235"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1085
#AT_START_1086
at_fn_group_banner 1086 'recode.at:252' \
  "RECODE bug in COPY" "                             " 89
at_xfail=no
(
  printf "%s\n" "1086. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST
 /A (A1)
 B (A1).

BEGIN DATA
1     2
2     3
3     4
END DATA.

** Clearly, the else=copy is superfluous here
RECODE A ("1"="3") ("3"="1") (ELSE=COPY).
EXECUTE.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:269: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:269"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
A,A1
B,A1

Table: Data List
A,B
3,2
2,3
1,4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:269"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1086
#AT_START_1087
at_fn_group_banner 1087 'recode.at:283' \
  "RECODE bug in COPY with INTO" "                   " 89
at_xfail=no
(
  printf "%s\n" "1087. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST
 /A (A1)
 B (A1).

BEGIN DATA
1     2
2     3
3     4
END DATA.

STRING A1 (A1).
RECODE A ("1"="3") ("3"="1") (ELSE=COPY) INTO a1.
EXECUTE.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:300: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:300"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
A,A1
B,A1

Table: Data List
A,B,A1
1,2,3
2,3,2
3,4,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/recode.at:300"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1087
#AT_START_1088
at_fn_group_banner 1088 'recode.at:316' \
  "RECODE increased string widths" "                 " 89
at_xfail=no
(
  printf "%s\n" "1088. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >recode.sps <<'_ATEOF'
data list notable list /x (a1) y (a8) z *.
begin data.
a a         2
a two       2
b three     2
c b         2
end data.

recode x y ("a" = "first") .

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/recode.at:332: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:332"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "recode.sps:9: error: RECODE: At least one target variable is too narrow for the output values.

\"recode.sps:9.19-9.25: note: RECODE: This output value has width 5.
    9 | recode x y (\"\"a\"\" = \"\"first\"\") .
      |                   ^~~~~~~\"

\"recode.sps:9.8-9.10: note: RECODE: Target variable x only has width 1.
    9 | recode x y (\"\"a\"\" = \"\"first\"\") .
      |        ^~~\"

Table: Data List
x,y,z
a,a,2.00
a,two,2.00
b,three,2.00
c,b,2.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/recode.at:332"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1088
#AT_START_1089
at_fn_group_banner 1089 'recode.at:355' \
  "RECODE crash on invalid dest variable" "          " 89
at_xfail=no
(
  printf "%s\n" "1089. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x (f1) s (a4) t (a10).
MISSING VALUES x(9)/s('xxx').
BEGIN DATA.
0, '', ''
1, a, a
2, ab, ab
3, abc, abc
END DATA.

RECODE x (1=9) INTO ".
EXECUTE.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/recode.at:372: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:372"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/recode.at:372"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1089
#AT_START_1090
at_fn_group_banner 1090 'recode.at:377' \
  "RECODE syntax errors" "                           " 89
at_xfail=no
(
  printf "%s\n" "1090. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >recode.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/n1 to n4 (F8.0) s1 (A1) s2 (A2) s3 (A3) s4 (A4).
RECODE **.
RECODE n1 **.
RECODE n1(**).
RECODE s1(**).
RECODE s1('x' THRU 'y').
RECODE n1(1=**).
RECODE n1(CONVERT).
RECODE n1(1=2)(1='x').
RECODE n1(1='x')(1=2).
RECODE s1(CONVERT)('1'='1').
RECODE n1(1=2 **).
RECODE n1(CONVERT).
RECODE s1(CONVERT) INTO n1 n2.
RECODE n1(1='1') INTO xyzzy.
RECODE n1(1='1').
RECODE s1('1'=1).
RECODE n1(1='1') INTO n2.
RECODE s1(CONVERT) INTO s2.
RECODE n1 TO n4(1='123456') INTO s1 TO s4.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/recode.at:400: pspp -O format=csv recode.sps"
at_fn_check_prepare_trace "recode.at:400"
( $at_check_trace; pspp -O format=csv recode.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"recode.sps:2.8-2.9: error: RECODE: Syntax error expecting variable name.
    2 | RECODE **.
      |        ^~\"

\"recode.sps:3.11-3.12: error: RECODE: Syntax error expecting \`('.
    3 | RECODE n1 **.
      |           ^~\"

\"recode.sps:4.11-4.12: error: RECODE: Syntax error expecting number.
    4 | RECODE n1(**).
      |           ^~\"

\"recode.sps:5.11-5.12: error: RECODE: Syntax error expecting string.
    5 | RECODE s1(**).
      |           ^~\"

\"recode.sps:6.15-6.18: error: RECODE: THRU is not allowed with string variables.
    6 | RECODE s1('x' THRU 'y').
      |               ^~~~\"

\"recode.sps:7.13-7.14: error: RECODE: Syntax error expecting output value.
    7 | RECODE n1(1=**).
      |             ^~\"

\"recode.sps:8.11-8.17: error: RECODE: CONVERT requires string input values.
    8 | RECODE n1(CONVERT).
      |           ^~~~~~~\"

recode.sps:9: error: RECODE: Output values must be all numeric or all string.

\"recode.sps:9.13: note: RECODE: This output value is numeric.
    9 | RECODE n1(1=2)(1='x').
      |             ^\"

\"recode.sps:9.18-9.20: note: RECODE: This output value is string.
    9 | RECODE n1(1=2)(1='x').
      |                  ^~~\"

recode.sps:10: error: RECODE: Output values must be all numeric or all string.

\"recode.sps:10.20: note: RECODE: This output value is numeric.
   10 | RECODE n1(1='x')(1=2).
      |                    ^\"

\"recode.sps:10.13-10.15: note: RECODE: This output value is string.
   10 | RECODE n1(1='x')(1=2).
      |             ^~~\"

recode.sps:11: error: RECODE: Output values must be all numeric or all string.

\"recode.sps:11.11-11.17: note: RECODE: This output value is numeric.
   11 | RECODE s1(CONVERT)('1'='1').
      |           ^~~~~~~\"

\"recode.sps:11.24-11.26: note: RECODE: This output value is string.
   11 | RECODE s1(CONVERT)('1'='1').
      |                        ^~~\"

\"recode.sps:12.15-12.16: error: RECODE: Syntax error expecting \`)'.
   12 | RECODE n1(1=2 **).
      |               ^~\"

\"recode.sps:13.11-13.17: error: RECODE: CONVERT requires string input values.
   13 | RECODE n1(CONVERT).
      |           ^~~~~~~\"

recode.sps:14: error: RECODE: Source and target variable counts must match.

\"recode.sps:14.8-14.9: note: RECODE: There is 1 source variable.
   14 | RECODE s1(CONVERT) INTO n1 n2.
      |        ^~\"

\"recode.sps:14.25-14.29: note: RECODE: There are 2 target variables.
   14 | RECODE s1(CONVERT) INTO n1 n2.
      |                         ^~~~~\"

recode.sps:15: error: RECODE: All string variables specified on INTO must already exist.  (Use the STRING command to create a string variable.)

\"recode.sps:15.23-15.27: note: RECODE: There is no variable named xyzzy.
   15 | RECODE n1(1='1') INTO xyzzy.
      |                       ^~~~~\"

\"recode.sps:16.10-16.16: error: RECODE: INTO is required with numeric input values and string output values.
   16 | RECODE n1(1='1').
      |          ^~~~~~~\"

\"recode.sps:17.10-17.16: error: RECODE: INTO is required with string input values and numeric output values.
   17 | RECODE s1('1'=1).
      |          ^~~~~~~\"

\"recode.sps:18.23-18.24: error: RECODE: Type mismatch: cannot store string data in numeric variable n2.
   18 | RECODE n1(1='1') INTO n2.
      |                       ^~\"

\"recode.sps:19.25-19.26: error: RECODE: Type mismatch: cannot store numeric data in string variable s2.
   19 | RECODE s1(CONVERT) INTO s2.
      |                         ^~\"

recode.sps:20: error: RECODE: At least one target variable is too narrow for the output values.

\"recode.sps:20.19-20.26: note: RECODE: This output value has width 6.
   20 | RECODE n1 TO n4(1='123456') INTO s1 TO s4.
      |                   ^~~~~~~~\"

\"recode.sps:20.29-20.41: note: RECODE: Target variable s1 only has width 1.
   20 | RECODE n1 TO n4(1='123456') INTO s1 TO s4.
      |                             ^~~~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/recode.at:400"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1090
#AT_START_1091
at_fn_group_banner 1091 'regression.at:19' \
  "LINEAR REGRESSION - basic" "                      " 90
at_xfail=no
(
  printf "%s\n" "1091. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression.sps <<'_ATEOF'
set format = F22.3.
data list notable list / v0 to v2.
filter by v0.
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.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:40: pspp -O format=csv regression.sps"
at_fn_check_prepare_trace "regression.at:40"
( $at_check_trace; pspp -O format=csv regression.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"regression.sps:16.82-16.96: warning: REGRESSION: REGRESSION with SAVE ignores FILTER.  All cases will be processed.
   16 | regression /variables=v0 v1 v2 /statistics defaults /dependent=v2 /method=enter /save=pred resid.
      |                                                                                  ^~~~~~~~~~~~~~~\"

Table: Model Summary (v2)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.971,.942,.925,1.337

Table: ANOVA (v2)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,202.753,2,101.376,56.754,.000
Residual,12.504,7,1.786,,
Total,215.256,9,,,

Table: Coefficients (v2)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
(Constant),2.191,2.357,.000,.930,.380
v0,1.813,1.053,.171,1.722,.129
v1,-3.427,.332,-1.026,-10.334,.000

Table: Data List
v0,v1,v2,RES1,PRED1
.654,7.736,-23.976,-.84,-23.13
-.131,6.143,-19.639,-.54,-19.10
.349,7.651,-25.266,-1.87,-23.40
.692,6.125,-16.571,.97,-17.54
-.074,8.246,-25.800,.40,-26.20
-.344,6.032,-17.567,1.53,-19.10
.760,9.832,-28.360,1.77,-30.13
-.470,5.344,-16.795,.18,-16.97
-.061,8.838,-29.257,-1.05,-28.21
.562,6.200,-18.582,-.54,-18.04
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1091
#AT_START_1092
at_fn_group_banner 1092 'regression.at:78' \
  "LINEAR REGRESSION - one save" "                   " 90
at_xfail=no
(
  printf "%s\n" "1092. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression.sps <<'_ATEOF'
set format = F22.3.
data list notable 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=resid.
regression /variables=v0 v1 v2 /statistics defaults /dependent=v2 /method=enter /save=pred.
list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:99: pspp -O format=csv regression.sps"
at_fn_check_prepare_trace "regression.at:99"
( $at_check_trace; pspp -O format=csv regression.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Model Summary (v2)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.971,.942,.925,1.337

Table: ANOVA (v2)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,202.753,2,101.376,56.754,.000
Residual,12.504,7,1.786,,
Total,215.256,9,,,

Table: Coefficients (v2)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
(Constant),2.191,2.357,.000,.930,.380
v0,1.813,1.053,.171,1.722,.129
v1,-3.427,.332,-1.026,-10.334,.000

Table: Model Summary (v2)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.971,.942,.925,1.337

Table: ANOVA (v2)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,202.753,2,101.376,56.754,.000
Residual,12.504,7,1.786,,
Total,215.256,9,,,

Table: Coefficients (v2)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
(Constant),2.191,2.357,.000,.930,.380
v0,1.813,1.053,.171,1.722,.129
v1,-3.427,.332,-1.026,-10.334,.000

Table: Data List
v0,v1,v2,RES1,PRED1
.654,7.736,-23.976,-.84,-23.13
-.131,6.143,-19.639,-.54,-19.10
.349,7.651,-25.266,-1.87,-23.40
.692,6.125,-16.571,.97,-17.54
-.074,8.246,-25.800,.40,-26.20
-.344,6.032,-17.567,1.53,-19.10
.760,9.832,-28.360,1.77,-30.13
-.470,5.344,-16.795,.18,-16.97
-.061,8.838,-29.257,-1.05,-28.21
.562,6.200,-18.582,-.54,-18.04
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:99"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1092
#AT_START_1093
at_fn_group_banner 1093 'regression.at:151' \
  "LINEAR REGRESSION - SAVE vs SPLITS" "             " 90
at_xfail=no
(
  printf "%s\n" "1093. $at_setup_line: testing $at_desc ..."
  $at_traceon


# Generate some test data based on a linear model
cat >gen-data.sps <<'_ATEOF'
set seed = 1.
input program.
loop #c = 1 to 20.
     compute x0 = rv.normal (0,1).
     compute x1 = rv.normal (0,2).
     compute err = rv.normal (0,0.1).
     compute y = 4 - 2 * x0 + 3 * x1 + err.
     compute g = (#c > 10).
     end case.
end loop.
end file.
end input program.

print outfile='regdata.txt' /g x0 x1 y err *.
execute.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:172: pspp -O format=csv gen-data.sps"
at_fn_check_prepare_trace "regression.at:172"
( $at_check_trace; pspp -O format=csv gen-data.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:172"
$at_failed && at_fn_log_failure
$at_traceon; }


# Use our test data to create a predictor and a residual variable
# for G == 0
cat >regression0.sps <<'_ATEOF'
data list notable file='regdata.txt' list /g x0 x1 y err *.

select if (g = 0).

regression
	   /variables = x0 x1
	   /dependent = y
	   /statistics = all
	   /save = pred resid.
	   .

print outfile='outdata-g0.txt' /g x0 x1 y err res1 pred1 *.
execute.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/regression.at:193: pspp -O format=csv regression0.sps"
at_fn_check_prepare_trace "regression.at:193"
( $at_check_trace; pspp -O format=csv regression0.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:193"
$at_failed && at_fn_log_failure
$at_traceon; }


# Use our test data to create a predictor and a residual variable
# for G == 1
cat >regression1.sps <<'_ATEOF'
data list notable file='regdata.txt' list /g x0 x1 y err *.

select if (g = 1).

regression
	   /variables = x0 x1
	   /dependent = y
	   /statistics = all
	   /save = pred resid.
	   .

print outfile='outdata-g1.txt' /g x0 x1 y err res1 pred1 *.
execute.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/regression.at:214: pspp -O format=csv regression1.sps"
at_fn_check_prepare_trace "regression.at:214"
( $at_check_trace; pspp -O format=csv regression1.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:214"
$at_failed && at_fn_log_failure
$at_traceon; }


# Use our test data to create a predictor and a residual variable
# The data is split on G
cat >regression-split.sps <<'_ATEOF'
data list notable file='regdata.txt' list /g x0 x1 y err *.

split file by g.

regression
	   /variables = x0 x1
	   /dependent = y
	   /statistics = all
	   /save = pred resid.
	   .

print outfile='outdata-split.txt' /g x0 x1 y err res1 pred1 *.
execute.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:234: pspp -O format=csv regression-split.sps"
at_fn_check_prepare_trace "regression.at:234"
( $at_check_trace; pspp -O format=csv regression-split.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:234"
$at_failed && at_fn_log_failure
$at_traceon; }


# The concatenation of G==0 and G==1 should be identical to the SPLIT data
{ set +x
printf "%s\n" "$at_srcdir/regression.at:237: cat outdata-g0.txt outdata-g1.txt | diff outdata-split.txt - "
at_fn_check_prepare_notrace 'a shell pipeline' "regression.at:237"
( $at_check_trace; cat outdata-g0.txt outdata-g1.txt | diff outdata-split.txt -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:237"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1093
#AT_START_1094
at_fn_group_banner 1094 'regression.at:244' \
  "LINEAR REGRESSION multiple dependent variables" " " 90
at_xfail=no
(
  printf "%s\n" "1094. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression.sps <<'_ATEOF'
set seed = 2.
input program.
loop #c = 1 to 200.
     compute x0 = rv.normal (0, 1).
     compute x1 = rv.normal (0, 2).
     compute err = rv.normal (0, 0.8).
     compute y = 2 - 1.5 * x0 + 8.4 * x1 + err.
     compute ycopy = y.
     end case.
end loop.
end file.
end input program.

regression
	   /variables = x0 x1
	   /dependent = y ycopy
	   /statistics = default.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:265: pspp -O format=csv regression.sps > output"
at_fn_check_prepare_trace "regression.at:265"
( $at_check_trace; pspp -O format=csv regression.sps > output
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:265"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/regression.at:267: head -16 output > first"
at_fn_check_prepare_trace "regression.at:267"
( $at_check_trace; head -16 output > first
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:267"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/regression.at:268: tail -16 output > second"
at_fn_check_prepare_trace "regression.at:268"
( $at_check_trace; tail -16 output > second
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:268"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/regression.at:270: sed -e 's/ycopy/y/g' second | diff first -"
at_fn_check_prepare_notrace 'a shell pipeline' "regression.at:270"
( $at_check_trace; sed -e 's/ycopy/y/g' second | diff first -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:270"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1094
#AT_START_1095
at_fn_group_banner 1095 'regression.at:276' \
  "LINEAR REGRESSION test of QR decomposition" "     " 90
at_xfail=no
(
  printf "%s\n" "1095. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression.sps <<'_ATEOF'
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.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:1784: pspp -O format=csv regression.sps"
at_fn_check_prepare_trace "regression.at:1784"
( $at_check_trace; pspp -O format=csv regression.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
v0,F8.0
v1,F8.0

Table: Model Summary (v0)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.05,.00,.00,8.11

Table: ANOVA (v0)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,235.23,1,235.23,3.58,.059
Residual,98438.40,1498,65.71,,
Total,98673.63,1499,,,

Table: Coefficients (v0)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
(Constant),1.24,.42,.00,2.95,.003
v1,1.37,.72,.05,1.89,.059
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1784"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1095
#AT_START_1096
at_fn_group_banner 1096 'regression.at:1809' \
  "LINEAR REGRESSION no crash on all missing" "      " 90
at_xfail=no
(
  printf "%s\n" "1096. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regcrash.sps <<'_ATEOF'
data list list /x * y.
begin data.
 . .
 . .
 . .
 . .
 . .
 . .
 . .
 . .
 . .
 . .
end data.


regression /variables=x y /dependent=y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:1829: pspp -o pspp.csv regcrash.sps"
at_fn_check_prepare_trace "regression.at:1829"
( $at_check_trace; pspp -o pspp.csv regcrash.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1829"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1096
#AT_START_1097
at_fn_group_banner 1097 'regression.at:1835' \
  "LINEAR REGRESSION missing dependent variable" "   " 90
at_xfail=no
(
  printf "%s\n" "1097. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >reg-mdv-ref.sps <<'_ATEOF'
data list notable 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
	     /statistics defaults
	     /dependent=v2
	     /method=enter.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:1859: pspp -o pspp-ref.csv reg-mdv-ref.sps"
at_fn_check_prepare_trace "regression.at:1859"
( $at_check_trace; pspp -o pspp-ref.csv reg-mdv-ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1859"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >reg-mdv.sps <<'_ATEOF'
data list notable 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
 0.5         8         9
end data

missing values v2 (9).

regression /variables=v0 v1
	     /statistics defaults
	     /dependent=v2
	     /method=enter.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:1885: pspp -o pspp.csv reg-mdv.sps"
at_fn_check_prepare_trace "regression.at:1885"
( $at_check_trace; pspp -o pspp.csv reg-mdv.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1885"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/regression.at:1887: diff pspp.csv pspp-ref.csv"
at_fn_check_prepare_trace "regression.at:1887"
( $at_check_trace; diff pspp.csv pspp-ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1887"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1097
#AT_START_1098
at_fn_group_banner 1098 'regression.at:1892' \
  "LINEAR REGRESSION with invalid syntax (and empty dataset)" "" 90
at_xfail=no
(
  printf "%s\n" "1098. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >ss.sps <<'_ATEOF'
data list notable list / v0 to v2.
begin data
end data.

regression /variables=v0 v1
	     /statistics r coeff anova
	     /dependent=v2
	     /method=enter v2.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:1905: pspp ss.sps"
at_fn_check_prepare_trace "regression.at:1905"
( $at_check_trace; pspp ss.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1905"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1098
#AT_START_1099
at_fn_group_banner 1099 'regression.at:1912' \
  "LINEAR REGRESSION coefficient confidence interval" "" 90
at_xfail=no
(
  printf "%s\n" "1099. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >conf.sps <<'_ATEOF'
set format = F22.3.

data list notable list /math female socst read science *
begin data.
    41.00       .00     57.00     57.00     47.00
    53.00      1.00     61.00     68.00     63.00
    54.00       .00     31.00     44.00     58.00
    47.00       .00     56.00     63.00     53.00
    57.00       .00     61.00     47.00     53.00
    51.00       .00     61.00     44.00     63.00
    42.00       .00     61.00     50.00     53.00
    45.00       .00     36.00     34.00     39.00
    54.00       .00     51.00     63.00     58.00
    52.00       .00     51.00     57.00     50.00
    51.00       .00     61.00     60.00     53.00
    51.00       .00     61.00     57.00     63.00
    71.00       .00     71.00     73.00     61.00
    57.00       .00     46.00     54.00     55.00
    50.00       .00     56.00     45.00     31.00
    43.00       .00     56.00     42.00     50.00
    51.00       .00     56.00     47.00     50.00
    60.00       .00     56.00     57.00     58.00
    62.00       .00     61.00     68.00     55.00
    57.00       .00     46.00     55.00     53.00
    35.00       .00     41.00     63.00     66.00
    75.00       .00     66.00     63.00     72.00
    45.00       .00     56.00     50.00     55.00
    57.00       .00     61.00     60.00     61.00
    45.00       .00     46.00     37.00     39.00
    46.00       .00     31.00     34.00     39.00
    66.00       .00     66.00     65.00     61.00
    57.00       .00     46.00     47.00     58.00
    49.00       .00     46.00     44.00     39.00
    49.00       .00     41.00     52.00     55.00
    57.00       .00     51.00     42.00     47.00
    64.00       .00     61.00     76.00     64.00
    63.00       .00     71.00     65.00     66.00
    57.00       .00     31.00     42.00     72.00
    50.00       .00     61.00     52.00     61.00
    58.00       .00     66.00     60.00     61.00
    75.00       .00     66.00     68.00     66.00
    68.00       .00     66.00     65.00     66.00
    44.00       .00     36.00     47.00     36.00
    40.00       .00     51.00     39.00     39.00
    41.00       .00     51.00     47.00     42.00
    62.00       .00     51.00     55.00     58.00
    57.00       .00     51.00     52.00     55.00
    43.00       .00     41.00     42.00     50.00
    48.00       .00     66.00     65.00     63.00
    63.00       .00     46.00     55.00     69.00
    39.00       .00     47.00     50.00     49.00
    70.00       .00     51.00     65.00     63.00
    63.00       .00     46.00     47.00     53.00
    59.00       .00     51.00     57.00     47.00
    61.00       .00     56.00     53.00     57.00
    38.00       .00     41.00     39.00     47.00
    61.00       .00     46.00     44.00     50.00
    49.00       .00     71.00     63.00     55.00
    73.00       .00     66.00     73.00     69.00
    44.00       .00     42.00     39.00     26.00
    42.00       .00     32.00     37.00     33.00
    39.00       .00     46.00     42.00     56.00
    55.00       .00     41.00     63.00     58.00
    52.00       .00     51.00     48.00     44.00
    45.00       .00     61.00     50.00     58.00
    61.00       .00     66.00     47.00     69.00
    39.00       .00     46.00     44.00     34.00
    41.00       .00     36.00     34.00     36.00
    50.00       .00     61.00     50.00     36.00
    40.00       .00     26.00     44.00     50.00
    60.00       .00     66.00     60.00     55.00
    47.00       .00     26.00     47.00     42.00
    59.00       .00     44.00     63.00     65.00
    49.00       .00     36.00     50.00     44.00
    46.00       .00     51.00     44.00     39.00
    58.00       .00     61.00     60.00     58.00
    71.00       .00     66.00     73.00     63.00
    58.00       .00     66.00     68.00     74.00
    46.00       .00     51.00     55.00     58.00
    43.00       .00     31.00     47.00     45.00
    54.00       .00     61.00     55.00     49.00
    56.00       .00     66.00     68.00     63.00
    46.00       .00     46.00     31.00     39.00
    54.00       .00     56.00     47.00     42.00
    57.00       .00     56.00     63.00     55.00
    54.00       .00     36.00     36.00     61.00
    71.00       .00     56.00     68.00     66.00
    48.00       .00     56.00     63.00     63.00
    40.00       .00     41.00     55.00     44.00
    64.00       .00     66.00     55.00     63.00
    51.00       .00     56.00     52.00     53.00
    39.00       .00     56.00     34.00     42.00
    40.00       .00     31.00     50.00     34.00
    61.00       .00     56.00     55.00     61.00
    66.00       .00     46.00     52.00     47.00
    49.00       .00     46.00     63.00     66.00
    65.00      1.00     61.00     68.00     69.00
    52.00      1.00     48.00     39.00     44.00
    46.00      1.00     51.00     44.00     47.00
    61.00      1.00     51.00     50.00     63.00
    72.00      1.00     56.00     71.00     66.00
    71.00      1.00     71.00     63.00     69.00
    40.00      1.00     41.00     34.00     39.00
    69.00      1.00     61.00     63.00     61.00
    64.00      1.00     66.00     68.00     69.00
    56.00      1.00     61.00     47.00     66.00
    49.00      1.00     41.00     47.00     33.00
    54.00      1.00     51.00     63.00     50.00
    53.00      1.00     51.00     52.00     61.00
    66.00      1.00     56.00     55.00     42.00
    67.00      1.00     56.00     60.00     50.00
    40.00      1.00     33.00     35.00     51.00
    46.00      1.00     56.00     47.00     50.00
    69.00      1.00     71.00     71.00     58.00
    40.00      1.00     56.00     57.00     61.00
    41.00      1.00     51.00     44.00     39.00
    57.00      1.00     66.00     65.00     46.00
    58.00      1.00     56.00     68.00     59.00
    57.00      1.00     66.00     73.00     55.00
    37.00      1.00     41.00     36.00     42.00
    55.00      1.00     46.00     43.00     55.00
    62.00      1.00     66.00     73.00     58.00
    64.00      1.00     56.00     52.00     58.00
    40.00      1.00     51.00     41.00     39.00
    50.00      1.00     51.00     60.00     50.00
    46.00      1.00     56.00     50.00     50.00
    53.00      1.00     56.00     50.00     39.00
    52.00      1.00     46.00     47.00     48.00
    45.00      1.00     46.00     47.00     34.00
    56.00      1.00     61.00     55.00     58.00
    45.00      1.00     56.00     50.00     44.00
    54.00      1.00     41.00     39.00     50.00
    56.00      1.00     46.00     50.00     47.00
    41.00      1.00     26.00     34.00     29.00
    54.00      1.00     56.00     57.00     50.00
    72.00      1.00     56.00     57.00     54.00
    56.00      1.00     51.00     68.00     50.00
    47.00      1.00     46.00     42.00     47.00
    49.00      1.00     66.00     61.00     44.00
    60.00      1.00     66.00     76.00     67.00
    54.00      1.00     46.00     47.00     58.00
    55.00      1.00     56.00     46.00     44.00
    33.00      1.00     41.00     39.00     42.00
    49.00      1.00     61.00     52.00     44.00
    43.00      1.00     51.00     28.00     44.00
    50.00      1.00     52.00     42.00     50.00
    52.00      1.00     51.00     47.00     39.00
    48.00      1.00     41.00     47.00     44.00
    58.00      1.00     66.00     52.00     53.00
    43.00      1.00     61.00     47.00     48.00
    41.00      1.00     31.00     50.00     55.00
    43.00      1.00     51.00     44.00     44.00
    46.00      1.00     41.00     47.00     40.00
    44.00      1.00     41.00     45.00     34.00
    43.00      1.00     46.00     47.00     42.00
    61.00      1.00     56.00     65.00     58.00
    40.00      1.00     51.00     43.00     50.00
    49.00      1.00     61.00     47.00     53.00
    56.00      1.00     66.00     57.00     58.00
    61.00      1.00     71.00     68.00     55.00
    50.00      1.00     61.00     52.00     54.00
    51.00      1.00     61.00     42.00     47.00
    42.00      1.00     41.00     42.00     42.00
    67.00      1.00     66.00     66.00     61.00
    53.00      1.00     61.00     47.00     53.00
    50.00      1.00     58.00     57.00     51.00
    51.00      1.00     31.00     47.00     63.00
    72.00      1.00     61.00     57.00     61.00
    48.00      1.00     61.00     52.00     55.00
    40.00      1.00     31.00     44.00     40.00
    53.00      1.00     61.00     50.00     61.00
    39.00      1.00     36.00     39.00     47.00
    63.00      1.00     41.00     57.00     55.00
    51.00      1.00     37.00     57.00     53.00
    45.00      1.00     43.00     42.00     50.00
    39.00      1.00     61.00     47.00     47.00
    42.00      1.00     39.00     42.00     31.00
    62.00      1.00     51.00     60.00     61.00
    44.00      1.00     51.00     44.00     35.00
    65.00      1.00     66.00     63.00     54.00
    63.00      1.00     71.00     65.00     55.00
    54.00      1.00     41.00     39.00     53.00
    45.00      1.00     36.00     50.00     58.00
    60.00      1.00     51.00     52.00     56.00
    49.00      1.00     51.00     60.00     50.00
    48.00      1.00     51.00     44.00     39.00
    57.00      1.00     61.00     52.00     63.00
    55.00      1.00     61.00     55.00     50.00
    66.00      1.00     56.00     50.00     66.00
    64.00      1.00     71.00     65.00     58.00
    55.00      1.00     51.00     52.00     53.00
    42.00      1.00     36.00     47.00     42.00
    56.00      1.00     61.00     63.00     55.00
    53.00      1.00     66.00     50.00     53.00
    41.00      1.00     41.00     42.00     42.00
    42.00      1.00     41.00     36.00     50.00
    53.00      1.00     56.00     50.00     55.00
    42.00      1.00     51.00     41.00     34.00
    60.00      1.00     56.00     47.00     50.00
    52.00      1.00     56.00     55.00     42.00
    38.00      1.00     46.00     42.00     36.00
    57.00      1.00     52.00     57.00     55.00
    58.00      1.00     61.00     55.00     58.00
    65.00      1.00     61.00     63.00     53.00
end data.

regression
 /variables = math female socst read
 /statistics = coeff r anova ci (95)
 /dependent = science
 /method = enter
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:2128: pspp -O format=csv conf.sps"
at_fn_check_prepare_trace "regression.at:2128"
( $at_check_trace; pspp -O format=csv conf.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Model Summary (science)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.699,.489,.479,7.148

Table: ANOVA (science)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,9543.721,4,2385.930,46.695,.000
Residual,9963.779,195,51.096,,
Total,19507.500,199,,,

Table: Coefficients (science)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.,95% Confidence Interval for B,
,B,Std. Error,Beta,,,Lower Bound,Upper Bound
(Constant),12.325,3.194,.000,3.859,.000,6.027,18.624
math,.389,.074,.368,5.252,.000,.243,.535
female,-2.010,1.023,-.101,-1.965,.051,-4.027,.007
socst,.050,.062,.054,.801,.424,-.073,.173
read,.335,.073,.347,4.607,.000,.192,.479
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:2128"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1099
#AT_START_1100
at_fn_group_banner 1100 'regression.at:2154' \
  "LINEAR REGRESSION crash with long string variables" "" 90
at_xfail=no
(
  printf "%s\n" "1100. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression.sps <<'_ATEOF'
SET DECIMAL=DOT.

DATA LIST notable LIST /text (A24) Y * X1 *
BEGIN DATA.
V00276601 0.00 90.00
V00292909 10.00 30.00
V00291204 20.00 20.00
V00300070 0.00 90.00
END DATA.

REGRESSION
/VARIABLES= Y
/DEPENDENT= X1
/METHOD=ENTER
/STATISTICS=COEFF R ANOVA
/SAVE= RESID.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/regression.at:2175: pspp -o pspp.csv regression.sps"
at_fn_check_prepare_trace "regression.at:2175"
( $at_check_trace; pspp -o pspp.csv regression.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:2175"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/regression.at:2176: cat pspp.csv"
at_fn_check_prepare_trace "regression.at:2176"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Model Summary (X1)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.95,.89,.84,15.08

Table: ANOVA (X1)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,3820.45,1,3820.45,16.81,.055
Residual,454.55,2,227.27,,
Total,4275.00,3,,,

Table: Coefficients (X1)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
(Constant),85.45,10.16,.00,8.41,.004
Y,-3.73,.91,-.95,-4.10,.055

Table: Data List
text,Y,X1,RES1
V00276601,.00,90.00,4.55
V00292909,10.00,30.00,-18.18
V00291204,20.00,20.00,9.09
V00300070,.00,90.00,4.55
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:2176"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1100
#AT_START_1101
at_fn_group_banner 1101 'regression.at:2204' \
  "LINEAR REGRESSION -- Empty Parentheses" "         " 90
at_xfail=no
(
  printf "%s\n" "1101. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >empty-parens.sps <<'_ATEOF'
set format = F22.3.

data list notable list /math female socst read science *
begin data.
    58.00      1.00     61.00     55.00     58.00
    65.00      1.00     61.00     63.00     53.00
end data.

regression
 /variables = math female socst read
 /statistics = coeff r anova ci ()
 /dependent = science
 /method = enter
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:2222: pspp -o pspp.csv empty-parens.sps"
at_fn_check_prepare_trace "regression.at:2222"
( $at_check_trace; pspp -o pspp.csv empty-parens.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/regression.at:2222"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1101
#AT_START_1102
at_fn_group_banner 1102 'regression.at:2229' \
  "LINEAR REGRESSION varibles on ENTER subcommand" " " 90
at_xfail=no
(
  printf "%s\n" "1102. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression.sps <<'_ATEOF'
SET FORMAT=F10.3.

DATA LIST notable LIST /number * value *.
BEGIN DATA
 16 7.25
  0  .00
  1  .10
  9 27.9
  0  .00
  7 3.65
 14 16.8
 24 9.15
  0  .00
 24 19.0
  7 4.05
 12 7.90
  6  .75
 11 1.40
  0  .00
  3 2.30
 12 7.60
 11 6.80
 16 8.65
END DATA.

REGRESSION
  /STATISTICS COEFF R ANOVA
  /DEPENDENT value
  /METHOD=ENTER number.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/regression.at:2263: pspp -O format=csv regression.sps"
at_fn_check_prepare_trace "regression.at:2263"
( $at_check_trace; pspp -O format=csv regression.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Model Summary (value)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.612,.374,.338,6.176

Table: ANOVA (value)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,388.065,1,388.065,10.173,.005
Residual,648.498,17,38.147,,
Total,1036.563,18,,,

Table: Coefficients (value)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
(Constant),.927,2.247,.000,.413,.685
number,.611,.192,.612,3.189,.005
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:2263"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1102
#AT_START_1103
at_fn_group_banner 1103 'regression.at:2285' \
  "LINEAR REGRESSION /ORIGIN" "                      " 90
at_xfail=no
(
  printf "%s\n" "1103. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression-origin.sps <<'_ATEOF'
SET FORMAT=F10.3.

DATA LIST notable LIST /number * value *.
BEGIN DATA
 16 7.25
  0  .00
  1  .10
  9 27.9
  0  .00
  7 3.65
 14 16.8
 24 9.15
  0  .00
 24 19.0
  7 4.05
 12 7.90
  6  .75
 11 1.40
  0  .00
  3 2.30
 12 7.60
 11 6.80
 16 8.65
END DATA.

REGRESSION
  /STATISTICS COEFF R ANOVA
  /DEPENDENT value
  /ORIGIN
  /METHOD=ENTER number.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/regression.at:2320: pspp -O format=csv regression-origin.sps"
at_fn_check_prepare_trace "regression.at:2320"
( $at_check_trace; pspp -O format=csv regression-origin.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Model Summary (value)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.802,.643,.622,6.032

Table: ANOVA (value)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,1181.726,1,1181.726,32.475,.000
Residual,654.989,18,36.388,,
Total,1836.715,19,,,

Table: Coefficients (value)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
number,.672,.118,.802,5.699,.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:2320"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1103
#AT_START_1104
at_fn_group_banner 1104 'regression.at:2342' \
  "REGRESSION tutorial example" "                    " 90
at_xfail=no
(
  printf "%s\n" "1104. $at_setup_line: testing $at_desc ..."
  $at_traceon

cp $top_srcdir/examples/repairs.sav .
cat >regression.sps <<'_ATEOF'
GET FILE='repairs.sav'.
REGRESSION /VARIABLES=mtbf duty_cycle /DEPENDENT=mttr.
REGRESSION /VARIABLES=mtbf /DEPENDENT=mttr.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/regression.at:2350: pspp -O format=csv regression.sps"
at_fn_check_prepare_trace "regression.at:2350"
( $at_check_trace; pspp -O format=csv regression.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Model Summary (Mean time to repair (hours) )
R,R Square,Adjusted R Square,Std. Error of the Estimate
.94,.89,.88,6.54

Table: ANOVA (Mean time to repair (hours) )
,Sum of Squares,df,Mean Square,F,Sig.
Regression,9576.26,2,4788.13,111.94,.000
Residual,1154.94,27,42.78,,
Total,10731.20,29,,,

Table: Coefficients (Mean time to repair (hours) )
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
(Constant),10.59,3.11,.00,3.40,.002
Mean time between failures (months) ,3.02,.20,.95,14.88,.000
Ratio of working to non-working time,-1.12,3.69,-.02,-.30,.763

Table: Model Summary (Mean time to repair (hours) )
R,R Square,Adjusted R Square,Std. Error of the Estimate
.94,.89,.89,6.43

Table: ANOVA (Mean time to repair (hours) )
,Sum of Squares,df,Mean Square,F,Sig.
Regression,9572.30,1,9572.30,231.28,.000
Residual,1158.90,28,41.39,,
Total,10731.20,29,,,

Table: Coefficients (Mean time to repair (hours) )
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.
,B,Std. Error,Beta,,
(Constant),9.90,2.10,.00,4.71,.000
Mean time between failures (months) ,3.01,.20,.94,15.21,.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:2350"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1104
#AT_START_1105
at_fn_group_banner 1105 'regression.at:2388' \
  "LINEAR REGRESSION vif" "                          " 90
at_xfail=no
(
  printf "%s\n" "1105. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression-vif.sps <<'_ATEOF'
SET FORMAT=F10.3.

data list notable  list /competence_x1 motivation_x2 performance_y.
begin data
32   34   36
35   37   39
38   45   49
31   41   41
36   40   38
32   38   36
33   39   37
31   40   41
30   37   40
35   37   43
31   34   36
34   32   35
31   42   34
25   36   40
35   42   40
36   41   44
30   38   32
34   41   41
34   41   44
22   27   26
27   26   33
30   30   35
30   35   37
37   39   44
29   35   36
31   35   29
31   45   41
29   30   32
29   35   36
31   37   37
36   45   42
32   44   39
27   26   31
33   39   35
20   25   28
30   36   39
27   37   39
25   39   36
32   38   38
32   38   35
end data.

regression /variables=competence_x1 motivation_x2
	/statistics=defaults tol
	/dependent=performance_y
	.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/regression.at:2443: pspp -O format=csv regression-vif.sps"
at_fn_check_prepare_trace "regression.at:2443"
( $at_check_trace; pspp -O format=csv regression-vif.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Model Summary (performance_y)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.785,.616,.595,2.980

Table: ANOVA (performance_y)
,Sum of Squares,df,Mean Square,F,Sig.
Regression,526.494,2,263.247,29.641,.000
Residual,328.606,37,8.881,,
Total,855.100,39,,,

Table: Coefficients (performance_y)
,Unstandardized Coefficients,,Standardized Coefficients,t,Sig.,Collinearity Statistics,
,B,Std. Error,Beta,,,Tolerance,VIF
(Constant),7.220,4.020,.000,1.796,.080,,
competence_x1,.432,.166,.358,2.609,.013,.552,1.812
motivation_x2,.453,.125,.499,3.636,.001,.552,1.812
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/regression.at:2443"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1105
#AT_START_1106
at_fn_group_banner 1106 'regression.at:2464' \
  "REGRESSION syntax errors" "                       " 90
at_xfail=no
(
  printf "%s\n" "1106. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >regression.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
REGRESSION VARIABLES=**.
REGRESSION METHOD=ENTER x/VARIABLES.
REGRESSION DEPENDENT=x/VARIABLES.
REGRESSION DEPENDENT=**.
REGRESSION METHOD=**.
REGRESSION METHOD=ENTER **.
REGRESSION STATISTICS=**.
REGRESSION STATISTICS=CI(**).
REGRESSION STATISTICS=CI(1 **).
REGRESSION SAVE=**.
REGRESSION **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/regression.at:2479: pspp -O format=csv regression.sps"
at_fn_check_prepare_trace "regression.at:2479"
( $at_check_trace; pspp -O format=csv regression.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"regression.sps:2.22-2.23: error: REGRESSION: Syntax error expecting variable name.
    2 | REGRESSION VARIABLES=**.
      |                      ^~\"

\"regression.sps:3.27-3.35: error: REGRESSION: VARIABLES may not appear after METHOD.
    3 | REGRESSION METHOD=ENTER x/VARIABLES.
      |                           ^~~~~~~~~\"

\"regression.sps:4.24-4.32: error: REGRESSION: VARIABLES may not appear after DEPENDENT.
    4 | REGRESSION DEPENDENT=x/VARIABLES.
      |                        ^~~~~~~~~\"

\"regression.sps:5.22-5.23: error: REGRESSION: Syntax error expecting variable name.
    5 | REGRESSION DEPENDENT=**.
      |                      ^~\"

\"regression.sps:6.19-6.20: error: REGRESSION: Syntax error expecting ENTER.
    6 | REGRESSION METHOD=**.
      |                   ^~\"

\"regression.sps:7.25-7.26: error: REGRESSION: Syntax error expecting variable name.
    7 | REGRESSION METHOD=ENTER **.
      |                         ^~\"

\"regression.sps:8.23-8.24: error: REGRESSION: Syntax error expecting ALL, DEFAULTS, R, COEFF, ANOVA, BCOV, TOL, or CI.
    8 | REGRESSION STATISTICS=**.
      |                       ^~\"

\"regression.sps:9.26-9.27: error: REGRESSION: Syntax error expecting number.
    9 | REGRESSION STATISTICS=CI(**).
      |                          ^~\"

\"regression.sps:10.28-10.29: error: REGRESSION: Syntax error expecting \`)'.
   10 | REGRESSION STATISTICS=CI(1 **).
      |                            ^~\"

\"regression.sps:11.17-11.18: error: REGRESSION: Syntax error expecting PRED or RESID.
   11 | REGRESSION SAVE=**.
      |                 ^~\"

\"regression.sps:12.12-12.13: error: REGRESSION: Syntax error expecting VARIABLES, DEPENDENT, ORIGIN, NOORIGIN, METHOD, STATISTICS, or SAVE.
   12 | REGRESSION **.
      |            ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/regression.at:2479"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1106
#AT_START_1107
at_fn_group_banner 1107 'reliability.at:19' \
  "RELIABILITY" "                                    " 91
at_xfail=no
(
  printf "%s\n" "1107. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >reliability.sps <<'_ATEOF'
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
  /STATISTICS = DESCRIPTIVES COVARIANCES
 .


RELIABILITY
  /VARIABLES=var6 var8 var15 var17
  .
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/reliability.at:202: pspp -o pspp.csv -o pspp.txt reliability.sps"
at_fn_check_prepare_trace "reliability.at:202"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt reliability.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "reliability.sps:174.4-174.40: warning: RELIABILITY: The STATISTICS subcommand is not yet implemented.  No statistics will be produced.
  174 |   /STATISTICS = DESCRIPTIVES COVARIANCES
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reliability.at:202"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/reliability.at:207: cat pspp.csv"
at_fn_check_prepare_trace "reliability.at:207"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Scale: Everything

Table: Case Processing Summary
Cases,N,Percent
Valid,131,92.9%
Excluded,10,7.1%
Total,141,100.0%

Table: Reliability Statistics
Cronbach's Alpha,N of Items
.75,4

Scale: Nothing

Table: Case Processing Summary
Cases,N,Percent
Valid,131,92.9%
Excluded,10,7.1%
Total,141,100.0%

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

\"reliability.sps:174.4-174.40: warning: RELIABILITY: The STATISTICS subcommand is not yet implemented.  No statistics will be produced.
  174 |   /STATISTICS = DESCRIPTIVES COVARIANCES
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

Scale: Totals

Table: Case Processing Summary
Cases,N,Percent
Valid,131,92.9%
Excluded,10,7.1%
Total,141,100.0%

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
Cases,N,Percent
Valid,131,92.9%
Excluded,10,7.1%
Total,141,100.0%

Table: Reliability Statistics
Cronbach's Alpha,N of Items
.75,4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reliability.at:207"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1107
#AT_START_1108
at_fn_group_banner 1108 'reliability.at:278' \
  "RELIABILITY bad syntax" "                         " 91
at_xfail=no
(
  printf "%s\n" "1108. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >bad-syntax.sps <<'_ATEOF'
data list notable list /x * y *.
begin data.
1 10
2 20
3 30
4 50
5 50
end data.

* This syntax is incorrect
reliability x y.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/reliability.at:293: pspp -O format=csv bad-syntax.sps"
at_fn_check_prepare_trace "reliability.at:293"
( $at_check_trace; pspp -O format=csv bad-syntax.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/reliability.at:293"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1108
#AT_START_1109
at_fn_group_banner 1109 'reliability.at:298' \
  "RELIABILITY bad syntax 2" "                       " 91
at_xfail=no
(
  printf "%s\n" "1109. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >bad-syntax.sps <<'_ATEOF'
new file.
data list notable list /f01 f02 f03 f04 f05 f06 f07 f08 f09 f10 *.
begin data.
end data.

* This syntax is incorrect
reliability variables=f01 to f10/asdfj.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/reliability.at:308: pspp -O format=csv bad-syntax.sps"
at_fn_check_prepare_trace "reliability.at:308"
( $at_check_trace; pspp -O format=csv bad-syntax.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/reliability.at:308"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1109
#AT_START_1110
at_fn_group_banner 1110 'reliability.at:313' \
  "RELIABILITY crash with no data" "                 " 91
at_xfail=no
(
  printf "%s\n" "1110. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >reliability.sps <<'_ATEOF'
new file.
data list notable list /f01 f02 f03 f04 f05 f06 f07 f08 f09 f10 *.
begin data.
end data.

reliability variables=f01 to f10.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/reliability.at:322: pspp -O format=csv reliability.sps"
at_fn_check_prepare_trace "reliability.at:322"
( $at_check_trace; pspp -O format=csv reliability.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reliability.at:322"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1110
#AT_START_1111
at_fn_group_banner 1111 'reliability.at:331' \
  "RELIABILITY tutorial example" "                   " 91
at_xfail=no
(
  printf "%s\n" "1111. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >tut-example.sps <<'_ATEOF'
get file='hotel.sav'.

compute v3 = 6 - v3.
compute v5 = 6 - v5.

reliability variables = v1 v3 v4.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/reliability.at:341: ln -s \$top_srcdir/examples/hotel.sav ."
at_fn_check_prepare_dynamic "ln -s $top_srcdir/examples/hotel.sav ." "reliability.at:341"
( $at_check_trace; ln -s $top_srcdir/examples/hotel.sav .
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reliability.at:341"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/reliability.at:342: pspp -o pspp.csv -o pspp.txt tut-example.sps"
at_fn_check_prepare_trace "reliability.at:342"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt tut-example.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reliability.at:342"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/reliability.at:343: cat pspp.csv"
at_fn_check_prepare_trace "reliability.at:343"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Scale: ANY

Table: Case Processing Summary
Cases,N,Percent
Valid,17,100.0%
Excluded,0,.0%
Total,17,100.0%

Table: Reliability Statistics
Cronbach's Alpha,N of Items
.81,3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reliability.at:343"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1111
#AT_START_1112
at_fn_group_banner 1112 'reliability.at:358' \
  "RELIABILITY syntax errors" "                      " 91
at_xfail=no
(
  printf "%s\n" "1112. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >reliability.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
RELIABILITY **.
RELIABILITY VARIABLES=**.
RELIABILITY VARIABLES=x/ **.
RELIABILITY VARIABLES=x y/SCALE **.
RELIABILITY VARIABLES=x y/SCALE(**).
RELIABILITY VARIABLES=x y/SCALE('a' **).
RELIABILITY VARIABLES=x y/SCALE('a')=**.
RELIABILITY VARIABLES=x y/MODEL SPLIT(**).
RELIABILITY VARIABLES=x y/MODEL SPLIT(1 **).
RELIABILITY VARIABLES=x y/MODEL **.
RELIABILITY VARIABLES=x y/SUMMARY **.
RELIABILITY VARIABLES=x y/MISSING=**.
RELIABILITY VARIABLES=x y/STATISTICS=x y zz y/ **.
RELIABILITY VARIABLES=x y/MODEL SPLIT(5).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/reliability.at:376: pspp -O format=csv reliability.sps"
at_fn_check_prepare_trace "reliability.at:376"
( $at_check_trace; pspp -O format=csv reliability.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"reliability.sps:2.13-2.14: error: RELIABILITY: Syntax error expecting VARIABLES.
    2 | RELIABILITY **.
      |             ^~\"

\"reliability.sps:3.23-3.24: error: RELIABILITY: Syntax error expecting variable name.
    3 | RELIABILITY VARIABLES=**.
      |                       ^~\"

\"reliability.sps:4.23: warning: RELIABILITY: Reliability on a single variable is not useful.
    4 | RELIABILITY VARIABLES=x/ **.
      |                       ^\"

\"reliability.sps:4.26-4.27: error: RELIABILITY: Syntax error expecting SCALE, MODEL, SUMMARY, MISSING, or STATISTICS.
    4 | RELIABILITY VARIABLES=x/ **.
      |                          ^~\"

\"reliability.sps:5.33-5.34: error: RELIABILITY: Syntax error expecting \`('.
    5 | RELIABILITY VARIABLES=x y/SCALE **.
      |                                 ^~\"

\"reliability.sps:6.33-6.34: error: RELIABILITY: Syntax error expecting string.
    6 | RELIABILITY VARIABLES=x y/SCALE(**).
      |                                 ^~\"

\"reliability.sps:7.37-7.38: error: RELIABILITY: Syntax error expecting \`)'.
    7 | RELIABILITY VARIABLES=x y/SCALE('a' **).
      |                                     ^~\"

\"reliability.sps:8.38-8.39: error: RELIABILITY: Syntax error expecting variable name.
    8 | RELIABILITY VARIABLES=x y/SCALE('a')=**.
      |                                      ^~\"

\"reliability.sps:9.39-9.40: error: RELIABILITY: Syntax error expecting number.
    9 | RELIABILITY VARIABLES=x y/MODEL SPLIT(**).
      |                                       ^~\"

\"reliability.sps:10.41-10.42: error: RELIABILITY: Syntax error expecting \`)'.
   10 | RELIABILITY VARIABLES=x y/MODEL SPLIT(1 **).
      |                                         ^~\"

\"reliability.sps:11.33-11.34: error: RELIABILITY: Syntax error expecting ALPHA or SPLIT.
   11 | RELIABILITY VARIABLES=x y/MODEL **.
      |                                 ^~\"

\"reliability.sps:12.35-12.36: error: RELIABILITY: Syntax error expecting TOTAL or ALL.
   12 | RELIABILITY VARIABLES=x y/SUMMARY **.
      |                                   ^~\"

\"reliability.sps:13.35-13.36: error: RELIABILITY: Syntax error expecting INCLUDE or EXCLUDE.
   13 | RELIABILITY VARIABLES=x y/MISSING=**.
      |                                   ^~\"

\"reliability.sps:14.27-14.45: warning: RELIABILITY: The STATISTICS subcommand is not yet implemented.  No statistics will be produced.
   14 | RELIABILITY VARIABLES=x y/STATISTICS=x y zz y/ **.
      |                           ^~~~~~~~~~~~~~~~~~~\"

\"reliability.sps:14.48-14.49: error: RELIABILITY: Syntax error expecting SCALE, MODEL, SUMMARY, MISSING, or STATISTICS.
   14 | RELIABILITY VARIABLES=x y/STATISTICS=x y zz y/ **.
      |                                                ^~\"

\"reliability.sps:15.39: error: RELIABILITY: The split point must be less than the number of variables.
   15 | RELIABILITY VARIABLES=x y/MODEL SPLIT(5).
      |                                       ^\"

\"reliability.sps:15.23-15.25: note: RELIABILITY: There are 2 variables.
   15 | RELIABILITY VARIABLES=x y/MODEL SPLIT(5).
      |                       ^~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/reliability.at:376"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1112
#AT_START_1113
at_fn_group_banner 1113 'rename-variables.at:19' \
  "RENAME VARIABLES" "                               " 92
at_xfail=no
(
  printf "%s\n" "1113. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rename-variables.sps <<'_ATEOF'
DATA LIST LIST /brakeFluid y auxiliary warp (F2.0).
BEGIN DATA.
1 3 5 9
2 3 6 10
3 3 7 11
4 3 8 11
END DATA.

LIST.

RENAME VARIABLES brakeFluid=applecarts y=bananamobiles.
RENAME VARIABLES (warp auxiliary=foobar xyzzy).

LIST.

SAVE /OUTFILE='rename.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/rename-variables.at:38: pspp -O format=csv rename-variables.sps"
at_fn_check_prepare_trace "rename-variables.at:38"
( $at_check_trace; pspp -O format=csv rename-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
brakeFluid,F2.0
y,F2.0
auxiliary,F2.0
warp,F2.0

Table: Data List
brakeFluid,y,auxiliary,warp
1,3,5,9
2,3,6,10
3,3,7,11
4,3,8,11

Table: Data List
applecarts,bananamobiles,xyzzy,foobar
1,3,5,9
2,3,6,10
3,3,7,11
4,3,8,11
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rename-variables.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/rename-variables.at:60: grep 'bBrRaAkKeE' rename.sav"
at_fn_check_prepare_trace "rename-variables.at:60"
( $at_check_trace; grep 'bBrRaAkKeE' rename.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:

at_fn_check_status 1 $at_status "$at_srcdir/rename-variables.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1113
#AT_START_1114
at_fn_group_banner 1114 'rename-variables.at:64' \
  "RENAME VARIABLES -- multiple sets" "              " 92
at_xfail=no
(
  printf "%s\n" "1114. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rename-variables.sps <<'_ATEOF'
data list list /a b c d  e *.
begin data.
1 2 3 4 5
end data.

rename variables (a b=x y) (c d e=z zz zzz).

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/rename-variables.at:76: pspp -O format=csv rename-variables.sps"
at_fn_check_prepare_trace "rename-variables.at:76"
( $at_check_trace; pspp -O format=csv rename-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
a,F8.0
b,F8.0
c,F8.0
d,F8.0
e,F8.0

Table: Data List
x,y,z,zz,zzz
1.00,2.00,3.00,4.00,5.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rename-variables.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1114
#AT_START_1115
at_fn_group_banner 1115 'rename-variables.at:93' \
  "RENAME VARIABLES -- invalid syntax 1" "           " 92
at_xfail=no
(
  printf "%s\n" "1115. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >rename-variables.sps <<'_ATEOF'
DATA LIST LIST /brakeFluid y auxiliary warp (F2.0).
RENAME VARIABLES warp auxiliary=foobar xyzzy.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/rename-variables.at:100: pspp -o pspp.csv rename-variables.sps"
at_fn_check_prepare_trace "rename-variables.at:100"
( $at_check_trace; pspp -o pspp.csv rename-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "rename-variables.sps:2.23-2.31: error: RENAME VARIABLES: Syntax error expecting \`='.
    2 | RENAME VARIABLES warp auxiliary=foobar xyzzy.
      |                       ^~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/rename-variables.at:100"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1115
#AT_START_1116
at_fn_group_banner 1116 'rename-variables.at:107' \
  "RENAME VARIABLES -- invalid syntax 2" "           " 92
at_xfail=no
(
  printf "%s\n" "1116. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rename-variables.sps <<'_ATEOF'
DATA LIST LIST /brakeFluid y auxiliary warp (F2.0).
RENAME VARIABLES (brakeFluid=applecarts y=bananamobiles).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/rename-variables.at:113: pspp -o pspp.csv rename-variables.sps"
at_fn_check_prepare_trace "rename-variables.at:113"
( $at_check_trace; pspp -o pspp.csv rename-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "rename-variables.sps:2.19-2.41: error: RENAME VARIABLES: Differing number of variables in old name list (1) and in new name list (2).
    2 | RENAME VARIABLES (brakeFluid=applecarts y=bananamobiles).
      |                   ^~~~~~~~~~~~~~~~~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/rename-variables.at:113"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1116
#AT_START_1117
at_fn_group_banner 1117 'rename-variables.at:123' \
  "RENAME VARIABLES -- invalid syntax 3" "           " 92
at_xfail=no
(
  printf "%s\n" "1117. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >rename-variables.sps <<'_ATEOF'
DATA LIST NOTABLE LIST /z y p q (F2.0).
BEGIN DATA.
4 3 8 11
END DATA.

RENAME VARIABLES z=a y}bqnanamobiles.

LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/rename-variables.at:135: pspp -O format=csv rename-variables.sps"
at_fn_check_prepare_trace "rename-variables.at:135"
( $at_check_trace; pspp -O format=csv rename-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/rename-variables.at:135"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1117
#AT_START_1118
at_fn_group_banner 1118 'roc.at:19' \
  "ROC free distribution" "                          " 93
at_xfail=no
(
  printf "%s\n" "1118. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >roc.sps <<'_ATEOF'
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 .
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/roc.at:46: pspp -o pspp.csv roc.sps"
at_fn_check_prepare_trace "roc.at:46"
( $at_check_trace; pspp -o pspp.csv roc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/roc.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/roc.at:47: cat pspp.csv"
at_fn_check_prepare_trace "roc.at:47"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Summary
a,Valid N (listwise),
,Unweighted,Weighted
Positive,5,50.000
Negative,5,50.000

Table: Area Under the Curve
Variable under test,Area,Std. Error,Asymptotic Sig.,Asymp. 99% Confidence Interval,
,,,,Lower Bound,Upper Bound
x,.910,.030,.000,.839,.981

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
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/roc.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1118
#AT_START_1119
at_fn_group_banner 1119 'roc.at:70' \
  "ROC negative exponential distribution" "          " 93
at_xfail=no
(
  printf "%s\n" "1119. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >roc.sps <<'_ATEOF'
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 .
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/roc.at:97: pspp -o pspp.csv roc.sps"
at_fn_check_prepare_trace "roc.at:97"
( $at_check_trace; pspp -o pspp.csv roc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/roc.at:97"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/roc.at:98: cat pspp.csv"
at_fn_check_prepare_trace "roc.at:98"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Summary
a,Valid N (listwise),
,Unweighted,Weighted
Positive,5,50.000
Negative,5,50.000

Table: Area Under the Curve
Variable under test,Area,Std. Error,Asymptotic Sig.,Asymp. 95% Confidence Interval,
,,,,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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/roc.at:98"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1119
#AT_START_1120
at_fn_group_banner 1120 'roc.at:129' \
  "ROC with anomaly" "                               " 93
at_xfail=no
(
  printf "%s\n" "1120. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >roc.sps <<'_ATEOF'
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 anomaly"
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
	.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/roc.at:169: pspp -o pspp.csv -o pspp.txt roc.sps"
at_fn_check_prepare_trace "roc.at:169"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt roc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/roc.at:169"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/roc.at:170: cat pspp.csv"
at_fn_check_prepare_trace "roc.at:170"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Case Summary
a,Valid N (listwise),
,Unweighted,Weighted
Positive,14,14.000
Negative,14,14.000

Table: Area Under the Curve
Variable under test,Area,Std. Error,Asymptotic Sig.,Asymp. 95% Confidence Interval,
,,,,Lower Bound,Upper Bound
x,.490,.111,.927,.307,.673
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/roc.at:170"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1120
#AT_START_1121
at_fn_group_banner 1121 'roc.at:187' \
  "ROC crash on no state variable" "                 " 93
at_xfail=no
(
  printf "%s\n" "1121. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >roc.sps <<'_ATEOF'
data list notable list /x * y * w * a *.
begin data.
5 5 1  0
end data.


roc x y By(a (1)
 .
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/roc.at:199: pspp -o pspp.csv roc.sps"
at_fn_check_prepare_trace "roc.at:199"
( $at_check_trace; pspp -o pspp.csv roc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/roc.at:199"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1121
#AT_START_1122
at_fn_group_banner 1122 'roc.at:204' \
  "ROC crash on invalid syntax" "                    " 93
at_xfail=no
(
  printf "%s\n" "1122. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >roc.sps <<'_ATEOF'
data list notable list /x * y * a *.
bggin data.
1 1 2
1 2 28
end data.


roc x y by a (1)
	/criteria = ci(y5)
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/roc.at:217: pspp -O format=csv roc.sps"
at_fn_check_prepare_trace "roc.at:217"
( $at_check_trace; pspp -O format=csv roc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/roc.at:217"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1122
#AT_START_1123
at_fn_group_banner 1123 'roc.at:221' \
  "ROC syntax errors" "                              " 93
at_xfail=no
(
  printf "%s\n" "1123. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >roc.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
ROC **.
ROC x **.
ROC x BY **.
ROC x BY y **.
ROC x BY y(**).
ROC x BY y(5 **).
ROC x BY y(5)/MISSING=**.
ROC x BY y(5)/PLOT=CURVE(**).
ROC x BY y(5)/PLOT=CURVE(REFERENCE **).
ROC x BY y(5)/PLOT=**.
ROC x BY y(5)/PRINT=**.
ROC x BY y(5)/CRITERIA=CUTOFF **.
ROC x BY y(5)/CRITERIA=CUTOFF(**).
ROC x BY y(5)/CRITERIA=CUTOFF(INCLUDE **).
ROC x BY y(5)/CRITERIA=TESTPOS **.
ROC x BY y(5)/CRITERIA=TESTPOS(**).
ROC x BY y(5)/CRITERIA=TESTPOS(LARGE **).
ROC x BY y(5)/CRITERIA=CI **.
ROC x BY y(5)/CRITERIA=CI(**).
ROC x BY y(5)/CRITERIA=CI(5 **).
ROC x BY y(5)/CRITERIA=DISTRIBUTION **.
ROC x BY y(5)/CRITERIA=DISTRIBUTION(**).
ROC x BY y(5)/CRITERIA=DISTRIBUTION(FREE **).
ROC x BY y(5)/CRITERIA=**.
ROC x BY y(5)/ **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/roc.at:250: pspp -O format=csv roc.sps"
at_fn_check_prepare_trace "roc.at:250"
( $at_check_trace; pspp -O format=csv roc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"roc.sps:2.5-2.6: error: ROC: Syntax error expecting variable name.
    2 | ROC **.
      |     ^~\"

\"roc.sps:3.7-3.8: error: ROC: Syntax error expecting \`BY'.
    3 | ROC x **.
      |       ^~\"

\"roc.sps:4.10-4.11: error: ROC: Syntax error expecting variable name.
    4 | ROC x BY **.
      |          ^~\"

\"roc.sps:5.12-5.13: error: ROC: Syntax error expecting \`('.
    5 | ROC x BY y **.
      |            ^~\"

\"roc.sps:6.12-6.13: error: ROC: Syntax error expecting number.
    6 | ROC x BY y(**).
      |            ^~\"

\"roc.sps:7.14-7.15: error: ROC: Syntax error expecting \`)'.
    7 | ROC x BY y(5 **).
      |              ^~\"

\"roc.sps:8.23-8.24: error: ROC: Syntax error expecting INCLUDE or EXCLUDE.
    8 | ROC x BY y(5)/MISSING=**.
      |                       ^~\"

\"roc.sps:9.26-9.27: error: ROC: Syntax error expecting REFERENCE.
    9 | ROC x BY y(5)/PLOT=CURVE(**).
      |                          ^~\"

\"roc.sps:10.36-10.37: error: ROC: Syntax error expecting \`)'.
   10 | ROC x BY y(5)/PLOT=CURVE(REFERENCE **).
      |                                    ^~\"

\"roc.sps:11.20-11.21: error: ROC: Syntax error expecting CURVE or NONE.
   11 | ROC x BY y(5)/PLOT=**.
      |                    ^~\"

\"roc.sps:12.21-12.22: error: ROC: Syntax error expecting SE or COORDINATES.
   12 | ROC x BY y(5)/PRINT=**.
      |                     ^~\"

\"roc.sps:13.31-13.32: error: ROC: Syntax error expecting \`('.
   13 | ROC x BY y(5)/CRITERIA=CUTOFF **.
      |                               ^~\"

\"roc.sps:14.31-14.32: error: ROC: Syntax error expecting INCLUDE or EXCLUDE.
   14 | ROC x BY y(5)/CRITERIA=CUTOFF(**).
      |                               ^~\"

\"roc.sps:15.39-15.40: error: ROC: Syntax error expecting \`)'.
   15 | ROC x BY y(5)/CRITERIA=CUTOFF(INCLUDE **).
      |                                       ^~\"

\"roc.sps:16.32-16.33: error: ROC: Syntax error expecting \`('.
   16 | ROC x BY y(5)/CRITERIA=TESTPOS **.
      |                                ^~\"

\"roc.sps:17.32-17.33: error: ROC: Syntax error expecting LARGE or SMALL.
   17 | ROC x BY y(5)/CRITERIA=TESTPOS(**).
      |                                ^~\"

\"roc.sps:18.38-18.39: error: ROC: Syntax error expecting \`)'.
   18 | ROC x BY y(5)/CRITERIA=TESTPOS(LARGE **).
      |                                      ^~\"

\"roc.sps:19.27-19.28: error: ROC: Syntax error expecting \`('.
   19 | ROC x BY y(5)/CRITERIA=CI **.
      |                           ^~\"

\"roc.sps:20.27-20.28: error: ROC: Syntax error expecting number.
   20 | ROC x BY y(5)/CRITERIA=CI(**).
      |                           ^~\"

\"roc.sps:21.29-21.30: error: ROC: Syntax error expecting \`)'.
   21 | ROC x BY y(5)/CRITERIA=CI(5 **).
      |                             ^~\"

\"roc.sps:22.37-22.38: error: ROC: Syntax error expecting \`('.
   22 | ROC x BY y(5)/CRITERIA=DISTRIBUTION **.
      |                                     ^~\"

\"roc.sps:23.37-23.38: error: ROC: Syntax error expecting FREE or NEGEXPO.
   23 | ROC x BY y(5)/CRITERIA=DISTRIBUTION(**).
      |                                     ^~\"

\"roc.sps:24.42-24.43: error: ROC: Syntax error expecting \`)'.
   24 | ROC x BY y(5)/CRITERIA=DISTRIBUTION(FREE **).
      |                                          ^~\"

\"roc.sps:25.24-25.25: error: ROC: Syntax error expecting CUTOFF, TESTPOS, CI, or DISTRIBUTION.
   25 | ROC x BY y(5)/CRITERIA=**.
      |                        ^~\"

\"roc.sps:26.16-26.17: error: ROC: Syntax error expecting MISSING, PLOT, PRINT, or CRITERIA.
   26 | ROC x BY y(5)/ **.
      |                ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/roc.at:250"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1123
#AT_START_1124
at_fn_group_banner 1124 'sample.at:19' \
  "SAMPLE" "                                         " 94
at_xfail=no
(
  printf "%s\n" "1124. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sample.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sample.at:39: pspp -o pspp.csv sample.sps"
at_fn_check_prepare_trace "sample.at:39"
( $at_check_trace; pspp -o pspp.csv sample.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sample.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/sample.at:41: n=0
   while read line; do
     n=\`expr \$n + 1\`
     line=\$(echo \"\$line\" | tr -d '\\r')
     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_fn_check_prepare_notrace 'a `...` command substitution' "sample.at:41"
( $at_check_trace; n=0
   while read line; do
     n=`expr $n + 1`
     line=$(echo "$line" | tr -d '\r')
     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_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sample.at:41"
$at_failed && at_fn_log_failure  \
"pspp.csv"
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1124
#AT_START_1125
at_fn_group_banner 1125 'save-translate.at:39' \
  "CSV output -- defaults" "                         " 95
at_xfail=no
(
  printf "%s\n" "1125. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save-translate.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE TRANSLATE OUTFILE="data.csv" /TYPE=CSV
    .
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:40: pspp -O format=csv save-translate.pspp"
at_fn_check_prepare_trace "save-translate.at:40"
( $at_check_trace; pspp -O format=csv save-translate.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:41: cat data.csv"
at_fn_check_prepare_trace "save-translate.at:41"
( $at_check_trace; cat data.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "0,33:30:05,01/02/2003,08/25/1995 15:30:00,\"'a,b,c'\",0
 ,-05:17:00,10/31/2010,04/09/2008 09:29:00, xxx,1
1.625,12:00:00, , ,xyzzy,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1125
#AT_START_1126
at_fn_group_banner 1126 'save-translate.at:48' \
  "CSV output -- recode missing, delete unselected" "" 95
at_xfail=no
(
  printf "%s\n" "1126. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save-translate.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE TRANSLATE OUTFILE="data.csv" /TYPE=CSV
    /MISSING=RECODE /UNSELECTED=DELETE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:49: pspp -O format=csv save-translate.pspp"
at_fn_check_prepare_trace "save-translate.at:49"
( $at_check_trace; pspp -O format=csv save-translate.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:50: cat data.csv"
at_fn_check_prepare_trace "save-translate.at:50"
( $at_check_trace; cat data.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" " ,-05:17:00,10/31/2010,04/09/2008 09:29:00, xxx,1
1.625, , , ,,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:50"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1126
#AT_START_1127
at_fn_group_banner 1127 'save-translate.at:56' \
  "CSV output -- var names, formats" "               " 95
at_xfail=no
(
  printf "%s\n" "1127. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save-translate.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE TRANSLATE OUTFILE="data.csv" /TYPE=CSV
    /FIELDNAMES /TEXTOPTIONS FORMAT=VARIABLE /UNSELECTED=RETAIN.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:57: pspp -O format=csv save-translate.pspp"
at_fn_check_prepare_trace "save-translate.at:57"
( $at_check_trace; pspp -O format=csv save-translate.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:57"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:59: cat data.csv"
at_fn_check_prepare_trace "save-translate.at:59"
( $at_check_trace; cat data.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "number,time,date,datetime,string,filter
.000,1 09:30:05,01/02/2003,25-AUG-1995 15:30:00,\"'a,b,c'\",0
 ,-0 05:17,10/31/2010,09-APR-2008 09:29:00, xxx,1
1.625,0 12:00:00, , ,xyzzy,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1127
#AT_START_1128
at_fn_group_banner 1128 'save-translate.at:67' \
  "CSV output -- comma as decimal point" "           " 95
at_xfail=no
(
  printf "%s\n" "1128. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save-translate.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE TRANSLATE OUTFILE="data.csv" /TYPE=CSV
    /FIELDNAMES /TEXTOPTIONS DECIMAL=COMMA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:68: pspp -O format=csv save-translate.pspp"
at_fn_check_prepare_trace "save-translate.at:68"
( $at_check_trace; pspp -O format=csv save-translate.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:68"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:69: cat data.csv"
at_fn_check_prepare_trace "save-translate.at:69"
( $at_check_trace; cat data.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "number;time;date;datetime;string;filter
0;33:30:05;01/02/2003;08/25/1995 15:30:00;'a,b,c';0
 ;-05:17:00;10/31/2010;04/09/2008 09:29:00; xxx;1
1,625;12:00:00; ; ;xyzzy;1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:69"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1128
#AT_START_1129
at_fn_group_banner 1129 'save-translate.at:77' \
  "CSV output -- custom delimiter, qualifier" "      " 95
at_xfail=no
(
  printf "%s\n" "1129. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save-translate.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE TRANSLATE OUTFILE="data.csv" /TYPE=CSV
    /FIELDNAMES /TEXTOPTIONS DELIMITER=':' QUALIFIER="'".
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:78: pspp -O format=csv save-translate.pspp"
at_fn_check_prepare_trace "save-translate.at:78"
( $at_check_trace; pspp -O format=csv save-translate.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:80: cat data.csv"
at_fn_check_prepare_trace "save-translate.at:80"
( $at_check_trace; cat data.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "number:time:date:datetime:string:filter
0:'33:30:05':01/02/2003:'08/25/1995 15:30:00':'''a,b,c''':0
 :'-05:17:00':10/31/2010:'04/09/2008 09:29:00': xxx:1
1.625:'12:00:00': : :xyzzy:1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:80"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1129
#AT_START_1130
at_fn_group_banner 1130 'save-translate.at:88' \
  "CSV output -- KEEP, RENAME quoted" "              " 95
at_xfail=no
(
  printf "%s\n" "1130. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save-translate.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE TRANSLATE OUTFILE="data.csv" /TYPE=CSV
    /FIELDNAMES /KEEP=time string /RENAME string='long name with spaces' /UNSELECTED=DELETE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:89: pspp -O format=csv save-translate.pspp"
at_fn_check_prepare_trace "save-translate.at:89"
( $at_check_trace; pspp -O format=csv save-translate.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:89"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:91: cat data.csv"
at_fn_check_prepare_trace "save-translate.at:91"
( $at_check_trace; cat data.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "time,long name with spaces
-05:17:00, xxx
12:00:00,xyzzy
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:91"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1130
#AT_START_1131
at_fn_group_banner 1131 'save-translate.at:99' \
  "CSV output -- KEEP, RENAME multi quoted" "        " 95
at_xfail=no
(
  printf "%s\n" "1131. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save-translate.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE TRANSLATE OUTFILE="data.csv" /TYPE=CSV
    /FIELDNAMES
  /RENAME =
	number = "this one"
	time = "that one"
	date = "which one?"
	datetime = "another variable replacement"
	string="long name with spaces"
  /UNSELECTED=DELETE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:100: pspp -O format=csv save-translate.pspp"
at_fn_check_prepare_trace "save-translate.at:100"
( $at_check_trace; pspp -O format=csv save-translate.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:100"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:109: cat data.csv"
at_fn_check_prepare_trace "save-translate.at:109"
( $at_check_trace; cat data.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "this one,that one,which one?,another variable replacement,long name with spaces,filter
 ,-05:17:00,10/31/2010,04/09/2008 09:29:00, xxx,1
1.625,12:00:00, , ,xyzzy,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:109"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1131
#AT_START_1132
at_fn_group_banner 1132 'save-translate.at:117' \
  "CSV output -- KEEP, RENAME bad name " "           " 95
at_xfail=no
(
  printf "%s\n" "1132. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >bad.sps <<'_ATEOF'

data list notable list /Var1 Var2 Var3 Var4 Var5 *.
begin data
1 2 3 4 5
end data.

SAVE TRANSLATE
/OUTFILE="foo.csv"
  /TYPE=CSV
  /MAP
  /REPLACE
  /FIELDNAMES
  /Unselected=DELETE
   /RENAME =
        Var4 = Var5
        (Var1 Var2 = one Var3 )
        (Var3 = "The second")
  /CELLS=VALUES
.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:140: pspp -O format=csv bad.sps"
at_fn_check_prepare_trace "save-translate.at:140"
( $at_check_trace; pspp -O format=csv bad.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"bad.sps:15.9-17.29: error: SAVE TRANSLATE: Requested renaming duplicates variable name Var5.
   15 |         Var4 = Var5
      |         ^~~~~~~~~~~
   16 |         (Var1 Var2 = one Var3 )
      | -------------------------------
   17 |         (Var3 = \"\"The second\"\")
      | -----------------------------\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/save-translate.at:140"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1132
#AT_START_1133
at_fn_group_banner 1133 'save-translate.at:157' \
  "TAB output" "                                     " 96
at_xfail=no
(
  printf "%s\n" "1133. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save-translate.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE TRANSLATE OUTFILE="data.csv" /TYPE=TAB
    /FIELDNAMES.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:158: pspp -O format=csv save-translate.pspp"
at_fn_check_prepare_trace "save-translate.at:158"
( $at_check_trace; pspp -O format=csv save-translate.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:158"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:159: cat data.csv"
at_fn_check_prepare_trace "save-translate.at:159"
( $at_check_trace; cat data.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "number	time	date	datetime	string	filter
0	33:30:05	01/02/2003	08/25/1995 15:30:00	'a,b,c'	0
 	-05:17:00	10/31/2010	04/09/2008 09:29:00	 xxx	1
1.625	12:00:00	 	 	xyzzy	1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save-translate.at:159"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1133
#AT_START_1134
at_fn_group_banner 1134 'save-translate.at:167' \
  "SAVE TRANSLATE syntax errors" "                   " 96
at_xfail=no
(
  printf "%s\n" "1134. $at_setup_line: testing $at_desc ..."
  $at_traceon

: > xyzzy.csv
cat >save-translate.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /v1 to v10.
SAVE TRANSLATE **.
SAVE TRANSLATE/OUTFILE=**.
SAVE TRANSLATE/OUTFILE='xyzzy.txt'/OUTFILE='xyzzy.txt'.
SAVE TRANSLATE/TYPE=CSV/TYPE=**.
SAVE TRANSLATE/TYPE=**.
SAVE TRANSLATE/MISSING=**.
SAVE TRANSLATE/CELLS=**.
SAVE TRANSLATE/TEXTOPTIONS DELIMITER=**.
SAVE TRANSLATE/TEXTOPTIONS DELIMITER='ab'.
SAVE TRANSLATE/TEXTOPTIONS QUALIFIER=**.
SAVE TRANSLATE/TEXTOPTIONS QUALIFIER='ab'.
SAVE TRANSLATE/TEXTOPTIONS DECIMAL=**.
SAVE TRANSLATE/UNSELECTED=**.
SAVE TRANSLATE/ **.
SAVE TRANSLATE/OUTFILE='xyzzy.csv'.
SAVE TRANSLATE/TYPE=CSV.
SAVE TRANSLATE/OUTFILE='xyzzy.csv'/TYPE=CSV.
SAVE TRANSLATE/RENAME **.
SAVE TRANSLATE/RENAME v1**.
SAVE TRANSLATE/RENAME(v1**).
SAVE TRANSLATE/RENAME v1=.
SAVE TRANSLATE/RENAME v1=**.
SAVE TRANSLATE/RENAME v1 to v5=v6.
SAVE TRANSLATE/RENAME (v1=v2 v3).
SAVE TRANSLATE/RENAME (v1 v2=v3).
SAVE TRANSLATE/RENAME (v1=v3**.
SAVE TRANSLATE/RENAME v1=v5.
SAVE TRANSLATE/RENAME v1 v5=v5 v1.
SAVE TRANSLATE/RENAME(v1 v5=v5 v1).
SAVE TRANSLATE/RENAME(v1 to v10=v01 to v10).
SAVE TRANSLATE/RENAME=v1=v1.
SAVE TRANSLATE/DROP=ALL.
SAVE TRANSLATE/DROP=**.
SAVE TRANSLATE/KEEP=**.
SAVE TRANSLATE/OUTFILE='xyzzy.txt' **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save-translate.at:207: pspp -O format=csv save-translate.sps"
at_fn_check_prepare_trace "save-translate.at:207"
( $at_check_trace; pspp -O format=csv save-translate.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"save-translate.sps:2.16-2.17: error: SAVE TRANSLATE: Syntax error expecting MAP, DROP, KEEP, or RENAME.
    2 | SAVE TRANSLATE **.
      |                ^~\"

\"save-translate.sps:3.24-3.25: error: SAVE TRANSLATE: Syntax error expecting a file name or handle name.
    3 | SAVE TRANSLATE/OUTFILE=**.
      |                        ^~\"

\"save-translate.sps:4.36-4.42: error: SAVE TRANSLATE: Subcommand OUTFILE may only be specified once.
    4 | SAVE TRANSLATE/OUTFILE='xyzzy.txt'/OUTFILE='xyzzy.txt'.
      |                                    ^~~~~~~\"

\"save-translate.sps:5.25-5.28: error: SAVE TRANSLATE: Subcommand TYPE may only be specified once.
    5 | SAVE TRANSLATE/TYPE=CSV/TYPE=**.
      |                         ^~~~\"

\"save-translate.sps:6.21-6.22: error: SAVE TRANSLATE: Syntax error expecting CSV or TAB.
    6 | SAVE TRANSLATE/TYPE=**.
      |                     ^~\"

\"save-translate.sps:7.24-7.25: error: SAVE TRANSLATE: Syntax error expecting IGNORE or RECODE.
    7 | SAVE TRANSLATE/MISSING=**.
      |                        ^~\"

\"save-translate.sps:8.22-8.23: error: SAVE TRANSLATE: Syntax error expecting VALUES or LABELS.
    8 | SAVE TRANSLATE/CELLS=**.
      |                      ^~\"

\"save-translate.sps:9.38-9.39: error: SAVE TRANSLATE: Syntax error expecting string.
    9 | SAVE TRANSLATE/TEXTOPTIONS DELIMITER=**.
      |                                      ^~\"

\"save-translate.sps:10.38-10.41: error: SAVE TRANSLATE: The DELIMITER string must contain exactly one character.
   10 | SAVE TRANSLATE/TEXTOPTIONS DELIMITER='ab'.
      |                                      ^~~~\"

\"save-translate.sps:11.38-11.39: error: SAVE TRANSLATE: Syntax error expecting string.
   11 | SAVE TRANSLATE/TEXTOPTIONS QUALIFIER=**.
      |                                      ^~\"

\"save-translate.sps:12.38-12.41: error: SAVE TRANSLATE: The QUALIFIER string must contain exactly one character.
   12 | SAVE TRANSLATE/TEXTOPTIONS QUALIFIER='ab'.
      |                                      ^~~~\"

\"save-translate.sps:13.36-13.37: error: SAVE TRANSLATE: Syntax error expecting DOT or COMMA.
   13 | SAVE TRANSLATE/TEXTOPTIONS DECIMAL=**.
      |                                    ^~\"

\"save-translate.sps:14.27-14.28: error: SAVE TRANSLATE: Syntax error expecting RETAIN or DELETE.
   14 | SAVE TRANSLATE/UNSELECTED=**.
      |                           ^~\"

\"save-translate.sps:15.17-15.18: error: SAVE TRANSLATE: Syntax error expecting MAP, DROP, KEEP, or RENAME.
   15 | SAVE TRANSLATE/ **.
      |                 ^~\"

\"save-translate.sps:16.1-16.35: error: SAVE TRANSLATE: Required subcommand TYPE was not specified.
   16 | SAVE TRANSLATE/OUTFILE='xyzzy.csv'.
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"save-translate.sps:17.1-17.24: error: SAVE TRANSLATE: Required subcommand OUTFILE was not specified.
   17 | SAVE TRANSLATE/TYPE=CSV.
      | ^~~~~~~~~~~~~~~~~~~~~~~~\"

\"save-translate.sps:18.16-18.34: error: SAVE TRANSLATE: Output file \`xyzzy.csv' exists but REPLACE was not specified.
   18 | SAVE TRANSLATE/OUTFILE='xyzzy.csv'/TYPE=CSV.
      |                ^~~~~~~~~~~~~~~~~~~\"

\"save-translate.sps:19.23-19.24: error: SAVE TRANSLATE: Syntax error expecting variable name.
   19 | SAVE TRANSLATE/RENAME **.
      |                       ^~\"

\"save-translate.sps:20.25-20.26: error: SAVE TRANSLATE: Syntax error expecting \`='.
   20 | SAVE TRANSLATE/RENAME v1**.
      |                         ^~\"

\"save-translate.sps:21.25-21.26: error: SAVE TRANSLATE: Syntax error expecting \`='.
   21 | SAVE TRANSLATE/RENAME(v1**).
      |                         ^~\"

\"save-translate.sps:22.26: error: SAVE TRANSLATE: Syntax error expecting variable name.
   22 | SAVE TRANSLATE/RENAME v1=.
      |                          ^\"

\"save-translate.sps:23.26-23.27: error: SAVE TRANSLATE: Syntax error expecting variable name.
   23 | SAVE TRANSLATE/RENAME v1=**.
      |                          ^~\"

save-translate.sps:24: error: SAVE TRANSLATE: Old and new variable counts do not match.

\"save-translate.sps:24.23-24.30: note: SAVE TRANSLATE: There are 5 old variables.
   24 | SAVE TRANSLATE/RENAME v1 to v5=v6.
      |                       ^~~~~~~~\"

\"save-translate.sps:24.32-24.33: note: SAVE TRANSLATE: There is 1 new variable name.
   24 | SAVE TRANSLATE/RENAME v1 to v5=v6.
      |                                ^~\"

save-translate.sps:25: error: SAVE TRANSLATE: Old and new variable counts do not match.

\"save-translate.sps:25.24-25.25: note: SAVE TRANSLATE: There is 1 old variable.
   25 | SAVE TRANSLATE/RENAME (v1=v2 v3).
      |                        ^~\"

\"save-translate.sps:25.27-25.31: note: SAVE TRANSLATE: There are 2 new variable names.
   25 | SAVE TRANSLATE/RENAME (v1=v2 v3).
      |                           ^~~~~\"

save-translate.sps:26: error: SAVE TRANSLATE: Old and new variable counts do not match.

\"save-translate.sps:26.24-26.28: note: SAVE TRANSLATE: There are 2 old variables.
   26 | SAVE TRANSLATE/RENAME (v1 v2=v3).
      |                        ^~~~~\"

\"save-translate.sps:26.30-26.31: note: SAVE TRANSLATE: There is 1 new variable name.
   26 | SAVE TRANSLATE/RENAME (v1 v2=v3).
      |                              ^~\"

\"save-translate.sps:27.29-27.30: error: SAVE TRANSLATE: Syntax error expecting \`)'.
   27 | SAVE TRANSLATE/RENAME (v1=v3**.
      |                             ^~\"

\"save-translate.sps:28.23-28.27: error: SAVE TRANSLATE: Requested renaming duplicates variable name v5.
   28 | SAVE TRANSLATE/RENAME v1=v5.
      |                       ^~~~~\"

\"save-translate.sps:29.26-29.27: error: SAVE TRANSLATE: Syntax error expecting \`='.
   29 | SAVE TRANSLATE/RENAME v1 v5=v5 v1.
      |                          ^~\"

\"save-translate.sps:30.1-30.35: error: SAVE TRANSLATE: Required subcommand TYPE was not specified.
   30 | SAVE TRANSLATE/RENAME(v1 v5=v5 v1).
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"save-translate.sps:31.1-31.44: error: SAVE TRANSLATE: Required subcommand TYPE was not specified.
   31 | SAVE TRANSLATE/RENAME(v1 to v10=v01 to v10).
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"save-translate.sps:32.1-32.28: error: SAVE TRANSLATE: Required subcommand TYPE was not specified.
   32 | SAVE TRANSLATE/RENAME=v1=v1.
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"save-translate.sps:33.16-33.23: error: SAVE TRANSLATE: Cannot DROP all variables from dictionary.
   33 | SAVE TRANSLATE/DROP=ALL.
      |                ^~~~~~~~\"

\"save-translate.sps:34.21-34.22: error: SAVE TRANSLATE: Syntax error expecting variable name.
   34 | SAVE TRANSLATE/DROP=**.
      |                     ^~\"

\"save-translate.sps:35.21-35.22: error: SAVE TRANSLATE: Syntax error expecting variable name.
   35 | SAVE TRANSLATE/KEEP=**.
      |                     ^~\"

\"save-translate.sps:36.36-36.37: error: SAVE TRANSLATE: Syntax error expecting \`/'.
   36 | SAVE TRANSLATE/OUTFILE='xyzzy.txt' **.
      |                                    ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/save-translate.at:207"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1134
#AT_START_1135
at_fn_group_banner 1135 'save.at:19' \
  "IMPORT and EXPORT" "                              " 97
at_xfail=no
(
  printf "%s\n" "1135. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >import-export.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /X Y.
BEGIN DATA.
1 2
3 .
5 6
END DATA.

EXPORT /OUTFILE='wiz.por'.
IMPORT /FILE='wiz.por'.

LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save.at:33: pspp -o pspp.csv import-export.sps"
at_fn_check_prepare_trace "save.at:33"
( $at_check_trace; pspp -o pspp.csv import-export.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/save.at:34: cat pspp.csv"
at_fn_check_prepare_trace "save.at:34"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X,Y
1.00,2.00
3.00,.  
5.00,6.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1135
#AT_START_1136
at_fn_group_banner 1136 'save.at:47' \
  "SAVE -- delete unselected" "                      " 98
at_xfail=no
(
  printf "%s\n" "1136. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >data.txt <<'_ATEOF'
0 '1 9:30:05' 1/2/2003 "25/8/1995 15:30:00" "'a,b,c'",0
, '-0 5:17' 10/31/2010 "9/4/2008 9:29:00" " xxx ",1
1.625,'0 12:00',,,xyzzy,1
_ATEOF

cat >save.pspp <<'_ATEOF'
SET DECIMAL=DOT.
DATA LIST LIST NOTABLE FILE="data.txt"
    /number(F8.3) time(DTIME10) date(ADATE10) datetime(DATETIME20) string(A8)
     filter(F1.0).
MISSING VALUES number(0) time('0 12:00') string('xyzzy').
FILTER BY filter.
SAVE /OUTFILE="data.sav" /UNSELECTED=DELETE.
_ATEOF

cat >get.pspp <<'_ATEOF'
GET FILE='data.sav'.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/save.at:66: pspp -O format=csv save.pspp"
at_fn_check_prepare_trace "save.at:66"
( $at_check_trace; pspp -O format=csv save.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/save.at:67: pspp -O format=csv get.pspp"
at_fn_check_prepare_trace "save.at:67"
( $at_check_trace; pspp -O format=csv get.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
number,time,date,datetime,string,filter
.   ,-0 05:17,10/31/2010,09-APR-2008 09:29:00,xxx,1
1.625,0 12:00:00,.,.,xyzzy,1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save.at:67"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1136
#AT_START_1137
at_fn_group_banner 1137 'save.at:75' \
  "SAVE RENAME with TO" "                            " 98
at_xfail=no
(
  printf "%s\n" "1137. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >save-rename-to.sps <<'_ATEOF'
data list notable list /a b c fxo9*.
begin data
1 2 3 8
end data.

SAVE OUTFILE = "renamed.sav"
 /RENAME=(A B C = fdo9 TO fdo11).


NEW FILE.
GET FILE = "renamed.sav".
LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/save.at:91: pspp -O format=csv save-rename-to.sps"
at_fn_check_prepare_trace "save.at:91"
( $at_check_trace; pspp -O format=csv save-rename-to.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
fdo9,fdo10,fdo11,fxo9
1.00,2.00,3.00,8.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/save.at:91"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1137
#AT_START_1138
at_fn_group_banner 1138 'select-if.at:19' \
  "FILTER" "                                         " 99
at_xfail=no
(
  printf "%s\n" "1138. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >filter.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/select-if.at:44: pspp -o pspp.csv filter.sps"
at_fn_check_prepare_trace "select-if.at:44"
( $at_check_trace; pspp -o pspp.csv filter.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/select-if.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/select-if.at:45: cat pspp.csv"
at_fn_check_prepare_trace "select-if.at:45"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/select-if.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1138
#AT_START_1139
at_fn_group_banner 1139 'set.at:20' \
  "SET FORMAT to invalid output format" "            " 100
at_xfail=no
(
  printf "%s\n" "1139. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >set.pspp <<'_ATEOF'
DATA LIST LIST NOTABLE /x.
BEGIN DATA.
1
2
3
END DATA.
SET FORMAT F41.
DESCRIPTIVES /x.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/set.at:31: pspp -O format=csv set.pspp"
at_fn_check_prepare_trace "set.at:31"
( $at_check_trace; pspp -O format=csv set.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"set.pspp:7.12-7.14: error: SET: Output format F41.0 specifies width 41, but F requires a width between 1 and 40.
    7 | SET FORMAT F41.
      |            ^~~\"

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
x,3,2.00,1.00,1.00,3.00
Valid N (listwise),3,,,,
Missing N (listwise),0,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/set.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1139
#AT_START_1140
at_fn_group_banner 1140 'set.at:46' \
  "SET crash on invalid cc" "                        " 100
at_xfail=no
(
  printf "%s\n" "1140. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >set.pspp <<'_ATEOF'
SET CCA='xxxx'.SHGW CCA.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/set.at:51: pspp -O format=csv set.pspp"
at_fn_check_prepare_trace "set.at:51"
( $at_check_trace; pspp -O format=csv set.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"set.pspp:1.9-1.14: error: SET: Custom currency string \`CCA' for xxxx does not contain exactly three periods or commas (or it contains both).
    1 | SET CCA='xxxx'.SHGW CCA.
      |         ^~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/set.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1140
#AT_START_1141
at_fn_group_banner 1141 'set.at:60' \
  "SET MXWARNS" "                                    " 100
at_xfail=no
(
  printf "%s\n" "1141. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >set.pspp <<'_ATEOF'
set mxwarns=2.
data list notable list /x (f8.2) y (f8.2).
begin data
1 2
3 r
5 x
q 8
9 9
3 x
w w
end data.

comment The following line should not be executed.
list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/set.at:81: pspp -O format=csv set.pspp"
at_fn_check_prepare_trace "set.at:81"
( $at_check_trace; pspp -O format=csv set.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "set.pspp:5.3: warning: Data for variable y is not valid as format F: 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.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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:81"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1141
#AT_START_1142
at_fn_group_banner 1142 'set.at:96' \
  "SET MXWARNS special case zero" "                  " 100
at_xfail=no
(
  printf "%s\n" "1142. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >mxwarns.pspp <<'_ATEOF'
set mxwarns=0.
data list notable list /x (f8.2) y (f8.2) z *.
begin data
1 2 3
3 r 3
5 x 3
q 8 4
9 9 4
3 x 4
w w 4
end data.

list.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/set.at:114: pspp -O format=csv mxwarns.pspp"
at_fn_check_prepare_trace "set.at:114"
( $at_check_trace; pspp -O format=csv mxwarns.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "warning: MXWARNS set to zero.  No further warnings will be given even when potentially problematic situations are encountered.

Table: Data List
x,y,z
1.00,2.00,3.00
3.00,.  ,3.00
5.00,.  ,3.00
.  ,8.00,4.00
9.00,9.00,4.00
3.00,.  ,4.00
.  ,.  ,4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1142
#AT_START_1143
at_fn_group_banner 1143 'set.at:130' \
  "SET macro - MEXPAND MPRINT MITERATE MNEST" "      " 100
at_xfail=no
(
  printf "%s\n" "1143. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >set-macro.sps <<'_ATEOF'
show mexpand mprint miterate mnest.
preserve.
set mexpand=off mprint=on miterate=10 mnest=11.
show mexpand mprint miterate mnest.
restore.
show mexpand mprint miterate mnest.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/set.at:139: pspp -O format=csv set-macro.sps"
at_fn_check_prepare_trace "set.at:139"
( $at_check_trace; pspp -O format=csv set-macro.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Settings
MEXPAND,ON
MPRINT,OFF
MITERATE,1000
MNEST,50

Table: Settings
MEXPAND,OFF
MPRINT,ON
MITERATE,10
MNEST,11

Table: Settings
MEXPAND,ON
MPRINT,OFF
MITERATE,1000
MNEST,50
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:139"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1143
#AT_START_1144
at_fn_group_banner 1144 'set.at:160' \
  "SET syntax errors" "                              " 100
at_xfail=no
(
  printf "%s\n" "1144. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >set.sps <<'_ATEOF'
SET **.
SET BASETEXTDIRECTION=**.
SET BLANKS=**.
SET BOX=**.
SET CACHE=**.
SET CCA=**.
SET CELLSBREAK=**.
SET CMPTRANS=**.
SET COMPRESSION=**.
SET CTEMPLATE=**.
SET DECIMAL=**.
SET EPOCH=**.
SET EPOCH=1234.
SET ERRORS=**.
SET FORMAT=**.
SET FORMAT=A8.
SET FORMAT=F1.2.
SET FUZZBITS=40.
SET HEADER=**.
SET INCLUDE=**.
SET JOURNAL=**.
SET LEADZERO=**.
SET LENGTH=**.
SET LOCALE='Neverland'.
SET LOCALE=**.
SET MDISPLAY=**.
SET MESSAGES=**.
SET MEXPAND=**.
SET MITERATE=0.
SET MNEST=0.
SET MPRINT=**.
SET MXERRS=0.
SET MXLOOPS=0.
SET MXWARNS=-1.
SET PRINTBACK=**.
SET RESULTS=**.
SET RIB=**.
SET RRB=**.
SET SAFER=**.
SET SCOMPRESSION=**.
SET SEED=**.
SET SMALL=**.
SET SUBTITLE=**.
SET SUMMARY=**.
SET TNUMBERS=**.
SET TVARS=**.
SET TLOOK='nonexistent.xml'.
SET UNDEFINED=**.
SET WIB=**.
SET WRB=**.
SET WIDTH=**.
SET WORKSPACE=**.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/set.at:215: pspp -O format=csv set.sps"
at_fn_check_prepare_trace "set.at:215"
( $at_check_trace; pspp -O format=csv set.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"set.sps:1.5-1.6: error: SET: Syntax error expecting the name of a setting.
    1 | SET **.
      |     ^~\"

\"set.sps:2.5-2.24: warning: SET: BASETEXTDIRECTION is not yet implemented.
    2 | SET BASETEXTDIRECTION=**.
      |     ^~~~~~~~~~~~~~~~~~~~\"

\"set.sps:3.12-3.13: error: SET: Syntax error expecting number.
    3 | SET BLANKS=**.
      |            ^~\"

\"set.sps:4.5-4.10: warning: SET: BOX is not yet implemented.
    4 | SET BOX=**.
      |     ^~~~~~\"

\"set.sps:5.5-5.12: warning: SET: CACHE is not yet implemented.
    5 | SET CACHE=**.
      |     ^~~~~~~~\"

\"set.sps:6.9-6.10: error: SET: Syntax error expecting string.
    6 | SET CCA=**.
      |         ^~\"

\"set.sps:7.5-7.17: warning: SET: CELLSBREAK is not yet implemented.
    7 | SET CELLSBREAK=**.
      |     ^~~~~~~~~~~~~\"

\"set.sps:8.5-8.15: warning: SET: CMPTRANS is not yet implemented.
    8 | SET CMPTRANS=**.
      |     ^~~~~~~~~~~\"

\"set.sps:9.5-9.18: warning: SET: COMPRESSION is not yet implemented.
    9 | SET COMPRESSION=**.
      |     ^~~~~~~~~~~~~~\"

\"set.sps:10.5-10.16: warning: SET: CTEMPLATE is not yet implemented.
   10 | SET CTEMPLATE=**.
      |     ^~~~~~~~~~~~\"

\"set.sps:11.13-11.14: error: SET: Syntax error expecting DOT or COMMA.
   11 | SET DECIMAL=**.
      |             ^~\"

\"set.sps:12.11-12.12: error: SET: Syntax error expecting AUTOMATIC or year.
   12 | SET EPOCH=**.
      |           ^~\"

\"set.sps:13.11-13.14: error: SET: Syntax error expecting integer 1500 or greater for EPOCH.
   13 | SET EPOCH=1234.
      |           ^~~~\"

\"set.sps:14.12-14.13: error: SET: Syntax error expecting ON, BOTH, TERMINAL, LISTING, OFF, or NONE.
   14 | SET ERRORS=**.
      |            ^~\"

\"set.sps:15.12-15.13: error: SET: Syntax error expecting valid format specifier.
   15 | SET FORMAT=**.
      |            ^~\"

\"set.sps:16.5-16.13: error: SET: FORMAT requires numeric output format as an argument.  Specified format A8 is of type string.
   16 | SET FORMAT=A8.
      |     ^~~~~~~~~\"

\"set.sps:17.12-17.15: error: SET: Output format F1.2 specifies 2 decimal places, but width 1 does not allow for any decimals.
   17 | SET FORMAT=F1.2.
      |            ^~~~\"

\"set.sps:18.14-18.15: error: SET: Syntax error expecting integer between 0 and 20 for FUZZBITS.
   18 | SET FUZZBITS=40.
      |              ^~\"

\"set.sps:19.5-19.13: warning: SET: HEADER is not yet implemented.
   19 | SET HEADER=**.
      |     ^~~~~~~~~\"

\"set.sps:20.13-20.14: error: SET: Syntax error expecting ON, YES, OFF, or NO.
   20 | SET INCLUDE=**.
      |             ^~\"

\"set.sps:21.13-21.14: error: SET: Syntax error expecting ON or OFF or a file name.
   21 | SET JOURNAL=**.
      |             ^~\"

\"set.sps:22.14-22.15: error: SET: Syntax error expecting ON, YES, OFF, or NO.
   22 | SET LEADZERO=**.
      |              ^~\"

\"set.sps:23.12-23.13: error: SET: Syntax error expecting positive integer for LENGTH.
   23 | SET LENGTH=**.
      |            ^~\"

\"set.sps:24.12-24.22: error: SET: Neverland is not a recognized encoding or locale name.
   24 | SET LOCALE='Neverland'.
      |            ^~~~~~~~~~~\"

\"set.sps:25.12-25.13: error: SET: Syntax error expecting string.
   25 | SET LOCALE=**.
      |            ^~\"

\"set.sps:26.14-26.15: error: SET: Syntax error expecting TEXT or TABLES.
   26 | SET MDISPLAY=**.
      |              ^~\"

\"set.sps:27.14-27.15: error: SET: Syntax error expecting ON, BOTH, TERMINAL, LISTING, OFF, or NONE.
   27 | SET MESSAGES=**.
      |              ^~\"

\"set.sps:28.13-28.14: error: SET: Syntax error expecting ON, YES, OFF, or NO.
   28 | SET MEXPAND=**.
      |             ^~\"

\"set.sps:29.14: error: SET: Syntax error expecting positive integer for MITERATE.
   29 | SET MITERATE=0.
      |              ^\"

\"set.sps:30.11: error: SET: Syntax error expecting positive integer for MNEST.
   30 | SET MNEST=0.
      |           ^\"

\"set.sps:31.12-31.13: error: SET: Syntax error expecting ON, YES, OFF, or NO.
   31 | SET MPRINT=**.
      |            ^~\"

\"set.sps:32.12: error: SET: Syntax error expecting positive integer for MXERRS.
   32 | SET MXERRS=0.
      |            ^\"

\"set.sps:33.13: error: SET: Syntax error expecting positive integer for MXLOOPS.
   33 | SET MXLOOPS=0.
      |             ^\"

\"set.sps:34.13-34.14: error: SET: Syntax error expecting non-negative integer for MXWARNS.
   34 | SET MXWARNS=-1.
      |             ^~\"

\"set.sps:35.15-35.16: error: SET: Syntax error expecting ON, BOTH, TERMINAL, LISTING, OFF, or NONE.
   35 | SET PRINTBACK=**.
      |               ^~\"

\"set.sps:36.13-36.14: error: SET: Syntax error expecting ON, BOTH, TERMINAL, LISTING, OFF, or NONE.
   36 | SET RESULTS=**.
      |             ^~\"

\"set.sps:37.9-37.10: error: SET: Syntax error expecting MSBFIRST, LSBFIRST, VAX, or NATIVE.
   37 | SET RIB=**.
      |         ^~\"

\"set.sps:38.9-38.10: error: SET: Syntax error expecting one of the following: NATIVE, ISL, ISB, IDL, IDB, VF, VD, VG, ZS.
   38 | SET RRB=**.
      |         ^~\"

\"set.sps:39.11-39.12: error: SET: Syntax error expecting ON or YES.
   39 | SET SAFER=**.
      |           ^~\"

\"set.sps:40.18-40.19: error: SET: Syntax error expecting ON, YES, OFF, or NO.
   40 | SET SCOMPRESSION=**.
      |                  ^~\"

\"set.sps:41.10-41.11: error: SET: Syntax error expecting number.
   41 | SET SEED=**.
      |          ^~\"

\"set.sps:42.11-42.12: error: SET: Syntax error expecting number.
   42 | SET SMALL=**.
      |           ^~\"

\"set.sps:43.5-43.12: error: SET: Syntax error expecting the name of a setting.
   43 | SET SUBTITLE=**.
      |     ^~~~~~~~\"

\"set.sps:44.13-44.14: error: SET: Syntax error expecting string.
   44 | SET SUMMARY=**.
      |             ^~\"

\"set.sps:45.14-45.15: error: SET: Syntax error expecting LABELS, VALUES, or BOTH.
   45 | SET TNUMBERS=**.
      |              ^~\"

\"set.sps:46.11-46.12: error: SET: Syntax error expecting LABELS, NAMES, or BOTH.
   46 | SET TVARS=**.
      |           ^~\"

set.sps:47: error: SET: nonexistent.xml: not found

\"set.sps:48.15-48.16: error: SET: Syntax error expecting WARN or NOWARN.
   48 | SET UNDEFINED=**.
      |               ^~\"

\"set.sps:49.9-49.10: error: SET: Syntax error expecting MSBFIRST, LSBFIRST, VAX, or NATIVE.
   49 | SET WIB=**.
      |         ^~\"

\"set.sps:50.9-50.10: error: SET: Syntax error expecting one of the following: NATIVE, ISL, ISB, IDL, IDB, VF, VD, VG, ZS.
   50 | SET WRB=**.
      |         ^~\"

\"set.sps:51.11-51.12: error: SET: Syntax error expecting integer 40 or greater for WIDTH.
   51 | SET WIDTH=**.
      |           ^~\"

\"set.sps:52.15-52.16: error: SET: Syntax error expecting integer 1024 or greater for WORKSPACE.
   52 | SET WORKSPACE=**.
      |               ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/set.at:215"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1144
#AT_START_1145
at_fn_group_banner 1145 'set.at:426' \
  "PRESERVE of SET FORMAT" "                         " 101
at_xfail=no
(
  printf "%s\n" "1145. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >set.pspp <<'_ATEOF'
SHOW FORMAT.
PRESERVE.
SET FORMAT F10.0.
SHOW FORMAT
RESTORE.
SHOW FORMAT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/set.at:435: pspp -O format=csv set.pspp"
at_fn_check_prepare_trace "set.at:435"
( $at_check_trace; pspp -O format=csv set.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Settings
FORMAT,F8.2

Table: Settings
FORMAT,F10.0

Table: Settings
FORMAT,F8.2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:435"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1145
#AT_START_1146
at_fn_group_banner 1146 'set.at:447' \
  "PRESERVE and SHOW of TLOOK" "                     " 101
at_xfail=no
(
  printf "%s\n" "1146. $at_setup_line: testing $at_desc ..."
  $at_traceon

cp $srcdir/output/look.stt lines.stt
sed 's/solid/none/g
s/thick/none/g' lines.stt > no-lines.stt
cat >set.pspp <<'_ATEOF'
DATA LIST LIST NOTABLE/x.
BEGIN DATA.
1
2
3
END DATA.

SHOW TLOOK.
SET TLOOK='lines.stt'.
SHOW TLOOK.
DESCRIPTIVES/x.

PRESERVE.
SET TLOOK='no-lines.stt'.
SHOW TLOOK.
DESCRIPTIVES/x.
RESTORE.

SHOW TLOOK.
DESCRIPTIVES/x.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/set.at:473: pspp -O box=unicode set.pspp"
at_fn_check_prepare_trace "set.at:473"
( $at_check_trace; pspp -O box=unicode set.pspp
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "  Settings
╭─────┬────╮
│TLOOK│NONE│
╰─────┴────╯

Settings
╭─────┬─────────╮
│TLOOK│lines.stt│
╰─────┴─────────╯

Descriptive Statistics
╭────────────────────┬─┬────┬───────┬───────┬───────╮
│                    │N│Mean│Std Dev│Minimum│Maximum│
├────────────────────┼─┼────┼───────┼───────┼───────┤
│x                   │3│2.00│   1.00│   1.00│   3.00│
│Valid N (listwise)  │3│    │       │       │       │
│Missing N (listwise)│0│    │       │       │       │
╰────────────────────┴─┴────┴───────┴───────┴───────╯

Settings
TLOOK no-lines.stt

Descriptive Statistics
                     N Mean Std Dev Minimum Maximum
x                    3 2.00    1.00    1.00    3.00
Valid N (listwise)   3
Missing N (listwise) 0

Settings
╭─────┬─────────╮
│TLOOK│lines.stt│
╰─────┴─────────╯

Descriptive Statistics
╭────────────────────┬─┬────┬───────┬───────┬───────╮
│                    │N│Mean│Std Dev│Minimum│Maximum│
├────────────────────┼─┼────┼───────┼───────┼───────┤
│x                   │3│2.00│   1.00│   1.00│   3.00│
│Valid N (listwise)  │3│    │       │       │       │
│Missing N (listwise)│0│    │       │       │       │
╰────────────────────┴─┴────┴───────┴───────┴───────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:473"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1146
#AT_START_1147
at_fn_group_banner 1147 'show.at:19' \
  "SHOW N" "                                         " 102
at_xfail=no
(
  printf "%s\n" "1147. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >show.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x.
BEGIN DATA.
1
2
3
END DATA.

SHOW N.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/show.at:30: pspp -O format=csv show.sps"
at_fn_check_prepare_trace "show.at:30"
( $at_check_trace; pspp -O format=csv show.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Settings
N,3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/show.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1147
#AT_START_1148
at_fn_group_banner 1148 'show.at:37' \
  "SHOW N empty" "                                   " 102
at_xfail=no
(
  printf "%s\n" "1148. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >shown-empty.sps <<'_ATEOF'
SHOW N.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/show.at:41: pspp -O format=csv shown-empty.sps"
at_fn_check_prepare_trace "show.at:41"
( $at_check_trace; pspp -O format=csv shown-empty.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Settings
N,Unknown
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/show.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1148
#AT_START_1149
at_fn_group_banner 1149 'show.at:47' \
  "SHOW ENVIRONMENT" "                               " 102
at_xfail=no
(
  printf "%s\n" "1149. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >show.sps <<'_ATEOF'
SHOW ENVIRONMENT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/show.at:51: pspp -O format=csv show.sps"
at_fn_check_prepare_trace "show.at:51"
( $at_check_trace; pspp -O format=csv show.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/show.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1149
#AT_START_1150
at_fn_group_banner 1150 'sort-cases.at:64' \
  "sort 500 cases (100 unique) with 2 buffers" "     " 103
at_xfail=no
(
  printf "%s\n" "1150. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:64: sort_cases_gen_data 100 5 2"
at_fn_check_prepare_trace "sort-cases.at:64"
( $at_check_trace; sort_cases_gen_data 100 5 2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:64"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=2.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:64: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:64"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:64"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:64: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:64"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:64"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1150
#AT_START_1151
at_fn_group_banner 1151 'sort-cases.at:65' \
  "sort 500 cases (100 unique) with 3 buffers" "     " 103
at_xfail=no
(
  printf "%s\n" "1151. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:65: sort_cases_gen_data 100 5 3"
at_fn_check_prepare_trace "sort-cases.at:65"
( $at_check_trace; sort_cases_gen_data 100 5 3
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=3.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:65: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:65"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:65"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:65: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:65"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:65"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1151
#AT_START_1152
at_fn_group_banner 1152 'sort-cases.at:66' \
  "sort 500 cases (100 unique) with 4 buffers" "     " 103
at_xfail=no
(
  printf "%s\n" "1152. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:66: sort_cases_gen_data 100 5 4"
at_fn_check_prepare_trace "sort-cases.at:66"
( $at_check_trace; sort_cases_gen_data 100 5 4
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=4.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:66: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:66"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:66"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:66: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:66"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:66"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1152
#AT_START_1153
at_fn_group_banner 1153 'sort-cases.at:67' \
  "sort 500 cases (100 unique) with 5 buffers" "     " 103
at_xfail=no
(
  printf "%s\n" "1153. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:67: sort_cases_gen_data 100 5 5"
at_fn_check_prepare_trace "sort-cases.at:67"
( $at_check_trace; sort_cases_gen_data 100 5 5
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:67"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=5.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:67: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:67"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:67"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:67: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:67"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:67"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1153
#AT_START_1154
at_fn_group_banner 1154 'sort-cases.at:68' \
  "sort 500 cases (100 unique) with 10 buffers" "    " 103
at_xfail=no
(
  printf "%s\n" "1154. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:68: sort_cases_gen_data 100 5 10"
at_fn_check_prepare_trace "sort-cases.at:68"
( $at_check_trace; sort_cases_gen_data 100 5 10
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:68"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=10.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:68: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:68"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:68"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:68: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:68"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:68"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1154
#AT_START_1155
at_fn_group_banner 1155 'sort-cases.at:69' \
  "sort 500 cases (100 unique) with 50 buffers" "    " 103
at_xfail=no
(
  printf "%s\n" "1155. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:69: sort_cases_gen_data 100 5 50"
at_fn_check_prepare_trace "sort-cases.at:69"
( $at_check_trace; sort_cases_gen_data 100 5 50
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:69"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=50.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:69: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:69"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:69"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:69: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:69"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:69"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1155
#AT_START_1156
at_fn_group_banner 1156 'sort-cases.at:70' \
  "sort 500 cases (100 unique) with 100 buffers" "   " 103
at_xfail=no
(
  printf "%s\n" "1156. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:70: sort_cases_gen_data 100 5 100"
at_fn_check_prepare_trace "sort-cases.at:70"
( $at_check_trace; sort_cases_gen_data 100 5 100
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:70"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=100.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:70: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:70"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:70"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:70: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:70"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:70"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1156
#AT_START_1157
at_fn_group_banner 1157 'sort-cases.at:71' \
  "sort 500 cases (100 unique)" "                    " 103
at_xfail=no
(
  printf "%s\n" "1157. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:71: sort_cases_gen_data 100 5 "
at_fn_check_prepare_trace "sort-cases.at:71"
( $at_check_trace; sort_cases_gen_data 100 5
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:71: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:71"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:71"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:71: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:71"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:71"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1157
#AT_START_1158
at_fn_group_banner 1158 'sort-cases.at:73' \
  "sort 1000 cases (100 unique) with 2 buffers" "    " 103
at_xfail=no
(
  printf "%s\n" "1158. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:73: sort_cases_gen_data 100 10 2"
at_fn_check_prepare_trace "sort-cases.at:73"
( $at_check_trace; sort_cases_gen_data 100 10 2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:73"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=2.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:73: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:73"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:73"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:73: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:73"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:73"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1158
#AT_START_1159
at_fn_group_banner 1159 'sort-cases.at:74' \
  "sort 1000 cases (100 unique) with 3 buffers" "    " 103
at_xfail=no
(
  printf "%s\n" "1159. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:74: sort_cases_gen_data 100 10 3"
at_fn_check_prepare_trace "sort-cases.at:74"
( $at_check_trace; sort_cases_gen_data 100 10 3
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:74"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=3.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:74: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:74"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:74"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:74: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:74"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:74"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1159
#AT_START_1160
at_fn_group_banner 1160 'sort-cases.at:75' \
  "sort 1000 cases (100 unique) with 5 buffers" "    " 103
at_xfail=no
(
  printf "%s\n" "1160. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:75: sort_cases_gen_data 100 10 5"
at_fn_check_prepare_trace "sort-cases.at:75"
( $at_check_trace; sort_cases_gen_data 100 10 5
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=5.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:75: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:75"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:75"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:75: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:75"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:75"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1160
#AT_START_1161
at_fn_group_banner 1161 'sort-cases.at:76' \
  "sort 1000 cases (100 unique)" "                   " 103
at_xfail=no
(
  printf "%s\n" "1161. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:76: sort_cases_gen_data 100 10 "
at_fn_check_prepare_trace "sort-cases.at:76"
( $at_check_trace; sort_cases_gen_data 100 10
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:76: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:76"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:76"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:76: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:76"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:76"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1161
#AT_START_1162
at_fn_group_banner 1162 'sort-cases.at:78' \
  "sort 5000 cases (1000 unique) with 5 buffers" "   " 103
at_xfail=no
(
  printf "%s\n" "1162. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:78: sort_cases_gen_data 1000 5 5"
at_fn_check_prepare_trace "sort-cases.at:78"
( $at_check_trace; sort_cases_gen_data 1000 5 5
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=5.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:78: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:78"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:78"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:78: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:78"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:78"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1162
#AT_START_1163
at_fn_group_banner 1163 'sort-cases.at:79' \
  "sort 5000 cases (1000 unique) with 50 buffers" "  " 103
at_xfail=no
(
  printf "%s\n" "1163. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:79: sort_cases_gen_data 1000 5 50"
at_fn_check_prepare_trace "sort-cases.at:79"
( $at_check_trace; sort_cases_gen_data 1000 5 50
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:79"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=50.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:79: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:79"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:79"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:79: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:79"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:79"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1163
#AT_START_1164
at_fn_group_banner 1164 'sort-cases.at:80' \
  "sort 5000 cases (1000 unique)" "                  " 103
at_xfail=no
(
  printf "%s\n" "1164. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:80: sort_cases_gen_data 1000 5 "
at_fn_check_prepare_trace "sort-cases.at:80"
( $at_check_trace; sort_cases_gen_data 1000 5
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:80"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:80: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:80"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:80"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:80: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:80"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:80"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1164
#AT_START_1165
at_fn_group_banner 1165 'sort-cases.at:82' \
  "sort 10000 cases (100 unique) with 3 buffers" "   " 103
at_xfail=no
(
  printf "%s\n" "1165. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:82: sort_cases_gen_data 100 100 3"
at_fn_check_prepare_trace "sort-cases.at:82"
( $at_check_trace; sort_cases_gen_data 100 100 3
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=3.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:82: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:82"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:82"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:82: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:82"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:82"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1165
#AT_START_1166
at_fn_group_banner 1166 'sort-cases.at:83' \
  "sort 10000 cases (100 unique) with 5 buffers" "   " 103
at_xfail=no
(
  printf "%s\n" "1166. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:83: sort_cases_gen_data 100 100 5"
at_fn_check_prepare_trace "sort-cases.at:83"
( $at_check_trace; sort_cases_gen_data 100 100 5
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:83"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=5.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:83: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:83"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:83"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:83: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:83"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:83"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1166
#AT_START_1167
at_fn_group_banner 1167 'sort-cases.at:84' \
  "sort 10000 cases (100 unique)" "                  " 103
at_xfail=no
(
  printf "%s\n" "1167. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:84: sort_cases_gen_data 100 100 "
at_fn_check_prepare_trace "sort-cases.at:84"
( $at_check_trace; sort_cases_gen_data 100 100
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:84"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:84: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:84"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:84"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:84: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:84"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:84"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1167
#AT_START_1168
at_fn_group_banner 1168 'sort-cases.at:86' \
  "sort 50000 cases (10000 unique) with 500 buffers" "" 103
at_xfail=no
(
  printf "%s\n" "1168. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:86: sort_cases_gen_data 10000 5 500"
at_fn_check_prepare_trace "sort-cases.at:86"
( $at_check_trace; sort_cases_gen_data 10000 5 500
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:86"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x/BUFFERS=500.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:86: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:86"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:86"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:86: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:86"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:86"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1168
#AT_START_1169
at_fn_group_banner 1169 'sort-cases.at:88' \
  "sort 50000 cases" "                               " 103
at_xfail=no
(
  printf "%s\n" "1169. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:88: sort_cases_gen_data 50000 1 "
at_fn_check_prepare_trace "sort-cases.at:88"
( $at_check_trace; sort_cases_gen_data 50000 1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:88"
$at_failed && at_fn_log_failure
$at_traceon; }




   cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE FILE='data.txt'/x y (F8).
SORT CASES BY x.
PRINT OUTFILE='output.txt'/x y.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:88: pspp --testing-mode -o pspp.csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:88"
( $at_check_trace; pspp --testing-mode -o pspp.csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:88"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/sort-cases.at:88: cat output.txt"
at_fn_check_prepare_trace "sort-cases.at:88"
( $at_check_trace; cat output.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:88"
$at_failed && at_fn_log_failure  \
"data.txt" \
"output.txt" \
"sort-cases.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1169
#AT_START_1170
at_fn_group_banner 1170 'sort-cases.at:91' \
  "SORT CASES preserves filtered cases" "            " 103
at_xfail=no
(
  printf "%s\n" "1170. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sort-cases.sps <<'_ATEOF'
DATA LIST FREE /x.
BEGIN DATA.
5 4 3 2 1 0
END DATA.
COMPUTE mod2 = MOD(x, 2).
LIST.
FILTER BY mod2.
LIST.
SORT CASES BY x.
LIST.
FILTER OFF.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sort-cases.at:106: pspp -O format=csv sort-cases.sps"
at_fn_check_prepare_trace "sort-cases.at:106"
( $at_check_trace; pspp -O format=csv sort-cases.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
x,mod2
5.00,1.00
4.00,.00
3.00,1.00
2.00,.00
1.00,1.00
.00,.00

Table: Data List
x,mod2
5.00,1.00
3.00,1.00
1.00,1.00

Table: Data List
x,mod2
1.00,1.00
3.00,1.00
5.00,1.00

Table: Data List
x,mod2
.00,.00
1.00,1.00
2.00,.00
3.00,1.00
4.00,.00
5.00,1.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-cases.at:106"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1170
#AT_START_1171
at_fn_group_banner 1171 'sort-cases.at:139' \
  "SORT CASES syntax errors" "                       " 103
at_xfail=no
(
  printf "%s\n" "1171. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sort-cases.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
SORT CASES BY **.
SORT CASES BY x(**).
SORT CASES BY x(D**).
SORT CASES BY x(A) x(D) y(**).
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='sort-cases.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sort-cases.at:150: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "sort-cases.at:150"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"sort-cases.sps:2.15-2.16: error: SORT CASES: Syntax error expecting variable name.
    2 | SORT CASES BY **.
      |               ^~\"

\"sort-cases.sps:3.17-3.18: error: SORT CASES: Syntax error expecting A or D.
    3 | SORT CASES BY x(**).
      |                 ^~\"

\"sort-cases.sps:4.18-4.19: error: SORT CASES: Syntax error expecting \`)'.
    4 | SORT CASES BY x(D**).
      |                  ^~\"

\"sort-cases.sps:5.15-5.23: warning: SORT CASES: Variable x specified twice in sort criteria.
    5 | SORT CASES BY x(A) x(D) y(**).
      |               ^~~~~~~~~\"

\"sort-cases.sps:5.27-5.28: error: SORT CASES: Syntax error expecting A or D.
    5 | SORT CASES BY x(A) x(D) y(**).
      |                           ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sort-cases.at:150"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1171
#AT_START_1172
at_fn_group_banner 1172 'sort-variables.at:19' \
  "SORT VARIABLES" "                                 " 104
at_xfail=no
(
  printf "%s\n" "1172. $at_setup_line: testing $at_desc ..."
  $at_traceon

# This reverses the order of its input lines.
# From the GNU sed manual.
tac () {
    sed -n '1! G
$ p
h'
}

test_sort () {
    cat > sort-variables.sps <<EOF
DATA LIST FREE/$1.
$2
SORT VARIABLES $3.
DISPLAY NAMES.
SORT VARIABLES $3(D).
DISPLAY NAMES.
EOF
    { set +x
printf "%s\n" "$at_srcdir/sort-variables.at:37: pspp -O format=csv sort-variables.sps"
at_fn_check_prepare_trace "sort-variables.at:37"
( $at_check_trace; pspp -O format=csv sort-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name
`for var in $4; do echo $var; done`

Table: Variables
Name
`for var in $4; do echo $var; done | tac`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sort-variables.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

}

test_sort 'x100 c b x99 a y400 y5' '' NAME 'a b c x99 x100 y5 y400'
test_sort 'a c e B D F' '' NAME 'a B c D e F'
test_sort 'c(a10) a(a5) b' '' TYPE 'b a c'
test_sort 'a (datetime) b (f) c (a5) d (a2) e (a1)' '' FORMAT 'e d c b a'
test_sort 'a b c' \
    'VARIABLE LABEL a "hi there".' \
    LABEL 'b c a'
test_sort 'a b c' \
    'VALUE LABELS a 123 "xyzzy".' \
    VALUES 'b c a'
test_sort 'a b c' \
    'MISSING VALUES a (123).' \
    MISSING 'b c a'
test_sort 'a b c' \
    'VARIABLE LEVEL a (SCALE) b (ORDINAL) c (NOMINAL).' \
    MEASURE 'c b a'
test_sort 'b n i s t p' \
    'VARIABLE ROLE /INPUT i /TARGET t /BOTH b /NONE n /PARTITION p /SPLIT s.' \
    ROLE 'i t b n p s'
test_sort 'c10 c5 c15 c9' \
    'VARIABLE WIDTH c10(10) c5(5) c15(15) c9(9).' \
    COLUMNS 'c5 c9 c10 c15'
test_sort 'c l r' \
    'VARIABLE ALIGNMENT c (CENTER) l (LEFT) r (RIGHT).' \
    ALIGNMENT 'l r c'
test_sort 'az ax ay ab' \
    'VARIABLE ATTRIBUTE VARIABLES=az ATTRIBUTE=key("z").
     VARIABLE ATTRIBUTE VARIABLES=ax ATTRIBUTE=key("x").
     VARIABLE ATTRIBUTE VARIABLES=ay ATTRIBUTE=key("y").
     VARIABLE ATTRIBUTE VARIABLES=ab ATTRIBUTE=key("b").' \
    'ATTRIBUTE key' 'ab ax ay az'
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1172
#AT_START_1173
at_fn_group_banner 1173 'sort-variables.at:81' \
  "SORT VARIABLES syntax errors" "                   " 104
at_xfail=no
(
  printf "%s\n" "1173. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sort-variables.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
SORT VARIABLES BY **.
SORT VARIABLES BY ATTRIBUTE **.
SORT VARIABLES BY NAME (**).
SORT VARIABLES BY NAME (A **).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sort-variables.at:89: pspp -O format=csv sort-variables.sps"
at_fn_check_prepare_trace "sort-variables.at:89"
( $at_check_trace; pspp -O format=csv sort-variables.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"sort-variables.sps:2.19-2.20: error: SORT VARIABLES: Syntax error expecting one of the following: NAME, TYPE, FORMAT, LABEL, VALUES, MISSING, MEASURE, ROLE, COLUMNS, ALIGNMENT, ATTRIBUTE.
    2 | SORT VARIABLES BY **.
      |                   ^~\"

\"sort-variables.sps:3.29-3.30: error: SORT VARIABLES: Syntax error expecting identifier.
    3 | SORT VARIABLES BY ATTRIBUTE **.
      |                             ^~\"

\"sort-variables.sps:4.25-4.26: error: SORT VARIABLES: Syntax error expecting A or D.
    4 | SORT VARIABLES BY NAME (**).
      |                         ^~\"

\"sort-variables.sps:5.27-5.28: error: SORT VARIABLES: Syntax error expecting \`)'.
    5 | SORT VARIABLES BY NAME (A **).
      |                           ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/sort-variables.at:89"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1173
#AT_START_1174
at_fn_group_banner 1174 'split-file.at:19' \
  "SPLIT FILE - basic test" "                        " 105
at_xfail=no
(
  printf "%s\n" "1174. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >split-file.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/split-file.at:42: pspp -o pspp.csv split-file.sps"
at_fn_check_prepare_trace "split-file.at:42"
( $at_check_trace; pspp -o pspp.csv split-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/split-file.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/split-file.at:43: cat pspp.csv"
at_fn_check_prepare_trace "split-file.at:43"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Split Values
Variable,Value
X,1

Table: Data List
X,Y
1,2
1,6
1,7
1,9
1,5
1,4

Table: Split Values
Variable,Value
X,2

Table: Data List
X,Y
2,7
2,0
2,6
2,5
2,8
2,9
2,4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/split-file.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1174
#AT_START_1175
at_fn_group_banner 1175 'split-file.at:73' \
  "SPLIT FILE  - vs procedures" "                    " 105
at_xfail=no
(
  printf "%s\n" "1175. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >split-file.sps <<'_ATEOF'

* This test is a compendium of those procedures which might
* have problems when run in conjunction with SPLITS.

data list list /a b c q g *.
begin data.
1 2 3     1  0
4 5 6     0  0
7 8 9     1  0
10 11 12  0  1
13 14 15  1  1
end data.

split file by g.


* The commented out lines are ones which currently fail.

AGGREGATE outfile='foo' /break=c /X=sum(a).
AUTORECODE variables = c into d .
COUNT e = c (1 2 3 4 5 6 7).
CROSSTABS a by b.
CORRELATIONS /VARIABLES = a b.
DELETE VARIABLES a.
DESCRIPTIVES e .
EXAMINE c by b.
EXPORT outfile='xxx'.
FACTOR /VARIABLES = b c d.
FILTER BY c.
FREQUENCIES b.
GLM c BY b.
GRAPH /HISTOGRAM = b .
GRAPH /SCATTERPLOT(BIVARIATE) = b with c by e .
*GRAPH /BAR (GROUPED) = MEAN(b) by c by e.
GRAPH /BAR = COUNT BY  b.
LIST.
LOGISTIC REGRESSION q WITH b.
MEANS c b.
NPAR TESTS /MCNEMAR q.
ONEWAY c BY b.
QUICK CLUSTER b c.
RANK b c.
REGRESSION /VARIABLES = c /DEPENDENT = q.
RELIABILITY /VARIABLES = c b d.
RENAME VARIABLES (b = bb).
ROC bb by q(1).
SAMPLE 0.9 .
SAVE outfile='xx.sav'.
SORT CASES by bb.
T-TEST /GROUP=q(0,1) /VARIABLES=bb.
USE ALL.
FLIP /VARIABLES = bb, c .

execute.
finish.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/split-file.at:132: pspp -O format=csv split-file.sps"
at_fn_check_prepare_trace "split-file.at:132"
( $at_check_trace; pspp -O format=csv split-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/split-file.at:132"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1175
#AT_START_1176
at_fn_group_banner 1176 'split-file.at:136' \
  "SPLIT FILE - split variable limit" "              " 105
at_xfail=no
(
  printf "%s\n" "1176. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >split-file.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /V1 TO V9.
SPLIT FILE BY V1 TO V9.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/split-file.at:141: pspp split-file.sps"
at_fn_check_prepare_trace "split-file.at:141"
( $at_check_trace; pspp split-file.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "split-file.sps:2.15-2.22: error: SPLIT FILE: At most 8 split variables may be
specified.
    2 | SPLIT FILE BY V1 TO V9.
      |               ^~~~~~~~
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/split-file.at:141"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1176
#AT_START_1177
at_fn_group_banner 1177 'split-file.at:149' \
  "SPLIT FILE - SHOW SPLIT and SPLIT FILE OFF" "     " 105
at_xfail=no
(
  printf "%s\n" "1177. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >show.sps <<'_ATEOF'
SET PRINTBACK=ON.

SHOW SPLIT.

DATA LIST LIST NOTABLE/x y z.
SPLIT FILE BY x y.
SHOW SPLIT.

SPLIT FILE LAYERED BY y z.
SHOW SPLIT.

SPLIT FILE SEPARATE BY x z.
SHOW SPLIT.

SPLIT FILE OFF.
SHOW SPLIT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/split-file.at:168: pspp show.sps -O box=unicode"
at_fn_check_prepare_trace "split-file.at:168"
( $at_check_trace; pspp show.sps -O box=unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "SET PRINTBACK=ON.


SHOW SPLIT.

  Settings
╭─────┬────╮
│SPLIT│none│
╰─────┴────╯


DATA LIST LIST NOTABLE/x y z.

SPLIT FILE BY x y.

SHOW SPLIT.

       Settings
╭─────┬──────────────╮
│SPLIT│x, y (LAYERED)│
╰─────┴──────────────╯


SPLIT FILE LAYERED BY y z.

SHOW SPLIT.

       Settings
╭─────┬──────────────╮
│SPLIT│y, z (LAYERED)│
╰─────┴──────────────╯


SPLIT FILE SEPARATE BY x z.

SHOW SPLIT.

        Settings
╭─────┬───────────────╮
│SPLIT│x, z (SEPARATE)│
╰─────┴───────────────╯


SPLIT FILE OFF.

SHOW SPLIT.

  Settings
╭─────┬────╮
│SPLIT│none│
╰─────┴────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/split-file.at:168"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1177
#AT_START_1178
at_fn_group_banner 1178 'string.at:3' \
  "STRING" "                                         " 106
at_xfail=no
(
  printf "%s\n" "1178. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >string.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
STRING s1 (A8)/s2 (A1).
DISPLAY DICTIONARY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/string.at:9: pspp -O format=csv string.sps"
at_fn_check_prepare_trace "string.at:9"
( $at_check_trace; pspp -O format=csv string.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
x,1,Unknown,Input,8,Right,F8.2,F8.2
y,2,Unknown,Input,8,Right,F8.2,F8.2
z,3,Unknown,Input,8,Right,F8.2,F8.2
s1,4,Nominal,Input,8,Left,A8,A8
s2,5,Nominal,Input,1,Left,A1,A1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string.at:9"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1178
#AT_START_1179
at_fn_group_banner 1179 'string.at:20' \
  "STRING syntax errors" "                           " 106
at_xfail=no
(
  printf "%s\n" "1179. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >string.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
STRING **.
STRING s **.
STRING s (**).
STRING s (F8).
STRING s (AHEX1).
STRING s (A8 **).
STRING x (A8).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/string.at:31: pspp -O format=csv string.sps"
at_fn_check_prepare_trace "string.at:31"
( $at_check_trace; pspp -O format=csv string.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"string.sps:2.8-2.9: error: STRING: Syntax error expecting variable name.
    2 | STRING **.
      |        ^~\"

\"string.sps:3.10-3.11: error: STRING: Syntax error expecting \`('.
    3 | STRING s **.
      |          ^~\"

\"string.sps:4.11-4.12: error: STRING: Syntax error expecting valid format specifier.
    4 | STRING s (**).
      |           ^~\"

\"string.sps:5.11-5.12: error: STRING: String variables are not compatible with numeric format F8.0.
    5 | STRING s (F8).
      |           ^~\"

\"string.sps:6.11-6.15: error: STRING: Output format AHEX1 specifies width 1, but AHEX requires an even width.
    6 | STRING s (AHEX1).
      |           ^~~~~\"

\"string.sps:7.14-7.15: error: STRING: Syntax error expecting \`)'.
    7 | STRING s (A8 **).
      |              ^~\"

\"string.sps:8.8: error: STRING: There is already a variable named x.
    8 | STRING x (A8).
      |        ^\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/string.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1179
#AT_START_1180
at_fn_group_banner 1180 'sys-file-info.at:19' \
  "SYSFILE INFO" "                                   " 107
at_xfail=no
(
  printf "%s\n" "1180. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sysfile-info.sps <<'_ATEOF'
DATA LIST LIST /x * name (a10) .
BEGIN DATA
1 one
2 two
3 three
END DATA.
DOCUMENT A document.
SAVE OUTFILE='pro.sav'.

sysfile info file='pro.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file-info.at:32: pspp -o pspp.csv sysfile-info.sps"
at_fn_check_prepare_trace "sys-file-info.at:32"
( $at_check_trace; pspp -o pspp.csv sysfile-info.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-info.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/sys-file-info.at:33: sed -e '/^Created,/d' \\
       -e '/^Endian,/d' \\
       -e '/^Integer Format,/d' \\
       -e '/^Real Format,/d' \\
       -e '/^Encoding,/d' \\
       -e 's/(Entered.*)/(Entered <date>)/' pspp.csv"
at_fn_check_prepare_notrace 'an embedded newline' "sys-file-info.at:33"
( $at_check_trace; sed -e '/^Created,/d' \
       -e '/^Endian,/d' \
       -e '/^Integer Format,/d' \
       -e '/^Real Format,/d' \
       -e '/^Encoding,/d' \
       -e 's/(Entered.*)/(Entered <date>)/' pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0
name,A10

Table: File Information
File,pro.sav
Variables,2
Cases,3
Type,SPSS System File
Weight,Not weighted
Compression,SAV
Documents,\"DOCUMENT A document.
   (Entered <date>)\"

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
x,1,Nominal,Input,8,Right,F8.2,F8.2
name,2,Nominal,Input,10,Left,A10,A10
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-info.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1180
#AT_START_1181
at_fn_group_banner 1181 'sys-file-info.at:67' \
  "DISPLAY FILE LABEL" "                             " 108
at_xfail=no
(
  printf "%s\n" "1181. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >display.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x * name (a10) .

DISPLAY FILE LABEL.

FILE LABEL 'foo bar baz quux'.
DISPLAY FILE LABEL.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file-info.at:76: pspp -O format=csv display.sps"
at_fn_check_prepare_trace "sys-file-info.at:76"
( $at_check_trace; pspp -O format=csv display.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Label
Label,(none)

Table: File Label
Label,foo bar baz quux
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-info.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1181
#AT_START_1182
at_fn_group_banner 1182 'sys-file-info.at:89' \
  "DISPLAY SCRATCH" "                                " 108
at_xfail=no
(
  printf "%s\n" "1182. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sysfile-info.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x * name (a10) .
DISPLAY SCRATCH.
COMPUTE #x=0.
DISPLAY SCRATCH.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file-info.at:96: pspp -O format=csv sysfile-info.sps"
at_fn_check_prepare_trace "sys-file-info.at:96"
( $at_check_trace; pspp -O format=csv sysfile-info.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "sysfile-info.sps:2: note: DISPLAY: No variables to display.

Table: Variables
Name
#x
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-info.at:96"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1182
#AT_START_1183
at_fn_group_banner 1183 'sys-file-info.at:105' \
  "DISPLAY INDEX" "                                  " 108
at_xfail=no
(
  printf "%s\n" "1183. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sysfile-info.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x * name (a10) .
DISPLAY INDEX.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file-info.at:110: pspp -O format=csv sysfile-info.sps"
at_fn_check_prepare_trace "sys-file-info.at:110"
( $at_check_trace; pspp -O format=csv sysfile-info.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position
x,1
name,2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-info.at:110"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1183
#AT_START_1184
at_fn_group_banner 1184 'sys-file-info.at:118' \
  "DISPLAY NAMES" "                                  " 108
at_xfail=no
(
  printf "%s\n" "1184. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sysfile-info.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x * name (a10) .
DISPLAY NAMES.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file-info.at:123: pspp -O format=csv sysfile-info.sps"
at_fn_check_prepare_trace "sys-file-info.at:123"
( $at_check_trace; pspp -O format=csv sysfile-info.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name
x
name
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-info.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1184
#AT_START_1185
at_fn_group_banner 1185 'sys-file-info.at:131' \
  "DISPLAY LABELS" "                                 " 108
at_xfail=no
(
  printf "%s\n" "1185. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sysfile-info.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x * name (a10) .
VARIABLE LABEL x 'variable one' name 'variable two'.
VALUE LABEL x 1 'asdf' 2 'jkl;'.
DISPLAY LABELS.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/sys-file-info.at:138: pspp -O format=csv sysfile-info.sps"
at_fn_check_prepare_trace "sys-file-info.at:138"
( $at_check_trace; pspp -O format=csv sysfile-info.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Label
x,1,variable one
name,2,variable two
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sys-file-info.at:138"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1185
#AT_START_1186
at_fn_group_banner 1186 't-test.at:19' \
  "T-TEST /PAIRS" "                                  " 109
at_xfail=no
(
  printf "%s\n" "1186. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:33: pspp -o pspp.csv -o pspp.txt t-test.sps"
at_fn_check_prepare_trace "t-test.at:33"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:34: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:34"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
ID,F8.0
A,F8.0
B,F8.0

Table: Paired Sample Statistics
,,N,Mean,Std. Deviation,S.E. Mean
Pair 1,A,5,2.00,.71,.32
,B,5,4.00,1.54,.69

Table: Paired Samples Correlations
,,N,Correlation,Sig.
Pair 1,A & B,5,.918,.028

Table: Paired Samples Test
,,Paired Differences,,,,,t,df,Sig. (2-tailed)
,,Mean,Std. Deviation,S.E. Mean,95% Confidence Interval of the Difference,,,,
,,,,,Lower,Upper,,,
Pair 1,A - B,-2.00,.94,.42,-3.16,-.84,-4.78,4,.009
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1186
#AT_START_1187
at_fn_group_banner 1187 't-test.at:59' \
  "T-TEST /PAIRS with duplicate variables in list" " " 109
at_xfail=no
(
  printf "%s\n" "1187. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >ref.sps <<'_ATEOF'
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 a with b d c (PAIRED).
_ATEOF


cat >expout <<'_ATEOF'
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
,,N,Mean,Std. Deviation,S.E. Mean
Pair 1,a,5,2.00,.71,.32
,b,5,4.00,1.54,.69
Pair 2,c,5,5.10,.69,.31
,d,5,3.80,.16,.07
Pair 3,a,5,2.00,.71,.32
,c,5,5.10,.69,.31

Table: Paired Samples Correlations
,,N,Correlation,Sig.
Pair 1,a & b,5,.918,.028
Pair 2,c & d,5,-.918,.028
Pair 3,a & c,5,.410,.493

Table: Paired Samples Test
,,Paired Differences,,,,,t,df,Sig. (2-tailed)
,,Mean,Std. Deviation,S.E. Mean,95% Confidence Interval of the Difference,,,,
,,,,,Lower,Upper,,,
Pair 1,a - b,-2.00,.94,.42,-3.16,-.84,-4.78,4,.009
Pair 2,c - d,1.30,.84,.37,.26,2.34,3.47,4,.025
Pair 3,a - c,-3.10,.76,.34,-4.04,-2.16,-9.14,4,.001
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:107: pspp -o ref.csv ref.sps"
at_fn_check_prepare_trace "t-test.at:107"
( $at_check_trace; pspp -o ref.csv ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:108: cat ref.csv"
at_fn_check_prepare_trace "t-test.at:108"
( $at_check_trace; cat ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:108"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1187
#AT_START_1188
at_fn_group_banner 1188 't-test.at:111' \
  "T-TEST /PAIRS with per-analysis missing values" " " 109
at_xfail=no
(
  printf "%s\n" "1188. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >ref.sps <<'_ATEOF'
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).
_ATEOF


cat >expout <<'_ATEOF'
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
,,N,Mean,Std. Deviation,S.E. Mean
Pair 1,a,5,2.00,.71,.32
,b,5,4.00,1.54,.69
Pair 2,c,5,5.10,.69,.31
,d,5,3.80,.16,.07

Table: Paired Samples Correlations
,,N,Correlation,Sig.
Pair 1,a & b,5,.918,.028
Pair 2,c & d,5,-.918,.028

Table: Paired Samples Test
,,Paired Differences,,,,,t,df,Sig. (2-tailed)
,,Mean,Std. Deviation,S.E. Mean,95% Confidence Interval of the Difference,,,,
,,,,,Lower,Upper,,,
Pair 1,a - b,-2.00,.94,.42,-3.16,-.84,-4.78,4,.009
Pair 2,c - d,1.30,.84,.37,.26,2.34,3.47,4,.025
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:155: pspp -o ref.csv ref.sps"
at_fn_check_prepare_trace "t-test.at:155"
( $at_check_trace; pspp -o ref.csv ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:155"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:156: cat ref.csv"
at_fn_check_prepare_trace "t-test.at:156"
( $at_check_trace; cat ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:156"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >missing.sps <<'_ATEOF'
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) /CRITERIA=CI(0.95).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:172: pspp -o missing.csv missing.sps"
at_fn_check_prepare_trace "t-test.at:172"
( $at_check_trace; pspp -o missing.csv missing.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:172"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:173: cat missing.csv"
at_fn_check_prepare_trace "t-test.at:173"
( $at_check_trace; cat missing.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:173"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1188
#AT_START_1189
at_fn_group_banner 1189 't-test.at:176' \
  "T-TEST /PAIRS with listwise missing values" "     " 109
at_xfail=no
(
  printf "%s\n" "1189. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ref.sps <<'_ATEOF'
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).
_ATEOF


cat >expout <<'_ATEOF'
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
,,N,Mean,Std. Deviation,S.E. Mean
Pair 1,a,5,2.00,.71,.32
,c,5,5.10,.69,.31
Pair 2,b,5,4.00,1.54,.69
,d,5,3.80,.16,.07

Table: Paired Samples Correlations
,,N,Correlation,Sig.
Pair 1,a & c,5,.410,.493
Pair 2,b & d,5,-.872,.054

Table: Paired Samples Test
,,Paired Differences,,,,,t,df,Sig. (2-tailed)
,,Mean,Std. Deviation,S.E. Mean,95% Confidence Interval of the Difference,,,,
,,,,,Lower,Upper,,,
Pair 1,a - c,-3.10,.76,.34,-4.04,-2.16,-9.14,4,.001
Pair 2,b - d,.20,1.68,.75,-1.89,2.29,.27,4,.803
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:219: pspp -o ref.csv ref.sps"
at_fn_check_prepare_trace "t-test.at:219"
( $at_check_trace; pspp -o ref.csv ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:219"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:221: cat ref.csv"
at_fn_check_prepare_trace "t-test.at:221"
( $at_check_trace; cat ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:221"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >missing.sps <<'_ATEOF'
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).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:237: pspp -o missing.csv missing.sps"
at_fn_check_prepare_trace "t-test.at:237"
( $at_check_trace; pspp -o missing.csv missing.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:237"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:238: cat missing.csv"
at_fn_check_prepare_trace "t-test.at:238"
( $at_check_trace; cat missing.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:238"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1189
#AT_START_1190
at_fn_group_banner 1190 't-test.at:244' \
  "T-TEST weighted paired bug" "                     " 109
at_xfail=no
(
  printf "%s\n" "1190. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
DATA LIST notable LIST /x y w *.
BEGIN DATA.
1 1 255
1 2 43
1 3 216
2 1 3
2 2 1
2 3 12
END DATA.

WEIGHT BY w.

T-TEST
        PAIRS =  y WITH  x (PAIRED)
        /MISSING=ANALYSIS
        /CRITERIA=CI(0.95).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:264: pspp -o pspp.csv -o pspp.txt t-test.sps"
at_fn_check_prepare_trace "t-test.at:264"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:264"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:265: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:265"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Paired Sample Statistics
,,N,Mean,Std. Deviation,S.E. Mean
Pair 1,y,530.00,1.94,.96,.04
,x,530.00,1.03,.17,.01

Table: Paired Samples Correlations
,,N,Correlation,Sig.
Pair 1,y & x,530.00,.114,.008

Table: Paired Samples Test
,,Paired Differences,,,,,t,df,Sig. (2-tailed)
,,Mean,Std. Deviation,S.E. Mean,95% Confidence Interval of the Difference,,,,
,,,,,Lower,Upper,,,
Pair 1,y - x,.91,.95,.04,.83,.99,22.07,529.00,.000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:265"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1190
#AT_START_1191
at_fn_group_banner 1191 't-test.at:286' \
  "T-TEST /PAIRS bug" "                              " 109
at_xfail=no
(
  printf "%s\n" "1191. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:298: pspp -o pspp.csv t-test.sps"
at_fn_check_prepare_trace "t-test.at:298"
( $at_check_trace; pspp -o pspp.csv t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:298"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:299: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:299"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
A,F8.0
B,F8.0

Table: Paired Sample Statistics
,,N,Mean,Std. Deviation,S.E. Mean
Pair 1,A,3,4.333,5.774,3.333
,B,3,1.333,.577,.333

Table: Paired Samples Correlations
,,N,Correlation,Sig.
Pair 1,A & B,3,1.000,.000

Table: Paired Samples Test
,,Paired Differences,,,,,t,df,Sig. (2-tailed)
,,Mean,Std. Deviation,S.E. Mean,95% Confidence Interval of the Difference,,,,
,,,,,Lower,Upper,,,
Pair 1,A - B,3.000,5.196,3.000,-9.908,15.908,1.000,2,.423
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:299"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1191
#AT_START_1192
at_fn_group_banner 1192 't-test.at:322' \
  "T-TEST /GROUPS" "                                 " 109
at_xfail=no
(
  printf "%s\n" "1192. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:345: pspp -o pspp.csv -o pspp.txt t-test.sps"
at_fn_check_prepare_trace "t-test.at:345"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:345"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:346: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:346"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
ID,F8.0
INDEP,F8.0
DEP1,F8.0
DEP2,F8.0

Table: Group Statistics
,Group,N,Mean,Std. Deviation,S.E. Mean
DEP1,1.10,5,2.00,.71,.32
,2.10,5,4.00,.71,.32
DEP2,1.10,5,4.00,.71,.32
,2.10,5,2.00,.71,.32

Table: Independent Samples Test
,,Levene's Test for Equality of Variances,,T-Test for Equality of Means,,,,,,
,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,95% Confidence Interval of the Difference,
,,,,,,,,,Lower,Upper
DEP1,Equal variances assumed,.00,1.000,-4.47,8.00,.002,-2.00,.45,-3.03,-.97
,Equal variances not assumed,,,-4.47,8.00,.002,-2.00,.45,-3.03,-.97
DEP2,Equal variances assumed,.00,1.000,4.47,8.00,.002,2.00,.45,.97,3.03
,Equal variances not assumed,,,4.47,8.00,.002,2.00,.45,.97,3.03
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:346"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1192
#AT_START_1193
at_fn_group_banner 1193 't-test.at:372' \
  "T-TEST /GROUPS with one value for independent variable" "" 109
at_xfail=no
(
  printf "%s\n" "1193. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:402: pspp -o pspp.csv -o pspp.txt t-test.sps"
at_fn_check_prepare_trace "t-test.at:402"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:402"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:403: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:403"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
INDEP,F8.0
DEP,F8.0

Table: Group Statistics
,Group,N,Mean,Std. Deviation,S.E. Mean
DEP,≥    1.51,11,9.00,3.82,1.15
,<    1.51,11,8.00,2.86,.86

Table: Independent Samples Test
,,Levene's Test for Equality of Variances,,T-Test for Equality of Means,,,,,,
,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,95% Confidence Interval of the Difference,
,,,,,,,,,Lower,Upper
DEP,Equal variances assumed,.17,.683,.69,20.00,.495,1.00,1.44,-2.00,4.00
,Equal variances not assumed,,,.69,18.54,.496,1.00,1.44,-2.02,4.02
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:403"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1193
#AT_START_1194
at_fn_group_banner 1194 't-test.at:423' \
  "T-TEST /GROUPS with per-analysis missing values" "" 109
at_xfail=no
(
  printf "%s\n" "1194. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ref.sps <<'_ATEOF'
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.
_ATEOF

cat >expout <<'_ATEOF'
Table: Reading free-form data from INLINE.
Variable,Format
id,F8.0
indep,F8.0
dep1,F8.0
dep2,F8.0

Table: Group Statistics
,Group,N,Mean,Std. Deviation,S.E. Mean
dep1,1.00,3,2.50,.87,.50
,2.00,2,3.25,.35,.25
dep2,1.00,3,5.00,1.00,.58
,2.00,2,2.00,1.41,1.00

Table: Independent Samples Test
,,Levene's Test for Equality of Variances,,T-Test for Equality of Means,,,,,,
,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,95% Confidence Interval of the Difference,
,,,,,,,,,Lower,Upper
dep1,Equal variances assumed,3.75,.148,-1.12,3.00,.346,-.75,.67,-2.89,1.39
,Equal variances not assumed,,,-1.34,2.78,.279,-.75,.56,-2.61,1.11
dep2,Equal variances assumed,.60,.495,2.85,3.00,.065,3.00,1.05,-.35,6.35
,Equal variances not assumed,,,2.60,1.68,.144,3.00,1.15,-2.98,8.98
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:460: pspp -o ref.csv ref.sps"
at_fn_check_prepare_trace "t-test.at:460"
( $at_check_trace; pspp -o ref.csv ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:460"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:461: cat ref.csv"
at_fn_check_prepare_trace "t-test.at:461"
( $at_check_trace; cat ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:461"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >missing.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:479: pspp -o missing.csv missing.sps"
at_fn_check_prepare_trace "t-test.at:479"
( $at_check_trace; pspp -o missing.csv missing.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:479"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:480: cat missing.csv"
at_fn_check_prepare_trace "t-test.at:480"
( $at_check_trace; cat missing.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:480"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1194
#AT_START_1195
at_fn_group_banner 1195 't-test.at:483' \
  "T-TEST /GROUPS with listwise missing values" "    " 109
at_xfail=no
(
  printf "%s\n" "1195. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ref.sps <<'_ATEOF'
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.
_ATEOF


cat >expout <<'_ATEOF'
Table: Reading free-form data from INLINE.
Variable,Format
id,F8.0
indep,F8.0
dep1,F8.0
dep2,F8.0

Table: Group Statistics
,Group,N,Mean,Std. Deviation,S.E. Mean
dep1,1.00,3,2.50,.87,.50
,2.00,3,3.50,.50,.29
dep2,1.00,3,5.00,1.00,.58
,2.00,3,2.00,1.00,.58

Table: Independent Samples Test
,,Levene's Test for Equality of Variances,,T-Test for Equality of Means,,,,,,
,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,95% Confidence Interval of the Difference,
,,,,,,,,,Lower,Upper
dep1,Equal variances assumed,2.00,.230,-1.73,4.00,.158,-1.00,.58,-2.60,.60
,Equal variances not assumed,,,-1.73,3.20,.176,-1.00,.58,-2.77,.77
dep2,Equal variances assumed,.00,1.000,3.67,4.00,.021,3.00,.82,.73,5.27
,Equal variances not assumed,,,3.67,4.00,.021,3.00,.82,.73,5.27
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:523: pspp -o ref.csv ref.sps"
at_fn_check_prepare_trace "t-test.at:523"
( $at_check_trace; pspp -o ref.csv ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:523"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:524: cat ref.csv"
at_fn_check_prepare_trace "t-test.at:524"
( $at_check_trace; cat ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:524"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >missing.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:539: pspp -o missing.csv missing.sps"
at_fn_check_prepare_trace "t-test.at:539"
( $at_check_trace; pspp -o missing.csv missing.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:539"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:540: cat missing.csv"
at_fn_check_prepare_trace "t-test.at:540"
( $at_check_trace; cat missing.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:540"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1195
#AT_START_1196
at_fn_group_banner 1196 't-test.at:543' \
  "T-TEST /TESTVAL" "                                " 109
at_xfail=no
(
  printf "%s\n" "1196. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:557: pspp -o pspp.csv -o pspp.txt t-test.sps"
at_fn_check_prepare_trace "t-test.at:557"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:557"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:558: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:558"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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,,,,,
,t,df,Sig. (2-tailed),Mean Difference,95% Confidence Interval of the Difference,
,,,,,Lower,Upper
ABC,2.93,5,.033,1.00,.12,1.88
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:558"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1196
#AT_START_1197
at_fn_group_banner 1197 't-test.at:576' \
  "T-TEST /TESTVAL with per-analysis missing values" "" 109
at_xfail=no
(
  printf "%s\n" "1197. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ref.sps <<'_ATEOF'
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.
_ATEOF

cat >expout <<'_ATEOF'
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,,,,,
,t,df,Sig. (2-tailed),Mean Difference,95% Confidence Interval of the Difference,
,,,,,Lower,Upper
x1,.00,5,1.000,.00,-.88,.88
x2,2.18,5,.082,29.67,-5.39,64.72
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:609: pspp -o ref.csv ref.sps"
at_fn_check_prepare_trace "t-test.at:609"
( $at_check_trace; pspp -o ref.csv ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:609"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:610: cat ref.csv"
at_fn_check_prepare_trace "t-test.at:610"
( $at_check_trace; cat ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:610"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >missing.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:625: pspp -o missing.csv missing.sps"
at_fn_check_prepare_trace "t-test.at:625"
( $at_check_trace; pspp -o missing.csv missing.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:625"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:626: cat missing.csv"
at_fn_check_prepare_trace "t-test.at:626"
( $at_check_trace; cat missing.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:626"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1197
#AT_START_1198
at_fn_group_banner 1198 't-test.at:629' \
  "T-TEST /TESTVAL with listwise missing values" "   " 109
at_xfail=no
(
  printf "%s\n" "1198. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ref.sps <<'_ATEOF'
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.
_ATEOF

cat >expout <<'_ATEOF'
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,,,,,
,t,df,Sig. (2-tailed),Mean Difference,95% Confidence Interval of the Difference,
,,,,,Lower,Upper
x1,-.59,4,.587,-.20,-1.14,.74
x2,2.22,4,.090,34.60,-8.63,77.83
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:661: pspp -o ref.csv ref.sps"
at_fn_check_prepare_trace "t-test.at:661"
( $at_check_trace; pspp -o ref.csv ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:661"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:662: cat ref.csv"
at_fn_check_prepare_trace "t-test.at:662"
( $at_check_trace; cat ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:662"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >missing.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:678: pspp -o missing.csv missing.sps"
at_fn_check_prepare_trace "t-test.at:678"
( $at_check_trace; pspp -o missing.csv missing.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:678"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:679: cat missing.csv"
at_fn_check_prepare_trace "t-test.at:679"
( $at_check_trace; cat missing.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:679"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1198
#AT_START_1199
at_fn_group_banner 1199 't-test.at:682' \
  "T-TEST wih TEMPORARY transformation" "            " 109
at_xfail=no
(
  printf "%s\n" "1199. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ref.sps <<'_ATEOF'
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.
_ATEOF

cat >expout <<'_ATEOF'
Table: Reading free-form data from INLINE.
Variable,Format
ind,F8.0
x,F8.0

Table: Group Statistics
,Group,N,Mean,Std. Deviation,S.E. Mean
x,1.00,3,2.50,.87,.50
,2.00,3,3.50,.50,.29

Table: Independent Samples Test
,,Levene's Test for Equality of Variances,,T-Test for Equality of Means,,,,,,
,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,95% Confidence Interval of the Difference,
,,,,,,,,,Lower,Upper
x,Equal variances assumed,2.00,.230,-1.73,4.00,.158,-1.00,.58,-2.60,.60
,Equal variances not assumed,,,-1.73,3.20,.176,-1.00,.58,-2.77,.77
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:714: pspp -o ref.csv ref.sps"
at_fn_check_prepare_trace "t-test.at:714"
( $at_check_trace; pspp -o ref.csv ref.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:714"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:715: cat ref.csv"
at_fn_check_prepare_trace "t-test.at:715"
( $at_check_trace; cat ref.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:715"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >temporary.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:733: pspp -o temporary.csv temporary.sps"
at_fn_check_prepare_trace "t-test.at:733"
( $at_check_trace; pspp -o temporary.csv temporary.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:733"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:734: cat temporary.csv"
at_fn_check_prepare_trace "t-test.at:734"
( $at_check_trace; cat temporary.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:734"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1199
#AT_START_1200
at_fn_group_banner 1200 't-test.at:740' \
  "T-TEST tutorial example" "                        " 109
at_xfail=no
(
  printf "%s\n" "1200. $at_setup_line: testing $at_desc ..."
  $at_traceon

cp $top_srcdir/examples/physiology.sav .
cat >t-test.sps <<'_ATEOF'
GET FILE='physiology.sav'.
RECODE height (179 = SYSMIS).
T-TEST GROUP=sex(0,1) /VARIABLES=height temperature.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:747: pspp -o pspp.csv -o pspp.txt t-test.sps"
at_fn_check_prepare_trace "t-test.at:747"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:747"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:748: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:748"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Group Statistics
,Group,N,Mean,Std. Deviation,S.E. Mean
Height in millimeters   ,Male,22,1796.49,49.71,10.60
,Female,17,1610.77,25.43,6.17
Internal body temperature in degrees Celcius,Male,22,36.68,1.95,.42
,Female,18,37.43,1.61,.38

Table: Independent Samples Test
,,Levene's Test for Equality of Variances,,T-Test for Equality of Means,,,,,,
,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,95% Confidence Interval of the Difference,
,,,,,,,,,Lower,Upper
Height in millimeters   ,Equal variances assumed,.97,.331,14.02,37.00,.000,185.72,13.24,158.88,212.55
,Equal variances not assumed,,,15.15,32.71,.000,185.72,12.26,160.76,210.67
Internal body temperature in degrees Celcius,Equal variances assumed,.31,.581,-1.31,38.00,.198,-.75,.57,-1.91,.41
,Equal variances not assumed,,,-1.33,37.99,.190,-.75,.56,-1.89,.39
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:748"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1200
#AT_START_1201
at_fn_group_banner 1201 't-test.at:768' \
  "T-TEST invalid syntax" "                          " 109
at_xfail=no
(
  printf "%s\n" "1201. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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) .
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:783: pspp -O format=csv t-test.sps"
at_fn_check_prepare_trace "t-test.at:783"
( $at_check_trace; pspp -O format=csv t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"t-test.sps:11.1-11.21: error: T-TEST: Required subcommand VARIABLES was not specified.
   11 | T-TEST /testval=2.0 .
      | ^~~~~~~~~~~~~~~~~~~~~\"

\"t-test.sps:12.1-12.22: error: T-TEST: Required subcommand VARIABLES was not specified.
   12 | T-TEST /groups=id(3) .
      | ^~~~~~~~~~~~~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/t-test.at:783"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1201
#AT_START_1202
at_fn_group_banner 1202 't-test.at:795' \
  "T-TEST string variable" "                         " 109
at_xfail=no
(
  printf "%s\n" "1202. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:816: pspp -o pspp.csv -o pspp.txt t-test.sps"
at_fn_check_prepare_trace "t-test.at:816"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:816"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:817: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:817"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
ID,F8.0
INDEP,A1
DEP1,F8.0
DEP2,F8.0

Table: Group Statistics
,Group,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,,,,,,
,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,95% Confidence Interval of the Difference,
,,,,,,,,,Lower,Upper
DEP1,Equal variances assumed,.00,1.000,-4.47,8.00,.002,-2.00,.45,-3.03,-.97
,Equal variances not assumed,,,-4.47,8.00,.002,-2.00,.45,-3.03,-.97
DEP2,Equal variances assumed,.00,1.000,4.47,8.00,.002,2.00,.45,.97,3.03
,Equal variances not assumed,,,4.47,8.00,.002,2.00,.45,.97,3.03
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:817"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1202
#AT_START_1203
at_fn_group_banner 1203 't-test.at:843' \
  "T-TEST string variable, only one value" "         " 109
at_xfail=no
(
  printf "%s\n" "1203. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:863: pspp -O format=csv t-test.sps"
at_fn_check_prepare_trace "t-test.at:863"
( $at_check_trace; pspp -O format=csv t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"t-test.sps:17.16-17.25: error: T-TEST: When applying GROUPS to a string variable, two values must be specified.
   17 | t-test /GROUPS=indep('a') /var=dep1 dep2.
      |                ^~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/t-test.at:863"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1203
#AT_START_1204
at_fn_group_banner 1204 't-test.at:871' \
  "T-TEST string variable comparison bug" "          " 109
at_xfail=no
(
  printf "%s\n" "1204. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
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.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:889: pspp -o pspp.csv -o pspp.txt t-test.sps"
at_fn_check_prepare_trace "t-test.at:889"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:889"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:890: cat pspp.csv"
at_fn_check_prepare_trace "t-test.at:890"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
x,F8.0
gv,A8

Table: Group Statistics
,Group,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,,,,,,
,,F,Sig.,t,df,Sig. (2-tailed),Mean Difference,Std. Error Difference,95% Confidence Interval of the Difference,
,,,,,,,,,Lower,Upper
x,Equal variances assumed,1.13,.329,-2.32,6.00,.060,-.90,.39,-1.85,.05
,Equal variances not assumed,,,-2.38,4.70,.067,-.90,.38,-1.89,.09
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:890"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1204
#AT_START_1205
at_fn_group_banner 1205 't-test.at:913' \
  "T-TEST wrong group" "                             " 109
at_xfail=no
(
  printf "%s\n" "1205. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test-crs.sps <<'_ATEOF'
data list list /x * g *.
begin data.
1 2
2 2
3 2
4 2
5 2
end data.

t-test /variables = x group=g(1,3).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:927: pspp t-test-crs.sps"
at_fn_check_prepare_trace "t-test.at:927"
( $at_check_trace; pspp t-test-crs.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/t-test.at:927"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1205
#AT_START_1206
at_fn_group_banner 1206 't-test.at:934' \
  "T-TEST non number p value" "                      " 109
at_xfail=no
(
  printf "%s\n" "1206. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t.sps <<'_ATEOF'
data list list /age d_frage_1 weight height *.
begin data.
1 2 3 1
4 5 6 2
end data.

T-TEST /VARIABLES=age weight height
 /GROUPS=d_frage_1(1,0) /MISSING=ANALYSIS /CRITERIA=CIN(p.95).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/t-test.at:946: pspp t.sps"
at_fn_check_prepare_trace "t-test.at:946"
( $at_check_trace; pspp t.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/t-test.at:946"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1206
#AT_START_1207
at_fn_group_banner 1207 't-test.at:953' \
  "T-TEST unterminated string - paired" "            " 109
at_xfail=no
(
  printf "%s\n" "1207. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t.sps <<'_ATEOF'
data list list /id * a * b * c * d *.
begin data.
5 2.0 3.0 4.0 4.0
3 1.0 2.0 5.1 3.9
3 2.0 4.5 5.2(3.8
4 2.0 4.5 5n3 3.7
5 3.0 6.0 5.9 3.6
6 3.4 6.0 5.9  .
end data.


t-test /MISSING=listwise /PAIRS a"b with c d (PA	RED).
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:969: pspp t.sps"
at_fn_check_prepare_trace "t-test.at:969"
( $at_check_trace; pspp t.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/t-test.at:969"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1207
#AT_START_1208
at_fn_group_banner 1208 't-test.at:973' \
  "T-TEST syntax errors" "                           " 109
at_xfail=no
(
  printf "%s\n" "1208. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >t-test.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z * s(a10).
T-TEST TESTVAL=**.
T-TEST GROUPS=**.
T-TEST GROUPS=x(**).
T-TEST GROUPS=x(1,**).
T-TEST GROUPS=x(1,2 **).
T-TEST GROUPS=s('a').
T-TEST VARIABLES=x y PAIRS.
T-TEST PAIRS=**.
T-TEST PAIRS=x WITH **.
T-TEST PAIRS=x WITH y z (PAIRED).
T-TEST PAIRS=x WITH y/VARIABLES.
T-TEST VARIABLES=**.
T-TEST MISSING=**.
T-TEST CRITERIA=**.
T-TEST CRITERIA=CIN**.
T-TEST CRITERIA=CIN(**).
T-TEST CRITERIA=CIN(1 **).
T-TEST **.
T-TEST MISSING=INCLUDE.
T-TEST MISSING=INCLUDE/TESTVAL=1.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/t-test.at:997: pspp -O format=csv t-test.sps"
at_fn_check_prepare_trace "t-test.at:997"
( $at_check_trace; pspp -O format=csv t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"t-test.sps:2.16-2.17: error: T-TEST: Syntax error expecting number.
    2 | T-TEST TESTVAL=**.
      |                ^~\"

\"t-test.sps:3.15-3.16: error: T-TEST: Syntax error expecting variable name.
    3 | T-TEST GROUPS=**.
      |               ^~\"

\"t-test.sps:4.17-4.18: error: T-TEST: Syntax error expecting number.
    4 | T-TEST GROUPS=x(**).
      |                 ^~\"

\"t-test.sps:5.19-5.20: error: T-TEST: Syntax error expecting number.
    5 | T-TEST GROUPS=x(1,**).
      |                   ^~\"

\"t-test.sps:6.21-6.22: error: T-TEST: Syntax error expecting \`)'.
    6 | T-TEST GROUPS=x(1,2 **).
      |                     ^~\"

\"t-test.sps:7.15-7.20: error: T-TEST: When applying GROUPS to a string variable, two values must be specified.
    7 | T-TEST GROUPS=s('a').
      |               ^~~~~~\"

\"t-test.sps:8.22-8.26: error: T-TEST: VARIABLES subcommand may not be used with PAIRS.
    8 | T-TEST VARIABLES=x y PAIRS.
      |                      ^~~~~\"

\"t-test.sps:9.14-9.15: error: T-TEST: Syntax error expecting variable name.
    9 | T-TEST PAIRS=**.
      |              ^~\"

\"t-test.sps:10.21-10.22: error: T-TEST: Syntax error expecting variable name.
   10 | T-TEST PAIRS=x WITH **.
      |                     ^~\"

\"t-test.sps:11.14-11.23: error: T-TEST: PAIRED was specified, but the number of variables preceding WITH (1) does not match the number following (2).
   11 | T-TEST PAIRS=x WITH y z (PAIRED).
      |              ^~~~~~~~~~\"

\"t-test.sps:12.23-12.31: error: T-TEST: VARIABLES subcommand may not be used with PAIRS.
   12 | T-TEST PAIRS=x WITH y/VARIABLES.
      |                       ^~~~~~~~~\"

\"t-test.sps:13.18-13.19: error: T-TEST: Syntax error expecting variable name.
   13 | T-TEST VARIABLES=**.
      |                  ^~\"

\"t-test.sps:14.16-14.17: error: T-TEST: Syntax error expecting INCLUDE, EXCLUDE, LISTWISE, or ANALYSIS.
   14 | T-TEST MISSING=**.
      |                ^~\"

\"t-test.sps:15.17-15.18: error: T-TEST: Syntax error expecting CIN or CI.
   15 | T-TEST CRITERIA=**.
      |                 ^~\"

\"t-test.sps:16.20-16.21: error: T-TEST: Syntax error expecting \`('.
   16 | T-TEST CRITERIA=CIN**.
      |                    ^~\"

\"t-test.sps:17.21-17.22: error: T-TEST: Syntax error expecting number.
   17 | T-TEST CRITERIA=CIN(**).
      |                     ^~\"

\"t-test.sps:18.23-18.24: error: T-TEST: Syntax error expecting \`)'.
   18 | T-TEST CRITERIA=CIN(1 **).
      |                       ^~\"

\"t-test.sps:19.8-19.9: error: T-TEST: Syntax error expecting TESTVAL, GROUPS, PAIRS, VARIABLES, MISSING, or CRITERIA.
   19 | T-TEST **.
      |        ^~\"

\"t-test.sps:20: error: T-TEST: Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified.\"

\"t-test.sps:21.1-21.33: error: T-TEST: Required subcommand VARIABLES was not specified.
   21 | T-TEST MISSING=INCLUDE/TESTVAL=1.
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/t-test.at:997"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1208
#AT_START_1209
at_fn_group_banner 1209 'temporary.at:20' \
  "TEMPORARY as first transformation" "              " 110
at_xfail=no
(
  printf "%s\n" "1209. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >temporary.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/temporary.at:41: pspp -o pspp.csv temporary.sps"
at_fn_check_prepare_trace "temporary.at:41"
( $at_check_trace; pspp -o pspp.csv temporary.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/temporary.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/temporary.at:42: cat pspp.csv"
at_fn_check_prepare_trace "temporary.at:42"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/temporary.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1209
#AT_START_1210
at_fn_group_banner 1210 'title.at:19' \
  "FILE LABEL and (ADD) DOCUMENT" "                  " 111
at_xfail=no
(
  printf "%s\n" "1210. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >file-label.sps <<'_ATEOF'
/* Set up a dummy active dataset 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 dataset 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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/title.at:75: pspp -o pspp.csv file-label.sps"
at_fn_check_prepare_trace "title.at:75"
( $at_check_trace; pspp -o pspp.csv file-label.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/title.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/title.at:77: sed 's/(Entered [^)]*)/(Entered <date>)/' pspp.csv"
at_fn_check_prepare_trace "title.at:77"
( $at_check_trace; sed 's/(Entered [^)]*)/(Entered <date>)/' pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from INLINE.
Variable,Record,Columns,Format
X,1,1-1,F1.0
Y,1,2-2,F1.0

Table: Documents
\"document First line of a document
Second line of a document
The last line should end with a period: .
   (Entered <date>)\"

Table: File Label
Label,This is a test file label

Table: Documents
\"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>)\"

Table: File Label
Label,This is a test file label

Table: Documents
\"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>)\"

Table: Documents
\"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>)\"

Table: File Label
Label,This is a test file label
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/title.at:77"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1210
#AT_START_1211
at_fn_group_banner 1211 'title.at:131' \
  "TITLE and SUBTITLE" "                             " 111
at_xfail=no
(
  printf "%s\n" "1211. $at_setup_line: testing $at_desc ..."
  $at_traceon

for command in TITLE SUBTITLE; do
    cat >title.sps <<EOF
$command foo  bar.
SHOW $command.

$command 'foo bar baz quux'.
SHOW $command.
EOF
    cat >expout <<EOF
Table: Settings
$command,foo  bar

Table: Settings
$command,foo bar baz quux
EOF
    { set +x
printf "%s\n" "$at_srcdir/title.at:147: pspp -O format=csv title.sps"
at_fn_check_prepare_trace "title.at:147"
( $at_check_trace; pspp -O format=csv title.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/title.at:147"
$at_failed && at_fn_log_failure
$at_traceon; }

done
  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1211
#AT_START_1212
at_fn_group_banner 1212 'update.at:88' \
  "UPDATE sav with sav" "                            " 112
at_xfail=no
(
  printf "%s\n" "1212. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3 O
4bP
6bQ
7bR
9bS
_ATEOF

   cat >save-a.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).
SAVE OUTFILE='a.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/update.at:88: pspp -O format=csv save-a.sps"
at_fn_check_prepare_trace "update.at:88"
( $at_check_trace; pspp -O format=csv save-a.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/update.at:88"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >save-b.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
SAVE OUTFILE='b.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/update.at:88: pspp -O format=csv save-b.sps"
at_fn_check_prepare_trace "update.at:88"
( $at_check_trace; pspp -O format=csv save-b.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/update.at:88"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >update.sps <<'_ATEOF'


UPDATE
    FILE='a.sav' /IN=InA /SORT
    FILE='b.sav' /IN=InB /RENAME c=d
    /BY a.
LIST.
_ATEOF

   cat update.sps
   { set +x
printf "%s\n" "$at_srcdir/update.at:88: pspp -O format=csv update.sps"
at_fn_check_prepare_trace "update.at:88"
( $at_check_trace; pspp -O format=csv update.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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,a,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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/update.at:88"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1212
#AT_START_1213
at_fn_group_banner 1213 'update.at:89' \
  "UPDATE sav with inline" "                         " 112
at_xfail=no
(
  printf "%s\n" "1213. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3 O
4bP
6bQ
7bR
9bS
_ATEOF

   cat >save-a.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).
SAVE OUTFILE='a.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/update.at:89: pspp -O format=csv save-a.sps"
at_fn_check_prepare_trace "update.at:89"
( $at_check_trace; pspp -O format=csv save-a.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/update.at:89"
$at_failed && at_fn_log_failure
$at_traceon; }


   cat >update.sps <<'_ATEOF'

DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
UPDATE
    FILE='a.sav' /IN=InA /SORT
    FILE=* /IN=InB /RENAME c=d
    /BY a.
LIST.
_ATEOF

   cat update.sps
   { set +x
printf "%s\n" "$at_srcdir/update.at:89: pspp -O format=csv update.sps"
at_fn_check_prepare_trace "update.at:89"
( $at_check_trace; pspp -O format=csv update.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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,a,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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/update.at:89"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1213
#AT_START_1214
at_fn_group_banner 1214 'update.at:90' \
  "UPDATE inline with sav" "                         " 112
at_xfail=no
(
  printf "%s\n" "1214. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >a.data <<'_ATEOF'
1aB
8aM
3aE
5aG
0aA
5aH
6aI
7aJ
2aD
7aK
1aC
7aL
4aF
_ATEOF

   cat >b.data <<'_ATEOF'
1bN
3 O
4bP
6bQ
7bR
9bS
_ATEOF


   cat >save-b.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='b.data' /a b c 1-3 (A).
SAVE OUTFILE='b.sav'.
_ATEOF

      { set +x
printf "%s\n" "$at_srcdir/update.at:90: pspp -O format=csv save-b.sps"
at_fn_check_prepare_trace "update.at:90"
( $at_check_trace; pspp -O format=csv save-b.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/update.at:90"
$at_failed && at_fn_log_failure
$at_traceon; }

   cat >update.sps <<'_ATEOF'
DATA LIST NOTABLE FILE='a.data' /a b c 1-3 (A).

UPDATE
    FILE=* /IN=InA /SORT
    FILE='b.sav' /IN=InB /RENAME c=d
    /BY a.
LIST.
_ATEOF

   cat update.sps
   { set +x
printf "%s\n" "$at_srcdir/update.at:90: pspp -O format=csv update.sps"
at_fn_check_prepare_trace "update.at:90"
( $at_check_trace; pspp -O format=csv update.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "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,a,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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/update.at:90"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1214
#AT_START_1215
at_fn_group_banner 1215 'update.at:94' \
  "UPDATE syntax errors" "                           " 112
at_xfail=no
(
  printf "%s\n" "1215. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >insert.sps <<'_ATEOF'
INSERT FILE='update.sps' ERROR=IGNORE.
_ATEOF

cat >update.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/name (A6) x.
BEGIN DATA.
al,7
brad,8
carl,9
END DATA.
SAVE OUTFILE='x.sav'.

DATA LIST LIST NOTABLE/name (A7) y.
BEGIN DATA.
al,1
carl,2
dan,3
END DATA.
UPDATE/FILE='x.sav'/FILE=*/RENAME(name=name2).
UPDATE/xyzzy.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/update.at:116: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "update.at:116"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"update.sps:15.1-15.46: error: UPDATE: Required subcommand BY was not specified.
   15 | UPDATE/FILE='x.sav'/FILE=*/RENAME(name=name2).
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"update.sps:16.8-16.12: error: UPDATE: Syntax error expecting FILE or TABLE.
   16 | UPDATE/xyzzy.
      |        ^~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/update.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1215
#AT_START_1216
at_fn_group_banner 1216 'value-labels.at:19' \
  "VALUE LABELS date formats" "                      " 113
at_xfail=no
(
  printf "%s\n" "1216. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >value-labels.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /ad (adate10) dt (datetime20).
VALUE LABELS ad 'july 10, 1982' 'label 1'
                '1-2-93' 'label 2'
                '5-4-2003' 'label 3'
            /dt '12 Apr 2011 06:09:56' 'label 4'.
DISPLAY DICTIONARY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/value-labels.at:28: pspp -O format=csv value-labels.sps"
at_fn_check_prepare_trace "value-labels.at:28"
( $at_check_trace; pspp -O format=csv value-labels.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
ad,1,Unknown,Input,8,Right,ADATE10,ADATE10
dt,2,Unknown,Input,8,Right,DATETIME20.0,DATETIME20.0

Table: Value Labels
Variable Value,,Label
ad,07/10/1982,label 1
,01/02/1993,label 2
,05/04/2003,label 3
dt,12-APR-2011 06:09:56,label 4
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/value-labels.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1216
#AT_START_1217
at_fn_group_banner 1217 'value-labels.at:43' \
  "VALUE LABELS with new-line" "                     " 113
at_xfail=no
(
  printf "%s\n" "1217. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >value-labels.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x.
VALUE LABELS x 1 'one' 2 'first line\nsecond line' 3 'three'.
BEGIN DATA.
1
2
3
END DATA.
DISPLAY DICTIONARY.
FREQUENCIES x/STAT=NONE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/value-labels.at:55: pspp -o pspp.csv -o pspp.txt value-labels.sps"
at_fn_check_prepare_trace "value-labels.at:55"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt value-labels.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/value-labels.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/value-labels.at:56: cat pspp.csv"
at_fn_check_prepare_trace "value-labels.at:56"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
x,1,Nominal,Input,8,Right,F8.2,F8.2

Table: Value Labels
Variable Value,,Label
x,1.00,one
,2.00,first line\\nsecond line
,3.00,three

Table: x
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,one,1,33.3%,33.3%,33.3%
,\"first line
second line\",1,33.3%,33.3%,66.7%
,three,1,33.3%,33.3%,100.0%
Total,,3,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/value-labels.at:56"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1217
#AT_START_1218
at_fn_group_banner 1218 'value-labels.at:77' \
  "VALUE LABELS with new-line in system file" "      " 113
at_xfail=no
(
  printf "%s\n" "1218. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >save.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x.
VALUE LABELS x 1 'one' 2 'first line\nsecond line' 3 'three'.
BEGIN DATA.
1
2
3
END DATA.
SAVE OUTFILE='value-labels.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/value-labels.at:88: pspp -O format=csv save.sps"
at_fn_check_prepare_trace "value-labels.at:88"
( $at_check_trace; pspp -O format=csv save.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/value-labels.at:88"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >get.sps <<'_ATEOF'
GET FILE='value-labels.sav'.
DISPLAY DICTIONARY.
FREQUENCIES x/STAT=NONE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/value-labels.at:94: pspp -o pspp.csv -o pspp.txt get.sps"
at_fn_check_prepare_trace "value-labels.at:94"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt get.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/value-labels.at:94"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/value-labels.at:95: cat pspp.csv"
at_fn_check_prepare_trace "value-labels.at:95"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
x,1,Nominal,Input,8,Right,F8.2,F8.2

Table: Value Labels
Variable Value,,Label
x,1.00,one
,2.00,first line\\nsecond line
,3.00,three

Table: x
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,one,1,33.3%,33.3%,33.3%
,\"first line
second line\",1,33.3%,33.3%,66.7%
,three,1,33.3%,33.3%,100.0%
Total,,3,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/value-labels.at:95"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1218
#AT_START_1219
at_fn_group_banner 1219 'value-labels.at:118' \
  "VALUE LABELS invalid syntax bug" "                " 113
at_xfail=no
(
  printf "%s\n" "1219. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >value-labels.sps <<'_ATEOF'
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'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/value-labels.at:130: pspp -O format=csv value-labels.sps"
at_fn_check_prepare_trace "value-labels.at:130"
( $at_check_trace; pspp -O format=csv value-labels.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"value-labels.sps:9.15-9.17: error: VALUE LABELS: var is not a variable name.
    9 | VALUE LABELS /var=a 'label for a'.
      |               ^~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/value-labels.at:130"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1219
#AT_START_1220
at_fn_group_banner 1220 'value-labels.at:138' \
  "VALUE LABELS trailing \`/' bug" "                  " 113
at_xfail=no
(
  printf "%s\n" "1220. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >value-labels.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/value-labels.at:154: pspp -O format=csv value-labels.sps"
at_fn_check_prepare_trace "value-labels.at:154"
( $at_check_trace; pspp -O format=csv value-labels.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Data List
X
1.00
2.00
3.00
4.00
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/value-labels.at:154"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1220
#AT_START_1221
at_fn_group_banner 1221 'variable-labels.at:3' \
  "VARIABLE LABELS" "                                " 114
at_xfail=no
(
  printf "%s\n" "1221. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >var-labels.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
VARIABLE LABELS x 'First variable' y ' '.
BEGIN DATA.
1 2 3
4 5 6
END DATA.
DESCRIPTIVES x y z.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/variable-labels.at:13: pspp -O box=unicode var-labels.sps"
at_fn_check_prepare_trace "variable-labels.at:13"
( $at_check_trace; pspp -O box=unicode var-labels.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                Descriptive Statistics
╭────────────────────┬─┬────┬───────┬───────┬───────╮
│                    │N│Mean│Std Dev│Minimum│Maximum│
├────────────────────┼─┼────┼───────┼───────┼───────┤
│First variable      │2│2.50│   2.12│   1.00│   4.00│
│                    │2│3.50│   2.12│   2.00│   5.00│
│z                   │2│4.50│   2.12│   3.00│   6.00│
│Valid N (listwise)  │2│    │       │       │       │
│Missing N (listwise)│0│    │       │       │       │
╰────────────────────┴─┴────┴───────┴───────┴───────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-labels.at:13"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1221
#AT_START_1222
at_fn_group_banner 1222 'variable-display.at:19' \
  "variable display attribute commands" "            " 115
at_xfail=no
(
  printf "%s\n" "1222. $at_setup_line: testing $at_desc ..."
  $at_traceon





cat >var-display.sps <<'_ATEOF'
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).
VARIABLE ROLE /TARGET x /BOTH y /NONE z.
DISPLAY DICTIONARY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/variable-display.at:32: pspp -o pspp.csv var-display.sps"
at_fn_check_prepare_trace "variable-display.at:32"
( $at_check_trace; pspp -o pspp.csv var-display.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-display.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/variable-display.at:33: cat pspp.csv"
at_fn_check_prepare_trace "variable-display.at:33"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
x,1,Scale,Output,10,Left,F8.2,F8.2
y,2,Ordinal,Both,12,Right,F8.2,F8.2
z,3,Nominal,None,14,Center,F8.2,F8.2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-display.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1222
#AT_START_1223
at_fn_group_banner 1223 'variable-display.at:42' \
  "variable display attribute syntax errors" "       " 115
at_xfail=no
(
  printf "%s\n" "1223. $at_setup_line: testing $at_desc ..."
  $at_traceon





cat >var-display.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z.
VARIABLE ALIGNMENT **.
VARIABLE ALIGNMENT x **.
VARIABLE ALIGNMENT x (**).
VARIABLE ALIGNMENT x (LEFT **).
VARIABLE WIDTH **.
VARIABLE WIDTH x **.
VARIABLE WIDTH x (**).
VARIABLE WIDTH x (10 **).
VARIABLE LEVEL **.
VARIABLE LEVEL x **.
VARIABLE LEVEL x (**).
VARIABLE LEVEL x (SCALE **).
VARIABLE ROLE **.
VARIABLE ROLE / **.
VARIABLE ROLE /INPUT **.
VARIABLE ROLE /INPUT x **.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/variable-display.at:66: pspp -O format=csv var-display.sps"
at_fn_check_prepare_trace "variable-display.at:66"
( $at_check_trace; pspp -O format=csv var-display.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"var-display.sps:2.20-2.21: error: VARIABLE ALIGNMENT: Syntax error expecting variable name.
    2 | VARIABLE ALIGNMENT **.
      |                    ^~\"

\"var-display.sps:3.22-3.23: error: VARIABLE ALIGNMENT: Syntax error expecting \`('.
    3 | VARIABLE ALIGNMENT x **.
      |                      ^~\"

\"var-display.sps:4.23-4.24: error: VARIABLE ALIGNMENT: Syntax error expecting LEFT, RIGHT, or CENTER.
    4 | VARIABLE ALIGNMENT x (**).
      |                       ^~\"

\"var-display.sps:5.28-5.29: error: VARIABLE ALIGNMENT: Syntax error expecting \`)'.
    5 | VARIABLE ALIGNMENT x (LEFT **).
      |                            ^~\"

\"var-display.sps:6.16-6.17: error: VARIABLE WIDTH: Syntax error expecting variable name.
    6 | VARIABLE WIDTH **.
      |                ^~\"

\"var-display.sps:7.18-7.19: error: VARIABLE WIDTH: Syntax error expecting \`('.
    7 | VARIABLE WIDTH x **.
      |                  ^~\"

\"var-display.sps:8.19-8.20: error: VARIABLE WIDTH: Syntax error expecting positive integer.
    8 | VARIABLE WIDTH x (**).
      |                   ^~\"

\"var-display.sps:9.22-9.23: error: VARIABLE WIDTH: Syntax error expecting \`)'.
    9 | VARIABLE WIDTH x (10 **).
      |                      ^~\"

\"var-display.sps:10.16-10.17: error: VARIABLE LEVEL: Syntax error expecting variable name.
   10 | VARIABLE LEVEL **.
      |                ^~\"

\"var-display.sps:11.18-11.19: error: VARIABLE LEVEL: Syntax error expecting \`('.
   11 | VARIABLE LEVEL x **.
      |                  ^~\"

\"var-display.sps:12.19-12.20: error: VARIABLE LEVEL: Syntax error expecting SCALE, ORDINAL, or NOMINAL.
   12 | VARIABLE LEVEL x (**).
      |                   ^~\"

\"var-display.sps:13.25-13.26: error: VARIABLE LEVEL: Syntax error expecting \`)'.
   13 | VARIABLE LEVEL x (SCALE **).
      |                         ^~\"

\"var-display.sps:14.15-14.16: error: VARIABLE ROLE: Syntax error expecting \`/'.
   14 | VARIABLE ROLE **.
      |               ^~\"

\"var-display.sps:15.17-15.18: error: VARIABLE ROLE: Syntax error expecting INPUT, TARGET, BOTH, NONE, PARTITION, or SPLIT.
   15 | VARIABLE ROLE / **.
      |                 ^~\"

\"var-display.sps:16.22-16.23: error: VARIABLE ROLE: Syntax error expecting variable name.
   16 | VARIABLE ROLE /INPUT **.
      |                      ^~\"

\"var-display.sps:17.24-17.25: error: VARIABLE ROLE: Syntax error expecting \`/'.
   17 | VARIABLE ROLE /INPUT x **.
      |                        ^~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/variable-display.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1223
#AT_START_1224
at_fn_group_banner 1224 'variable-display.at:133' \
  "variable level inference and SCALEMIN" "          " 115
at_xfail=no
(
  printf "%s\n" "1224. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >var-level.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /n1 to n3 s1 to s5.

* Nominal formats (copied from data that will default to scale).
COMPUTE n4=s1.
COMPUTE n5=s1.
FORMATS n4(WKDAY5) n5(MONTH5).

* Scale formats (copied from data that will default to nominal).
COMPUTE s6=n1.
COMPUTE s7=n1.
COMPUTE s8=n1.
FORMATS s6(DOLLAR6.2) s7(CCA8.2) s8(DATETIME17).

STRING string(A8).
DISPLAY DICTIONARY.
EXECUTE.

* n1 has 10 unique small values -> nominal.
* n2 has 23 unique small values -> nominal.
* n3 is all missing -> nominal.
* s1 has 24 unique small values -> scale.
* s2 has one negative value -> scale.
* s3 has one non-integer value -> scale.
* s4 has no valid values less than 10 -> scale.
* s5 has no valid values less than 10,000 -> scale.
BEGIN DATA.
1  1  . 1  1  1    10 10001
2  2  . 2  2  2    11 10002
3  3  . 3  3  3    12 10003
4  4  . 4  4  4    13 10004
5  5  . 5  5  5    14 10005
6  6  . 6  6  6    15 10006
7  7  . 7  7  7    16 10007
8  8  . 8  8  8    17 10008
9  9  . 9  9  9    18 10009
10 10 . 10 10 10.5 19 110000
1  11 . 11 -1 1    11 10001
2  12 . 12 2  2    12 10002
3  13 . 13 3  3    13 10003
4  14 . 14 4  4    14 10004
5  15 . 15 5  5    15 10005
6  16 . 16 6  6    16 10006
7  17 . 17 7  7    17 10007
8  18 . 18 8  8    18 10008
9  19 . 19 9  9    19 10009
1  20 . 20 1  1    20 10001
2  21 . 21 2  2    21 10002
3  22 . 22 3  3    22 10003
4  23 . 23 4  4    23 10004
5  23 . 24 5  5    24 10005
6  23 . 24 6  6    25 10006
END DATA.
DISPLAY DICTIONARY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/variable-display.at:189: pspp -o pspp.csv var-level.sps"
at_fn_check_prepare_trace "variable-display.at:189"
( $at_check_trace; pspp -o pspp.csv var-level.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-display.at:189"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/variable-display.at:190: cat pspp.csv"
at_fn_check_prepare_trace "variable-display.at:190"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
n1,1,Unknown,Input,8,Right,F8.2,F8.2
n2,2,Unknown,Input,8,Right,F8.2,F8.2
n3,3,Unknown,Input,8,Right,F8.2,F8.2
s1,4,Unknown,Input,8,Right,F8.2,F8.2
s2,5,Unknown,Input,8,Right,F8.2,F8.2
s3,6,Unknown,Input,8,Right,F8.2,F8.2
s4,7,Unknown,Input,8,Right,F8.2,F8.2
s5,8,Unknown,Input,8,Right,F8.2,F8.2
n4,9,Unknown,Input,8,Right,WKDAY5,WKDAY5
n5,10,Unknown,Input,8,Right,MONTH5,MONTH5
s6,11,Unknown,Input,8,Right,DOLLAR6.2,DOLLAR6.2
s7,12,Unknown,Input,8,Right,CCA8.2,CCA8.2
s8,13,Unknown,Input,8,Right,DATETIME17.0,DATETIME17.0
string,14,Nominal,Input,8,Left,A8,A8

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
n1,1,Nominal,Input,8,Right,F8.2,F8.2
n2,2,Nominal,Input,8,Right,F8.2,F8.2
n3,3,Nominal,Input,8,Right,F8.2,F8.2
s1,4,Scale,Input,8,Right,F8.2,F8.2
s2,5,Scale,Input,8,Right,F8.2,F8.2
s3,6,Scale,Input,8,Right,F8.2,F8.2
s4,7,Scale,Input,8,Right,F8.2,F8.2
s5,8,Scale,Input,8,Right,F8.2,F8.2
n4,9,Nominal,Input,8,Right,WKDAY5,WKDAY5
n5,10,Nominal,Input,8,Right,MONTH5,MONTH5
s6,11,Scale,Input,8,Right,DOLLAR6.2,DOLLAR6.2
s7,12,Scale,Input,8,Right,CCA8.2,CCA8.2
s8,13,Scale,Input,8,Right,DATETIME17.0,DATETIME17.0
string,14,Nominal,Input,8,Left,A8,A8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-display.at:190"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1224
#AT_START_1225
at_fn_group_banner 1225 'variable-display.at:229' \
  "variable labels" "                                " 116
at_xfail=no
(
  printf "%s\n" "1225. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >var-labels.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x * y *.
BEGIN DATA.
1 100
2 200
3 300
4 400
END DATA.

* While no labels have been set, the TVARS is irrelevant.
SET TVARS=NAMES.
DESCRIPTIVES ALL.

SET TVARS=LABELS.
DESCRIPTIVES ALL.

SET TVARS=BOTH.
DESCRIPTIVES ALL.

VARIABLE LABEL x 'foo' y 'bar'.

* Now, the TVARS setting should have effect

SET TVARS=NAMES.
DESCRIPTIVES ALL.

SET TVARS=LABELS.
DESCRIPTIVES ALL.

SET TVARS=BOTH.
DESCRIPTIVES ALL.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/variable-display.at:266: pspp -o pspp.csv -o pspp.txt var-labels.sps"
at_fn_check_prepare_trace "variable-display.at:266"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt var-labels.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-display.at:266"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/variable-display.at:267: cat pspp.csv"
at_fn_check_prepare_trace "variable-display.at:267"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
x,4,2.50,1.29,1.00,4.00
y,4,250.00,129.10,100.00,400.00
Valid N (listwise),4,,,,
Missing N (listwise),0,,,,

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
x,4,2.50,1.29,1.00,4.00
y,4,250.00,129.10,100.00,400.00
Valid N (listwise),4,,,,
Missing N (listwise),0,,,,

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
x,4,2.50,1.29,1.00,4.00
y,4,250.00,129.10,100.00,400.00
Valid N (listwise),4,,,,
Missing N (listwise),0,,,,

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
x,4,2.50,1.29,1.00,4.00
y,4,250.00,129.10,100.00,400.00
Valid N (listwise),4,,,,
Missing N (listwise),0,,,,

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
foo,4,2.50,1.29,1.00,4.00
bar,4,250.00,129.10,100.00,400.00
Valid N (listwise),4,,,,
Missing N (listwise),0,,,,

Table: Descriptive Statistics
,N,Mean,Std Dev,Minimum,Maximum
x foo,4,2.50,1.29,1.00,4.00
y bar,4,250.00,129.10,100.00,400.00
Valid N (listwise),4,,,,
Missing N (listwise),0,,,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/variable-display.at:267"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1225
#AT_START_1226
at_fn_group_banner 1226 'vector.at:19' \
  "VECTOR short form" "                              " 117
at_xfail=no
(
  printf "%s\n" "1226. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >vector.sps <<'_ATEOF'
data list notable/x 1.
vector v(4).
display vector.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/vector.at:25: pspp -o pspp.csv vector.sps"
at_fn_check_prepare_trace "vector.at:25"
( $at_check_trace; pspp -o pspp.csv vector.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/vector.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/vector.at:26: cat pspp.csv"
at_fn_check_prepare_trace "vector.at:26"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Vectors
Vector and Position,,Variable,Print Format
v,1,v1,F8.2
,2,v2,F8.2
,3,v3,F8.2
,4,v4,F8.2
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/vector.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1226
#AT_START_1227
at_fn_group_banner 1227 'vector.at:36' \
  "VECTOR short form with format specification" "    " 117
at_xfail=no
(
  printf "%s\n" "1227. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >vector.sps <<'_ATEOF'
data list notable/x 1.
vector #vec(4, comma10.2)
      /#svec(3, a8).
display vector.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/vector.at:43: pspp -o pspp.csv vector.sps"
at_fn_check_prepare_trace "vector.at:43"
( $at_check_trace; pspp -o pspp.csv vector.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/vector.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/vector.at:44: cat pspp.csv"
at_fn_check_prepare_trace "vector.at:44"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Vectors
Vector and Position,,Variable,Print Format
#vec,1,#vec1,COMMA10.2
,2,#vec2,COMMA10.2
,3,#vec3,COMMA10.2
,4,#vec4,COMMA10.2
#svec,1,#svec1,A8
,2,#svec2,A8
,3,#svec3,A8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/vector.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1227
#AT_START_1228
at_fn_group_banner 1228 'vector.at:57' \
  "VECTOR short form in INPUT PROGRAM" "             " 117
at_xfail=no
(
  printf "%s\n" "1228. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >vector.sps <<'_ATEOF'
input program.
vector x(5).
data list notable/x5 x2 x3 x1 x4 1-5.
end input program.
display vector.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/vector.at:65: pspp -o pspp.csv vector.sps"
at_fn_check_prepare_trace "vector.at:65"
( $at_check_trace; pspp -o pspp.csv vector.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/vector.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/vector.at:66: cat pspp.csv"
at_fn_check_prepare_trace "vector.at:66"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Vectors
Vector and 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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/vector.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1228
#AT_START_1229
at_fn_group_banner 1229 'vector.at:77' \
  "VECTOR long form" "                               " 117
at_xfail=no
(
  printf "%s\n" "1229. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >vector.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/vector.at:85: pspp -o pspp.csv vector.sps"
at_fn_check_prepare_trace "vector.at:85"
( $at_check_trace; pspp -o pspp.csv vector.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/vector.at:85"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/vector.at:86: cat pspp.csv"
at_fn_check_prepare_trace "vector.at:86"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Vectors
Vector and 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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/vector.at:86"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1229
#AT_START_1230
at_fn_group_banner 1230 'vector.at:104' \
  "VECTOR syntax errors" "                           " 117
at_xfail=no
(
  printf "%s\n" "1230. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >vector.sps <<'_ATEOF'
DATA LIST LIST NOTABLE/x y z.
VECTOR **.
VECTOR aslkdfjaklsdjfklasdjfklasjdfklasjdfkajsdlkfajsdkfjaksdjfaklsdkasdjfklasdjfklasjdfkldkl.
VECTOR dup=x y z.
VECTOR dup.
VECTOR v v.
VECTOR u v=x y z.
VECTOR v(1, 2).
VECTOR v(0).
VECTOR v(F8.2, F8.2).
VECTOR v(asdf).
VECTOR v(**).
VECTOR v(F8.2).
VECTOR xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(5).
VECTOR v **.
VECTOR v v1 (123).
_ATEOF

cat >insert.sps <<'_ATEOF'
INSERT FILE='vector.sps' ERROR=IGNORE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/vector.at:126: pspp --testing-mode -O format=csv insert.sps"
at_fn_check_prepare_trace "vector.at:126"
( $at_check_trace; pspp --testing-mode -O format=csv insert.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"vector.sps:2.8-2.9: error: VECTOR: Syntax error expecting identifier.
    2 | VECTOR **.
      |        ^~\"

\"vector.sps:3.8-3.93: error: VECTOR: Identifier \`aslkdfjaklsdjfklasdjfklasjdfklasjdfkajsdlkfajsdkfjaksdjfaklsdkasdjfklasdjfklasjdfkldkl' exceeds 64-byte limit.
    3 | VECTOR aslkdfjaklsdjfklasdjfklasjdfklasjdfkajsdlkfajsdkfjaksdjfaklsdkasdjfklasdjfklasjdfkldkl.
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"vector.sps:5.8-5.10: error: VECTOR: A vector named dup already exists.
    5 | VECTOR dup.
      |        ^~~\"

\"vector.sps:6.8-6.10: error: VECTOR: Vector name v is given twice.
    6 | VECTOR v v.
      |        ^~~\"

\"vector.sps:7.8-7.11: error: VECTOR: Only a single vector name may be specified when a list of variables is given.
    7 | VECTOR u v=x y z.
      |        ^~~~\"

\"vector.sps:8.9-8.13: error: VECTOR: Vector length may only be specified once.
    8 | VECTOR v(1, 2).
      |         ^~~~~\"

\"vector.sps:9.10: error: VECTOR: Syntax error expecting positive integer.
    9 | VECTOR v(0).
      |          ^\"

\"vector.sps:10.9-10.19: error: VECTOR: Only one format may be specified.
   10 | VECTOR v(F8.2, F8.2).
      |         ^~~~~~~~~~~\"

\"vector.sps:11.10-11.13: error: VECTOR: Unknown format type \`asdf'.
   11 | VECTOR v(asdf).
      |          ^~~~\"

\"vector.sps:12.10-12.11: error: VECTOR: Syntax error expecting vector length or format.
   12 | VECTOR v(**).
      |          ^~\"

\"vector.sps:13.9-13.14: error: VECTOR: Vector length is required.
   13 | VECTOR v(F8.2).
      |         ^~~~~~\"

\"vector.sps:14.8-14.74: error: VECTOR: Identifier \`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1' exceeds 64-byte limit.
   14 | VECTOR xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(5).
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"

\"vector.sps:15.10-15.11: error: VECTOR: Syntax error expecting \`=' or \`('.
   15 | VECTOR v **.
      |          ^~\"

\"vector.sps:16.8-16.17: error: VECTOR: Two different vectors add variable v11.
   16 | VECTOR v v1 (123).
      |        ^~~~~~~~~~\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/vector.at:126"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1230
#AT_START_1231
at_fn_group_banner 1231 'weight.at:19' \
  "WEIGHT" "                                         " 118
at_xfail=no
(
  printf "%s\n" "1231. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >weight.txt <<'_ATEOF'
   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
_ATEOF

cat >weight.sps <<'_ATEOF'
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.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/weight.at:82: pspp -o pspp.csv -o pspp.txt weight.sps"
at_fn_check_prepare_trace "weight.at:82"
( $at_check_trace; pspp -o pspp.csv -o pspp.txt weight.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/weight.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/weight.at:83: cat pspp.csv"
at_fn_check_prepare_trace "weight.at:83"
( $at_check_trace; cat pspp.csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading 1 record from \`weight.txt'.
Variable,Record,Columns,Format
AVAR,1,1-5,F5.0
BVAR,1,6-10,F5.0

Table: Descriptive Statistics
,N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
AVAR,730,31.515,.405,10.937,119.608,2.411,.181,1.345,.090,76.000,18,94,23006.00
Valid N (listwise),730,,,,,,,,,,,,
Missing N (listwise),0,,,,,,,,,,,,

Table: Statistics
,,AVAR
N,Valid,730
,Missing,0
Mean,,31.515
S.E. Mean,,.405
Median,,28.000
Mode,,21
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
Maximum,,94
Sum,,23006.00

Table: AVAR
,,Frequency,Percent,Valid Percent,Cumulative Percent
Valid,18,1,.1%,.1%,.1%
,19,7,1.0%,1.0%,1.1%
,20,26,3.6%,3.6%,4.7%
,21,76,10.4%,10.4%,15.1%
,22,57,7.8%,7.8%,22.9%
,23,58,7.9%,7.9%,30.8%
,24,38,5.2%,5.2%,36.0%
,25,38,5.2%,5.2%,41.2%
,26,30,4.1%,4.1%,45.3%
,27,21,2.9%,2.9%,48.2%
,28,23,3.2%,3.2%,51.4%
,29,24,3.3%,3.3%,54.7%
,30,23,3.2%,3.2%,57.8%
,31,14,1.9%,1.9%,59.7%
,32,21,2.9%,2.9%,62.6%
,33,21,2.9%,2.9%,65.5%
,34,14,1.9%,1.9%,67.4%
,35,14,1.9%,1.9%,69.3%
,36,17,2.3%,2.3%,71.6%
,37,11,1.5%,1.5%,73.2%
,38,16,2.2%,2.2%,75.3%
,39,14,1.9%,1.9%,77.3%
,40,15,2.1%,2.1%,79.3%
,41,14,1.9%,1.9%,81.2%
,42,14,1.9%,1.9%,83.2%
,43,8,1.1%,1.1%,84.2%
,44,15,2.1%,2.1%,86.3%
,45,10,1.4%,1.4%,87.7%
,46,12,1.6%,1.6%,89.3%
,47,13,1.8%,1.8%,91.1%
,48,13,1.8%,1.8%,92.9%
,49,5,.7%,.7%,93.6%
,50,5,.7%,.7%,94.2%
,51,3,.4%,.4%,94.7%
,52,7,1.0%,1.0%,95.6%
,53,6,.8%,.8%,96.4%
,54,2,.3%,.3%,96.7%
,55,2,.3%,.3%,97.0%
,56,2,.3%,.3%,97.3%
,57,3,.4%,.4%,97.7%
,58,1,.1%,.1%,97.8%
,59,3,.4%,.4%,98.2%
,61,1,.1%,.1%,98.4%
,62,3,.4%,.4%,98.8%
,63,1,.1%,.1%,98.9%
,64,1,.1%,.1%,99.0%
,65,2,.3%,.3%,99.3%
,70,1,.1%,.1%,99.5%
,78,1,.1%,.1%,99.6%
,79,1,.1%,.1%,99.7%
,80,1,.1%,.1%,99.9%
,94,1,.1%,.1%,100.0%
Total,,730,100.0%,,
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/weight.at:83"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1231
#AT_START_1232
at_fn_group_banner 1232 'abt.at:25' \
  "ABT -- insert-any-remove-any" "                   " 119
at_xfail=no
(
  printf "%s\n" "1232. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/abt.at:25: abt-test insert-any-remove-any"
at_fn_check_prepare_trace "abt.at:25"
( $at_check_trace; abt-test insert-any-remove-any
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/abt.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1232
#AT_START_1233
at_fn_group_banner 1233 'abt.at:26' \
  "ABT -- insert-any-remove-same" "                  " 119
at_xfail=no
(
  printf "%s\n" "1233. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/abt.at:26: abt-test insert-any-remove-same"
at_fn_check_prepare_trace "abt.at:26"
( $at_check_trace; abt-test insert-any-remove-same
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/abt.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1233
#AT_START_1234
at_fn_group_banner 1234 'abt.at:27' \
  "ABT -- insert-any-remove-reverse" "               " 119
at_xfail=no
(
  printf "%s\n" "1234. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/abt.at:27: abt-test insert-any-remove-reverse"
at_fn_check_prepare_trace "abt.at:27"
( $at_check_trace; abt-test insert-any-remove-reverse
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/abt.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1234
#AT_START_1235
at_fn_group_banner 1235 'abt.at:28' \
  "ABT -- random-sequence" "                         " 119
at_xfail=no
(
  printf "%s\n" "1235. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/abt.at:28: abt-test random-sequence"
at_fn_check_prepare_trace "abt.at:28"
( $at_check_trace; abt-test random-sequence
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/abt.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1235
#AT_START_1236
at_fn_group_banner 1236 'abt.at:29' \
  "ABT -- insert-ordered" "                          " 119
at_xfail=no
(
  printf "%s\n" "1236. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/abt.at:29: abt-test insert-ordered"
at_fn_check_prepare_trace "abt.at:29"
( $at_check_trace; abt-test insert-ordered
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/abt.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1236
#AT_START_1237
at_fn_group_banner 1237 'abt.at:30' \
  "ABT -- moved" "                                   " 119
at_xfail=no
(
  printf "%s\n" "1237. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/abt.at:30: abt-test moved"
at_fn_check_prepare_trace "abt.at:30"
( $at_check_trace; abt-test moved
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/abt.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1237
#AT_START_1238
at_fn_group_banner 1238 'abt.at:31' \
  "ABT -- changed" "                                 " 119
at_xfail=no
(
  printf "%s\n" "1238. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/abt.at:31: abt-test changed"
at_fn_check_prepare_trace "abt.at:31"
( $at_check_trace; abt-test changed
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/abt.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1238
#AT_START_1239
at_fn_group_banner 1239 'bt.at:25' \
  "BT -- insert-any-remove-any" "                    " 120
at_xfail=no
(
  printf "%s\n" "1239. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/bt.at:25: bt-test insert-any-remove-any"
at_fn_check_prepare_trace "bt.at:25"
( $at_check_trace; bt-test insert-any-remove-any
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bt.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1239
#AT_START_1240
at_fn_group_banner 1240 'bt.at:26' \
  "BT -- insert-any-remove-same" "                   " 120
at_xfail=no
(
  printf "%s\n" "1240. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/bt.at:26: bt-test insert-any-remove-same"
at_fn_check_prepare_trace "bt.at:26"
( $at_check_trace; bt-test insert-any-remove-same
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bt.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1240
#AT_START_1241
at_fn_group_banner 1241 'bt.at:27' \
  "BT -- insert-any-remove-reverse" "                " 120
at_xfail=no
(
  printf "%s\n" "1241. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/bt.at:27: bt-test insert-any-remove-reverse"
at_fn_check_prepare_trace "bt.at:27"
( $at_check_trace; bt-test insert-any-remove-reverse
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bt.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1241
#AT_START_1242
at_fn_group_banner 1242 'bt.at:28' \
  "BT -- random-sequence" "                          " 120
at_xfail=no
(
  printf "%s\n" "1242. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/bt.at:28: bt-test random-sequence"
at_fn_check_prepare_trace "bt.at:28"
( $at_check_trace; bt-test random-sequence
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bt.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1242
#AT_START_1243
at_fn_group_banner 1243 'bt.at:29' \
  "BT -- insert-ordered" "                           " 120
at_xfail=no
(
  printf "%s\n" "1243. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/bt.at:29: bt-test insert-ordered"
at_fn_check_prepare_trace "bt.at:29"
( $at_check_trace; bt-test insert-ordered
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bt.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1243
#AT_START_1244
at_fn_group_banner 1244 'bt.at:30' \
  "BT -- find-ge-le" "                               " 120
at_xfail=no
(
  printf "%s\n" "1244. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/bt.at:30: bt-test find-ge-le"
at_fn_check_prepare_trace "bt.at:30"
( $at_check_trace; bt-test find-ge-le
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bt.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1244
#AT_START_1245
at_fn_group_banner 1245 'bt.at:31' \
  "BT -- moved" "                                    " 120
at_xfail=no
(
  printf "%s\n" "1245. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/bt.at:31: bt-test moved"
at_fn_check_prepare_trace "bt.at:31"
( $at_check_trace; bt-test moved
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bt.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1245
#AT_START_1246
at_fn_group_banner 1246 'bt.at:32' \
  "BT -- changed" "                                  " 120
at_xfail=no
(
  printf "%s\n" "1246. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/bt.at:32: bt-test changed"
at_fn_check_prepare_trace "bt.at:32"
( $at_check_trace; bt-test changed
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bt.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1246
#AT_START_1247
at_fn_group_banner 1247 'encoding-guesser.at:19' \
  "ASCII" "                                          " 121
at_xfail=no
(
  printf "%s\n" "1247. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:21: echo string | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:21"
( $at_check_trace; echo string | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ASCII
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:21"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1247
#AT_START_1248
at_fn_group_banner 1248 'encoding-guesser.at:25' \
  "UTF-8" "                                          " 121
at_xfail=no
(
  printf "%s\n" "1248. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:27: i18n-test supports_encodings ISO-8859-1"
at_fn_check_prepare_trace "encoding-guesser.at:27"
( $at_check_trace; i18n-test supports_encodings ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:28: printf '\\346\\227\\245\\346\\234\\254\\350\\252\\236\\n' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:28"
( $at_check_trace; printf '\346\227\245\346\234\254\350\252\236\n' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1248
#AT_START_1249
at_fn_group_banner 1249 'encoding-guesser.at:32' \
  "UTF-8 starting with ASCII" "                      " 121
at_xfail=no
(
  printf "%s\n" "1249. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:34: i18n-test supports_encodings ISO-8859-1"
at_fn_check_prepare_trace "encoding-guesser.at:34"
( $at_check_trace; i18n-test supports_encodings ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:35: printf 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\\346\\227\\245\\346\\234\\254\\350\\252\\236\\n' | encoding-guesser-test Auto,ISO-8859-1 32"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:35"
( $at_check_trace; printf 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\346\227\245\346\234\254\350\252\236\n' | encoding-guesser-test Auto,ISO-8859-1 32
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1249
#AT_START_1250
at_fn_group_banner 1250 'encoding-guesser.at:39' \
  "UTF-16 with big-endian byte order mark" "         " 121
at_xfail=no
(
  printf "%s\n" "1250. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:41: printf '\\376\\377' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:41"
( $at_check_trace; printf '\376\377' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-16
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1250
#AT_START_1251
at_fn_group_banner 1251 'encoding-guesser.at:46' \
  "UTF-16 with little-endian byte order mark" "      " 121
at_xfail=no
(
  printf "%s\n" "1251. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:48: printf '\\377\\376' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:48"
( $at_check_trace; printf '\377\376' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-16
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1251
#AT_START_1252
at_fn_group_banner 1252 'encoding-guesser.at:53' \
  "UTF-16BE" "                                       " 121
at_xfail=no
(
  printf "%s\n" "1252. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:55: printf '\\0e\\0n\\0t\\0r\\0\\351\\0e\\0\\n' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:55"
( $at_check_trace; printf '\0e\0n\0t\0r\0\351\0e\0\n' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-16BE
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1252
#AT_START_1253
at_fn_group_banner 1253 'encoding-guesser.at:62' \
  "UTF-16BE starting with U+0100" "                  " 121
at_xfail=no
(
  printf "%s\n" "1253. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:64: printf '\\1\\0\\0e\\0n\\0t\\0r\\0\\351\\0e\\0\\n' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:64"
( $at_check_trace; printf '\1\0\0e\0n\0t\0r\0\351\0e\0\n' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-16BE
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:64"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1253
#AT_START_1254
at_fn_group_banner 1254 'encoding-guesser.at:69' \
  "UTF-16LE" "                                       " 121
at_xfail=no
(
  printf "%s\n" "1254. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:71: printf 'e\\0n\\0t\\0r\\0\\351\\0e\\0\\n\\0' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:71"
( $at_check_trace; printf 'e\0n\0t\0r\0\351\0e\0\n\0' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-16LE
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1254
#AT_START_1255
at_fn_group_banner 1255 'encoding-guesser.at:78' \
  "UTF-16LE starting with U+0100" "                  " 121
at_xfail=no
(
  printf "%s\n" "1255. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:80: printf '\\0\\1e\\0n\\0t\\0r\\0\\351\\0e\\0\\n\\0' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:80"
( $at_check_trace; printf '\0\1e\0n\0t\0r\0\351\0e\0\n\0' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-16LE
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:80"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1255
#AT_START_1256
at_fn_group_banner 1256 'encoding-guesser.at:85' \
  "UTF-32 with big-endian byte order mark" "         " 121
at_xfail=no
(
  printf "%s\n" "1256. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:87: printf '\\0\\0\\376\\377' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:87"
( $at_check_trace; printf '\0\0\376\377' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-32
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:87"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1256
#AT_START_1257
at_fn_group_banner 1257 'encoding-guesser.at:92' \
  "UTF-32 with little-endian byte order mark" "      " 121
at_xfail=no
(
  printf "%s\n" "1257. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:94: printf '\\377\\376\\0\\0' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:94"
( $at_check_trace; printf '\377\376\0\0' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-32
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:94"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1257
#AT_START_1258
at_fn_group_banner 1258 'encoding-guesser.at:99' \
  "UTF-32BE" "                                       " 121
at_xfail=no
(
  printf "%s\n" "1258. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:101: printf '\\0\\0\\0e\\0\\0\\0n\\0\\0\\0t\\0\\0\\0r\\0\\0\\0\\351\\0\\0\\0e\\0\\0\\0\\n' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:101"
( $at_check_trace; printf '\0\0\0e\0\0\0n\0\0\0t\0\0\0r\0\0\0\351\0\0\0e\0\0\0\n' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-32BE
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:101"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1258
#AT_START_1259
at_fn_group_banner 1259 'encoding-guesser.at:106' \
  "UTF-32LE" "                                       " 121
at_xfail=no
(
  printf "%s\n" "1259. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:108: printf 'e\\0\\0\\0n\\0\\0\\0t\\0\\0\\0r\\0\\0\\0\\351\\0\\0\\0e\\0\\0\\0\\n\\0\\0\\0' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:108"
( $at_check_trace; printf 'e\0\0\0n\0\0\0t\0\0\0r\0\0\0\351\0\0\0e\0\0\0\n\0\0\0' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-32LE
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:108"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1259
#AT_START_1260
at_fn_group_banner 1260 'encoding-guesser.at:113' \
  "ISO-8859-1" "                                     " 121
at_xfail=no
(
  printf "%s\n" "1260. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:115: i18n-test supports_encodings ISO-8859-1"
at_fn_check_prepare_trace "encoding-guesser.at:115"
( $at_check_trace; i18n-test supports_encodings ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:115"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:116: printf 'entr\\351e\\n' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:116"
( $at_check_trace; printf 'entr\351e\n' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ISO-8859-1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1260
#AT_START_1261
at_fn_group_banner 1261 'encoding-guesser.at:121' \
  "GB-18030 with byte order mark" "                  " 121
at_xfail=no
(
  printf "%s\n" "1261. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:123: i18n-test supports_encodings ISO-8859-1"
at_fn_check_prepare_trace "encoding-guesser.at:123"
( $at_check_trace; i18n-test supports_encodings ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:124: printf '\\204\\061\\225\\063' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:124"
( $at_check_trace; printf '\204\061\225\063' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "GB-18030
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1261
#AT_START_1262
at_fn_group_banner 1262 'encoding-guesser.at:129' \
  "UTF-EBCDIC with byte order mark" "                " 121
at_xfail=no
(
  printf "%s\n" "1262. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:131: i18n-test supports_encodings ISO-8859-1"
at_fn_check_prepare_trace "encoding-guesser.at:131"
( $at_check_trace; i18n-test supports_encodings ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:131"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:132: printf '\\335\\163\\146\\163' | encoding-guesser-test Auto,ISO-8859-1"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:132"
( $at_check_trace; printf '\335\163\146\163' | encoding-guesser-test Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-EBCDIC
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:132"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1262
#AT_START_1263
at_fn_group_banner 1263 'encoding-guesser.at:137' \
  "EUC-JP as Auto,EUC-JP" "                          " 121
at_xfail=no
(
  printf "%s\n" "1263. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:139: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "encoding-guesser.at:139"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:139"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:140: printf '\\244\\241 \\244\\242 \\244\\243 \\244\\244 \\244\\245 \\244\\246 \\244\\247 \\244\\250 \\244\\251 \\244\\252\\n' | encoding-guesser-test Auto,EUC-JP"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:140"
( $at_check_trace; printf '\244\241 \244\242 \244\243 \244\244 \244\245 \244\246 \244\247 \244\250 \244\251 \244\252\n' | encoding-guesser-test Auto,EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "EUC-JP
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:140"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1263
#AT_START_1264
at_fn_group_banner 1264 'encoding-guesser.at:145' \
  "EUC-JP starting with ASCII as Auto,EUC-JP" "      " 121
at_xfail=no
(
  printf "%s\n" "1264. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:147: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "encoding-guesser.at:147"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:147"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:148: printf 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \\244\\241 \\244\\242 \\244\\243 \\244\\244 \\244\\245 \\244\\246 \\244\\247 \\244\\250 \\244\\251 \\244\\252\\n' | encoding-guesser-test Auto,EUC-JP 32"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:148"
( $at_check_trace; printf 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \244\241 \244\242 \244\243 \244\244 \244\245 \244\246 \244\247 \244\250 \244\251 \244\252\n' | encoding-guesser-test Auto,EUC-JP 32
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "EUC-JP
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:148"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1264
#AT_START_1265
at_fn_group_banner 1265 'encoding-guesser.at:153' \
  "UTF-8 with character split across input buffers" "" 121
at_xfail=no
(
  printf "%s\n" "1265. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:155: i18n-test supports_encodings ISO-8859-1"
at_fn_check_prepare_trace "encoding-guesser.at:155"
( $at_check_trace; i18n-test supports_encodings ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:155"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:156: printf '\\343\\201\\201\\343\\201\\202\\343\\201\\203\\343\\201\\204\\343\\201\\205\\343\\201\\206\\343\\201\\207\\343\\201\\210\\343\\201\\211\\343\\201\\212\\343\\201\\201\\343\\201\\202\\343\\201\\203\\343\\201\\204\\343\\201\\205\\343\\201\\206\\343\\201\\207\\343\\201\\210\\343\\201\\211\\343\\201\\212\\n' | encoding-guesser-test Auto,ISO-8859-1 32"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:156"
( $at_check_trace; printf '\343\201\201\343\201\202\343\201\203\343\201\204\343\201\205\343\201\206\343\201\207\343\201\210\343\201\211\343\201\212\343\201\201\343\201\202\343\201\203\343\201\204\343\201\205\343\201\206\343\201\207\343\201\210\343\201\211\343\201\212\n' | encoding-guesser-test Auto,ISO-8859-1 32
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-8
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:156"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1265
#AT_START_1266
at_fn_group_banner 1266 'encoding-guesser.at:161' \
  "windows-1252 as Auto,UTF-8" "                     " 121
at_xfail=no
(
  printf "%s\n" "1266. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:163: i18n-test supports_encodings windows-1252"
at_fn_check_prepare_trace "encoding-guesser.at:163"
( $at_check_trace; i18n-test supports_encodings windows-1252
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:163"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/encoding-guesser.at:164: printf 'entr\\351e' | encoding-guesser-test Auto,UTF-8 32"
at_fn_check_prepare_notrace 'a shell pipeline' "encoding-guesser.at:164"
( $at_check_trace; printf 'entr\351e' | encoding-guesser-test Auto,UTF-8 32
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "windows-1252
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/encoding-guesser.at:164"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1266
#AT_START_1267
at_fn_group_banner 1267 'float-format.at:19' \
  "floating point format conversions" "              " 122
at_xfail=no
(
  printf "%s\n" "1267. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >float-format.txt <<'_ATEOF'
# 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('00000000')
x('Infinity') == isb('7f800000')
x('-Infinity') == isb('ff800000')
x('NaN:') => isb('7f800001')		# NaN requires nonzero fraction.
x('NaN:e000000000000000') == isb('7ff00000') == idb('7ffe000000000000')
x('NaN:5a5a5e0000000000') == isb('7fad2d2f') == idb('7ff5a5a5e0000000')
x('NaN:975612abcdef4000') == idb('7ff975612abcdef4')
x('-NaN:e000000000000000') == isb('fff00000') == idb('fffe000000000000')
x('-NaN:5a5a5e0000000000') == isb('ffad2d2f') == idb('fff5a5a5e0000000')
x('-NaN:975612abcdef4000') == idb('fff975612abcdef4')

# PSPP special values.
x('Missing') == isb('ff7fffff') == idb('ffefffffffffffff') == isl('ffff7fff') == idl('ffffffffffffefff') == vf('ffffffff') == vd('ffffffffffffffff') == vg('ffffffffffffffff') == zs('ffffffff') == zl('ffffffffffffffff')
x('Lowest') == isb('ff7ffffe') == idb('ffeffffffffffffe') == isl('feff7fff') == idl('feffffffffffefff') == vf('fffffeff') == vd('fffffeffffffffff') == vg('fffffeffffffffff') == zs('fffffffe') == zl('fffffffffffffffe')
x('Highest') == isb('7f7fffff') == idb('7fefffffffffffff') == isl('ffff7f7f') == idl('ffffffffffffef7f') == vf('ff7fffff') == vd('ffffffffff7fffff') == vg('ffffffffff7fffff') == zs('7fffffff') == zl('7fffffffffffffff')

# From Wikipedia.
0.15625 == isb('3e200000')
-118.625 == isb('c2ed4000')

# http://www.psc.edu/general/software/packages/ieee/ieee.html
x('NaN:0400000000000000') == isb('7f820000')
x('-NaN:2225540000000000') == isb('ff9112aa')
2 == isb('40000000')
6.5 == isb('40d00000')
-6.5 == isb('c0d00000')
x('.4p-124') == isb('00800000')
x('.2p-124') == isb('00400000')

# Using converter at http://babbage.cs.qc.edu/IEEE-754/Decimal.html
# plus Emacs 'calc' to convert decimal to hexadecimal
x('.7b74bc6a7ef9db23p8') => isb('42f6e979')		# 123.456
x('.7b74bc6a7ef9db23p8') => idb('405edd2f1a9fbe77')
x('.817427d2d4642004p-12') => isb('39017428')		# .0001234567
x('.817427d2d4642004p-12') => idb('3f202e84fa5a8c84')
x('.446c3b15f9926688p168') => isb('7f800000')		# 1e50; overflow
x('.446c3b15f9926688p168') => idb('4a511b0ec57e649a')

# From multiple editions of the z/Architecture Principles of Operation
# manual.
	      1.0 == zs('41100000') == isb('3f800000')
	      0.5 == zs('40800000') == isb('3f000000')
       x('.4p-4') == zs('3f400000') == isb('3c800000')
		0 == zs('00000000') == isb('00000000')
	             zs('80000000') == isb('80000000')
	      -15 == zs('c1f00000') == isb('c1700000')
# x('.ffffffp252') == zs('7fffffff')
      x('.3b4p8') == zs('423b4000')
     x('.1p-256') == zs('00100000')
     x('.4p-124') == zs('21400000') == isb('00800000')
     x('.8p-148') == zs('1b800000') == isb('00000001')
# x('.ffffffp128') == zs('60ffffff') == isb('7f7fffff')
     x('.1p-256') == zs('00100000')
     x('.1p-256') => isb('00000000')              # Underflow to zero.
 x('.ffffffp248') == zs('7effffff')
 x('.ffffffp248') => isb('7f800000')              # Overflow to +Infinity.

            x('.4p-1020') => zl('0000000000000000')     # Underflow to zero.
            x('.4p-1020') == idb('0010000000000000')
            x('.4p-1072') => zl('0000000000000000')     # Underflow to zero.
            x('.4p-1072') => idb('0000000000000001')
x('.fffffffffffff8p1024') => zl('7fffffffffffffff')     # Overflow to maxval.
x('.fffffffffffff8p1024') => idb('7fefffffffffffff')
            x('.1p-256') == zl('0010000000000000') == idb('2fb0000000000000')
 x('.ffffffffffffffp248') == zl('7effffffffffffff')
 x('.ffffffffffffffp248') => idb('4f70000000000000')	# Loses precision.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/float-format.at:107: sed 's/#.*//
s/^ 	*//
s/ 	*\$//
/^\$/d
s/^\\(..*\\)\$/DEBUG FLOAT FORMAT \\1./' < float-format.txt > float-format.sps"
at_fn_check_prepare_notrace 'an embedded newline' "float-format.at:107"
( $at_check_trace; sed 's/#.*//
s/^ 	*//
s/ 	*$//
/^$/d
s/^\(..*\)$/DEBUG FLOAT FORMAT \1./' < float-format.txt > float-format.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/float-format.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/float-format.at:113: pspp --testing-mode -O format=csv float-format.sps"
at_fn_check_prepare_trace "float-format.at:113"
( $at_check_trace; pspp --testing-mode -O format=csv float-format.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/float-format.at:113"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1267
#AT_START_1268
at_fn_group_banner 1268 'heap.at:24' \
  "heap -- insert-no-dups-delete-min" "              " 123
at_xfail=no
(
  printf "%s\n" "1268. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/heap.at:24: heap-test insert-no-dups-delete-min"
at_fn_check_prepare_trace "heap.at:24"
( $at_check_trace; heap-test insert-no-dups-delete-min
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/heap.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1268
#AT_START_1269
at_fn_group_banner 1269 'heap.at:25' \
  "heap -- insert-with-dups-delete-min" "            " 123
at_xfail=no
(
  printf "%s\n" "1269. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/heap.at:25: heap-test insert-with-dups-delete-min"
at_fn_check_prepare_trace "heap.at:25"
( $at_check_trace; heap-test insert-with-dups-delete-min
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/heap.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1269
#AT_START_1270
at_fn_group_banner 1270 'heap.at:26' \
  "heap -- insert-no-dups-delete-random" "           " 123
at_xfail=no
(
  printf "%s\n" "1270. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/heap.at:26: heap-test insert-no-dups-delete-random"
at_fn_check_prepare_trace "heap.at:26"
( $at_check_trace; heap-test insert-no-dups-delete-random
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/heap.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1270
#AT_START_1271
at_fn_group_banner 1271 'heap.at:27' \
  "heap -- inc-dec" "                                " 123
at_xfail=no
(
  printf "%s\n" "1271. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/heap.at:27: heap-test inc-dec"
at_fn_check_prepare_trace "heap.at:27"
( $at_check_trace; heap-test inc-dec
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/heap.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1271
#AT_START_1272
at_fn_group_banner 1272 'heap.at:28' \
  "heap -- random-insert-delete" "                   " 123
at_xfail=no
(
  printf "%s\n" "1272. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/heap.at:28: heap-test random-insert-delete"
at_fn_check_prepare_trace "heap.at:28"
( $at_check_trace; heap-test random-insert-delete
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/heap.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1272
#AT_START_1273
at_fn_group_banner 1273 'hmap.at:24' \
  "hmap -- insert-any-remove-any-random-hash" "      " 124
at_xfail=no
(
  printf "%s\n" "1273. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:24: hmap-test insert-any-remove-any-random-hash"
at_fn_check_prepare_trace "hmap.at:24"
( $at_check_trace; hmap-test insert-any-remove-any-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1273
#AT_START_1274
at_fn_group_banner 1274 'hmap.at:25' \
  "hmap -- insert-any-remove-any-identity-hash" "    " 124
at_xfail=no
(
  printf "%s\n" "1274. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:25: hmap-test insert-any-remove-any-identity-hash"
at_fn_check_prepare_trace "hmap.at:25"
( $at_check_trace; hmap-test insert-any-remove-any-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1274
#AT_START_1275
at_fn_group_banner 1275 'hmap.at:26' \
  "hmap -- insert-any-remove-any-constant-hash" "    " 124
at_xfail=no
(
  printf "%s\n" "1275. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:26: hmap-test insert-any-remove-any-constant-hash"
at_fn_check_prepare_trace "hmap.at:26"
( $at_check_trace; hmap-test insert-any-remove-any-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1275
#AT_START_1276
at_fn_group_banner 1276 'hmap.at:27' \
  "hmap -- insert-any-remove-same-random-hash" "     " 124
at_xfail=no
(
  printf "%s\n" "1276. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:27: hmap-test insert-any-remove-same-random-hash"
at_fn_check_prepare_trace "hmap.at:27"
( $at_check_trace; hmap-test insert-any-remove-same-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1276
#AT_START_1277
at_fn_group_banner 1277 'hmap.at:28' \
  "hmap -- insert-any-remove-same-identity-hash" "   " 124
at_xfail=no
(
  printf "%s\n" "1277. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:28: hmap-test insert-any-remove-same-identity-hash"
at_fn_check_prepare_trace "hmap.at:28"
( $at_check_trace; hmap-test insert-any-remove-same-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1277
#AT_START_1278
at_fn_group_banner 1278 'hmap.at:29' \
  "hmap -- insert-any-remove-same-constant-hash" "   " 124
at_xfail=no
(
  printf "%s\n" "1278. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:29: hmap-test insert-any-remove-same-constant-hash"
at_fn_check_prepare_trace "hmap.at:29"
( $at_check_trace; hmap-test insert-any-remove-same-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1278
#AT_START_1279
at_fn_group_banner 1279 'hmap.at:30' \
  "hmap -- insert-any-remove-reverse-random-hash" "  " 124
at_xfail=no
(
  printf "%s\n" "1279. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:30: hmap-test insert-any-remove-reverse-random-hash"
at_fn_check_prepare_trace "hmap.at:30"
( $at_check_trace; hmap-test insert-any-remove-reverse-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1279
#AT_START_1280
at_fn_group_banner 1280 'hmap.at:31' \
  "hmap -- insert-any-remove-reverse-identity-hash" "" 124
at_xfail=no
(
  printf "%s\n" "1280. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:31: hmap-test insert-any-remove-reverse-identity-hash"
at_fn_check_prepare_trace "hmap.at:31"
( $at_check_trace; hmap-test insert-any-remove-reverse-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1280
#AT_START_1281
at_fn_group_banner 1281 'hmap.at:32' \
  "hmap -- insert-any-remove-reverse-constant-hash" "" 124
at_xfail=no
(
  printf "%s\n" "1281. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:32: hmap-test insert-any-remove-reverse-constant-hash"
at_fn_check_prepare_trace "hmap.at:32"
( $at_check_trace; hmap-test insert-any-remove-reverse-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1281
#AT_START_1282
at_fn_group_banner 1282 'hmap.at:33' \
  "hmap -- random-sequence-random-hash" "            " 124
at_xfail=no
(
  printf "%s\n" "1282. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:33: hmap-test random-sequence-random-hash"
at_fn_check_prepare_trace "hmap.at:33"
( $at_check_trace; hmap-test random-sequence-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1282
#AT_START_1283
at_fn_group_banner 1283 'hmap.at:34' \
  "hmap -- random-sequence-identity-hash" "          " 124
at_xfail=no
(
  printf "%s\n" "1283. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:34: hmap-test random-sequence-identity-hash"
at_fn_check_prepare_trace "hmap.at:34"
( $at_check_trace; hmap-test random-sequence-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1283
#AT_START_1284
at_fn_group_banner 1284 'hmap.at:35' \
  "hmap -- random-sequence-constant-hash" "          " 124
at_xfail=no
(
  printf "%s\n" "1284. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:35: hmap-test random-sequence-constant-hash"
at_fn_check_prepare_trace "hmap.at:35"
( $at_check_trace; hmap-test random-sequence-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1284
#AT_START_1285
at_fn_group_banner 1285 'hmap.at:36' \
  "hmap -- insert-ordered-random-hash" "             " 124
at_xfail=no
(
  printf "%s\n" "1285. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:36: hmap-test insert-ordered-random-hash"
at_fn_check_prepare_trace "hmap.at:36"
( $at_check_trace; hmap-test insert-ordered-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1285
#AT_START_1286
at_fn_group_banner 1286 'hmap.at:37' \
  "hmap -- insert-ordered-identity-hash" "           " 124
at_xfail=no
(
  printf "%s\n" "1286. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:37: hmap-test insert-ordered-identity-hash"
at_fn_check_prepare_trace "hmap.at:37"
( $at_check_trace; hmap-test insert-ordered-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1286
#AT_START_1287
at_fn_group_banner 1287 'hmap.at:38' \
  "hmap -- insert-ordered-constant-hash" "           " 124
at_xfail=no
(
  printf "%s\n" "1287. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:38: hmap-test insert-ordered-constant-hash"
at_fn_check_prepare_trace "hmap.at:38"
( $at_check_trace; hmap-test insert-ordered-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1287
#AT_START_1288
at_fn_group_banner 1288 'hmap.at:39' \
  "hmap -- moved-random-hash" "                      " 124
at_xfail=no
(
  printf "%s\n" "1288. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:39: hmap-test moved-random-hash"
at_fn_check_prepare_trace "hmap.at:39"
( $at_check_trace; hmap-test moved-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1288
#AT_START_1289
at_fn_group_banner 1289 'hmap.at:40' \
  "hmap -- moved-identity-hash" "                    " 124
at_xfail=no
(
  printf "%s\n" "1289. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:40: hmap-test moved-identity-hash"
at_fn_check_prepare_trace "hmap.at:40"
( $at_check_trace; hmap-test moved-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1289
#AT_START_1290
at_fn_group_banner 1290 'hmap.at:41' \
  "hmap -- moved-constant-hash" "                    " 124
at_xfail=no
(
  printf "%s\n" "1290. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:41: hmap-test moved-constant-hash"
at_fn_check_prepare_trace "hmap.at:41"
( $at_check_trace; hmap-test moved-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1290
#AT_START_1291
at_fn_group_banner 1291 'hmap.at:42' \
  "hmap -- changed-random-hash" "                    " 124
at_xfail=no
(
  printf "%s\n" "1291. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:42: hmap-test changed-random-hash"
at_fn_check_prepare_trace "hmap.at:42"
( $at_check_trace; hmap-test changed-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1291
#AT_START_1292
at_fn_group_banner 1292 'hmap.at:43' \
  "hmap -- changed-identity-hash" "                  " 124
at_xfail=no
(
  printf "%s\n" "1292. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:43: hmap-test changed-identity-hash"
at_fn_check_prepare_trace "hmap.at:43"
( $at_check_trace; hmap-test changed-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1292
#AT_START_1293
at_fn_group_banner 1293 'hmap.at:44' \
  "hmap -- changed-constant-hash" "                  " 124
at_xfail=no
(
  printf "%s\n" "1293. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:44: hmap-test changed-constant-hash"
at_fn_check_prepare_trace "hmap.at:44"
( $at_check_trace; hmap-test changed-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1293
#AT_START_1294
at_fn_group_banner 1294 'hmap.at:45' \
  "hmap -- swap-random-hash" "                       " 124
at_xfail=no
(
  printf "%s\n" "1294. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:45: hmap-test swap-random-hash"
at_fn_check_prepare_trace "hmap.at:45"
( $at_check_trace; hmap-test swap-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1294
#AT_START_1295
at_fn_group_banner 1295 'hmap.at:46' \
  "hmap -- clear" "                                  " 124
at_xfail=no
(
  printf "%s\n" "1295. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:46: hmap-test clear"
at_fn_check_prepare_trace "hmap.at:46"
( $at_check_trace; hmap-test clear
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1295
#AT_START_1296
at_fn_group_banner 1296 'hmap.at:47' \
  "hmap -- destroy-null" "                           " 124
at_xfail=no
(
  printf "%s\n" "1296. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:47: hmap-test destroy-null"
at_fn_check_prepare_trace "hmap.at:47"
( $at_check_trace; hmap-test destroy-null
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1296
#AT_START_1297
at_fn_group_banner 1297 'hmap.at:48' \
  "hmap -- shrink-empty" "                           " 124
at_xfail=no
(
  printf "%s\n" "1297. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmap.at:48: hmap-test shrink-empty"
at_fn_check_prepare_trace "hmap.at:48"
( $at_check_trace; hmap-test shrink-empty
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmap.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1297
#AT_START_1298
at_fn_group_banner 1298 'hmapx.at:24' \
  "hmapx -- insert-any-remove-any-random-hash" "     " 125
at_xfail=no
(
  printf "%s\n" "1298. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:24: hmapx-test insert-any-remove-any-random-hash"
at_fn_check_prepare_trace "hmapx.at:24"
( $at_check_trace; hmapx-test insert-any-remove-any-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1298
#AT_START_1299
at_fn_group_banner 1299 'hmapx.at:25' \
  "hmapx -- insert-any-remove-any-identity-hash" "   " 125
at_xfail=no
(
  printf "%s\n" "1299. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:25: hmapx-test insert-any-remove-any-identity-hash"
at_fn_check_prepare_trace "hmapx.at:25"
( $at_check_trace; hmapx-test insert-any-remove-any-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1299
#AT_START_1300
at_fn_group_banner 1300 'hmapx.at:26' \
  "hmapx -- insert-any-remove-any-constant-hash" "   " 125
at_xfail=no
(
  printf "%s\n" "1300. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:26: hmapx-test insert-any-remove-any-constant-hash"
at_fn_check_prepare_trace "hmapx.at:26"
( $at_check_trace; hmapx-test insert-any-remove-any-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1300
#AT_START_1301
at_fn_group_banner 1301 'hmapx.at:27' \
  "hmapx -- insert-any-remove-same-random-hash" "    " 125
at_xfail=no
(
  printf "%s\n" "1301. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:27: hmapx-test insert-any-remove-same-random-hash"
at_fn_check_prepare_trace "hmapx.at:27"
( $at_check_trace; hmapx-test insert-any-remove-same-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1301
#AT_START_1302
at_fn_group_banner 1302 'hmapx.at:28' \
  "hmapx -- insert-any-remove-same-identity-hash" "  " 125
at_xfail=no
(
  printf "%s\n" "1302. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:28: hmapx-test insert-any-remove-same-identity-hash"
at_fn_check_prepare_trace "hmapx.at:28"
( $at_check_trace; hmapx-test insert-any-remove-same-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1302
#AT_START_1303
at_fn_group_banner 1303 'hmapx.at:29' \
  "hmapx -- insert-any-remove-same-constant-hash" "  " 125
at_xfail=no
(
  printf "%s\n" "1303. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:29: hmapx-test insert-any-remove-same-constant-hash"
at_fn_check_prepare_trace "hmapx.at:29"
( $at_check_trace; hmapx-test insert-any-remove-same-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1303
#AT_START_1304
at_fn_group_banner 1304 'hmapx.at:30' \
  "hmapx -- insert-any-remove-reverse-random-hash" " " 125
at_xfail=no
(
  printf "%s\n" "1304. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:30: hmapx-test insert-any-remove-reverse-random-hash"
at_fn_check_prepare_trace "hmapx.at:30"
( $at_check_trace; hmapx-test insert-any-remove-reverse-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1304
#AT_START_1305
at_fn_group_banner 1305 'hmapx.at:31' \
  "hmapx -- insert-any-remove-reverse-identity-hash" "" 125
at_xfail=no
(
  printf "%s\n" "1305. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:31: hmapx-test insert-any-remove-reverse-identity-hash"
at_fn_check_prepare_trace "hmapx.at:31"
( $at_check_trace; hmapx-test insert-any-remove-reverse-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1305
#AT_START_1306
at_fn_group_banner 1306 'hmapx.at:32' \
  "hmapx -- insert-any-remove-reverse-constant-hash" "" 125
at_xfail=no
(
  printf "%s\n" "1306. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:32: hmapx-test insert-any-remove-reverse-constant-hash"
at_fn_check_prepare_trace "hmapx.at:32"
( $at_check_trace; hmapx-test insert-any-remove-reverse-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1306
#AT_START_1307
at_fn_group_banner 1307 'hmapx.at:33' \
  "hmapx -- random-sequence-random-hash" "           " 125
at_xfail=no
(
  printf "%s\n" "1307. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:33: hmapx-test random-sequence-random-hash"
at_fn_check_prepare_trace "hmapx.at:33"
( $at_check_trace; hmapx-test random-sequence-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1307
#AT_START_1308
at_fn_group_banner 1308 'hmapx.at:34' \
  "hmapx -- random-sequence-identity-hash" "         " 125
at_xfail=no
(
  printf "%s\n" "1308. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:34: hmapx-test random-sequence-identity-hash"
at_fn_check_prepare_trace "hmapx.at:34"
( $at_check_trace; hmapx-test random-sequence-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1308
#AT_START_1309
at_fn_group_banner 1309 'hmapx.at:35' \
  "hmapx -- random-sequence-constant-hash" "         " 125
at_xfail=no
(
  printf "%s\n" "1309. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:35: hmapx-test random-sequence-constant-hash"
at_fn_check_prepare_trace "hmapx.at:35"
( $at_check_trace; hmapx-test random-sequence-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1309
#AT_START_1310
at_fn_group_banner 1310 'hmapx.at:36' \
  "hmapx -- insert-ordered-random-hash" "            " 125
at_xfail=no
(
  printf "%s\n" "1310. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:36: hmapx-test insert-ordered-random-hash"
at_fn_check_prepare_trace "hmapx.at:36"
( $at_check_trace; hmapx-test insert-ordered-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1310
#AT_START_1311
at_fn_group_banner 1311 'hmapx.at:37' \
  "hmapx -- insert-ordered-identity-hash" "          " 125
at_xfail=no
(
  printf "%s\n" "1311. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:37: hmapx-test insert-ordered-identity-hash"
at_fn_check_prepare_trace "hmapx.at:37"
( $at_check_trace; hmapx-test insert-ordered-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1311
#AT_START_1312
at_fn_group_banner 1312 'hmapx.at:38' \
  "hmapx -- insert-ordered-constant-hash" "          " 125
at_xfail=no
(
  printf "%s\n" "1312. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:38: hmapx-test insert-ordered-constant-hash"
at_fn_check_prepare_trace "hmapx.at:38"
( $at_check_trace; hmapx-test insert-ordered-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1312
#AT_START_1313
at_fn_group_banner 1313 'hmapx.at:39' \
  "hmapx -- moved-random-hash" "                     " 125
at_xfail=no
(
  printf "%s\n" "1313. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:39: hmapx-test moved-random-hash"
at_fn_check_prepare_trace "hmapx.at:39"
( $at_check_trace; hmapx-test moved-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1313
#AT_START_1314
at_fn_group_banner 1314 'hmapx.at:40' \
  "hmapx -- moved-identity-hash" "                   " 125
at_xfail=no
(
  printf "%s\n" "1314. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:40: hmapx-test moved-identity-hash"
at_fn_check_prepare_trace "hmapx.at:40"
( $at_check_trace; hmapx-test moved-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1314
#AT_START_1315
at_fn_group_banner 1315 'hmapx.at:41' \
  "hmapx -- moved-constant-hash" "                   " 125
at_xfail=no
(
  printf "%s\n" "1315. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:41: hmapx-test moved-constant-hash"
at_fn_check_prepare_trace "hmapx.at:41"
( $at_check_trace; hmapx-test moved-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1315
#AT_START_1316
at_fn_group_banner 1316 'hmapx.at:42' \
  "hmapx -- changed-random-hash" "                   " 125
at_xfail=no
(
  printf "%s\n" "1316. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:42: hmapx-test changed-random-hash"
at_fn_check_prepare_trace "hmapx.at:42"
( $at_check_trace; hmapx-test changed-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1316
#AT_START_1317
at_fn_group_banner 1317 'hmapx.at:43' \
  "hmapx -- changed-identity-hash" "                 " 125
at_xfail=no
(
  printf "%s\n" "1317. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:43: hmapx-test changed-identity-hash"
at_fn_check_prepare_trace "hmapx.at:43"
( $at_check_trace; hmapx-test changed-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1317
#AT_START_1318
at_fn_group_banner 1318 'hmapx.at:44' \
  "hmapx -- changed-constant-hash" "                 " 125
at_xfail=no
(
  printf "%s\n" "1318. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:44: hmapx-test changed-constant-hash"
at_fn_check_prepare_trace "hmapx.at:44"
( $at_check_trace; hmapx-test changed-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1318
#AT_START_1319
at_fn_group_banner 1319 'hmapx.at:45' \
  "hmapx -- change-random-hash" "                    " 125
at_xfail=no
(
  printf "%s\n" "1319. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:45: hmapx-test change-random-hash"
at_fn_check_prepare_trace "hmapx.at:45"
( $at_check_trace; hmapx-test change-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1319
#AT_START_1320
at_fn_group_banner 1320 'hmapx.at:46' \
  "hmapx -- change-identity-hash" "                  " 125
at_xfail=no
(
  printf "%s\n" "1320. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:46: hmapx-test change-identity-hash"
at_fn_check_prepare_trace "hmapx.at:46"
( $at_check_trace; hmapx-test change-identity-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1320
#AT_START_1321
at_fn_group_banner 1321 'hmapx.at:47' \
  "hmapx -- change-constant-hash" "                  " 125
at_xfail=no
(
  printf "%s\n" "1321. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:47: hmapx-test change-constant-hash"
at_fn_check_prepare_trace "hmapx.at:47"
( $at_check_trace; hmapx-test change-constant-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1321
#AT_START_1322
at_fn_group_banner 1322 'hmapx.at:48' \
  "hmapx -- swap-random-hash" "                      " 125
at_xfail=no
(
  printf "%s\n" "1322. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:48: hmapx-test swap-random-hash"
at_fn_check_prepare_trace "hmapx.at:48"
( $at_check_trace; hmapx-test swap-random-hash
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1322
#AT_START_1323
at_fn_group_banner 1323 'hmapx.at:49' \
  "hmapx -- clear" "                                 " 125
at_xfail=no
(
  printf "%s\n" "1323. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:49: hmapx-test clear"
at_fn_check_prepare_trace "hmapx.at:49"
( $at_check_trace; hmapx-test clear
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1323
#AT_START_1324
at_fn_group_banner 1324 'hmapx.at:50' \
  "hmapx -- destroy-null" "                          " 125
at_xfail=no
(
  printf "%s\n" "1324. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:50: hmapx-test destroy-null"
at_fn_check_prepare_trace "hmapx.at:50"
( $at_check_trace; hmapx-test destroy-null
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:50"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1324
#AT_START_1325
at_fn_group_banner 1325 'hmapx.at:51' \
  "hmapx -- shrink-empty" "                          " 125
at_xfail=no
(
  printf "%s\n" "1325. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/hmapx.at:51: hmapx-test shrink-empty"
at_fn_check_prepare_trace "hmapx.at:51"
( $at_check_trace; hmapx-test shrink-empty
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/hmapx.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1325
#AT_START_1326
at_fn_group_banner 1326 'i18n.at:34' \
  "convert reflexively" "                            " 126
at_xfail=no
(
  printf "%s\n" "1326. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:34: i18n-test supports_encodings 'ASCII' 'ASCII'"
at_fn_check_prepare_trace "i18n.at:34"
( $at_check_trace; i18n-test supports_encodings 'ASCII' 'ASCII'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:34: i18n-test recode 'ASCII' 'ASCII' 'abc'"
at_fn_check_prepare_trace "i18n.at:34"
( $at_check_trace; i18n-test recode 'ASCII' 'ASCII' 'abc'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'abc'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1326
#AT_START_1327
at_fn_group_banner 1327 'i18n.at:35' \
  "convert without any change" "                     " 126
at_xfail=no
(
  printf "%s\n" "1327. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:35: i18n-test supports_encodings 'ASCII' 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:35"
( $at_check_trace; i18n-test supports_encodings 'ASCII' 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:35: i18n-test recode 'ASCII' 'UTF-8' 'abc'"
at_fn_check_prepare_trace "i18n.at:35"
( $at_check_trace; i18n-test recode 'ASCII' 'UTF-8' 'abc'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'abc'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1327
#AT_START_1328
at_fn_group_banner 1328 'i18n.at:37' \
  "convert from ISO-8859-1 to UTF-8" "               " 126
at_xfail=no
(
  printf "%s\n" "1328. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:37: i18n-test supports_encodings 'ISO-8859-1' 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:37"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1' 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:37: i18n-test recode 'ISO-8859-1' 'UTF-8' '\\242'"
at_fn_check_prepare_trace "i18n.at:37"
( $at_check_trace; i18n-test recode 'ISO-8859-1' 'UTF-8' '\242'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf '\302\242'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1328
#AT_START_1329
at_fn_group_banner 1329 'i18n.at:39' \
  "convert from UTF-8 to ISO-8859-1" "               " 126
at_xfail=no
(
  printf "%s\n" "1329. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:39: i18n-test supports_encodings 'UTF-8' 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:39"
( $at_check_trace; i18n-test supports_encodings 'UTF-8' 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:39: i18n-test recode 'UTF-8' 'ISO-8859-1' '\\302\\242'"
at_fn_check_prepare_trace "i18n.at:39"
( $at_check_trace; i18n-test recode 'UTF-8' 'ISO-8859-1' '\302\242'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf '\242'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1329
#AT_START_1330
at_fn_group_banner 1330 'i18n.at:43' \
  "convert invalid UTF-8 to ISO-8859-1" "            " 126
at_xfail=no
(
  printf "%s\n" "1330. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/i18n.at:47: case \$host in #(
  *-linux*) ;; #(
  *) exit 77
esac"
at_fn_check_prepare_notrace 'an embedded newline' "i18n.at:47"
( $at_check_trace; case $host in #(
  *-linux*) ;; #(
  *) exit 77
esac
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/i18n.at:52: i18n-test supports_encodings 'UTF-8' 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:52"
( $at_check_trace; i18n-test supports_encodings 'UTF-8' 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/i18n.at:53: i18n-test recode 'UTF-8' 'ISO-8859-1' 'xy\\300z'"
at_fn_check_prepare_trace "i18n.at:53"
( $at_check_trace; i18n-test recode 'UTF-8' 'ISO-8859-1' 'xy\300z'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'xy?z'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:53"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1330
#AT_START_1331
at_fn_group_banner 1331 'i18n.at:58' \
  "convert truncated UTF-8 to ISO-8559-1" "          " 126
at_xfail=no
(
  printf "%s\n" "1331. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:58: i18n-test supports_encodings 'UTF-8' 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:58"
( $at_check_trace; i18n-test supports_encodings 'UTF-8' 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:58"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:58: i18n-test recode 'UTF-8' 'ISO-8859-1' 'xy\\302'"
at_fn_check_prepare_trace "i18n.at:58"
( $at_check_trace; i18n-test recode 'UTF-8' 'ISO-8859-1' 'xy\302'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'xy?'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:58"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1331
#AT_START_1332
at_fn_group_banner 1332 'i18n.at:63' \
  "convert dropped final character in windows-1258" "" 126
at_xfail=no
(
  printf "%s\n" "1332. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:63: i18n-test supports_encodings 'windows-1258' 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:63"
( $at_check_trace; i18n-test supports_encodings 'windows-1258' 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:63"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:63: i18n-test recode 'windows-1258' 'UTF-8' 'aeiou'"
at_fn_check_prepare_trace "i18n.at:63"
( $at_check_trace; i18n-test recode 'windows-1258' 'UTF-8' 'aeiou'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'aeiou'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:63"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1332
#AT_START_1333
at_fn_group_banner 1333 'i18n.at:68' \
  "convert from ISO-8859-1 to UTF-8 with overflow" " " 126
at_xfail=no
(
  printf "%s\n" "1333. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:68: i18n-test supports_encodings 'ISO-8859-1' 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:68"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1' 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:68"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:68: i18n-test recode 'ISO-8859-1' 'UTF-8' 'Tsch\\374\\337!'"
at_fn_check_prepare_trace "i18n.at:68"
( $at_check_trace; i18n-test recode 'ISO-8859-1' 'UTF-8' 'Tsch\374\337!'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'Tsch\303\274\303\237!'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:68"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1333
#AT_START_1334
at_fn_group_banner 1334 'i18n.at:72' \
  "convert unknown encoding" "                       " 126
at_xfail=no
(
  printf "%s\n" "1334. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/i18n.at:74: i18n-test recode nonexistent1 nonexistent2 asdf"
at_fn_check_prepare_trace "i18n.at:74"
( $at_check_trace; i18n-test recode nonexistent1 nonexistent2 asdf
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "Warning: cannot create a converter for \`nonexistent1' to \`nonexistent2': Invalid argument
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "asdf
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:74"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1334
#AT_START_1335
at_fn_group_banner 1335 'i18n.at:102' \
  "truncate \"abc\" to 6 bytes in UTF-8" "             " 127
at_xfail=no
(
  printf "%s\n" "1335. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:102: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:102"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:102"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:102: i18n-test concat 'abc' '' 'UTF-8' '6'"
at_fn_check_prepare_trace "i18n.at:102"
( $at_check_trace; i18n-test concat 'abc' '' 'UTF-8' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'abc'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:102"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1335
#AT_START_1336
at_fn_group_banner 1336 'i18n.at:103' \
  "truncate \"\" + \"xyz\" to 6 bytes in UTF-8" "        " 127
at_xfail=no
(
  printf "%s\n" "1336. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:103: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:103"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:103"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:103: i18n-test concat '' 'xyz' 'UTF-8' '6'"
at_fn_check_prepare_trace "i18n.at:103"
( $at_check_trace; i18n-test concat '' 'xyz' 'UTF-8' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'xyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:103"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1336
#AT_START_1337
at_fn_group_banner 1337 'i18n.at:104' \
  "truncate \"\" to 6 bytes in UTF-8" "                " 127
at_xfail=no
(
  printf "%s\n" "1337. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:104: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:104"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:104"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:104: i18n-test concat '' '' 'UTF-8' '6'"
at_fn_check_prepare_trace "i18n.at:104"
( $at_check_trace; i18n-test concat '' '' 'UTF-8' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf ''`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:104"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1337
#AT_START_1338
at_fn_group_banner 1338 'i18n.at:105' \
  "truncate \"abcdefghij\" to 6 bytes in UTF-8" "      " 127
at_xfail=no
(
  printf "%s\n" "1338. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:105: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:105"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:105"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:105: i18n-test concat 'abcdefghij' '' 'UTF-8' '6'"
at_fn_check_prepare_trace "i18n.at:105"
( $at_check_trace; i18n-test concat 'abcdefghij' '' 'UTF-8' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'abcdef'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:105"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1338
#AT_START_1339
at_fn_group_banner 1339 'i18n.at:106' \
  "truncate \"\" + \"tuvwxyz\" to 6 bytes in UTF-8" "    " 127
at_xfail=no
(
  printf "%s\n" "1339. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:106: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:106"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:106"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:106: i18n-test concat '' 'tuvwxyz' 'UTF-8' '6'"
at_fn_check_prepare_trace "i18n.at:106"
( $at_check_trace; i18n-test concat '' 'tuvwxyz' 'UTF-8' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'tuvwxyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:106"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1339
#AT_START_1340
at_fn_group_banner 1340 'i18n.at:108' \
  "truncate \"abc\" + \"xyz\" to 6 bytes in UTF-8" "     " 127
at_xfail=no
(
  printf "%s\n" "1340. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:108: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:108"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:108"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:108: i18n-test concat 'abc' 'xyz' 'UTF-8' '6'"
at_fn_check_prepare_trace "i18n.at:108"
( $at_check_trace; i18n-test concat 'abc' 'xyz' 'UTF-8' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'abcxyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:108"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1340
#AT_START_1341
at_fn_group_banner 1341 'i18n.at:109' \
  "truncate \"abcd\" + \"xyz\" to 6 bytes in UTF-8" "    " 127
at_xfail=no
(
  printf "%s\n" "1341. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:109: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:109"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:109"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:109: i18n-test concat 'abcd' 'xyz' 'UTF-8' '6'"
at_fn_check_prepare_trace "i18n.at:109"
( $at_check_trace; i18n-test concat 'abcd' 'xyz' 'UTF-8' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'abcxyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:109"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1341
#AT_START_1342
at_fn_group_banner 1342 'i18n.at:110' \
  "truncate \"abc\" + \"uvwxyz\" to 6 bytes in UTF-8" "  " 127
at_xfail=no
(
  printf "%s\n" "1342. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:110: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:110"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:110"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:110: i18n-test concat 'abc' 'uvwxyz' 'UTF-8' '6'"
at_fn_check_prepare_trace "i18n.at:110"
( $at_check_trace; i18n-test concat 'abc' 'uvwxyz' 'UTF-8' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'uvwxyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:110"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1342
#AT_START_1343
at_fn_group_banner 1343 'i18n.at:114' \
  "truncate \"x\\342\\203\\236\" + \"y\" to 0 bytes in UTF-8" "" 127
at_xfail=no
(
  printf "%s\n" "1343. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:114: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:114"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:114: i18n-test concat 'x\\342\\203\\236' 'y' 'UTF-8' '0'"
at_fn_check_prepare_trace "i18n.at:114"
( $at_check_trace; i18n-test concat 'x\342\203\236' 'y' 'UTF-8' '0'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'y'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1343
#AT_START_1344
at_fn_group_banner 1344 'i18n.at:115' \
  "truncate \"x\\342\\203\\236\" + \"y\" to 1 bytes in UTF-8" "" 127
at_xfail=no
(
  printf "%s\n" "1344. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:115: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:115"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:115"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:115: i18n-test concat 'x\\342\\203\\236' 'y' 'UTF-8' '1'"
at_fn_check_prepare_trace "i18n.at:115"
( $at_check_trace; i18n-test concat 'x\342\203\236' 'y' 'UTF-8' '1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'y'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:115"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1344
#AT_START_1345
at_fn_group_banner 1345 'i18n.at:116' \
  "truncate \"x\\342\\203\\236\" + \"y\" to 2 bytes in UTF-8" "" 127
at_xfail=no
(
  printf "%s\n" "1345. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:116: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:116"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:116: i18n-test concat 'x\\342\\203\\236' 'y' 'UTF-8' '2'"
at_fn_check_prepare_trace "i18n.at:116"
( $at_check_trace; i18n-test concat 'x\342\203\236' 'y' 'UTF-8' '2'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'y'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1345
#AT_START_1346
at_fn_group_banner 1346 'i18n.at:117' \
  "truncate \"x\\342\\203\\236\" + \"y\" to 3 bytes in UTF-8" "" 127
at_xfail=no
(
  printf "%s\n" "1346. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:117: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:117"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:117"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:117: i18n-test concat 'x\\342\\203\\236' 'y' 'UTF-8' '3'"
at_fn_check_prepare_trace "i18n.at:117"
( $at_check_trace; i18n-test concat 'x\342\203\236' 'y' 'UTF-8' '3'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'y'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:117"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1346
#AT_START_1347
at_fn_group_banner 1347 'i18n.at:118' \
  "truncate \"x\\342\\203\\236\" + \"y\" to 4 bytes in UTF-8" "" 127
at_xfail=no
(
  printf "%s\n" "1347. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:118: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:118"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:118"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:118: i18n-test concat 'x\\342\\203\\236' 'y' 'UTF-8' '4'"
at_fn_check_prepare_trace "i18n.at:118"
( $at_check_trace; i18n-test concat 'x\342\203\236' 'y' 'UTF-8' '4'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'y'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:118"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1347
#AT_START_1348
at_fn_group_banner 1348 'i18n.at:119' \
  "truncate \"x\\342\\203\\236\" + \"y\" to 5 bytes in UTF-8" "" 127
at_xfail=no
(
  printf "%s\n" "1348. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:119: i18n-test supports_encodings 'UTF-8'"
at_fn_check_prepare_trace "i18n.at:119"
( $at_check_trace; i18n-test supports_encodings 'UTF-8'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:119"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:119: i18n-test concat 'x\\342\\203\\236' 'y' 'UTF-8' '5'"
at_fn_check_prepare_trace "i18n.at:119"
( $at_check_trace; i18n-test concat 'x\342\203\236' 'y' 'UTF-8' '5'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'x\342\203\236y'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:119"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1348
#AT_START_1349
at_fn_group_banner 1349 'i18n.at:122' \
  "truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 0 bytes in ISO-8859-1" "" 127
at_xfail=no
(
  printf "%s\n" "1349. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:122: i18n-test supports_encodings 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:122"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:122"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:122: i18n-test concat '\\303\\251\\303\\250\\303\\244' 'xyz' 'ISO-8859-1' '0'"
at_fn_check_prepare_trace "i18n.at:122"
( $at_check_trace; i18n-test concat '\303\251\303\250\303\244' 'xyz' 'ISO-8859-1' '0'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'xyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:122"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1349
#AT_START_1350
at_fn_group_banner 1350 'i18n.at:123' \
  "truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 1 bytes in ISO-8859-1" "" 127
at_xfail=no
(
  printf "%s\n" "1350. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:123: i18n-test supports_encodings 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:123"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:123: i18n-test concat '\\303\\251\\303\\250\\303\\244' 'xyz' 'ISO-8859-1' '1'"
at_fn_check_prepare_trace "i18n.at:123"
( $at_check_trace; i18n-test concat '\303\251\303\250\303\244' 'xyz' 'ISO-8859-1' '1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'xyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1350
#AT_START_1351
at_fn_group_banner 1351 'i18n.at:124' \
  "truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 2 bytes in ISO-8859-1" "" 127
at_xfail=no
(
  printf "%s\n" "1351. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:124: i18n-test supports_encodings 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:124"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:124: i18n-test concat '\\303\\251\\303\\250\\303\\244' 'xyz' 'ISO-8859-1' '2'"
at_fn_check_prepare_trace "i18n.at:124"
( $at_check_trace; i18n-test concat '\303\251\303\250\303\244' 'xyz' 'ISO-8859-1' '2'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'xyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1351
#AT_START_1352
at_fn_group_banner 1352 'i18n.at:125' \
  "truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 3 bytes in ISO-8859-1" "" 127
at_xfail=no
(
  printf "%s\n" "1352. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:125: i18n-test supports_encodings 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:125"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:125"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:125: i18n-test concat '\\303\\251\\303\\250\\303\\244' 'xyz' 'ISO-8859-1' '3'"
at_fn_check_prepare_trace "i18n.at:125"
( $at_check_trace; i18n-test concat '\303\251\303\250\303\244' 'xyz' 'ISO-8859-1' '3'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf 'xyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:125"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1352
#AT_START_1353
at_fn_group_banner 1353 'i18n.at:126' \
  "truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 4 bytes in ISO-8859-1" "" 127
at_xfail=no
(
  printf "%s\n" "1353. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:126: i18n-test supports_encodings 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:126"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:126"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:126: i18n-test concat '\\303\\251\\303\\250\\303\\244' 'xyz' 'ISO-8859-1' '4'"
at_fn_check_prepare_trace "i18n.at:126"
( $at_check_trace; i18n-test concat '\303\251\303\250\303\244' 'xyz' 'ISO-8859-1' '4'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf '\303\251xyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:126"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1353
#AT_START_1354
at_fn_group_banner 1354 'i18n.at:128' \
  "truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 5 bytes in ISO-8859-1" "" 127
at_xfail=no
(
  printf "%s\n" "1354. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:128: i18n-test supports_encodings 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:128"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:128: i18n-test concat '\\303\\251\\303\\250\\303\\244' 'xyz' 'ISO-8859-1' '5'"
at_fn_check_prepare_trace "i18n.at:128"
( $at_check_trace; i18n-test concat '\303\251\303\250\303\244' 'xyz' 'ISO-8859-1' '5'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf '\303\251\303\250xyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1354
#AT_START_1355
at_fn_group_banner 1355 'i18n.at:130' \
  "truncate \"\\303\\251\\303\\250\\303\\244\" + \"xyz\" to 6 bytes in ISO-8859-1" "" 127
at_xfail=no
(
  printf "%s\n" "1355. $at_setup_line: testing $at_desc ..."
  $at_traceon



      { set +x
printf "%s\n" "$at_srcdir/i18n.at:130: i18n-test supports_encodings 'ISO-8859-1'"
at_fn_check_prepare_trace "i18n.at:130"
( $at_check_trace; i18n-test supports_encodings 'ISO-8859-1'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:130"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/i18n.at:130: i18n-test concat '\\303\\251\\303\\250\\303\\244' 'xyz' 'ISO-8859-1' '6'"
at_fn_check_prepare_trace "i18n.at:130"
( $at_check_trace; i18n-test concat '\303\251\303\250\303\244' 'xyz' 'ISO-8859-1' '6'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "`printf '\303\251\303\250\303\244xyz'`
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/i18n.at:130"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1355
#AT_START_1356
at_fn_group_banner 1356 'line-reader.at:19' \
  "read ASCII" "                                     " 128
at_xfail=no
(
  printf "%s\n" "1356. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:21: i18n-test supports_encodings ASCII"
at_fn_check_prepare_trace "line-reader.at:21"
( $at_check_trace; i18n-test supports_encodings ASCII
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:21"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:22: echo string | line-reader-test read - ASCII"
at_fn_check_prepare_notrace 'a shell pipeline' "line-reader.at:22"
( $at_check_trace; echo string | line-reader-test read - ASCII
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "encoded in ASCII
\"string\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:22"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1356
#AT_START_1357
at_fn_group_banner 1357 'line-reader.at:28' \
  "read UTF-8" "                                     " 128
at_xfail=no
(
  printf "%s\n" "1357. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:30: printf '\\346\\227\\245\\346\\234\\254\\350\\252\\236\\n' | line-reader-test read - UTF-8"
at_fn_check_prepare_notrace 'a shell pipeline' "line-reader.at:30"
( $at_check_trace; printf '\346\227\245\346\234\254\350\252\236\n' | line-reader-test read - UTF-8
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "encoded in UTF-8
\"日本語\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1357
#AT_START_1358
at_fn_group_banner 1358 'line-reader.at:36' \
  "read EUC-JP" "                                    " 128
at_xfail=no
(
  printf "%s\n" "1358. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:38: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "line-reader.at:38"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:39: printf '\\244\\241 \\244\\242 \\244\\243 \\244\\244 \\244\\245 \\244\\246 \\244\\247 \\244\\250 \\244\\251 \\244\\252\\n' | line-reader-test read - EUC-JP"
at_fn_check_prepare_notrace 'a shell pipeline' "line-reader.at:39"
( $at_check_trace; printf '\244\241 \244\242 \244\243 \244\244 \244\245 \244\246 \244\247 \244\250 \244\251 \244\252\n' | line-reader-test read - EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "encoded in EUC-JP
\"ぁ あ ぃ い ぅ う ぇ え ぉ お\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1358
#AT_START_1359
at_fn_group_banner 1359 'line-reader.at:45' \
  "read ASCII as Auto" "                             " 128
at_xfail=no
(
  printf "%s\n" "1359. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:47: echo string | line-reader-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "line-reader.at:47"
( $at_check_trace; echo string | line-reader-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "encoded in ASCII (auto)
\"string\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1359
#AT_START_1360
at_fn_group_banner 1360 'line-reader.at:53' \
  "read UTF-8 as Auto" "                             " 128
at_xfail=no
(
  printf "%s\n" "1360. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:55: printf 'entr\\303\\251e\\n' | line-reader-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "line-reader.at:55"
( $at_check_trace; printf 'entr\303\251e\n' | line-reader-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "encoded in ASCII (auto)
encoded in UTF-8
\"entrée\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1360
#AT_START_1361
at_fn_group_banner 1361 'line-reader.at:62' \
  "read ISO-8859-1 as Auto,ISO-8859-1" "             " 128
at_xfail=no
(
  printf "%s\n" "1361. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:64: i18n-test supports_encodings ISO-8859-1"
at_fn_check_prepare_trace "line-reader.at:64"
( $at_check_trace; i18n-test supports_encodings ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:64"
$at_failed && at_fn_log_failure
$at_traceon; }

buffer_size=`line-reader-test buffer-size`
($PYTHON3 -c "import sys; sys.stdout.write('x' * ($buffer_size - 2))";
 printf '\none line\ntwo lines\nentr\351e\nfour lines\n') > input
(printf 'encoded in ASCII (auto)\n"'
 $PYTHON3 -c "import sys; sys.stdout.write('x' * ($buffer_size - 2))";
 printf '"\n"one line"\n"two lines"\nencoded in ISO-8859-1\n"entr\303\251e"\n"four lines"\n') > expout
{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:71: line-reader-test read input Auto,ISO-8859-1"
at_fn_check_prepare_trace "line-reader.at:71"
( $at_check_trace; line-reader-test read input Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1361
#AT_START_1362
at_fn_group_banner 1362 'line-reader.at:74' \
  "read UTF-16BE as Auto,UTF-16BE" "                 " 128
at_xfail=no
(
  printf "%s\n" "1362. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:76: i18n-test supports_encodings UTF-16BE"
at_fn_check_prepare_trace "line-reader.at:76"
( $at_check_trace; i18n-test supports_encodings UTF-16BE
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:77: printf '\\0e\\0n\\0t\\0r\\0\\351\\0e\\0\\n' | line-reader-test read - Auto,UTF-16BE"
at_fn_check_prepare_notrace 'a shell pipeline' "line-reader.at:77"
( $at_check_trace; printf '\0e\0n\0t\0r\0\351\0e\0\n' | line-reader-test read - Auto,UTF-16BE
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "encoded in UTF-16BE
\"entrée\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:77"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1362
#AT_START_1363
at_fn_group_banner 1363 'line-reader.at:83' \
  "read EUC-JP as Auto,EUC-JP" "                     " 128
at_xfail=no
(
  printf "%s\n" "1363. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:85: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "line-reader.at:85"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:85"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/line-reader.at:86: printf 'entr\\217\\253\\261e\\n' | line-reader-test read - Auto,EUC-JP"
at_fn_check_prepare_notrace 'a shell pipeline' "line-reader.at:86"
( $at_check_trace; printf 'entr\217\253\261e\n' | line-reader-test read - Auto,EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "encoded in EUC-JP
\"entrée\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/line-reader.at:86"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1363
#AT_START_1364
at_fn_group_banner 1364 'll.at:25' \
  "ll -- push-pop" "                                 " 129
at_xfail=no
(
  printf "%s\n" "1364. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:25: ll-test push-pop"
at_fn_check_prepare_trace "ll.at:25"
( $at_check_trace; ll-test push-pop
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1364
#AT_START_1365
at_fn_group_banner 1365 'll.at:26' \
  "ll -- insert-remove" "                            " 129
at_xfail=no
(
  printf "%s\n" "1365. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:26: ll-test insert-remove"
at_fn_check_prepare_trace "ll.at:26"
( $at_check_trace; ll-test insert-remove
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1365
#AT_START_1366
at_fn_group_banner 1366 'll.at:27' \
  "ll -- swap" "                                     " 129
at_xfail=no
(
  printf "%s\n" "1366. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:27: ll-test swap"
at_fn_check_prepare_trace "ll.at:27"
( $at_check_trace; ll-test swap
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1366
#AT_START_1367
at_fn_group_banner 1367 'll.at:28' \
  "ll -- swap-range" "                               " 129
at_xfail=no
(
  printf "%s\n" "1367. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:28: ll-test swap-range"
at_fn_check_prepare_trace "ll.at:28"
( $at_check_trace; ll-test swap-range
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1367
#AT_START_1368
at_fn_group_banner 1368 'll.at:29' \
  "ll -- remove-range" "                             " 129
at_xfail=no
(
  printf "%s\n" "1368. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:29: ll-test remove-range"
at_fn_check_prepare_trace "ll.at:29"
( $at_check_trace; ll-test remove-range
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1368
#AT_START_1369
at_fn_group_banner 1369 'll.at:30' \
  "ll -- remove-equal" "                             " 129
at_xfail=no
(
  printf "%s\n" "1369. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:30: ll-test remove-equal"
at_fn_check_prepare_trace "ll.at:30"
( $at_check_trace; ll-test remove-equal
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1369
#AT_START_1370
at_fn_group_banner 1370 'll.at:31' \
  "ll -- remove-if" "                                " 129
at_xfail=no
(
  printf "%s\n" "1370. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:31: ll-test remove-if"
at_fn_check_prepare_trace "ll.at:31"
( $at_check_trace; ll-test remove-if
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1370
#AT_START_1371
at_fn_group_banner 1371 'll.at:32' \
  "ll -- moved" "                                    " 129
at_xfail=no
(
  printf "%s\n" "1371. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:32: ll-test moved"
at_fn_check_prepare_trace "ll.at:32"
( $at_check_trace; ll-test moved
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1371
#AT_START_1372
at_fn_group_banner 1372 'll.at:33' \
  "ll -- find-equal" "                               " 129
at_xfail=no
(
  printf "%s\n" "1372. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:33: ll-test find-equal"
at_fn_check_prepare_trace "ll.at:33"
( $at_check_trace; ll-test find-equal
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1372
#AT_START_1373
at_fn_group_banner 1373 'll.at:34' \
  "ll -- find-if" "                                  " 129
at_xfail=no
(
  printf "%s\n" "1373. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:34: ll-test find-if"
at_fn_check_prepare_trace "ll.at:34"
( $at_check_trace; ll-test find-if
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1373
#AT_START_1374
at_fn_group_banner 1374 'll.at:35' \
  "ll -- find-adjacent-equal" "                      " 129
at_xfail=no
(
  printf "%s\n" "1374. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:35: ll-test find-adjacent-equal"
at_fn_check_prepare_trace "ll.at:35"
( $at_check_trace; ll-test find-adjacent-equal
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1374
#AT_START_1375
at_fn_group_banner 1375 'll.at:36' \
  "ll -- count-range" "                              " 129
at_xfail=no
(
  printf "%s\n" "1375. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:36: ll-test count-range"
at_fn_check_prepare_trace "ll.at:36"
( $at_check_trace; ll-test count-range
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1375
#AT_START_1376
at_fn_group_banner 1376 'll.at:37' \
  "ll -- count-equal" "                              " 129
at_xfail=no
(
  printf "%s\n" "1376. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:37: ll-test count-equal"
at_fn_check_prepare_trace "ll.at:37"
( $at_check_trace; ll-test count-equal
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1376
#AT_START_1377
at_fn_group_banner 1377 'll.at:38' \
  "ll -- count-if" "                                 " 129
at_xfail=no
(
  printf "%s\n" "1377. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:38: ll-test count-if"
at_fn_check_prepare_trace "ll.at:38"
( $at_check_trace; ll-test count-if
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1377
#AT_START_1378
at_fn_group_banner 1378 'll.at:39' \
  "ll -- min-max" "                                  " 129
at_xfail=no
(
  printf "%s\n" "1378. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:39: ll-test min-max"
at_fn_check_prepare_trace "ll.at:39"
( $at_check_trace; ll-test min-max
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1378
#AT_START_1379
at_fn_group_banner 1379 'll.at:40' \
  "ll -- lexicographical-compare-3way" "             " 129
at_xfail=no
(
  printf "%s\n" "1379. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:40: ll-test lexicographical-compare-3way"
at_fn_check_prepare_trace "ll.at:40"
( $at_check_trace; ll-test lexicographical-compare-3way
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1379
#AT_START_1380
at_fn_group_banner 1380 'll.at:41' \
  "ll -- apply" "                                    " 129
at_xfail=no
(
  printf "%s\n" "1380. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:41: ll-test apply"
at_fn_check_prepare_trace "ll.at:41"
( $at_check_trace; ll-test apply
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1380
#AT_START_1381
at_fn_group_banner 1381 'll.at:42' \
  "ll -- reverse" "                                  " 129
at_xfail=no
(
  printf "%s\n" "1381. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:42: ll-test reverse"
at_fn_check_prepare_trace "ll.at:42"
( $at_check_trace; ll-test reverse
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1381
#AT_START_1382
at_fn_group_banner 1382 'll.at:43' \
  "ll -- permutations-no-dups" "                     " 129
at_xfail=no
(
  printf "%s\n" "1382. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:43: ll-test permutations-no-dups"
at_fn_check_prepare_trace "ll.at:43"
( $at_check_trace; ll-test permutations-no-dups
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1382
#AT_START_1383
at_fn_group_banner 1383 'll.at:44' \
  "ll -- permutations-with-dups" "                   " 129
at_xfail=no
(
  printf "%s\n" "1383. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:44: ll-test permutations-with-dups"
at_fn_check_prepare_trace "ll.at:44"
( $at_check_trace; ll-test permutations-with-dups
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1383
#AT_START_1384
at_fn_group_banner 1384 'll.at:45' \
  "ll -- merge-no-dups" "                            " 129
at_xfail=no
(
  printf "%s\n" "1384. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:45: ll-test merge-no-dups"
at_fn_check_prepare_trace "ll.at:45"
( $at_check_trace; ll-test merge-no-dups
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1384
#AT_START_1385
at_fn_group_banner 1385 'll.at:46' \
  "ll -- merge-with-dups" "                          " 129
at_xfail=no
(
  printf "%s\n" "1385. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:46: ll-test merge-with-dups"
at_fn_check_prepare_trace "ll.at:46"
( $at_check_trace; ll-test merge-with-dups
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1385
#AT_START_1386
at_fn_group_banner 1386 'll.at:47' \
  "ll -- sort-exhaustive" "                          " 129
at_xfail=no
(
  printf "%s\n" "1386. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:47: ll-test sort-exhaustive"
at_fn_check_prepare_trace "ll.at:47"
( $at_check_trace; ll-test sort-exhaustive
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1386
#AT_START_1387
at_fn_group_banner 1387 'll.at:48' \
  "ll -- sort-stable" "                              " 129
at_xfail=no
(
  printf "%s\n" "1387. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:48: ll-test sort-stable"
at_fn_check_prepare_trace "ll.at:48"
( $at_check_trace; ll-test sort-stable
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1387
#AT_START_1388
at_fn_group_banner 1388 'll.at:49' \
  "ll -- sort-subset" "                              " 129
at_xfail=no
(
  printf "%s\n" "1388. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:49: ll-test sort-subset"
at_fn_check_prepare_trace "ll.at:49"
( $at_check_trace; ll-test sort-subset
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1388
#AT_START_1389
at_fn_group_banner 1389 'll.at:50' \
  "ll -- sort-big" "                                 " 129
at_xfail=no
(
  printf "%s\n" "1389. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:50: ll-test sort-big"
at_fn_check_prepare_trace "ll.at:50"
( $at_check_trace; ll-test sort-big
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:50"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1389
#AT_START_1390
at_fn_group_banner 1390 'll.at:51' \
  "ll -- unique" "                                   " 129
at_xfail=no
(
  printf "%s\n" "1390. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:51: ll-test unique"
at_fn_check_prepare_trace "ll.at:51"
( $at_check_trace; ll-test unique
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1390
#AT_START_1391
at_fn_group_banner 1391 'll.at:52' \
  "ll -- sort-unique" "                              " 129
at_xfail=no
(
  printf "%s\n" "1391. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:52: ll-test sort-unique"
at_fn_check_prepare_trace "ll.at:52"
( $at_check_trace; ll-test sort-unique
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1391
#AT_START_1392
at_fn_group_banner 1392 'll.at:53' \
  "ll -- insert-ordered" "                           " 129
at_xfail=no
(
  printf "%s\n" "1392. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:53: ll-test insert-ordered"
at_fn_check_prepare_trace "ll.at:53"
( $at_check_trace; ll-test insert-ordered
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:53"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1392
#AT_START_1393
at_fn_group_banner 1393 'll.at:54' \
  "ll -- partition" "                                " 129
at_xfail=no
(
  printf "%s\n" "1393. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/ll.at:54: ll-test partition"
at_fn_check_prepare_trace "ll.at:54"
( $at_check_trace; ll-test partition
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ll.at:54"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1393
#AT_START_1394
at_fn_group_banner 1394 'llx.at:25' \
  "llx -- push-pop" "                                " 130
at_xfail=no
(
  printf "%s\n" "1394. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:25: llx-test push-pop"
at_fn_check_prepare_trace "llx.at:25"
( $at_check_trace; llx-test push-pop
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1394
#AT_START_1395
at_fn_group_banner 1395 'llx.at:26' \
  "llx -- insert-remove" "                           " 130
at_xfail=no
(
  printf "%s\n" "1395. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:26: llx-test insert-remove"
at_fn_check_prepare_trace "llx.at:26"
( $at_check_trace; llx-test insert-remove
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1395
#AT_START_1396
at_fn_group_banner 1396 'llx.at:27' \
  "llx -- swap" "                                    " 130
at_xfail=no
(
  printf "%s\n" "1396. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:27: llx-test swap"
at_fn_check_prepare_trace "llx.at:27"
( $at_check_trace; llx-test swap
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1396
#AT_START_1397
at_fn_group_banner 1397 'llx.at:28' \
  "llx -- swap-range" "                              " 130
at_xfail=no
(
  printf "%s\n" "1397. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:28: llx-test swap-range"
at_fn_check_prepare_trace "llx.at:28"
( $at_check_trace; llx-test swap-range
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1397
#AT_START_1398
at_fn_group_banner 1398 'llx.at:29' \
  "llx -- remove-range" "                            " 130
at_xfail=no
(
  printf "%s\n" "1398. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:29: llx-test remove-range"
at_fn_check_prepare_trace "llx.at:29"
( $at_check_trace; llx-test remove-range
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1398
#AT_START_1399
at_fn_group_banner 1399 'llx.at:30' \
  "llx -- remove-equal" "                            " 130
at_xfail=no
(
  printf "%s\n" "1399. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:30: llx-test remove-equal"
at_fn_check_prepare_trace "llx.at:30"
( $at_check_trace; llx-test remove-equal
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1399
#AT_START_1400
at_fn_group_banner 1400 'llx.at:31' \
  "llx -- remove-if" "                               " 130
at_xfail=no
(
  printf "%s\n" "1400. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:31: llx-test remove-if"
at_fn_check_prepare_trace "llx.at:31"
( $at_check_trace; llx-test remove-if
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1400
#AT_START_1401
at_fn_group_banner 1401 'llx.at:32' \
  "llx -- find-equal" "                              " 130
at_xfail=no
(
  printf "%s\n" "1401. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:32: llx-test find-equal"
at_fn_check_prepare_trace "llx.at:32"
( $at_check_trace; llx-test find-equal
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1401
#AT_START_1402
at_fn_group_banner 1402 'llx.at:33' \
  "llx -- find" "                                    " 130
at_xfail=no
(
  printf "%s\n" "1402. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:33: llx-test find"
at_fn_check_prepare_trace "llx.at:33"
( $at_check_trace; llx-test find
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1402
#AT_START_1403
at_fn_group_banner 1403 'llx.at:34' \
  "llx -- find-if" "                                 " 130
at_xfail=no
(
  printf "%s\n" "1403. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:34: llx-test find-if"
at_fn_check_prepare_trace "llx.at:34"
( $at_check_trace; llx-test find-if
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1403
#AT_START_1404
at_fn_group_banner 1404 'llx.at:35' \
  "llx -- find-adjacent-equal" "                     " 130
at_xfail=no
(
  printf "%s\n" "1404. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:35: llx-test find-adjacent-equal"
at_fn_check_prepare_trace "llx.at:35"
( $at_check_trace; llx-test find-adjacent-equal
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1404
#AT_START_1405
at_fn_group_banner 1405 'llx.at:36' \
  "llx -- count-range" "                             " 130
at_xfail=no
(
  printf "%s\n" "1405. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:36: llx-test count-range"
at_fn_check_prepare_trace "llx.at:36"
( $at_check_trace; llx-test count-range
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1405
#AT_START_1406
at_fn_group_banner 1406 'llx.at:37' \
  "llx -- count-equal" "                             " 130
at_xfail=no
(
  printf "%s\n" "1406. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:37: llx-test count-equal"
at_fn_check_prepare_trace "llx.at:37"
( $at_check_trace; llx-test count-equal
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1406
#AT_START_1407
at_fn_group_banner 1407 'llx.at:38' \
  "llx -- count-if" "                                " 130
at_xfail=no
(
  printf "%s\n" "1407. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:38: llx-test count-if"
at_fn_check_prepare_trace "llx.at:38"
( $at_check_trace; llx-test count-if
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1407
#AT_START_1408
at_fn_group_banner 1408 'llx.at:39' \
  "llx -- min-max" "                                 " 130
at_xfail=no
(
  printf "%s\n" "1408. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:39: llx-test min-max"
at_fn_check_prepare_trace "llx.at:39"
( $at_check_trace; llx-test min-max
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1408
#AT_START_1409
at_fn_group_banner 1409 'llx.at:40' \
  "llx -- lexicographical-compare-3way" "            " 130
at_xfail=no
(
  printf "%s\n" "1409. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:40: llx-test lexicographical-compare-3way"
at_fn_check_prepare_trace "llx.at:40"
( $at_check_trace; llx-test lexicographical-compare-3way
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1409
#AT_START_1410
at_fn_group_banner 1410 'llx.at:41' \
  "llx -- apply" "                                   " 130
at_xfail=no
(
  printf "%s\n" "1410. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:41: llx-test apply"
at_fn_check_prepare_trace "llx.at:41"
( $at_check_trace; llx-test apply
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1410
#AT_START_1411
at_fn_group_banner 1411 'llx.at:42' \
  "llx -- destroy" "                                 " 130
at_xfail=no
(
  printf "%s\n" "1411. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:42: llx-test destroy"
at_fn_check_prepare_trace "llx.at:42"
( $at_check_trace; llx-test destroy
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1411
#AT_START_1412
at_fn_group_banner 1412 'llx.at:43' \
  "llx -- reverse" "                                 " 130
at_xfail=no
(
  printf "%s\n" "1412. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:43: llx-test reverse"
at_fn_check_prepare_trace "llx.at:43"
( $at_check_trace; llx-test reverse
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1412
#AT_START_1413
at_fn_group_banner 1413 'llx.at:44' \
  "llx -- permutations-no-dups" "                    " 130
at_xfail=no
(
  printf "%s\n" "1413. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:44: llx-test permutations-no-dups"
at_fn_check_prepare_trace "llx.at:44"
( $at_check_trace; llx-test permutations-no-dups
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1413
#AT_START_1414
at_fn_group_banner 1414 'llx.at:45' \
  "llx -- permutations-with-dups" "                  " 130
at_xfail=no
(
  printf "%s\n" "1414. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:45: llx-test permutations-with-dups"
at_fn_check_prepare_trace "llx.at:45"
( $at_check_trace; llx-test permutations-with-dups
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1414
#AT_START_1415
at_fn_group_banner 1415 'llx.at:46' \
  "llx -- merge-no-dups" "                           " 130
at_xfail=no
(
  printf "%s\n" "1415. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:46: llx-test merge-no-dups"
at_fn_check_prepare_trace "llx.at:46"
( $at_check_trace; llx-test merge-no-dups
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1415
#AT_START_1416
at_fn_group_banner 1416 'llx.at:47' \
  "llx -- merge-with-dups" "                         " 130
at_xfail=no
(
  printf "%s\n" "1416. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:47: llx-test merge-with-dups"
at_fn_check_prepare_trace "llx.at:47"
( $at_check_trace; llx-test merge-with-dups
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1416
#AT_START_1417
at_fn_group_banner 1417 'llx.at:48' \
  "llx -- sort-exhaustive" "                         " 130
at_xfail=no
(
  printf "%s\n" "1417. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:48: llx-test sort-exhaustive"
at_fn_check_prepare_trace "llx.at:48"
( $at_check_trace; llx-test sort-exhaustive
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1417
#AT_START_1418
at_fn_group_banner 1418 'llx.at:49' \
  "llx -- sort-stable" "                             " 130
at_xfail=no
(
  printf "%s\n" "1418. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:49: llx-test sort-stable"
at_fn_check_prepare_trace "llx.at:49"
( $at_check_trace; llx-test sort-stable
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1418
#AT_START_1419
at_fn_group_banner 1419 'llx.at:50' \
  "llx -- sort-subset" "                             " 130
at_xfail=no
(
  printf "%s\n" "1419. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:50: llx-test sort-subset"
at_fn_check_prepare_trace "llx.at:50"
( $at_check_trace; llx-test sort-subset
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:50"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1419
#AT_START_1420
at_fn_group_banner 1420 'llx.at:51' \
  "llx -- sort-big" "                                " 130
at_xfail=no
(
  printf "%s\n" "1420. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:51: llx-test sort-big"
at_fn_check_prepare_trace "llx.at:51"
( $at_check_trace; llx-test sort-big
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1420
#AT_START_1421
at_fn_group_banner 1421 'llx.at:52' \
  "llx -- unique" "                                  " 130
at_xfail=no
(
  printf "%s\n" "1421. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:52: llx-test unique"
at_fn_check_prepare_trace "llx.at:52"
( $at_check_trace; llx-test unique
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1421
#AT_START_1422
at_fn_group_banner 1422 'llx.at:53' \
  "llx -- sort-unique" "                             " 130
at_xfail=no
(
  printf "%s\n" "1422. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:53: llx-test sort-unique"
at_fn_check_prepare_trace "llx.at:53"
( $at_check_trace; llx-test sort-unique
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:53"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1422
#AT_START_1423
at_fn_group_banner 1423 'llx.at:54' \
  "llx -- insert-ordered" "                          " 130
at_xfail=no
(
  printf "%s\n" "1423. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:54: llx-test insert-ordered"
at_fn_check_prepare_trace "llx.at:54"
( $at_check_trace; llx-test insert-ordered
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:54"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1423
#AT_START_1424
at_fn_group_banner 1424 'llx.at:55' \
  "llx -- partition" "                               " 130
at_xfail=no
(
  printf "%s\n" "1424. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:55: llx-test partition"
at_fn_check_prepare_trace "llx.at:55"
( $at_check_trace; llx-test partition
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1424
#AT_START_1425
at_fn_group_banner 1425 'llx.at:56' \
  "llx -- allocation-failure" "                      " 130
at_xfail=no
(
  printf "%s\n" "1425. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/llx.at:56: llx-test allocation-failure"
at_fn_check_prepare_trace "llx.at:56"
( $at_check_trace; llx-test allocation-failure
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/llx.at:56"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1425
#AT_START_1426
at_fn_group_banner 1426 'range-map.at:24' \
  "range-map -- insert" "                            " 131
at_xfail=no
(
  printf "%s\n" "1426. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-map.at:24: range-map-test insert"
at_fn_check_prepare_trace "range-map.at:24"
( $at_check_trace; range-map-test insert
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-map.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1426
#AT_START_1427
at_fn_group_banner 1427 'range-map.at:25' \
  "range-map -- delete-contiguous" "                 " 131
at_xfail=no
(
  printf "%s\n" "1427. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-map.at:25: range-map-test delete-contiguous"
at_fn_check_prepare_trace "range-map.at:25"
( $at_check_trace; range-map-test delete-contiguous
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-map.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1427
#AT_START_1428
at_fn_group_banner 1428 'range-map.at:26' \
  "range-map -- delete-gaps" "                       " 131
at_xfail=no
(
  printf "%s\n" "1428. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-map.at:26: range-map-test delete-gaps"
at_fn_check_prepare_trace "range-map.at:26"
( $at_check_trace; range-map-test delete-gaps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-map.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1428
#AT_START_1429
at_fn_group_banner 1429 'range-set.at:24' \
  "range-set -- insert" "                            " 132
at_xfail=no
(
  printf "%s\n" "1429. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-set.at:24: range-set-test insert"
at_fn_check_prepare_trace "range-set.at:24"
( $at_check_trace; range-set-test insert
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-set.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1429
#AT_START_1430
at_fn_group_banner 1430 'range-set.at:25' \
  "range-set -- delete" "                            " 132
at_xfail=no
(
  printf "%s\n" "1430. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-set.at:25: range-set-test delete"
at_fn_check_prepare_trace "range-set.at:25"
( $at_check_trace; range-set-test delete
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-set.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1430
#AT_START_1431
at_fn_group_banner 1431 'range-set.at:26' \
  "range-set -- allocate" "                          " 132
at_xfail=no
(
  printf "%s\n" "1431. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-set.at:26: range-set-test allocate"
at_fn_check_prepare_trace "range-set.at:26"
( $at_check_trace; range-set-test allocate
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-set.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1431
#AT_START_1432
at_fn_group_banner 1432 'range-set.at:27' \
  "range-set -- allocate-fully" "                    " 132
at_xfail=no
(
  printf "%s\n" "1432. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-set.at:27: range-set-test allocate-fully"
at_fn_check_prepare_trace "range-set.at:27"
( $at_check_trace; range-set-test allocate-fully
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-set.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1432
#AT_START_1433
at_fn_group_banner 1433 'range-set.at:28' \
  "range-set -- pool" "                              " 132
at_xfail=no
(
  printf "%s\n" "1433. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-set.at:28: range-set-test pool"
at_fn_check_prepare_trace "range-set.at:28"
( $at_check_trace; range-set-test pool
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-set.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1433
#AT_START_1434
at_fn_group_banner 1434 'range-set.at:29' \
  "range-set -- destroy-null" "                      " 132
at_xfail=no
(
  printf "%s\n" "1434. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/range-set.at:29: range-set-test destroy-null"
at_fn_check_prepare_trace "range-set.at:29"
( $at_check_trace; range-set-test destroy-null
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-set.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1434
#AT_START_1435
at_fn_group_banner 1435 'range-tower.at:25' \
  "range-tower -- set1" "                            " 133
at_xfail=no
(
  printf "%s\n" "1435. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/range-tower.at:25: range-tower-test set1"
at_fn_check_prepare_trace "range-tower.at:25"
( $at_check_trace; range-tower-test set1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-tower.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1435
#AT_START_1436
at_fn_group_banner 1436 'range-tower.at:26' \
  "range-tower -- set0" "                            " 133
at_xfail=no
(
  printf "%s\n" "1436. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/range-tower.at:26: range-tower-test set0"
at_fn_check_prepare_trace "range-tower.at:26"
( $at_check_trace; range-tower-test set0
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-tower.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1436
#AT_START_1437
at_fn_group_banner 1437 'range-tower.at:27' \
  "range-tower -- insert0" "                         " 133
at_xfail=no
(
  printf "%s\n" "1437. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/range-tower.at:27: range-tower-test insert0"
at_fn_check_prepare_trace "range-tower.at:27"
( $at_check_trace; range-tower-test insert0
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-tower.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1437
#AT_START_1438
at_fn_group_banner 1438 'range-tower.at:28' \
  "range-tower -- insert1" "                         " 133
at_xfail=no
(
  printf "%s\n" "1438. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/range-tower.at:28: range-tower-test insert1"
at_fn_check_prepare_trace "range-tower.at:28"
( $at_check_trace; range-tower-test insert1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-tower.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1438
#AT_START_1439
at_fn_group_banner 1439 'range-tower.at:29' \
  "range-tower -- delete" "                          " 133
at_xfail=no
(
  printf "%s\n" "1439. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/range-tower.at:29: range-tower-test delete"
at_fn_check_prepare_trace "range-tower.at:29"
( $at_check_trace; range-tower-test delete
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-tower.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1439
#AT_START_1440
at_fn_group_banner 1440 'range-tower.at:30' \
  "range-tower -- move" "                            " 133
at_xfail=no
(
  printf "%s\n" "1440. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/range-tower.at:30: range-tower-test move"
at_fn_check_prepare_trace "range-tower.at:30"
( $at_check_trace; range-tower-test move
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-tower.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1440
#AT_START_1441
at_fn_group_banner 1441 'range-tower.at:31' \
  "range-tower -- pool" "                            " 133
at_xfail=no
(
  printf "%s\n" "1441. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/range-tower.at:31: range-tower-test pool"
at_fn_check_prepare_trace "range-tower.at:31"
( $at_check_trace; range-tower-test pool
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-tower.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1441
#AT_START_1442
at_fn_group_banner 1442 'range-tower.at:32' \
  "range-tower -- destroy-null" "                    " 133
at_xfail=no
(
  printf "%s\n" "1442. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/range-tower.at:32: range-tower-test destroy-null"
at_fn_check_prepare_trace "range-tower.at:32"
( $at_check_trace; range-tower-test destroy-null
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/range-tower.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1442
#AT_START_1443
at_fn_group_banner 1443 'sparse-array.at:25' \
  "sparse array -- random-insert-delete" "           " 134
at_xfail=no
(
  printf "%s\n" "1443. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sparse-array.at:25: sparse-array-test random-insert-delete"
at_fn_check_prepare_trace "sparse-array.at:25"
( $at_check_trace; sparse-array-test random-insert-delete
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sparse-array.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1443
#AT_START_1444
at_fn_group_banner 1444 'sparse-array.at:27' \
  "sparse array -- insert and delete with strides" " " 134
at_xfail=no
(
  printf "%s\n" "1444. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sparse-array.at:29: sparse-array-test insert-delete-strides"
at_fn_check_prepare_trace "sparse-array.at:29"
( $at_check_trace; sparse-array-test insert-delete-strides
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1
2
4
16
64
4096
262144
16777216
3
5
17
67
4099
262147
16777259
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sparse-array.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1444
#AT_START_1445
at_fn_group_banner 1445 'sparse-xarray-test.at:58' \
  "in-memory sparse_xarray" "                        " 135
at_xfail=no
(
  printf "%s\n" "1445. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sparse-xarray-test.at:61: sparse-xarray-test \\
	    --verbosity=0 --queue-limit=\`sparse_xarray_queue_limit\` \\
	    --columns=3 --max-rows=3 --max-memory-rows=3 --values=2"
at_fn_check_prepare_notrace 'a `...` command substitution' "sparse-xarray-test.at:61"
( $at_check_trace; sparse-xarray-test \
	    --verbosity=0 --queue-limit=`sparse_xarray_queue_limit` \
	    --columns=3 --max-rows=3 --max-memory-rows=3 --values=2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sparse-xarray-test.at:61"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1445
#AT_START_1446
at_fn_group_banner 1446 'sparse-xarray-test.at:75' \
  "on-disk sparse_xarray max-memory-rows=0" "        " 135
at_xfail=no
(
  printf "%s\n" "1446. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sparse-xarray-test.at:75: sparse-xarray-test \\
	       --verbosity=0 --queue-limit=\`sparse_xarray_queue_limit\` \\
               --columns=2 --max-rows=3 --max-memory-rows=0 --values=2"
at_fn_check_prepare_notrace 'a `...` command substitution' "sparse-xarray-test.at:75"
( $at_check_trace; sparse-xarray-test \
	       --verbosity=0 --queue-limit=`sparse_xarray_queue_limit` \
               --columns=2 --max-rows=3 --max-memory-rows=0 --values=2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sparse-xarray-test.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1446
#AT_START_1447
at_fn_group_banner 1447 'sparse-xarray-test.at:76' \
  "on-disk sparse_xarray max-memory-rows=1" "        " 135
at_xfail=no
(
  printf "%s\n" "1447. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sparse-xarray-test.at:76: sparse-xarray-test \\
	       --verbosity=0 --queue-limit=\`sparse_xarray_queue_limit\` \\
               --columns=2 --max-rows=3 --max-memory-rows=1 --values=2"
at_fn_check_prepare_notrace 'a `...` command substitution' "sparse-xarray-test.at:76"
( $at_check_trace; sparse-xarray-test \
	       --verbosity=0 --queue-limit=`sparse_xarray_queue_limit` \
               --columns=2 --max-rows=3 --max-memory-rows=1 --values=2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sparse-xarray-test.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1447
#AT_START_1448
at_fn_group_banner 1448 'sparse-xarray-test.at:77' \
  "on-disk sparse_xarray max-memory-rows=2" "        " 135
at_xfail=no
(
  printf "%s\n" "1448. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/sparse-xarray-test.at:77: sparse-xarray-test \\
	       --verbosity=0 --queue-limit=\`sparse_xarray_queue_limit\` \\
               --columns=2 --max-rows=3 --max-memory-rows=2 --values=2"
at_fn_check_prepare_notrace 'a `...` command substitution' "sparse-xarray-test.at:77"
( $at_check_trace; sparse-xarray-test \
	       --verbosity=0 --queue-limit=`sparse_xarray_queue_limit` \
               --columns=2 --max-rows=3 --max-memory-rows=2 --values=2
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sparse-xarray-test.at:77"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1448
#AT_START_1449
at_fn_group_banner 1449 'sparse-xarray-test.at:79' \
  "copying between in-memory sparse_xarrays" "       " 135
at_xfail=no
(
  printf "%s\n" "1449. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sparse-xarray-test.at:81: sparse-xarray-test \\
	    --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"
at_fn_check_prepare_notrace 'a `...` command substitution' "sparse-xarray-test.at:81"
( $at_check_trace; sparse-xarray-test \
	    --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
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sparse-xarray-test.at:81"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1449
#AT_START_1450
at_fn_group_banner 1450 'sparse-xarray-test.at:100' \
  "copying between on-disk sparse_xarrays max-memory-rows=0" "" 135
at_xfail=no
(
  printf "%s\n" "1450. $at_setup_line: testing $at_desc ..."
  $at_traceon


   limit=`sparse_xarray_queue_limit`
   { set +x
printf "%s\n" "$at_srcdir/sparse-xarray-test.at:100: sparse-xarray-test \\
               --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"
at_fn_check_prepare_notrace 'a `...` command substitution' "sparse-xarray-test.at:100"
( $at_check_trace; sparse-xarray-test \
               --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
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sparse-xarray-test.at:100"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1450
#AT_START_1451
at_fn_group_banner 1451 'sparse-xarray-test.at:101' \
  "copying between on-disk sparse_xarrays max-memory-rows=1" "" 135
at_xfail=no
(
  printf "%s\n" "1451. $at_setup_line: testing $at_desc ..."
  $at_traceon


   limit=`sparse_xarray_queue_limit`
   { set +x
printf "%s\n" "$at_srcdir/sparse-xarray-test.at:101: sparse-xarray-test \\
               --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"
at_fn_check_prepare_notrace 'a `...` command substitution' "sparse-xarray-test.at:101"
( $at_check_trace; sparse-xarray-test \
               --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
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/sparse-xarray-test.at:101"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1451
#AT_START_1452
at_fn_group_banner 1452 'str.at:19' \
  "26-adic string formatting" "                      " 136
at_xfail=no
(
  printf "%s\n" "1452. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/str.at:20: str-test format-26adic"
at_fn_check_prepare_trace "str.at:20"
( $at_check_trace; str-test format-26adic
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/str.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1452
#AT_START_1453
at_fn_group_banner 1453 'string-map.at:25' \
  "string map -- insert-any-remove-any" "            " 137
at_xfail=no
(
  printf "%s\n" "1453. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:25: string-map-test insert-any-remove-any"
at_fn_check_prepare_trace "string-map.at:25"
( $at_check_trace; string-map-test insert-any-remove-any
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1453
#AT_START_1454
at_fn_group_banner 1454 'string-map.at:26' \
  "string map -- insert-any-remove-same" "           " 137
at_xfail=no
(
  printf "%s\n" "1454. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:26: string-map-test insert-any-remove-same"
at_fn_check_prepare_trace "string-map.at:26"
( $at_check_trace; string-map-test insert-any-remove-same
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1454
#AT_START_1455
at_fn_group_banner 1455 'string-map.at:27' \
  "string map -- insert-any-remove-reverse" "        " 137
at_xfail=no
(
  printf "%s\n" "1455. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:27: string-map-test insert-any-remove-reverse"
at_fn_check_prepare_trace "string-map.at:27"
( $at_check_trace; string-map-test insert-any-remove-reverse
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1455
#AT_START_1456
at_fn_group_banner 1456 'string-map.at:28' \
  "string map -- random-sequence" "                  " 137
at_xfail=no
(
  printf "%s\n" "1456. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:28: string-map-test random-sequence"
at_fn_check_prepare_trace "string-map.at:28"
( $at_check_trace; string-map-test random-sequence
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1456
#AT_START_1457
at_fn_group_banner 1457 'string-map.at:29' \
  "string map -- replace" "                          " 137
at_xfail=no
(
  printf "%s\n" "1457. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:29: string-map-test replace"
at_fn_check_prepare_trace "string-map.at:29"
( $at_check_trace; string-map-test replace
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1457
#AT_START_1458
at_fn_group_banner 1458 'string-map.at:30' \
  "string map -- insert-ordered" "                   " 137
at_xfail=no
(
  printf "%s\n" "1458. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:30: string-map-test insert-ordered"
at_fn_check_prepare_trace "string-map.at:30"
( $at_check_trace; string-map-test insert-ordered
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1458
#AT_START_1459
at_fn_group_banner 1459 'string-map.at:31' \
  "string map -- clear" "                            " 137
at_xfail=no
(
  printf "%s\n" "1459. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:31: string-map-test clear"
at_fn_check_prepare_trace "string-map.at:31"
( $at_check_trace; string-map-test clear
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1459
#AT_START_1460
at_fn_group_banner 1460 'string-map.at:32' \
  "string map -- clone" "                            " 137
at_xfail=no
(
  printf "%s\n" "1460. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:32: string-map-test clone"
at_fn_check_prepare_trace "string-map.at:32"
( $at_check_trace; string-map-test clone
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1460
#AT_START_1461
at_fn_group_banner 1461 'string-map.at:33' \
  "string map -- swap" "                             " 137
at_xfail=no
(
  printf "%s\n" "1461. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:33: string-map-test swap"
at_fn_check_prepare_trace "string-map.at:33"
( $at_check_trace; string-map-test swap
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1461
#AT_START_1462
at_fn_group_banner 1462 'string-map.at:34' \
  "string map -- node-swap-value" "                  " 137
at_xfail=no
(
  printf "%s\n" "1462. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:34: string-map-test node-swap-value"
at_fn_check_prepare_trace "string-map.at:34"
( $at_check_trace; string-map-test node-swap-value
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1462
#AT_START_1463
at_fn_group_banner 1463 'string-map.at:35' \
  "string map -- insert-map" "                       " 137
at_xfail=no
(
  printf "%s\n" "1463. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:35: string-map-test insert-map"
at_fn_check_prepare_trace "string-map.at:35"
( $at_check_trace; string-map-test insert-map
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1463
#AT_START_1464
at_fn_group_banner 1464 'string-map.at:36' \
  "string map -- replace-map" "                      " 137
at_xfail=no
(
  printf "%s\n" "1464. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:36: string-map-test replace-map"
at_fn_check_prepare_trace "string-map.at:36"
( $at_check_trace; string-map-test replace-map
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1464
#AT_START_1465
at_fn_group_banner 1465 'string-map.at:37' \
  "string map -- get-keys-and-values" "              " 137
at_xfail=no
(
  printf "%s\n" "1465. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:37: string-map-test get-keys-and-values"
at_fn_check_prepare_trace "string-map.at:37"
( $at_check_trace; string-map-test get-keys-and-values
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1465
#AT_START_1466
at_fn_group_banner 1466 'string-map.at:38' \
  "string map -- destroy-null" "                     " 137
at_xfail=no
(
  printf "%s\n" "1466. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-map.at:38: string-map-test destroy-null"
at_fn_check_prepare_trace "string-map.at:38"
( $at_check_trace; string-map-test destroy-null
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-map.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1466
#AT_START_1467
at_fn_group_banner 1467 'stringi-map.at:25' \
  "case-insensitive string map -- insert-any-remove-any" "" 138
at_xfail=no
(
  printf "%s\n" "1467. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:25: stringi-map-test insert-any-remove-any"
at_fn_check_prepare_trace "stringi-map.at:25"
( $at_check_trace; stringi-map-test insert-any-remove-any
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1467
#AT_START_1468
at_fn_group_banner 1468 'stringi-map.at:26' \
  "case-insensitive string map -- insert-any-remove-same" "" 138
at_xfail=no
(
  printf "%s\n" "1468. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:26: stringi-map-test insert-any-remove-same"
at_fn_check_prepare_trace "stringi-map.at:26"
( $at_check_trace; stringi-map-test insert-any-remove-same
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1468
#AT_START_1469
at_fn_group_banner 1469 'stringi-map.at:27' \
  "case-insensitive string map -- insert-any-remove-reverse" "" 138
at_xfail=no
(
  printf "%s\n" "1469. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:27: stringi-map-test insert-any-remove-reverse"
at_fn_check_prepare_trace "stringi-map.at:27"
( $at_check_trace; stringi-map-test insert-any-remove-reverse
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1469
#AT_START_1470
at_fn_group_banner 1470 'stringi-map.at:28' \
  "case-insensitive string map -- random-sequence" " " 138
at_xfail=no
(
  printf "%s\n" "1470. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:28: stringi-map-test random-sequence"
at_fn_check_prepare_trace "stringi-map.at:28"
( $at_check_trace; stringi-map-test random-sequence
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1470
#AT_START_1471
at_fn_group_banner 1471 'stringi-map.at:29' \
  "case-insensitive string map -- replace" "         " 138
at_xfail=no
(
  printf "%s\n" "1471. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:29: stringi-map-test replace"
at_fn_check_prepare_trace "stringi-map.at:29"
( $at_check_trace; stringi-map-test replace
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1471
#AT_START_1472
at_fn_group_banner 1472 'stringi-map.at:30' \
  "case-insensitive string map -- insert-ordered" "  " 138
at_xfail=no
(
  printf "%s\n" "1472. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:30: stringi-map-test insert-ordered"
at_fn_check_prepare_trace "stringi-map.at:30"
( $at_check_trace; stringi-map-test insert-ordered
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1472
#AT_START_1473
at_fn_group_banner 1473 'stringi-map.at:31' \
  "case-insensitive string map -- clear" "           " 138
at_xfail=no
(
  printf "%s\n" "1473. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:31: stringi-map-test clear"
at_fn_check_prepare_trace "stringi-map.at:31"
( $at_check_trace; stringi-map-test clear
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1473
#AT_START_1474
at_fn_group_banner 1474 'stringi-map.at:32' \
  "case-insensitive string map -- clone" "           " 138
at_xfail=no
(
  printf "%s\n" "1474. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:32: stringi-map-test clone"
at_fn_check_prepare_trace "stringi-map.at:32"
( $at_check_trace; stringi-map-test clone
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1474
#AT_START_1475
at_fn_group_banner 1475 'stringi-map.at:33' \
  "case-insensitive string map -- swap" "            " 138
at_xfail=no
(
  printf "%s\n" "1475. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:33: stringi-map-test swap"
at_fn_check_prepare_trace "stringi-map.at:33"
( $at_check_trace; stringi-map-test swap
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1475
#AT_START_1476
at_fn_group_banner 1476 'stringi-map.at:34' \
  "case-insensitive string map -- node-swap-value" " " 138
at_xfail=no
(
  printf "%s\n" "1476. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:34: stringi-map-test node-swap-value"
at_fn_check_prepare_trace "stringi-map.at:34"
( $at_check_trace; stringi-map-test node-swap-value
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1476
#AT_START_1477
at_fn_group_banner 1477 'stringi-map.at:35' \
  "case-insensitive string map -- insert-map" "      " 138
at_xfail=no
(
  printf "%s\n" "1477. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:35: stringi-map-test insert-map"
at_fn_check_prepare_trace "stringi-map.at:35"
( $at_check_trace; stringi-map-test insert-map
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1477
#AT_START_1478
at_fn_group_banner 1478 'stringi-map.at:36' \
  "case-insensitive string map -- replace-map" "     " 138
at_xfail=no
(
  printf "%s\n" "1478. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:36: stringi-map-test replace-map"
at_fn_check_prepare_trace "stringi-map.at:36"
( $at_check_trace; stringi-map-test replace-map
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1478
#AT_START_1479
at_fn_group_banner 1479 'stringi-map.at:37' \
  "case-insensitive string map -- get-keys-and-values" "" 138
at_xfail=no
(
  printf "%s\n" "1479. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:37: stringi-map-test get-keys-and-values"
at_fn_check_prepare_trace "stringi-map.at:37"
( $at_check_trace; stringi-map-test get-keys-and-values
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1479
#AT_START_1480
at_fn_group_banner 1480 'stringi-map.at:38' \
  "case-insensitive string map -- destroy-null" "    " 138
at_xfail=no
(
  printf "%s\n" "1480. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-map.at:38: stringi-map-test destroy-null"
at_fn_check_prepare_trace "stringi-map.at:38"
( $at_check_trace; stringi-map-test destroy-null
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-map.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1480
#AT_START_1481
at_fn_group_banner 1481 'string-set.at:25' \
  "string set -- insert-any-remove-any" "            " 139
at_xfail=no
(
  printf "%s\n" "1481. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:25: string-set-test insert-any-remove-any"
at_fn_check_prepare_trace "string-set.at:25"
( $at_check_trace; string-set-test insert-any-remove-any
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1481
#AT_START_1482
at_fn_group_banner 1482 'string-set.at:26' \
  "string set -- insert-any-remove-same" "           " 139
at_xfail=no
(
  printf "%s\n" "1482. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:26: string-set-test insert-any-remove-same"
at_fn_check_prepare_trace "string-set.at:26"
( $at_check_trace; string-set-test insert-any-remove-same
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1482
#AT_START_1483
at_fn_group_banner 1483 'string-set.at:27' \
  "string set -- insert-any-remove-reverse" "        " 139
at_xfail=no
(
  printf "%s\n" "1483. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:27: string-set-test insert-any-remove-reverse"
at_fn_check_prepare_trace "string-set.at:27"
( $at_check_trace; string-set-test insert-any-remove-reverse
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1483
#AT_START_1484
at_fn_group_banner 1484 'string-set.at:28' \
  "string set -- random-sequence" "                  " 139
at_xfail=no
(
  printf "%s\n" "1484. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:28: string-set-test random-sequence"
at_fn_check_prepare_trace "string-set.at:28"
( $at_check_trace; string-set-test random-sequence
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1484
#AT_START_1485
at_fn_group_banner 1485 'string-set.at:29' \
  "string set -- insert-ordered" "                   " 139
at_xfail=no
(
  printf "%s\n" "1485. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:29: string-set-test insert-ordered"
at_fn_check_prepare_trace "string-set.at:29"
( $at_check_trace; string-set-test insert-ordered
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1485
#AT_START_1486
at_fn_group_banner 1486 'string-set.at:30' \
  "string set -- union" "                            " 139
at_xfail=no
(
  printf "%s\n" "1486. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:30: string-set-test union"
at_fn_check_prepare_trace "string-set.at:30"
( $at_check_trace; string-set-test union
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1486
#AT_START_1487
at_fn_group_banner 1487 'string-set.at:31' \
  "string set -- union-and-intersection" "           " 139
at_xfail=no
(
  printf "%s\n" "1487. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:31: string-set-test union-and-intersection"
at_fn_check_prepare_trace "string-set.at:31"
( $at_check_trace; string-set-test union-and-intersection
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1487
#AT_START_1488
at_fn_group_banner 1488 'string-set.at:32' \
  "string set -- intersect" "                        " 139
at_xfail=no
(
  printf "%s\n" "1488. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:32: string-set-test intersect"
at_fn_check_prepare_trace "string-set.at:32"
( $at_check_trace; string-set-test intersect
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1488
#AT_START_1489
at_fn_group_banner 1489 'string-set.at:33' \
  "string set -- subtract" "                         " 139
at_xfail=no
(
  printf "%s\n" "1489. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:33: string-set-test subtract"
at_fn_check_prepare_trace "string-set.at:33"
( $at_check_trace; string-set-test subtract
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1489
#AT_START_1490
at_fn_group_banner 1490 'string-set.at:34' \
  "string set -- swap" "                             " 139
at_xfail=no
(
  printf "%s\n" "1490. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:34: string-set-test swap"
at_fn_check_prepare_trace "string-set.at:34"
( $at_check_trace; string-set-test swap
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1490
#AT_START_1491
at_fn_group_banner 1491 'string-set.at:35' \
  "string set -- clear" "                            " 139
at_xfail=no
(
  printf "%s\n" "1491. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:35: string-set-test clear"
at_fn_check_prepare_trace "string-set.at:35"
( $at_check_trace; string-set-test clear
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1491
#AT_START_1492
at_fn_group_banner 1492 'string-set.at:36' \
  "string set -- clone" "                            " 139
at_xfail=no
(
  printf "%s\n" "1492. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:36: string-set-test clone"
at_fn_check_prepare_trace "string-set.at:36"
( $at_check_trace; string-set-test clone
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1492
#AT_START_1493
at_fn_group_banner 1493 'string-set.at:37' \
  "string set -- destroy-null" "                     " 139
at_xfail=no
(
  printf "%s\n" "1493. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/string-set.at:37: string-set-test destroy-null"
at_fn_check_prepare_trace "string-set.at:37"
( $at_check_trace; string-set-test destroy-null
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/string-set.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1493
#AT_START_1494
at_fn_group_banner 1494 'stringi-set.at:25' \
  "case-insensitive string set -- insert-any-remove-any" "" 140
at_xfail=no
(
  printf "%s\n" "1494. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:25: stringi-set-test insert-any-remove-any"
at_fn_check_prepare_trace "stringi-set.at:25"
( $at_check_trace; stringi-set-test insert-any-remove-any
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1494
#AT_START_1495
at_fn_group_banner 1495 'stringi-set.at:26' \
  "case-insensitive string set -- insert-any-remove-same" "" 140
at_xfail=no
(
  printf "%s\n" "1495. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:26: stringi-set-test insert-any-remove-same"
at_fn_check_prepare_trace "stringi-set.at:26"
( $at_check_trace; stringi-set-test insert-any-remove-same
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1495
#AT_START_1496
at_fn_group_banner 1496 'stringi-set.at:27' \
  "case-insensitive string set -- insert-any-remove-reverse" "" 140
at_xfail=no
(
  printf "%s\n" "1496. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:27: stringi-set-test insert-any-remove-reverse"
at_fn_check_prepare_trace "stringi-set.at:27"
( $at_check_trace; stringi-set-test insert-any-remove-reverse
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1496
#AT_START_1497
at_fn_group_banner 1497 'stringi-set.at:28' \
  "case-insensitive string set -- random-sequence" " " 140
at_xfail=no
(
  printf "%s\n" "1497. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:28: stringi-set-test random-sequence"
at_fn_check_prepare_trace "stringi-set.at:28"
( $at_check_trace; stringi-set-test random-sequence
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1497
#AT_START_1498
at_fn_group_banner 1498 'stringi-set.at:29' \
  "case-insensitive string set -- insert-ordered" "  " 140
at_xfail=no
(
  printf "%s\n" "1498. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:29: stringi-set-test insert-ordered"
at_fn_check_prepare_trace "stringi-set.at:29"
( $at_check_trace; stringi-set-test insert-ordered
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1498
#AT_START_1499
at_fn_group_banner 1499 'stringi-set.at:30' \
  "case-insensitive string set -- union" "           " 140
at_xfail=no
(
  printf "%s\n" "1499. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:30: stringi-set-test union"
at_fn_check_prepare_trace "stringi-set.at:30"
( $at_check_trace; stringi-set-test union
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1499
#AT_START_1500
at_fn_group_banner 1500 'stringi-set.at:31' \
  "case-insensitive string set -- union-and-intersection" "" 140
at_xfail=no
(
  printf "%s\n" "1500. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:31: stringi-set-test union-and-intersection"
at_fn_check_prepare_trace "stringi-set.at:31"
( $at_check_trace; stringi-set-test union-and-intersection
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:31"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1500
#AT_START_1501
at_fn_group_banner 1501 'stringi-set.at:32' \
  "case-insensitive string set -- intersect" "       " 140
at_xfail=no
(
  printf "%s\n" "1501. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:32: stringi-set-test intersect"
at_fn_check_prepare_trace "stringi-set.at:32"
( $at_check_trace; stringi-set-test intersect
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1501
#AT_START_1502
at_fn_group_banner 1502 'stringi-set.at:33' \
  "case-insensitive string set -- subtract" "        " 140
at_xfail=no
(
  printf "%s\n" "1502. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:33: stringi-set-test subtract"
at_fn_check_prepare_trace "stringi-set.at:33"
( $at_check_trace; stringi-set-test subtract
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1502
#AT_START_1503
at_fn_group_banner 1503 'stringi-set.at:34' \
  "case-insensitive string set -- swap" "            " 140
at_xfail=no
(
  printf "%s\n" "1503. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:34: stringi-set-test swap"
at_fn_check_prepare_trace "stringi-set.at:34"
( $at_check_trace; stringi-set-test swap
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1503
#AT_START_1504
at_fn_group_banner 1504 'stringi-set.at:35' \
  "case-insensitive string set -- clear" "           " 140
at_xfail=no
(
  printf "%s\n" "1504. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:35: stringi-set-test clear"
at_fn_check_prepare_trace "stringi-set.at:35"
( $at_check_trace; stringi-set-test clear
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1504
#AT_START_1505
at_fn_group_banner 1505 'stringi-set.at:36' \
  "case-insensitive string set -- clone" "           " 140
at_xfail=no
(
  printf "%s\n" "1505. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:36: stringi-set-test clone"
at_fn_check_prepare_trace "stringi-set.at:36"
( $at_check_trace; stringi-set-test clone
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1505
#AT_START_1506
at_fn_group_banner 1506 'stringi-set.at:37' \
  "case-insensitive string set -- destroy-null" "    " 140
at_xfail=no
(
  printf "%s\n" "1506. $at_setup_line: testing $at_desc ..."
  $at_traceon


   { set +x
printf "%s\n" "$at_srcdir/stringi-set.at:37: stringi-set-test destroy-null"
at_fn_check_prepare_trace "stringi-set.at:37"
( $at_check_trace; stringi-set-test destroy-null
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringi-set.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1506
#AT_START_1507
at_fn_group_banner 1507 'tower.at:24' \
  "tower -- insert" "                                " 141
at_xfail=no
(
  printf "%s\n" "1507. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/tower.at:24: tower-test insert"
at_fn_check_prepare_trace "tower.at:24"
( $at_check_trace; tower-test insert
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tower.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1507
#AT_START_1508
at_fn_group_banner 1508 'tower.at:25' \
  "tower -- delete" "                                " 141
at_xfail=no
(
  printf "%s\n" "1508. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/tower.at:25: tower-test delete"
at_fn_check_prepare_trace "tower.at:25"
( $at_check_trace; tower-test delete
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tower.at:25"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1508
#AT_START_1509
at_fn_group_banner 1509 'tower.at:26' \
  "tower -- resize" "                                " 141
at_xfail=no
(
  printf "%s\n" "1509. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/tower.at:26: tower-test resize"
at_fn_check_prepare_trace "tower.at:26"
( $at_check_trace; tower-test resize
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tower.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1509
#AT_START_1510
at_fn_group_banner 1510 'tower.at:27' \
  "tower -- splice-out" "                            " 141
at_xfail=no
(
  printf "%s\n" "1510. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/tower.at:27: tower-test splice-out"
at_fn_check_prepare_trace "tower.at:27"
( $at_check_trace; tower-test splice-out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tower.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1510
#AT_START_1511
at_fn_group_banner 1511 'tower.at:28' \
  "tower -- splice-in" "                             " 141
at_xfail=no
(
  printf "%s\n" "1511. $at_setup_line: testing $at_desc ..."
  $at_traceon

   { set +x
printf "%s\n" "$at_srcdir/tower.at:28: tower-test splice-in"
at_fn_check_prepare_trace "tower.at:28"
( $at_check_trace; tower-test splice-in
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tower.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1511
#AT_START_1512
at_fn_group_banner 1512 'u8-istream.at:19' \
  "read ASCII" "                                     " 142
at_xfail=no
(
  printf "%s\n" "1512. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:21: i18n-test supports_encodings ASCII"
at_fn_check_prepare_trace "u8-istream.at:21"
( $at_check_trace; i18n-test supports_encodings ASCII
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:21"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:22: echo string | u8-istream-test read - ASCII"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:22"
( $at_check_trace; echo string | u8-istream-test read - ASCII
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "string
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:22"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1512
#AT_START_1513
at_fn_group_banner 1513 'u8-istream.at:26' \
  "read UTF-8" "                                     " 142
at_xfail=no
(
  printf "%s\n" "1513. $at_setup_line: testing $at_desc ..."
  $at_traceon


# Without byte-order-mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:29: printf '\\346\\227\\245\\346\\234\\254\\350\\252\\236\\n' | u8-istream-test read - UTF-8"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:29"
( $at_check_trace; printf '\346\227\245\346\234\254\350\252\236\n' | u8-istream-test read - UTF-8
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-8 mode
日本語
UTF-8 mode
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

# With byte-order-mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:35: printf '\\357\\273\\277\\346\\227\\245\\346\\234\\254\\350\\252\\236\\n' | u8-istream-test read - UTF-8"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:35"
( $at_check_trace; printf '\357\273\277\346\227\245\346\234\254\350\252\236\n' | u8-istream-test read - UTF-8
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-8 mode
日本語
UTF-8 mode
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1513
#AT_START_1514
at_fn_group_banner 1514 'u8-istream.at:42' \
  "read EUC-JP" "                                    " 142
at_xfail=no
(
  printf "%s\n" "1514. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:44: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "u8-istream.at:44"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:45: printf '\\244\\241 \\244\\242 \\244\\243 \\244\\244 \\244\\245 \\244\\246 \\244\\247 \\244\\250 \\244\\251 \\244\\252\\n' | u8-istream-test read - EUC-JP"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:45"
( $at_check_trace; printf '\244\241 \244\242 \244\243 \244\244 \244\245 \244\246 \244\247 \244\250 \244\251 \244\252\n' | u8-istream-test read - EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ぁ あ ぃ い ぅ う ぇ え ぉ お
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1514
#AT_START_1515
at_fn_group_banner 1515 'u8-istream.at:51' \
  "read UTF-8 with character split across input buffers" "" 142
at_xfail=no
(
  printf "%s\n" "1515. $at_setup_line: testing $at_desc ..."
  $at_traceon


buffer_size=`u8-istream-test buffer-size`
($PYTHON3 -c "import sys; sys.stdout.write('x' * ($buffer_size - 16))";
 printf '\343\201\201\343\201\202\343\201\203\343\201\204\343\201\205\343\201\206\343\201\207\343\201\210\343\201\211\343\201\212\n') > input
(echo "UTF-8 mode"
 cat input
 echo "UTF-8 mode") > expout
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:59: u8-istream-test read input UTF-8 16"
at_fn_check_prepare_trace "u8-istream.at:59"
( $at_check_trace; u8-istream-test read input UTF-8 16
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1515
#AT_START_1516
at_fn_group_banner 1516 'u8-istream.at:62' \
  "read UTF-8 with character split across output buffers" "" 142
at_xfail=no
(
  printf "%s\n" "1516. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:64: printf '\\343\\201\\201\\343\\201\\202\\343\\201\\203\\343\\201\\204\\343\\201\\205\\343\\201\\206\\343\\201\\207\\343\\201\\210\\343\\201\\211\\343\\201\\212\\n' | u8-istream-test read - UTF-8 16"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:64"
( $at_check_trace; printf '\343\201\201\343\201\202\343\201\203\343\201\204\343\201\205\343\201\206\343\201\207\343\201\210\343\201\211\343\201\212\n' | u8-istream-test read - UTF-8 16
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-8 mode
ぁあぃいぅうぇえぉお
UTF-8 mode
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:64"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1516
#AT_START_1517
at_fn_group_banner 1517 'u8-istream.at:71' \
  "read UTF-8 with character split across input and output buffers" "" 142
at_xfail=no
(
  printf "%s\n" "1517. $at_setup_line: testing $at_desc ..."
  $at_traceon


buffer_size=`u8-istream-test buffer-size`
($PYTHON3 -c "import sys; sys.stdout.write('x' * ($buffer_size - 16))";
 printf '\343\201\201\343\201\202\343\201\203\343\201\204\343\201\205\343\201\206\343\201\207\343\201\210\343\201\211\343\201\212\n') > input
(echo "UTF-8 mode"
 cat input
 echo "UTF-8 mode") > expout
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:79: u8-istream-test read input UTF-8 16"
at_fn_check_prepare_trace "u8-istream.at:79"
( $at_check_trace; u8-istream-test read input UTF-8 16
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:79"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1517
#AT_START_1518
at_fn_group_banner 1518 'u8-istream.at:82' \
  "read EUC-JP with character split across input buffers" "" 142
at_xfail=no
(
  printf "%s\n" "1518. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:84: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "u8-istream.at:84"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:84"
$at_failed && at_fn_log_failure
$at_traceon; }

buffer_size=`u8-istream-test buffer-size`
($PYTHON3 -c "import sys; sys.stdout.write('x' * ($buffer_size - 16))";
 printf '\244\241 \244\242 \244\243 \244\244 \244\245 \244\246 \244\247 '
 printf '\244\250 \244\251 \244\252\n') > input
($PYTHON3 -c "import sys; sys.stdout.write('x' * ($buffer_size - 16))";
 printf '\343\201\201\040\343\201\202\040\343\201\203\040\343\201\204\040'
 printf '\343\201\205\040\343\201\206\040\343\201\207\040\343\201\210\040'
 printf '\343\201\211\040\343\201\212\n') > expout
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:93: u8-istream-test read input EUC-JP"
at_fn_check_prepare_trace "u8-istream.at:93"
( $at_check_trace; u8-istream-test read input EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:93"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1518
#AT_START_1519
at_fn_group_banner 1519 'u8-istream.at:96' \
  "read EUC-JP with character split across output buffers" "" 142
at_xfail=no
(
  printf "%s\n" "1519. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:98: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "u8-istream.at:98"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:98"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:99: printf '\\244\\241\\244\\242\\244\\243\\244\\244\\244\\245\\244\\246\\244\\247\\244\\250\\244\\251\\244\\252\\n' | u8-istream-test read - EUC-JP 16"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:99"
( $at_check_trace; printf '\244\241\244\242\244\243\244\244\244\245\244\246\244\247\244\250\244\251\244\252\n' | u8-istream-test read - EUC-JP 16
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "ぁあぃいぅうぇえぉお
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:99"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1519
#AT_START_1520
at_fn_group_banner 1520 'u8-istream.at:105' \
  "read EUC-JP with character split across input and output buffers" "" 142
at_xfail=no
(
  printf "%s\n" "1520. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:107: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "u8-istream.at:107"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

buffer_size=`u8-istream-test buffer-size`
($PYTHON3 -c "import sys; sys.stdout.write('x' * ($buffer_size - 16))";
 printf 'xyz\244\241\244\242\244\243\244\244\244\245\244\246\244\247\244\250'
 printf '\244\251\244\252\n') > input
($PYTHON3 -c "import sys; sys.stdout.write('x' * ($buffer_size - 16))";
 printf '\170\171\172\343\201\201\343\201\202\343\201\203\343\201\204\343'
 printf '\201\205\343\201\206\343\201\207\343\201\210\343\201\211\343\201'
 printf '\212\n') > expout
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:116: u8-istream-test read input EUC-JP 16"
at_fn_check_prepare_trace "u8-istream.at:116"
( $at_check_trace; u8-istream-test read input EUC-JP 16
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1520
#AT_START_1521
at_fn_group_banner 1521 'u8-istream.at:119' \
  "read ASCII as Auto" "                             " 142
at_xfail=no
(
  printf "%s\n" "1521. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:121: echo string | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:121"
( $at_check_trace; echo string | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Auto mode
string
Auto mode
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1521
#AT_START_1522
at_fn_group_banner 1522 'u8-istream.at:128' \
  "read UTF-8 as Auto" "                             " 142
at_xfail=no
(
  printf "%s\n" "1522. $at_setup_line: testing $at_desc ..."
  $at_traceon


# Without byte-order mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:131: printf 'entr\\303\\251e\\n' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:131"
( $at_check_trace; printf 'entr\303\251e\n' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Auto mode
entrée
UTF-8 mode
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:131"
$at_failed && at_fn_log_failure
$at_traceon; }

# With byte-order mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:137: printf '\\357\\273\\277entr\\303\\251e\\n' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:137"
( $at_check_trace; printf '\357\273\277entr\303\251e\n' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "UTF-8 mode
entrée
UTF-8 mode
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:137"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1522
#AT_START_1523
at_fn_group_banner 1523 'u8-istream.at:144' \
  "read ISO-8859-1 as Auto,ISO-8859-1" "             " 142
at_xfail=no
(
  printf "%s\n" "1523. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:146: i18n-test supports_encodings ISO-8859-1"
at_fn_check_prepare_trace "u8-istream.at:146"
( $at_check_trace; i18n-test supports_encodings ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:146"
$at_failed && at_fn_log_failure
$at_traceon; }

buffer_size=`u8-istream-test buffer-size`
($PYTHON3 -c "import sys; sys.stdout.write('xyzzy\n' * ($buffer_size * 5 // 14))"
 printf 'entr\351e\n') > input
(echo "Auto mode"
 $PYTHON3 -c "import sys; sys.stdout.write('xyzzy\n' * ($buffer_size * 5 // 14))"
 printf 'entr\303\251e\n') > expout
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:153: u8-istream-test read input Auto,ISO-8859-1"
at_fn_check_prepare_trace "u8-istream.at:153"
( $at_check_trace; u8-istream-test read input Auto,ISO-8859-1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:153"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1523
#AT_START_1524
at_fn_group_banner 1524 'u8-istream.at:157' \
  "read UTF-16BE as Auto,UTF-16BE" "                 " 142
at_xfail=no
(
  printf "%s\n" "1524. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:159: i18n-test supports_encodings UTF-16BE"
at_fn_check_prepare_trace "u8-istream.at:159"
( $at_check_trace; i18n-test supports_encodings UTF-16BE
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:159"
$at_failed && at_fn_log_failure
$at_traceon; }

# Without byte-order mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:161: printf '\\0e\\0n\\0t\\0r\\0\\351\\0e\\0\\n' | u8-istream-test read - Auto,UTF-16BE"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:161"
( $at_check_trace; printf '\0e\0n\0t\0r\0\351\0e\0\n' | u8-istream-test read - Auto,UTF-16BE
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:161"
$at_failed && at_fn_log_failure
$at_traceon; }

# With byte-order mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:166: printf '\\376\\377\\0e\\0n\\0t\\0r\\0\\351\\0e\\0\\n' | u8-istream-test read - Auto,UTF-16BE"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:166"
( $at_check_trace; printf '\376\377\0e\0n\0t\0r\0\351\0e\0\n' | u8-istream-test read - Auto,UTF-16BE
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:166"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1524
#AT_START_1525
at_fn_group_banner 1525 'u8-istream.at:172' \
  "read UTF-16 as Auto" "                            " 142
at_xfail=no
(
  printf "%s\n" "1525. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:174: i18n-test supports_encodings UTF-16 UTF-16BE UTF-16LE"
at_fn_check_prepare_trace "u8-istream.at:174"
( $at_check_trace; i18n-test supports_encodings UTF-16 UTF-16BE UTF-16LE
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

# Without byte-order mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:178: { printf '\\0e\\0n\\0t\\0'; sleep 1; printf 'r\\0\\351\\0e\\0\\n'; } | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:178"
( $at_check_trace; { printf '\0e\0n\0t\0'; sleep 1; printf 'r\0\351\0e\0\n'; } | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:178"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:181: printf 'e\\0n\\0t\\0r\\0\\351\\0e\\0\\n\\0' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:181"
( $at_check_trace; printf 'e\0n\0t\0r\0\351\0e\0\n\0' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:181"
$at_failed && at_fn_log_failure
$at_traceon; }

# With byte-order mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:185: printf '\\376\\377\\0e\\0n\\0t\\0r\\0\\351\\0e\\0\\n' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:185"
( $at_check_trace; printf '\376\377\0e\0n\0t\0r\0\351\0e\0\n' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:185"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:188: printf '\\377\\376e\\0n\\0t\\0r\\0\\351\\0e\\0\\n\\0' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:188"
( $at_check_trace; printf '\377\376e\0n\0t\0r\0\351\0e\0\n\0' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:188"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1525
#AT_START_1526
at_fn_group_banner 1526 'u8-istream.at:193' \
  "read UTF-32 as Auto" "                            " 142
at_xfail=no
(
  printf "%s\n" "1526. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:195: i18n-test supports_encodings UTF-16 UTF-16BE UTF-16LE"
at_fn_check_prepare_trace "u8-istream.at:195"
( $at_check_trace; i18n-test supports_encodings UTF-16 UTF-16BE UTF-16LE
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:195"
$at_failed && at_fn_log_failure
$at_traceon; }

# Without byte-order mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:197: printf '\\0\\0\\0e\\0\\0\\0n\\0\\0\\0t\\0\\0\\0r\\0\\0\\0\\351\\0\\0\\0e\\0\\0\\0\\n' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:197"
( $at_check_trace; printf '\0\0\0e\0\0\0n\0\0\0t\0\0\0r\0\0\0\351\0\0\0e\0\0\0\n' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:197"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:200: printf 'e\\0\\0\\0n\\0\\0\\0t\\0\\0\\0r\\0\\0\\0\\351\\0\\0\\0e\\0\\0\\0\\n\\0\\0\\0' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:200"
( $at_check_trace; printf 'e\0\0\0n\0\0\0t\0\0\0r\0\0\0\351\0\0\0e\0\0\0\n\0\0\0' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:200"
$at_failed && at_fn_log_failure
$at_traceon; }

# With byte-order mark.
{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:204: printf '\\0\\0\\376\\377\\0\\0\\0e\\0\\0\\0n\\0\\0\\0t\\0\\0\\0r\\0\\0\\0\\351\\0\\0\\0e\\0\\0\\0\\n' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:204"
( $at_check_trace; printf '\0\0\376\377\0\0\0e\0\0\0n\0\0\0t\0\0\0r\0\0\0\351\0\0\0e\0\0\0\n' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:204"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:207: printf '\\377\\376\\0\\0e\\0\\0\\0n\\0\\0\\0t\\0\\0\\0r\\0\\0\\0\\351\\0\\0\\0e\\0\\0\\0\\n\\0\\0\\0' | u8-istream-test read - Auto"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:207"
( $at_check_trace; printf '\377\376\0\0e\0\0\0n\0\0\0t\0\0\0r\0\0\0\351\0\0\0e\0\0\0\n\0\0\0' | u8-istream-test read - Auto
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:207"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1526
#AT_START_1527
at_fn_group_banner 1527 'u8-istream.at:212' \
  "read EUC-JP as Auto,EUC-JP" "                     " 142
at_xfail=no
(
  printf "%s\n" "1527. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:214: i18n-test supports_encodings EUC-JP"
at_fn_check_prepare_trace "u8-istream.at:214"
( $at_check_trace; i18n-test supports_encodings EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:214"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/u8-istream.at:215: printf 'entr\\217\\253\\261e\\n' | u8-istream-test read - Auto,EUC-JP"
at_fn_check_prepare_notrace 'a shell pipeline' "u8-istream.at:215"
( $at_check_trace; printf 'entr\217\253\261e\n' | u8-istream-test read - Auto,EUC-JP
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "entrée
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/u8-istream.at:215"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1527
#AT_START_1528
at_fn_group_banner 1528 'zip.at:19' \
  "basic zip - unzip test" "                         " 143
at_xfail=no
(
  printf "%s\n" "1528. $at_setup_line: testing $at_desc ..."
  $at_traceon


here=`pwd`
dir1=$here/original
dir2=$here/recovered

mkdir -p "$dir1"

# Generate files of differing sizes with random data in them
names=""
s=1;
while test $s -le 8192 ; do
	name="$dir1/$s"
	dd if=/dev/urandom of="$name" count=1 bs=$s 2> /dev/null
	s=$(($s * 2));
	bn=`basename "$name"`;
        names="$names $bn";
done

{ set +x
printf "%s\n" "$at_srcdir/zip.at:38: cd \"\$dir1\" && zip-test w foo.zip \$names"
at_fn_check_prepare_dynamic "cd \"$dir1\" && zip-test w foo.zip $names" "zip.at:38"
( $at_check_trace; cd "$dir1" && zip-test w foo.zip $names
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }


# If zipinfo is installed, make sure it can read the zipfile.
if (zipinfo -v) >/dev/null 2>&1; then
    { set +x
printf "%s\n" "$at_srcdir/zip.at:42: zipinfo \"\$dir1/foo.zip\""
at_fn_check_prepare_dynamic "zipinfo \"$dir1/foo.zip\"" "zip.at:42"
( $at_check_trace; zipinfo "$dir1/foo.zip"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

fi

mkdir -p "$dir2"
cp "$dir1/foo.zip" "$dir2"
cd "$dir2"

{ set +x
printf "%s\n" "$at_srcdir/zip.at:49: zip-test r foo.zip \$names"
at_fn_check_prepare_dynamic "zip-test r foo.zip $names" "zip.at:49"
( $at_check_trace; zip-test r foo.zip $names
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/zip.at:51:
    # Compare the files to their originals
    for f in \$names; do
     diff \"\$dir1/\$f\" \"\$dir2/\$f\";
     if test \$? -ne 0 ; then exit 1; fi;
    done
"
at_fn_check_prepare_notrace 'an embedded newline' "zip.at:51"
( $at_check_trace;
    # Compare the files to their originals
    for f in $names; do
     diff "$dir1/$f" "$dir2/$f";
     if test $? -ne 0 ; then exit 1; fi;
    done

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:51"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1528
#AT_START_1529
at_fn_group_banner 1529 'zip.at:60' \
  "zip - detect corruption on unzip" "               " 143
at_xfail=no
(
  printf "%s\n" "1529. $at_setup_line: testing $at_desc ..."
  $at_traceon


mkdir write
cd write
cat >data.txt <<'_ATEOF'
xyzzy
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/zip.at:66: zip-test w ../foo.zip data.txt"
at_fn_check_prepare_trace "zip.at:66"
( $at_check_trace; zip-test w ../foo.zip data.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }

cd ..

mkdir extract
cd extract
{ set +x
printf "%s\n" "$at_srcdir/zip.at:71: zip-test r ../foo.zip data.txt"
at_fn_check_prepare_trace "zip.at:71"
( $at_check_trace; zip-test r ../foo.zip data.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:71"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/zip.at:72: cat data.txt"
at_fn_check_prepare_trace "zip.at:72"
( $at_check_trace; cat data.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "xyzzy
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:72"
$at_failed && at_fn_log_failure
$at_traceon; }

cd ..

mkdir error
cd error
sed 's/xyzzy/XYZZY/' < ../foo.zip > ../corrupted.zip
{ set +x
printf "%s\n" "$at_srcdir/zip.at:79: zip-test r ../corrupted.zip data.txt"
at_fn_check_prepare_trace "zip.at:79"
( $at_check_trace; zip-test r ../corrupted.zip data.txt
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "Unzip failed: ../corrupted.zip: corrupt archive reading member \"data.txt\": bad CRC 0x2a2bcd20 (expected e1bd2a6e)
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/zip.at:79"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1529
#AT_START_1530
at_fn_group_banner 1530 'zip.at:84' \
  "zip to pipe" "                                    " 143
at_xfail=no
(
  printf "%s\n" "1530. $at_setup_line: testing $at_desc ..."
  $at_traceon


here=`pwd`
dir1=$here/original
dir2=$here/recovered

mkdir -p "$dir1"

# Generate files of differing sizes with random data in them
names=""
s=1;
while test $s -le 8192 ; do
	name="$dir1/$s"
	dd if=/dev/urandom of="$name" count=1 bs=$s 2> /dev/null
	s=$(($s * 2));
	bn=`basename "$name"`;
        names="$names $bn";
done

# The pipe through "cat" below is essential because it makes the
# output file un-seekable.
{ set +x
printf "%s\n" "$at_srcdir/zip.at:105: cd \"\$dir1\" && zip-test w - \$names | cat > foo.zip"
at_fn_check_prepare_notrace 'a shell pipeline' "zip.at:105"
( $at_check_trace; cd "$dir1" && zip-test w - $names | cat > foo.zip
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:105"
$at_failed && at_fn_log_failure
$at_traceon; }


# If zipinfo is installed, make sure it can read the zipfile.
if (zipinfo -v) >/dev/null 2>&1; then
    { set +x
printf "%s\n" "$at_srcdir/zip.at:109: zipinfo \"\$dir1/foo.zip\""
at_fn_check_prepare_dynamic "zipinfo \"$dir1/foo.zip\"" "zip.at:109"
( $at_check_trace; zipinfo "$dir1/foo.zip"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:109"
$at_failed && at_fn_log_failure
$at_traceon; }

fi

mkdir -p "$dir2"
cp "$dir1/foo.zip" "$dir2"
cd "$dir2"

{ set +x
printf "%s\n" "$at_srcdir/zip.at:116: zip-test r foo.zip \$names"
at_fn_check_prepare_dynamic "zip-test r foo.zip $names" "zip.at:116"
( $at_check_trace; zip-test r foo.zip $names
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:116"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/zip.at:118:
    # Compare the files to their originals
    for f in \$names; do
     diff \"\$dir1/\$f\" \"\$dir2/\$f\";
     if test \$? -ne 0 ; then exit 1; fi;
    done
"
at_fn_check_prepare_notrace 'an embedded newline' "zip.at:118"
( $at_check_trace;
    # Compare the files to their originals
    for f in $names; do
     diff "$dir1/$f" "$dir2/$f";
     if test $? -ne 0 ; then exit 1; fi;
    done

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/zip.at:118"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1530
#AT_START_1531
at_fn_group_banner 1531 'chart-geometry.at:19' \
  "Chart Scale" "                                    " 144
at_xfail=no
(
  printf "%s\n" "1531. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/chart-geometry.at:20: chart-get-scale-test"
at_fn_check_prepare_trace "chart-geometry.at:20"
( $at_check_trace; chart-get-scale-test
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/chart-geometry.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1531
#AT_START_1532
at_fn_group_banner 1532 'chart-geometry.at:23' \
  "Chart Ticks Format" "                             " 144
at_xfail=no
(
  printf "%s\n" "1532. $at_setup_line: testing $at_desc ..."
  $at_traceon

# The 'sed' below converts, e.g. 1.5e-005 into 1.5e-05, to make the output
# format uniform for comparison.  (mingw always outputs 3-digit exponents.)
{ set +x
printf "%s\n" "$at_srcdir/chart-geometry.at:26: chart-get-ticks-format-test | sed 's/e\\([-+]\\)0\\([0-9][0-9]\\)/e\\1\\2/g'"
at_fn_check_prepare_notrace 'a shell pipeline' "chart-geometry.at:26"
( $at_check_trace; chart-get-ticks-format-test | sed 's/e\([-+]\)0\([0-9][0-9]\)/e\1\2/g'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "lower: 1000, interval: 10, nticks: 10, fs: %.0lf, scale: 1, ex: 1030, ex 2: 1040
lower: 10000, interval: 10, nticks: 10, fs: %.0lf, scale: 1, ex: 10030, ex 2: 10040
lower: 100000, interval: 10, nticks: 10, fs: %.0lf, scale: 1, ex: 100030, ex 2: 100040
lower: 1e+06, interval: 10, nticks: 10, fs: %.0lf, scale: 1, ex: 1000030, ex 2: 1000040
lower: 1e+07, interval: 10, nticks: 10, fs: %.0lf, scale: 1, ex: 10000030, ex 2: 10000040
lower: 1e+08, interval: 10, nticks: 10, fs: %.0lf, scale: 1, ex: 100000030, ex 2: 100000040
lower: 0.1, interval: 0.01, nticks: 10, fs: %.2lf, scale: 1, ex: 0.13, ex 2: 0.14
lower: 0.01, interval: 0.001, nticks: 10, fs: %.3lf, scale: 1, ex: 0.013, ex 2: 0.014
lower: 0.001, interval: 0.0001, nticks: 10, fs: %.4lf, scale: 1, ex: 0.0013, ex 2: 0.0014
lower: 0.0001, interval: 1e-05, nticks: 10, fs: %.1lf&#215;10<sup>-4</sup>, scale: 10000, ex: 1.3&#215;10<sup>-4</sup>, ex 2: 1.4&#215;10<sup>-4</sup>
lower: 1e-05, interval: 1e-07, nticks: 10, fs: %.2lf&#215;10<sup>-5</sup>, scale: 100000, ex: 1.03&#215;10<sup>-5</sup>, ex 2: 1.04&#215;10<sup>-5</sup>
lower: 1e-07, interval: 1e-08, nticks: 10, fs: %.1lf&#215;10<sup>-7</sup>, scale: 1e+07, ex: 1.3&#215;10<sup>-7</sup>, ex 2: 1.4&#215;10<sup>-7</sup>
lower: -5, interval: 1, nticks: 10, fs: %.0lf, scale: 1, ex: -2, ex 2: -1
lower: -5, interval: 0.5, nticks: 10, fs: %.1lf, scale: 1, ex: -3.5, ex 2: -3.0
lower: -5, interval: 0.2, nticks: 9, fs: %.1lf, scale: 1, ex: -4.4, ex 2: -4.2
lower: -5, interval: 2, nticks: 10, fs: %.0lf, scale: 1, ex: 1, ex 2: 3
lower: -0.5, interval: 0.1, nticks: 9, fs: %.1lf, scale: 1, ex: -0.2, ex 2: -0.1
lower: 9.75e+08, interval: 5e+06, nticks: 9, fs: %.3lf&#215;10<sup>9</sup>, scale: 1e-09, ex: 0.990&#215;10<sup>9</sup>, ex 2: 0.995&#215;10<sup>9</sup>
lower: 9.7e+08, interval: 1e+07, nticks: 9, fs: %.2lf&#215;10<sup>9</sup>, scale: 1e-09, ex: 1.00&#215;10<sup>9</sup>, ex 2: 1.01&#215;10<sup>9</sup>
lower: -4e+07, interval: 1e+07, nticks: 9, fs: %.0lf&#215;10<sup>7</sup>, scale: 1e-07, ex: -1&#215;10<sup>7</sup>, ex 2: 0&#215;10<sup>7</sup>
lower: -3e+07, interval: 5e+06, nticks: 9, fs: %.1lf&#215;10<sup>7</sup>, scale: 1e-07, ex: -1.5&#215;10<sup>7</sup>, ex 2: -1.0&#215;10<sup>7</sup>
lower: 1.001e-95, interval: 2e-99, nticks: 10, fs: %.4lf&#215;10<sup>-95</sup>, scale: 1e+95, ex: 1.0016&#215;10<sup>-95</sup>, ex 2: 1.0018&#215;10<sup>-95</sup>
lower: 1.001e+98, interval: 2e+94, nticks: 10, fs: %.4lf&#215;10<sup>98</sup>, scale: 1e-98, ex: 1.0016&#215;10<sup>98</sup>, ex 2: 1.0018&#215;10<sup>98</sup>
lower: 5984, interval: 1e-05, nticks: 10, fs: %.5lf, scale: 1, ex: 5984.00003, ex 2: 5984.00004
lower: 3e+33, interval: 1e-22, nticks: 10, fs: %lg, scale: 1, ex: 3e+33, ex 2: 3e+33
lower: 3e+33, interval: 1000, nticks: 10, fs: %.8lf&#215;10<sup>33</sup>, scale: 1e-33, ex: 3.00000000&#215;10<sup>33</sup>, ex 2: 3.00000000&#215;10<sup>33</sup>
lower: 0.1, interval: 2e-42, nticks: 10, fs: %.8lf, scale: 1, ex: 0.10000000, ex 2: 0.10000000
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/chart-geometry.at:26"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1532
#AT_START_1533
at_fn_group_banner 1533 'moments.at:44' \
  "two-pass moments" "                               " 145
at_xfail=no
(
  printf "%s\n" "1533. $at_setup_line: testing $at_desc ..."
  $at_traceon


   cat >moments.sps <<'_ATEOF'
DEBUG MOMENTS /1 2 3 4.
DEBUG MOMENTS /1*5 2*5 3*5 4*5.
DEBUG MOMENTS /1*1 2*2 3*3 4*4.
DEBUG MOMENTS /1*0.
DEBUG MOMENTS /1*1.
DEBUG MOMENTS /1*2.
DEBUG MOMENTS /1*3.
DEBUG MOMENTS /1*2 3.
DEBUG MOMENTS /1 1.00000001.
DEBUG MOMENTS /1000001 1000002 1000003 1000004.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/moments.at:44: pspp --testing-mode --no-output moments.sps"
at_fn_check_prepare_trace "moments.at:44"
( $at_check_trace; pspp --testing-mode --no-output moments.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "W=4.000 M1=2.500 M2=1.667 M3=0.000 M4=-1.200
W=20.000 M1=2.500 M2=1.316 M3=0.000 M4=-1.401
W=10.000 M1=3.000 M2=1.111 M3=-0.712 M4=-0.450
W=0.000 M1=sysmis M2=sysmis M3=sysmis M4=sysmis
W=1.000 M1=1.000 M2=sysmis M3=sysmis M4=sysmis
W=2.000 M1=1.000 M2=0.000 M3=sysmis M4=sysmis
W=3.000 M1=1.000 M2=0.000 M3=sysmis M4=sysmis
W=3.000 M1=1.667 M2=1.333 M3=1.732 M4=sysmis
W=2.000 M1=1.000 M2=0.000 M3=sysmis M4=sysmis
W=4.000 M1=1000002.500 M2=1.667 M3=0.000 M4=-1.200
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/moments.at:44"
$at_failed && at_fn_log_failure  \
"moments.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1533
#AT_START_1534
at_fn_group_banner 1534 'moments.at:45' \
  "one-pass moments" "                               " 145
at_xfail=no
(
  printf "%s\n" "1534. $at_setup_line: testing $at_desc ..."
  $at_traceon


   cat >moments.sps <<'_ATEOF'
DEBUG MOMENTS ONEPASS/1 2 3 4.
DEBUG MOMENTS ONEPASS/1*5 2*5 3*5 4*5.
DEBUG MOMENTS ONEPASS/1*1 2*2 3*3 4*4.
DEBUG MOMENTS ONEPASS/1*0.
DEBUG MOMENTS ONEPASS/1*1.
DEBUG MOMENTS ONEPASS/1*2.
DEBUG MOMENTS ONEPASS/1*3.
DEBUG MOMENTS ONEPASS/1*2 3.
DEBUG MOMENTS ONEPASS/1 1.00000001.
DEBUG MOMENTS ONEPASS/1000001 1000002 1000003 1000004.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/moments.at:45: pspp --testing-mode --no-output moments.sps"
at_fn_check_prepare_trace "moments.at:45"
( $at_check_trace; pspp --testing-mode --no-output moments.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "W=4.000 M1=2.500 M2=1.667 M3=0.000 M4=-1.200
W=20.000 M1=2.500 M2=1.316 M3=0.000 M4=-1.401
W=10.000 M1=3.000 M2=1.111 M3=-0.712 M4=-0.450
W=0.000 M1=sysmis M2=sysmis M3=sysmis M4=sysmis
W=1.000 M1=1.000 M2=sysmis M3=sysmis M4=sysmis
W=2.000 M1=1.000 M2=0.000 M3=sysmis M4=sysmis
W=3.000 M1=1.000 M2=0.000 M3=sysmis M4=sysmis
W=3.000 M1=1.667 M2=1.333 M3=1.732 M4=sysmis
W=2.000 M1=1.000 M2=0.000 M3=sysmis M4=sysmis
W=4.000 M1=1000002.500 M2=1.667 M3=0.000 M4=-1.200
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/moments.at:45"
$at_failed && at_fn_log_failure  \
"moments.sps"
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1534
#AT_START_1535
at_fn_group_banner 1535 'randist.at:114' \
  "random distributions -- beta" "                   " 146
at_xfail=no
(
  printf "%s\n" "1535. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >beta.in <<'_ATEOF'
       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
_ATEOF

   cat >beta.sps <<'_ATEOF'
DATA LIST LIST FILE='beta.in' NOTABLE SKIP=1
	/P a b Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.beta(P, a, b).
COMPUTE cdf = cdf.beta(x, a, b).
COMPUTE pdf = pdf.beta(x, a, b).
DO IF $CASENUM = 1.
PRINT OUTFILE='beta.out'/"       P        a        b          x        cdf        pdf ".
END IF.
PRINT OUTFILE='beta.out'/P a b x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:114: pspp -O format=csv beta.sps"
at_fn_check_prepare_trace "randist.at:114"
( $at_check_trace; pspp -O format=csv beta.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:114: randist_compare beta.in beta.out"
at_fn_check_prepare_trace "randist.at:114"
( $at_check_trace; randist_compare beta.in beta.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1535
#AT_START_1536
at_fn_group_banner 1536 'randist.at:349' \
  "random distributions -- cauchy" "                 " 146
at_xfail=no
(
  printf "%s\n" "1536. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >cauchy.in <<'_ATEOF'
       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
_ATEOF

   cat >cauchy.sps <<'_ATEOF'
DATA LIST LIST FILE='cauchy.in' NOTABLE SKIP=1
	/P a b Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.cauchy(P, a, b).
COMPUTE cdf = cdf.cauchy(x, a, b).
COMPUTE pdf = pdf.cauchy(x, a, b).
DO IF $CASENUM = 1.
PRINT OUTFILE='cauchy.out'/"       P        a        b          x        cdf        pdf ".
END IF.
PRINT OUTFILE='cauchy.out'/P a b x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:349: pspp -O format=csv cauchy.sps"
at_fn_check_prepare_trace "randist.at:349"
( $at_check_trace; pspp -O format=csv cauchy.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:349"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:349: randist_compare cauchy.in cauchy.out"
at_fn_check_prepare_trace "randist.at:349"
( $at_check_trace; randist_compare cauchy.in cauchy.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:349"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1536
#AT_START_1537
at_fn_group_banner 1537 'randist.at:958' \
  "random distributions -- chisq" "                  " 146
at_xfail=no
(
  printf "%s\n" "1537. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >chisq.in <<'_ATEOF'
       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
_ATEOF

   cat >chisq.sps <<'_ATEOF'
DATA LIST LIST FILE='chisq.in' NOTABLE SKIP=1
	/P df Xx Xcdf Xpdf Xsig.
NUMERIC x cdf pdf sig (F10.4).
COMPUTE x = IDF.chisq(P, df).
COMPUTE cdf = cdf.chisq(x, df).
COMPUTE pdf = pdf.chisq(x, df).
COMPUTE sig = sig.chisq(x, df).
DO IF $CASENUM = 1.
PRINT OUTFILE='chisq.out'/"       P       df          x        cdf        pdf        sig ".
END IF.
PRINT OUTFILE='chisq.out'/P df x cdf pdf sig.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:958: pspp -O format=csv chisq.sps"
at_fn_check_prepare_trace "randist.at:958"
( $at_check_trace; pspp -O format=csv chisq.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:958"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:958: randist_compare chisq.in chisq.out"
at_fn_check_prepare_trace "randist.at:958"
( $at_check_trace; randist_compare chisq.in chisq.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:958"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1537
#AT_START_1538
at_fn_group_banner 1538 'randist.at:1006' \
  "random distributions -- exp" "                    " 146
at_xfail=no
(
  printf "%s\n" "1538. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >exp.in <<'_ATEOF'
       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
_ATEOF

   cat >exp.sps <<'_ATEOF'
DATA LIST LIST FILE='exp.in' NOTABLE SKIP=1
	/P a Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.exp(P, a).
COMPUTE cdf = cdf.exp(x, a).
COMPUTE pdf = pdf.exp(x, a).
DO IF $CASENUM = 1.
PRINT OUTFILE='exp.out'/"       P        a          x        cdf        pdf ".
END IF.
PRINT OUTFILE='exp.out'/P a x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1006: pspp -O format=csv exp.sps"
at_fn_check_prepare_trace "randist.at:1006"
( $at_check_trace; pspp -O format=csv exp.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1006"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1006: randist_compare exp.in exp.out"
at_fn_check_prepare_trace "randist.at:1006"
( $at_check_trace; randist_compare exp.in exp.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1006"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1538
#AT_START_1539
at_fn_group_banner 1539 'randist.at:1054' \
  "random distributions -- f" "                      " 146
at_xfail=no
(
  printf "%s\n" "1539. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >f.in <<'_ATEOF'
       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
_ATEOF

   cat >f.sps <<'_ATEOF'
DATA LIST LIST FILE='f.in' NOTABLE SKIP=1
	/P df1 df2 Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.f(P, df1, df2).
COMPUTE cdf = cdf.f(x, df1, df2).
COMPUTE pdf = pdf.f(x, df1, df2).
DO IF $CASENUM = 1.
PRINT OUTFILE='f.out'/"       P      df1      df2          x        cdf        pdf ".
END IF.
PRINT OUTFILE='f.out'/P df1 df2 x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1054: pspp -O format=csv f.sps"
at_fn_check_prepare_trace "randist.at:1054"
( $at_check_trace; pspp -O format=csv f.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1054"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1054: randist_compare f.in f.out"
at_fn_check_prepare_trace "randist.at:1054"
( $at_check_trace; randist_compare f.in f.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1054"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1539
#AT_START_1540
at_fn_group_banner 1540 'randist.at:1234' \
  "random distributions -- gamma" "                  " 146
at_xfail=no
(
  printf "%s\n" "1540. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >gamma.in <<'_ATEOF'
       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
_ATEOF

   cat >gamma.sps <<'_ATEOF'
DATA LIST LIST FILE='gamma.in' NOTABLE SKIP=1
	/P a b Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.gamma(P, a, b).
COMPUTE cdf = cdf.gamma(x, a, b).
COMPUTE pdf = pdf.gamma(x, a, b).
DO IF $CASENUM = 1.
PRINT OUTFILE='gamma.out'/"       P        a        b          x        cdf        pdf ".
END IF.
PRINT OUTFILE='gamma.out'/P a b x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1234: pspp -O format=csv gamma.sps"
at_fn_check_prepare_trace "randist.at:1234"
( $at_check_trace; pspp -O format=csv gamma.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1234"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1234: randist_compare gamma.in gamma.out"
at_fn_check_prepare_trace "randist.at:1234"
( $at_check_trace; randist_compare gamma.in gamma.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1234"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1540
#AT_START_1541
at_fn_group_banner 1541 'randist.at:1458' \
  "random distributions -- laplace" "                " 146
at_xfail=no
(
  printf "%s\n" "1541. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >laplace.in <<'_ATEOF'
       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
_ATEOF

   cat >laplace.sps <<'_ATEOF'
DATA LIST LIST FILE='laplace.in' NOTABLE SKIP=1
	/P a b Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.laplace(P, a, b).
COMPUTE cdf = cdf.laplace(x, a, b).
COMPUTE pdf = pdf.laplace(x, a, b).
DO IF $CASENUM = 1.
PRINT OUTFILE='laplace.out'/"       P        a        b          x        cdf        pdf ".
END IF.
PRINT OUTFILE='laplace.out'/P a b x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1458: pspp -O format=csv laplace.sps"
at_fn_check_prepare_trace "randist.at:1458"
( $at_check_trace; pspp -O format=csv laplace.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1458"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1458: randist_compare laplace.in laplace.out"
at_fn_check_prepare_trace "randist.at:1458"
( $at_check_trace; randist_compare laplace.in laplace.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1458"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1541
#AT_START_1542
at_fn_group_banner 1542 'randist.at:1682' \
  "random distributions -- logistic" "               " 146
at_xfail=no
(
  printf "%s\n" "1542. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >logistic.in <<'_ATEOF'
       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
_ATEOF

   cat >logistic.sps <<'_ATEOF'
DATA LIST LIST FILE='logistic.in' NOTABLE SKIP=1
	/P a b Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.logistic(P, a, b).
COMPUTE cdf = cdf.logistic(x, a, b).
COMPUTE pdf = pdf.logistic(x, a, b).
DO IF $CASENUM = 1.
PRINT OUTFILE='logistic.out'/"       P        a        b          x        cdf        pdf ".
END IF.
PRINT OUTFILE='logistic.out'/P a b x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1682: pspp -O format=csv logistic.sps"
at_fn_check_prepare_trace "randist.at:1682"
( $at_check_trace; pspp -O format=csv logistic.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1682"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1682: randist_compare logistic.in logistic.out"
at_fn_check_prepare_trace "randist.at:1682"
( $at_check_trace; randist_compare logistic.in logistic.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1682"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1542
#AT_START_1543
at_fn_group_banner 1543 'randist.at:1906' \
  "random distributions -- lnormal" "                " 146
at_xfail=no
(
  printf "%s\n" "1543. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >lnormal.in <<'_ATEOF'
       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
_ATEOF

   cat >lnormal.sps <<'_ATEOF'
DATA LIST LIST FILE='lnormal.in' NOTABLE SKIP=1
	/P z s Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.lnormal(P, z, s).
COMPUTE cdf = cdf.lnormal(x, z, s).
COMPUTE pdf = pdf.lnormal(x, z, s).
DO IF $CASENUM = 1.
PRINT OUTFILE='lnormal.out'/"       P        z        s          x        cdf        pdf ".
END IF.
PRINT OUTFILE='lnormal.out'/P z s x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1906: pspp -O format=csv lnormal.sps"
at_fn_check_prepare_trace "randist.at:1906"
( $at_check_trace; pspp -O format=csv lnormal.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1906"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:1906: randist_compare lnormal.in lnormal.out"
at_fn_check_prepare_trace "randist.at:1906"
( $at_check_trace; randist_compare lnormal.in lnormal.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:1906"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1543
#AT_START_1544
at_fn_group_banner 1544 'randist.at:2086' \
  "random distributions -- normal" "                 " 146
at_xfail=no
(
  printf "%s\n" "1544. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >normal.in <<'_ATEOF'
       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
_ATEOF

   cat >normal.sps <<'_ATEOF'
DATA LIST LIST FILE='normal.in' NOTABLE SKIP=1
	/P u s Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.normal(P, u, s).
COMPUTE cdf = cdf.normal(x, u, s).
COMPUTE pdf = pdf.normal(x, u, s).
DO IF $CASENUM = 1.
PRINT OUTFILE='normal.out'/"       P        u        s          x        cdf        pdf ".
END IF.
PRINT OUTFILE='normal.out'/P u s x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2086: pspp -O format=csv normal.sps"
at_fn_check_prepare_trace "randist.at:2086"
( $at_check_trace; pspp -O format=csv normal.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2086"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2086: randist_compare normal.in normal.out"
at_fn_check_prepare_trace "randist.at:2086"
( $at_check_trace; randist_compare normal.in normal.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2086"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1544
#AT_START_1545
at_fn_group_banner 1545 'randist.at:2310' \
  "random distributions -- pareto" "                 " 146
at_xfail=no
(
  printf "%s\n" "1545. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >pareto.in <<'_ATEOF'
       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
_ATEOF

   cat >pareto.sps <<'_ATEOF'
DATA LIST LIST FILE='pareto.in' NOTABLE SKIP=1
	/P a b Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.pareto(P, a, b).
COMPUTE cdf = cdf.pareto(x, a, b).
COMPUTE pdf = pdf.pareto(x, a, b).
DO IF $CASENUM = 1.
PRINT OUTFILE='pareto.out'/"       P        a        b          x        cdf        pdf ".
END IF.
PRINT OUTFILE='pareto.out'/P a b x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2310: pspp -O format=csv pareto.sps"
at_fn_check_prepare_trace "randist.at:2310"
( $at_check_trace; pspp -O format=csv pareto.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2310"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2310: randist_compare pareto.in pareto.out"
at_fn_check_prepare_trace "randist.at:2310"
( $at_check_trace; randist_compare pareto.in pareto.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2310"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1545
#AT_START_1546
at_fn_group_banner 1546 'randist.at:2446' \
  "random distributions -- t" "                      " 146
at_xfail=no
(
  printf "%s\n" "1546. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >t.in <<'_ATEOF'
       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
_ATEOF

   cat >t.sps <<'_ATEOF'
DATA LIST LIST FILE='t.in' NOTABLE SKIP=1
	/P df Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.t(P, df).
COMPUTE cdf = cdf.t(x, df).
COMPUTE pdf = pdf.t(x, df).
DO IF $CASENUM = 1.
PRINT OUTFILE='t.out'/"       P       df          x        cdf        pdf ".
END IF.
PRINT OUTFILE='t.out'/P df x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2446: pspp -O format=csv t.sps"
at_fn_check_prepare_trace "randist.at:2446"
( $at_check_trace; pspp -O format=csv t.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2446"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2446: randist_compare t.in t.out"
at_fn_check_prepare_trace "randist.at:2446"
( $at_check_trace; randist_compare t.in t.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2446"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1546
#AT_START_1547
at_fn_group_banner 1547 'randist.at:2538' \
  "random distributions -- uniform" "                " 146
at_xfail=no
(
  printf "%s\n" "1547. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >uniform.in <<'_ATEOF'
       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
_ATEOF

   cat >uniform.sps <<'_ATEOF'
DATA LIST LIST FILE='uniform.in' NOTABLE SKIP=1
	/P a b Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.uniform(P, a, b).
COMPUTE cdf = cdf.uniform(x, a, b).
COMPUTE pdf = pdf.uniform(x, a, b).
DO IF $CASENUM = 1.
PRINT OUTFILE='uniform.out'/"       P        a        b          x        cdf        pdf ".
END IF.
PRINT OUTFILE='uniform.out'/P a b x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2538: pspp -O format=csv uniform.sps"
at_fn_check_prepare_trace "randist.at:2538"
( $at_check_trace; pspp -O format=csv uniform.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2538"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2538: randist_compare uniform.in uniform.out"
at_fn_check_prepare_trace "randist.at:2538"
( $at_check_trace; randist_compare uniform.in uniform.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2538"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1547
#AT_START_1548
at_fn_group_banner 1548 'randist.at:2718' \
  "random distributions -- weibull" "                " 146
at_xfail=no
(
  printf "%s\n" "1548. $at_setup_line: testing $at_desc ..."
  $at_traceon

   cat >weibull.in <<'_ATEOF'
       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
_ATEOF

   cat >weibull.sps <<'_ATEOF'
DATA LIST LIST FILE='weibull.in' NOTABLE SKIP=1
	/P a b Xx Xcdf Xpdf.
NUMERIC x cdf pdf (F10.4).
COMPUTE x = IDF.weibull(P, a, b).
COMPUTE cdf = cdf.weibull(x, a, b).
COMPUTE pdf = pdf.weibull(x, a, b).
DO IF $CASENUM = 1.
PRINT OUTFILE='weibull.out'/"       P        a        b          x        cdf        pdf ".
END IF.
PRINT OUTFILE='weibull.out'/P a b x cdf pdf.
EXECUTE.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2718: pspp -O format=csv weibull.sps"
at_fn_check_prepare_trace "randist.at:2718"
( $at_check_trace; pspp -O format=csv weibull.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2718"
$at_failed && at_fn_log_failure
$at_traceon; }

   { set +x
printf "%s\n" "$at_srcdir/randist.at:2718: randist_compare weibull.in weibull.out"
at_fn_check_prepare_trace "randist.at:2718"
( $at_check_trace; randist_compare weibull.in weibull.out
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/randist.at:2718"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1548
#AT_START_1549
at_fn_group_banner 1549 'ascii.at:19' \
  "ASCII driver overwriting single-width text" "     " 147
at_xfail=no
(
  printf "%s\n" "1549. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
## overwriting rest of line
# plain
0 0 0 abc
1 0 0 BCD
# emphasized over plain
0 1 0 efg
1 1 1 FGH
# plain over emphasized
0 2 1 ijk
1 2 0 JKL
# emphasized over emphasized
0 3 1 mno
1 3 1 NOP

## overwriting partial line
# plain
0 5 0 abcdef
0 5 0 A
2 5 0 CDE
# emphasized over plain
0 6 0 ghijkl
0 6 1 G
2 6 1 IJK
# plain over emphasized
0 7 1 mnopqr
0 7 0 M
2 7 0 OPQ
# emphasized over emphasized
0 8 1 stuvwx
0 8 1 S
2 8 1 UVW

## overwriting rest of line with double-width characters
# plain
0 10 0 kakiku
2 10 0 きくけ
# emphasized over plain
0 11 0 kakiku
2 11 1 きくけ
# plain over emphasized
0 12 1 kakiku
2 12 0 きくけ
# emphasized over emphasized
0 13 1 kakiku
2 13 1 きくけ

## overwriting partial line with double-width characters
# plain
0 15 0 kakikukeko
0 15 0 か
4 15 0 くけ
# emphasized over plain
0 16 0 kakikukeko
0 16 1 か
4 16 1 くけ
# plain over emphasized
0 17 1 kakikukeko
0 17 0 か
4 17 0 くけ
# emphasized over emphasized
0 18 1 kakikukeko
0 18 1 か
4 18 1 くけ
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:86: ascii-test --emph=none input"
at_fn_check_prepare_trace "ascii.at:86"
( $at_check_trace; ascii-test --emph=none input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "aBCD
eFGH
iJKL
mNOP

AbCDEf
GhIJKl
MnOPQr
StUVWx

kaきくけ
kaきくけ
kaきくけ
kaきくけ

かkiくけko
かkiくけko
かkiくけko
かkiくけko
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:86"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:107: ascii-test --emph=bold input"
at_fn_check_prepare_trace "ascii.at:107"
( $at_check_trace; ascii-test --emph=bold input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "aBCD
eFFGGHH
iiJKL
mmNNOOPP

AbCDEf
GGhIIJJKKl
MnnOPQrr
SSttUUVVWWxx

kaきくけ
kaききくくけけ
kkaaきくけ
kkaaききくくけけ

かkiくけko
かかkiくくけけko
かkkiiくけkkoo
かかkkiiくくけけkkoo
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:107"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:128: ascii-test --emph=underline input"
at_fn_check_prepare_trace "ascii.at:128"
( $at_check_trace; ascii-test --emph=underline input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "aBCD
e_F_G_H
_iJKL
_m_N_O_P

AbCDEf
_Gh_I_J_Kl
M_nOPQ_r
_S_t_U_V_W_x

kaきくけ
ka_き_く_け
_k_aきくけ
_k_a_き_く_け

かkiくけko
_かki_く_けko
か_k_iくけ_k_o
_か_k_i_く_け_k_o
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:128"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1549
#AT_START_1550
at_fn_group_banner 1550 'ascii.at:151' \
  "ASCII driver overwriting double-width text" "     " 147
at_xfail=no
(
  printf "%s\n" "1550. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
## overwrite rest of line, aligned double-width over double-width
# plain
0 0 0 あいう
2 0 0 きくけ
# emphasized over plain
0 1 0 あいう
2 1 1 きくけ
# plain over emphasized
0 2 1 あいう
2 2 0 きくけ
# emphasized over emphasized
0 3 1 あいう
2 3 1 きくけ

## overwrite rest of line, misaligned double-width over double-width
# plain
0 5 0 あいう
3 5 0 きくけ
# emphasized over plain
0 6 0 あいう
3 6 1 きくけ
# plain over emphasized
0 7 1 あいう
3 7 0 きくけ
# emphasized over emphasized
0 8 1 あいう
3 8 1 きくけ

## overwrite partial line, aligned double-width over double-width
# plain
0 10 0 あいうえお
0 10 0 か
4 10 0 くけ
# emphasized over plain
0 11 0 あいうえお
0 11 1 か
4 11 1 くけ
# plain over emphasized
0 12 1 あいうえお
0 12 0 か
4 12 0 くけ
# emphasized over emphasized
0 13 1 あいうえお
0 13 1 か
4 13 1 くけ

## overwrite partial line, misaligned double-width over double-width
# plain
0 15 0 あいうえおさ
1 15 0 か
5 15 0 くけ
# emphasized over plain
0 16 0 あいうえおさ
1 16 1 か
5 16 1 くけ
# plain over emphasized
0 17 1 あいうえおさ
1 17 0 か
5 17 0 くけ
# emphasized over emphasized
0 18 1 あいうえおさ
1 18 1 か
5 18 1 くけ

## overwrite rest of line, aligned single-width over double-width
# plain
0 20 0 あいう
2 20 0 kikuko
# emphasized over plain
0 21 0 あいう
2 21 1 kikuko
# plain over emphasized
0 22 1 あいう
2 22 0 kikuko
# emphasized over emphasized
0 23 1 あいう
2 23 1 kikuko

## overwrite rest of line, misaligned single-width over double-width
# plain
0 25 0 あいう
3 25 0 kikuko
# emphasized over plain
0 26 0 あいう
3 26 1 kikuko
# plain over emphasized
0 27 1 あいう
3 27 0 kikuko
# emphasized over emphasized
0 28 1 あいう
3 28 1 kikuko

## overwrite partial line, aligned single-width over double-width
# plain
0 30 0 あいうえお
0 30 0 ka
4 30 0 kuke
# emphasized over plain
0 31 0 あいうえお
0 31 1 ka
4 31 1 kuke
# plain over emphasized
0 32 1 あいうえお
0 32 0 ka
4 32 0 kuke
# emphasized over emphasized
0 33 1 あいうえお
0 33 1 ka
4 33 1 kuke

## overwrite partial line, misaligned single-width over double-width
# plain
0 35 0 あいうえおさ
1 35 0 a
5 35 0 kuke
# emphasized over plain
0 36 0 あいうえおさ
1 36 1 a
5 36 1 kuke
# plain over emphasized
0 37 1 あいうえおさ
1 37 0 a
5 37 0 kuke
# emphasized over emphasized
0 38 1 あいうえおさ
1 38 1 a
5 38 1 kuke
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:282: ascii-test --emph=none input"
at_fn_check_prepare_trace "ascii.at:282"
( $at_check_trace; ascii-test --emph=none input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "あきくけ
あきくけ
あきくけ
あきくけ

あ?きくけ
あ?きくけ
あ?きくけ
あ?きくけ

かいくけお
かいくけお
かいくけお
かいくけお

?か??くけ?さ
?か??くけ?さ
?か??くけ?さ
?か??くけ?さ

あkikuko
あkikuko
あkikuko
あkikuko

あ?kikuko
あ?kikuko
あ?kikuko
あ?kikuko

kaいkukeお
kaいkukeお
kaいkukeお
kaいkukeお

?aい?kuke?さ
?aい?kuke?さ
?aい?kuke?さ
?aい?kuke?さ
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:282"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:323: ascii-test --emph=bold input"
at_fn_check_prepare_trace "ascii.at:323"
( $at_check_trace; ascii-test --emph=bold input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "あきくけ
あききくくけけ
ああきくけ
ああききくくけけ

あ?きくけ
あ?ききくくけけ
ああ?きくけ
ああ?ききくくけけ

かいくけお
かかいくくけけお
かいいくけおお
かかいいくくけけおお

?か??くけ?さ
?かか??くくけけ?さ
?か??くけ?ささ
?かか??くくけけ?ささ

あkikuko
あkkiikkuukkoo
ああkikuko
ああkkiikkuukkoo

あ?kikuko
あ?kkiikkuukkoo
ああ?kikuko
ああ?kkiikkuukkoo

kaいkukeお
kkaaいkkuukkeeお
kaいいkukeおお
kkaaいいkkuukkeeおお

?aい?kuke?さ
?aaい?kkuukkee?さ
?aいい?kuke?ささ
?aaいい?kkuukkee?ささ
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:323"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:364: ascii-test --emph=underline input"
at_fn_check_prepare_trace "ascii.at:364"
( $at_check_trace; ascii-test --emph=underline input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "あきくけ
あ_き_く_け
_あきくけ
_あ_き_く_け

あ?きくけ
あ?_き_く_け
_あ?きくけ
_あ?_き_く_け

かいくけお
_かい_く_けお
か_いくけ_お
_か_い_く_け_お

?か??くけ?さ
?_か??_く_け?さ
?か??くけ?_さ
?_か??_く_け?_さ

あkikuko
あ_k_i_k_u_k_o
_あkikuko
_あ_k_i_k_u_k_o

あ?kikuko
あ?_k_i_k_u_k_o
_あ?kikuko
_あ?_k_i_k_u_k_o

kaいkukeお
_k_aい_k_u_k_eお
ka_いkuke_お
_k_a_い_k_u_k_e_お

?aい?kuke?さ
?_aい?_k_u_k_e?さ
?a_い?kuke?_さ
?_a_い?_k_u_k_e?_さ
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:364"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1550
#AT_START_1551
at_fn_group_banner 1551 'ascii.at:407' \
  "ASCII driver overwriting combining characters" "  " 147
at_xfail=no
(
  printf "%s\n" "1551. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
## overwriting rest of line, ordinary over combining
# plain
0 0 0 àéî
1 0 0 xyz
# emphasized over plain
0 1 0 àéî
1 1 1 xyz
# plain over emphasized
0 2 1 àéî
1 2 0 xyz
# emphasized over emphasized
0 3 1 àéî
1 3 1 xyz

## overwriting rest of line, combining over ordinary
# plain
0 5 0 xyz
1 5 0 àéî
# emphasized over plain
0 6 0 xyz
1 6 1 àéî
# plain over emphasized
0 7 1 xyz
1 7 0 àéî
# emphasized over emphasized
0 8 1 xyz
1 8 1 àéî

## overwriting partial line, ordinary over combining
# plain
0 10 0 àéîo̧ũẙ
0 10 0 a
2 10 0 iou
# emphasized over plain
0 11 0 àéîo̧ũẙ
0 11 1 a
2 11 1 iou
# plain over emphasized
0 12 1 àéîo̧ũẙ
0 12 0 a
2 12 0 iou
# emphasized over emphasized
0 13 1 àéîo̧ũẙ
0 13 1 a
2 13 1 iou

## overwriting partial line, combining over ordinary
# plain
0 15 0 aeiouy
0 15 0 à
2 15 0 îo̧ũ
# emphasized over plain
0 16 0 aeiouy
0 16 1 à
2 16 1 îo̧ũ
# plain over emphasized
0 17 1 aeiouy
0 17 0 à
2 17 0 îo̧ũ
# emphasized over emphasized
0 18 1 aeiouy
0 18 1 à
2 18 1 îo̧ũ
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:474: ascii-test --emph=none input"
at_fn_check_prepare_trace "ascii.at:474"
( $at_check_trace; ascii-test --emph=none input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "àxyz
àxyz
àxyz
àxyz

xàéî
xàéî
xàéî
xàéî

aéiouẙ
aéiouẙ
aéiouẙ
aéiouẙ

àeîo̧ũy
àeîo̧ũy
àeîo̧ũy
àeîo̧ũy
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:474"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:495: ascii-test --emph=bold input"
at_fn_check_prepare_trace "ascii.at:495"
( $at_check_trace; ascii-test --emph=bold input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "àxyz
àxxyyzz
aàxyz
aàxxyyzz

xàéî
xaàeéiî
xxàéî
xxaàeéiî

aéiouẙ
aaéiioouuẙ
aeéiouyẙ
aaeéiioouuyẙ

àeîo̧ũy
aàeiîoo̧uũy
àeeîo̧ũyy
aàeeiîoo̧uũyy
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:495"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:516: ascii-test --emph=underline input"
at_fn_check_prepare_trace "ascii.at:516"
( $at_check_trace; ascii-test --emph=underline input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "àxyz
à_x_y_z
_àxyz
_à_x_y_z

xàéî
x_à_é_î
_xàéî
_x_à_é_î

aéiouẙ
_aé_i_o_uẙ
a_éiou_ẙ
_a_é_i_o_u_ẙ

àeîo̧ũy
_àe_î_o̧_ũy
à_eîo̧ũ_y
_à_e_î_o̧_ũ_y
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:516"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1551
#AT_START_1552
at_fn_group_banner 1552 'ascii.at:539' \
  "ASCII driver u8_line_set_length" "                " 147
at_xfail=no
(
  printf "%s\n" "1552. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >input <<'_ATEOF'
0 0 0 àéî
0 1 0 àéî
0 2 0 àéî
0 3 0 àéî
0 4 0 àéî
set-length 0 4
set-length 1 3
set-length 2 2
set-length 3 1
set-length 4 0

0 5 0 あい
0 6 0 あい
0 7 0 あい
0 8 0 あい
0 9 0 あい
0 10 0 あい
set-length 5 5
set-length 6 4
set-length 7 3
set-length 8 2
set-length 9 1
set-length 10 0
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:566: ascii-test input"
at_fn_check_prepare_trace "ascii.at:566"
( $at_check_trace; ascii-test input
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "àéî
àéî
àé
à

あい
あい
あ?
あ
?
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:566"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1552
#AT_START_1553
at_fn_group_banner 1553 'ascii.at:580' \
  "ASCII driver syntax printback" "                  " 147
at_xfail=no
(
  printf "%s\n" "1553. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >ascii.sps <<'_ATEOF'
SET PRINTBACK=ON.
DATA LIST LIST /x * y * a (a23).
BEGIN DATA.
1 11 One
2 22 Two
3 33 Three
END DATA.

REGRESSION
/VARIABLES= a
/DEPENDENT= x y
/STATISTICS=COEFF R ANOVA.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/ascii.at:595: pspp ascii.sps"
at_fn_check_prepare_trace "ascii.at:595"
( $at_check_trace; pspp ascii.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "SET PRINTBACK=ON.

DATA LIST LIST /x * y * a (a23).

Reading free-form data from INLINE.
+--------+------+
|Variable|Format|
+--------+------+
|x       |F8.0  |
|y       |F8.0  |
|a       |A23   |
+--------+------+

BEGIN DATA.
1 11 One
2 22 Two
3 33 Three
END DATA.


REGRESSION
/VARIABLES= a

ascii.sps:10.13: warning: REGRESSION: a is not a numeric variable.  It will not
be included in the variable list.
   10 | /VARIABLES= a
      |             ^

/DEPENDENT= x y
/STATISTICS=COEFF R ANOVA.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:595"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1553
#AT_START_1554
at_fn_group_banner 1554 'ascii.at:630' \
  "ASCII unicode box chars" "                        " 147
at_xfail=no
(
  printf "%s\n" "1554. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >uc.sps <<'_ATEOF'
SET FORMAT=F8.4.
DATA LIST NOTABLE LIST /x * .
BEGIN DATA.
1
2
3
END DATA.

DESCRIPTIVES X.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/ascii.at:645: pspp -O box=unicode uc.sps"
at_fn_check_prepare_trace "ascii.at:645"
( $at_check_trace; pspp -O box=unicode uc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "                 Descriptive Statistics
╭────────────────────┬─┬──────┬───────┬───────┬───────╮
│                    │N│ Mean │Std Dev│Minimum│Maximum│
├────────────────────┼─┼──────┼───────┼───────┼───────┤
│x                   │3│2.0000│ 1.0000│ 1.0000│ 3.0000│
│Valid N (listwise)  │3│      │       │       │       │
│Missing N (listwise)│0│      │       │       │       │
╰────────────────────┴─┴──────┴───────┴───────┴───────╯
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:645"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1554
#AT_START_1555
at_fn_group_banner 1555 'ascii.at:658' \
  "ASCII crash on empty line" "                      " 147
at_xfail=no
(
  printf "%s\n" "1555. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >print.sps <<'_ATEOF'
data list notable /x y 1-2.
begin data.
12
end data.

print.

execute.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/ascii.at:671: pspp print.sps"
at_fn_check_prepare_trace "ascii.at:671"
( $at_check_trace; pspp print.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:671"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1555
#AT_START_1556
at_fn_group_banner 1556 'ascii.at:679' \
  "ASCII crash on non-printables" "                  " 147
at_xfail=no
(
  printf "%s\n" "1556. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >nonprint.sps <<'_ATEOF'
DATA LIST FREE /s8 (a8).
BEGIN DATA.
xxxxxx zzz  a qqq
END DATA.

LIST.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/ascii.at:690: pspp nonprint.sps"
at_fn_check_prepare_trace "ascii.at:690"
( $at_check_trace; pspp nonprint.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/ascii.at:690"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1556
#AT_START_1557
at_fn_group_banner 1557 'charts.at:24' \
  "Examine" "                                        " 148
at_xfail=no
(
  printf "%s\n" "1557. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >charts.sps <<'_ATEOF'

input program.
loop #i = 1 to 1000.
 compute x  = rv.normal (56, 3) + rv.uniform (1, 1).
 compute y  = rv.normal (6, 2) + rv.uniform (1, 2).
 compute A  = rv.uniform (-1, 1).
  compute A = (A > 0).
 end case.
end loop.
end file.
end input program.

examine x y by a
	/plot = histogram, npplot spreadlevel(1)
	.

examine x y by a
	/compare = groups
	/plot = boxplot
	.

examine x y by a
	/compare = variables
	/plot = boxplot
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/charts.at:53: pspp -o pspp.txt charts.sps"
at_fn_check_prepare_trace "charts.at:53"
( $at_check_trace; pspp -o pspp.txt charts.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/charts.at:53"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1557
#AT_START_1558
at_fn_group_banner 1558 'charts.at:57' \
  "Roc" "                                            " 148
at_xfail=no
(
  printf "%s\n" "1558. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >roc.sps <<'_ATEOF'

data list list /fred * group * w *.
begin data.
99  0 1000
99  1 3
97  0 908
97  1 2
95  0 904
96  1 7
94  1 9
93  0 823
93  1 12
90  0 723
90  1 42
84  0 523
84  1 98
73  0 500
75  1 180
63  0 520
69  1 320
60  0 510
60  1 418
50  0 488
54  1 432
46  0 428
43  1 528
36  0 324
36  1 612
26  0 294
28  1 682
20  0 119
20  1 719
10  0 97
10  1 809
end data.

weight by w.

compute bert = fred + (group < 0.5) * 45.
compute charlie = fred + (group > 0.5) * 15.


ROC /fred bert charlie by group (0)
	/plot = curve (reference).

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/charts.at:105: pspp -o pspp.txt roc.sps"
at_fn_check_prepare_trace "charts.at:105"
( $at_check_trace; pspp -o pspp.txt roc.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/charts.at:105"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1558
#AT_START_1559
at_fn_group_banner 1559 'charts.at:112' \
  "Scree" "                                          " 148
at_xfail=no
(
  printf "%s\n" "1559. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >scree.sps <<'_ATEOF'

input program.
vector vec(10).
loop #i = 1 to 100.
 loop #v = 1 to 3.
 compute vec(#v) = rv.normal (0, 45).
 end loop.
 loop #v = 4 to 10.
 compute vec(#v) = vec (#v - 3) + rv.normal (0, 30).
 end loop.
 end case.
end loop.
end file.
end input program.


factor /variables = all
        /print initial
	/plot = eigen.

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/charts.at:135: pspp -o pspp.txt scree.sps"
at_fn_check_prepare_trace "charts.at:135"
( $at_check_trace; pspp -o pspp.txt scree.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/charts.at:135"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1559
#AT_START_1560
at_fn_group_banner 1560 'charts.at:140' \
  "Histogram" "                                      " 148
at_xfail=no
(
  printf "%s\n" "1560. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >histogram.sps <<'_ATEOF'

* This test is designed to "torture" the code which
  generates histograms.  It is no-crash test. However
  the code is rich in assertions, so any problems we
  hope will be caught there.


input program.
loop #i = 1 to 1000.
 compute pos  = rv.normal (56, 3) + rv.uniform (1, 1).
 compute neg  = rv.normal (-86, 2) + rv.uniform (1, 1).
 compute pn  = rv.normal (0, 2) + rv.uniform (1, 2).
 compute A  = rv.uniform (-1, 1).
  compute A = (A > 0).
 end case.
end loop.
end file.
end input program.


examine pos neg pn by a
	/plot = histogram
	.

frequencies pos neg pn
	/format=notable
	/histogram=normal.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/charts.at:172: pspp --testing-mode -o pspp.txt histogram.sps"
at_fn_check_prepare_trace "charts.at:172"
( $at_check_trace; pspp --testing-mode -o pspp.txt histogram.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/charts.at:172"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1560
#AT_START_1561
at_fn_group_banner 1561 'charts.at:177' \
  "FREQUENCIES charts" "                             " 148
at_xfail=no
(
  printf "%s\n" "1561. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >xxx.sps <<'_ATEOF'

DATA LIST LIST /nationality (A10)  religion (A20) gender (A8).
BEGIN DATA.
Australian  Sikh      Male
Australian  Sikh      Male
Australian  Sikh      Male
Australian  Sikh      Male
British     Zoroastrian Female
British     Buddist   Female
British     Buddist   Female
British      Zoroastrian Female
German      Muslim    Male
German      Christian Male
German      Christian Female
German      Christian Male
German      Zoroastrian Female
German      Sikh   Female
German      Muslim Female
German      Pastafarian Female
German      "Jedi Knight" Female
Belgian     Sikh      Male
French       Muslim      Male
French       Muslim      Male
French       Christian      Male
END DATA.


FREQUENCIES /VARIABLES=religion nationality /BARCHART /PIECHART.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/charts.at:209: pspp  -o pspp.txt xxx.sps"
at_fn_check_prepare_trace "charts.at:209"
( $at_check_trace; pspp  -o pspp.txt xxx.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/charts.at:209"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1561
#AT_START_1562
at_fn_group_banner 1562 'charts.at:215' \
  "CROSSTABS charts" "                               " 148
at_xfail=no
(
  printf "%s\n" "1562. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >xxx.sps <<'_ATEOF'

DATA LIST LIST /nationality (A10)  religion (A20) gender (A8).
BEGIN DATA.
Australian  Sikh      Male
Australian  Sikh      Male
Australian  Sikh      Male
Australian  Sikh      Male
British     Zoroastrian Female
British     Buddist   Female
British     Buddist   Female
British      Zoroastrian Female
German      Muslim    Male
German      Christian Male
German      Christian Female
German      Christian Male
German      Zoroastrian Female
German      Sikh   Female
German      Muslim Female
German      Pastafarian Female
German      "Jedi Knight" Female
Belgian     Sikh      Male
French       Muslim      Male
French       Muslim      Male
French       Christian      Male
END DATA.


CROSSTABS
	  /tables = nationality by religion by gender
	  /tables = nationality by religion
	  /tables = religion by gender
	  /tables = nationality by religion by gender
	  /barchart.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/charts.at:252: pspp  -o pspp.txt xxx.sps"
at_fn_check_prepare_trace "charts.at:252"
( $at_check_trace; pspp  -o pspp.txt xxx.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/charts.at:252"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1562
#AT_START_1563
at_fn_group_banner 1563 'charts.at:259' \
  "BOXPLOT Empty" "                                  " 148
at_xfail=no
(
  printf "%s\n" "1563. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >bp.sps <<'_ATEOF'

DATA LIST LIST /X * Y * .
BEGIN DATA
1
2
2
2
3
END DATA

EXAMINE
    /VARIABLES = Y
    /PLOT = BOXPLOT.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/charts.at:276: pspp -o pspp.txt bp.sps"
at_fn_check_prepare_trace "charts.at:276"
( $at_check_trace; pspp -o pspp.txt bp.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/charts.at:276"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1563
#AT_START_1564
at_fn_group_banner 1564 'html.at:19' \
  "HTML bug" "                                       " 149
at_xfail=no
(
  printf "%s\n" "1564. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >foo.sps <<'_ATEOF'
data list notable list /w l96_r l99_r l102_r *.
begin data.
15  0 0 0
 1  1 1 1
 2  1 1 2
 1  1 2 1
 1  1 2 2
 1  2 1 1
 4  2 2 1
 2  2 2 2
end data.

weight by w.

crosstabs
	/tables=l96_r by l99_r by l102_r
	/format=avalue table
	/statistics=none
	/cell=count.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/html.at:43: pspp -O format=html foo.sps"
at_fn_check_prepare_trace "html.at:43"
( $at_check_trace; pspp -O format=html foo.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/html.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1564
#AT_START_1565
at_fn_group_banner 1565 'journal.at:3' \
  "enable and disable journal" "                     " 150
at_xfail=no
(
  printf "%s\n" "1565. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >journal.sps <<'_ATEOF'
set journal='pspp.jnl' on.
data list notable /x y 1-2.
begin data.
12
end data.
set journal=off.

print.

execute.
set journal=on.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/journal.at:18: pspp journal.sps"
at_fn_check_prepare_trace "journal.at:18"
( $at_check_trace; pspp journal.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/journal.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/journal.at:19: sed 's/ at.*/./' pspp.jnl"
at_fn_check_prepare_trace "journal.at:19"
( $at_check_trace; sed 's/ at.*/./' pspp.jnl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "* New session.
set journal='pspp.jnl' on.
data list notable /x y 1-2.
begin data.
12
end data.

* New session.
set journal=on.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/journal.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1565
#AT_START_1566
at_fn_group_banner 1566 'output.at:39' \
  "output csv to unwritable directory" "             " 151
at_xfail=no
(
  printf "%s\n" "1566. $at_setup_line: testing $at_desc ..."
  $at_traceon

   mkdir unwritable
   chmod u-w unwritable
   printf "%s\n" "output.at:39" >"$at_check_line_file"
(: > unwritable/test) \
  && at_fn_check_skip 77 "$at_srcdir/output.at:39"
   cat >unwritable.sps <<'_ATEOF'
data list /x 1.
begin data.
1
2
3
end data.
frequencies x/histogram.
_ATEOF

         { set +x
printf "%s\n" "$at_srcdir/output.at:39: cd unwritable && pspp -o pspp.csv ../unwritable.sps"
at_fn_check_prepare_trace "output.at:39"
( $at_check_trace; cd unwritable && pspp -o pspp.csv ../unwritable.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/output.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1566
#AT_START_1567
at_fn_group_banner 1567 'output.at:40' \
  "output html to unwritable directory" "            " 151
at_xfail=no
(
  printf "%s\n" "1567. $at_setup_line: testing $at_desc ..."
  $at_traceon

   mkdir unwritable
   chmod u-w unwritable
   printf "%s\n" "output.at:40" >"$at_check_line_file"
(: > unwritable/test) \
  && at_fn_check_skip 77 "$at_srcdir/output.at:40"
   cat >unwritable.sps <<'_ATEOF'
data list /x 1.
begin data.
1
2
3
end data.
frequencies x/histogram.
_ATEOF

         { set +x
printf "%s\n" "$at_srcdir/output.at:40: cd unwritable && pspp -o pspp.html ../unwritable.sps"
at_fn_check_prepare_trace "output.at:40"
( $at_check_trace; cd unwritable && pspp -o pspp.html ../unwritable.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/output.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1567
#AT_START_1568
at_fn_group_banner 1568 'output.at:41' \
  "output odt to unwritable directory" "             " 151
at_xfail=no
(
  printf "%s\n" "1568. $at_setup_line: testing $at_desc ..."
  $at_traceon

   mkdir unwritable
   chmod u-w unwritable
   printf "%s\n" "output.at:41" >"$at_check_line_file"
(: > unwritable/test) \
  && at_fn_check_skip 77 "$at_srcdir/output.at:41"
   cat >unwritable.sps <<'_ATEOF'
data list /x 1.
begin data.
1
2
3
end data.
frequencies x/histogram.
_ATEOF

         { set +x
printf "%s\n" "$at_srcdir/output.at:41: cd unwritable && pspp -o pspp.odt ../unwritable.sps"
at_fn_check_prepare_trace "output.at:41"
( $at_check_trace; cd unwritable && pspp -o pspp.odt ../unwritable.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/output.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1568
#AT_START_1569
at_fn_group_banner 1569 'output.at:42' \
  "output pdf to unwritable directory" "             " 151
at_xfail=no
(
  printf "%s\n" "1569. $at_setup_line: testing $at_desc ..."
  $at_traceon

   mkdir unwritable
   chmod u-w unwritable
   printf "%s\n" "output.at:42" >"$at_check_line_file"
(: > unwritable/test) \
  && at_fn_check_skip 77 "$at_srcdir/output.at:42"
   cat >unwritable.sps <<'_ATEOF'
data list /x 1.
begin data.
1
2
3
end data.
frequencies x/histogram.
_ATEOF

         { set +x
printf "%s\n" "$at_srcdir/output.at:42: cd unwritable && pspp -o pspp.pdf ../unwritable.sps"
at_fn_check_prepare_trace "output.at:42"
( $at_check_trace; cd unwritable && pspp -o pspp.pdf ../unwritable.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/output.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1569
#AT_START_1570
at_fn_group_banner 1570 'output.at:43' \
  "output txt to unwritable directory" "             " 151
at_xfail=no
(
  printf "%s\n" "1570. $at_setup_line: testing $at_desc ..."
  $at_traceon

   mkdir unwritable
   chmod u-w unwritable
   printf "%s\n" "output.at:43" >"$at_check_line_file"
(: > unwritable/test) \
  && at_fn_check_skip 77 "$at_srcdir/output.at:43"
   cat >unwritable.sps <<'_ATEOF'
data list /x 1.
begin data.
1
2
3
end data.
frequencies x/histogram.
_ATEOF

         { set +x
printf "%s\n" "$at_srcdir/output.at:43: cd unwritable && pspp -o pspp.txt ../unwritable.sps"
at_fn_check_prepare_trace "output.at:43"
( $at_check_trace; cd unwritable && pspp -o pspp.txt ../unwritable.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/output.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }

     set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1570
#AT_START_1571
at_fn_group_banner 1571 'paper-size.at:19' \
  "letter default paper size" "                      " 152
at_xfail=no
(
  printf "%s\n" "1571. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >paper-size.sps <<'_ATEOF'
debug paper size ''.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/paper-size.at:23: PAPERSIZE=letter pspp --testing-mode -O format=csv paper-size.sps"
at_fn_check_prepare_trace "paper-size.at:23"
( $at_check_trace; PAPERSIZE=letter pspp --testing-mode -O format=csv paper-size.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"\" => 8.5 x 11.0 in, 216 x 279 mm
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/paper-size.at:23"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1571
#AT_START_1572
at_fn_group_banner 1572 'paper-size.at:28' \
  "a4 default paper size" "                          " 152
at_xfail=no
(
  printf "%s\n" "1572. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >paper-size.sps <<'_ATEOF'
debug paper size ''.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/paper-size.at:32: PAPERSIZE=a4 pspp --testing-mode -O format=csv paper-size.sps"
at_fn_check_prepare_trace "paper-size.at:32"
( $at_check_trace; PAPERSIZE=a4 pspp --testing-mode -O format=csv paper-size.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"\" => 8.3 x 11.7 in, 210 x 297 mm
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/paper-size.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1572
#AT_START_1573
at_fn_group_banner 1573 'paper-size.at:37' \
  "specific paper sizes" "                           " 152
at_xfail=no
(
  printf "%s\n" "1573. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >paper-size.sps <<'_ATEOF'
debug paper size 'a4'.
debug paper size 'letter'.
debug paper size '10x14in'.
debug paper size '210x297mm'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/paper-size.at:45: PAPERSIZE=a4 pspp --testing-mode -O format=csv paper-size.sps"
at_fn_check_prepare_trace "paper-size.at:45"
( $at_check_trace; PAPERSIZE=a4 pspp --testing-mode -O format=csv paper-size.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\"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_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/paper-size.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1573
#AT_START_1574
at_fn_group_banner 1574 'pivot-table.at:3' \
  "1-d pivot table" "                                " 153
at_xfail=no
(
  printf "%s\n" "1574. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"*("a1", "a2", "a3")
/cell[all]
/title "Columns" /display
/title "Rows" /transpose.
_ATEOF

cat >expout <<'_ATEOF'
Columns
╭────────╮
│    a   │
├──┬──┬──┤
│a1│a2│a3│
├──┼──┼──┤
│ 0│ 1│ 2│
╰──┴──┴──╯

Rows
╭──┬─╮
│a │ │
├──┼─┤
│a1│0│
│a2│1│
│a3│2│
╰──┴─╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:29: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:29"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:30: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:30"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:30"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1574
#AT_START_1575
at_fn_group_banner 1575 'pivot-table.at:33' \
  "2-d pivot table" "                                " 153
at_xfail=no
(
  printf "%s\n" "1575. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"("a1", "a2", "a3")
/col "b"("b1", "b2", "b3")
/cell[all, all]
/title "Columns" /display
/title "Rows" /transpose /display
/title "Column x Row" /move "a" column /display
/title "Row x Column" /transpose
_ATEOF

cat >expout <<'_ATEOF'
Columns
╭────────┬────────┬────────╮
│   b1   │   b2   │   b3   │
├──┬──┬──┼──┬──┬──┼──┬──┬──┤
│a1│a2│a3│a1│a2│a3│a1│a2│a3│
├──┼──┼──┼──┼──┼──┼──┼──┼──┤
│ 0│ 1│ 2│ 3│ 4│ 5│ 6│ 7│ 8│
╰──┴──┴──┴──┴──┴──┴──┴──┴──╯

Rows
╭─────┬─╮
│b1 a1│0│
│   a2│1│
│   a3│2│
├─────┼─┤
│b2 a1│3│
│   a2│4│
│   a3│5│
├─────┼─┤
│b3 a1│6│
│   a2│7│
│   a3│8│
╰─────┴─╯

Column x Row
╭──┬──┬──┬──╮
│  │a1│a2│a3│
├──┼──┼──┼──┤
│b1│ 0│ 1│ 2│
│b2│ 3│ 4│ 5│
│b3│ 6│ 7│ 8│
╰──┴──┴──┴──╯

Row x Column
╭──┬──┬──┬──╮
│  │b1│b2│b3│
├──┼──┼──┼──┤
│a1│ 0│ 3│ 6│
│a2│ 1│ 4│ 7│
│a3│ 2│ 5│ 8│
╰──┴──┴──┴──╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:86: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:86"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:86"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:87: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:87"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:87"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1575
#AT_START_1576
at_fn_group_banner 1576 'pivot-table.at:90' \
  "2-d pivot table - dimension labels" "             " 153
at_xfail=no
(
  printf "%s\n" "1576. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"*("a1", "a2", "a3")
/col "b"*("b1", "b2", "b3")
/cell[all, all]
/title "Columns" /display
/title "Rows - Corner" /transpose /display
/title "Rows - Nested" /look rowlabels=nested /display
/title "Column x Row - Corner" /move "a" column /look rowlabels=corner /display
/title "Column x Row - Nested" /look rowlabels=nested /display
/title "Row x Column - Corner" /transpose /look rowlabels=corner /display
/title "Row x Column - Nested" /look rowlabels=nested
_ATEOF

cat >expout <<'_ATEOF'
Columns
╭──────────────────────────╮
│             b            │
├────────┬────────┬────────┤
│   b1   │   b2   │   b3   │
├────────┼────────┼────────┤
│    a   │    a   │    a   │
├──┬──┬──┼──┬──┬──┼──┬──┬──┤
│a1│a2│a3│a1│a2│a3│a1│a2│a3│
├──┼──┼──┼──┼──┼──┼──┼──┼──┤
│ 0│ 1│ 2│ 3│ 4│ 5│ 6│ 7│ 8│
╰──┴──┴──┴──┴──┴──┴──┴──┴──╯

Rows - Corner
╭─────┬─╮
│b  a │ │
├─────┼─┤
│b1 a1│0│
│   a2│1│
│   a3│2│
├─────┼─┤
│b2 a1│3│
│   a2│4│
│   a3│5│
├─────┼─┤
│b3 a1│6│
│   a2│7│
│   a3│8│
╰─────┴─╯

Rows - Nested
╭─────────┬─╮
│b b1 a a1│0│
│       a2│1│
│       a3│2│
│ ╶───────┼─┤
│  b2 a a1│3│
│       a2│4│
│       a3│5│
│ ╶───────┼─┤
│  b3 a a1│6│
│       a2│7│
│       a3│8│
╰─────────┴─╯

Column x Row - Corner
╭──┬────────╮
│  │    a   │
│  ├──┬──┬──┤
│b │a1│a2│a3│
├──┼──┼──┼──┤
│b1│ 0│ 1│ 2│
│b2│ 3│ 4│ 5│
│b3│ 6│ 7│ 8│
╰──┴──┴──┴──╯

Column x Row - Nested
╭────┬────────╮
│    │    a   │
│    ├──┬──┬──┤
│    │a1│a2│a3│
├────┼──┼──┼──┤
│b b1│ 0│ 1│ 2│
│  b2│ 3│ 4│ 5│
│  b3│ 6│ 7│ 8│
╰────┴──┴──┴──╯

Row x Column - Corner
╭──┬────────╮
│  │    b   │
│  ├──┬──┬──┤
│a │b1│b2│b3│
├──┼──┼──┼──┤
│a1│ 0│ 3│ 6│
│a2│ 1│ 4│ 7│
│a3│ 2│ 5│ 8│
╰──┴──┴──┴──╯

Row x Column - Nested
╭────┬────────╮
│    │    b   │
│    ├──┬──┬──┤
│    │b1│b2│b3│
├────┼──┼──┼──┤
│a a1│ 0│ 3│ 6│
│  a2│ 1│ 4│ 7│
│  a3│ 2│ 5│ 8│
╰────┴──┴──┴──╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:193: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:193"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:193"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:194: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:194"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:194"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1576
#AT_START_1577
at_fn_group_banner 1577 'pivot-table.at:197' \
  "2-d pivot table - groups" "                       " 153
at_xfail=no
(
  printf "%s\n" "1577. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"("a1", "ag1"("a2", "a3"))
/col "b"("bg1"("b1", "b2"), "b3")
/cell[all, all]
/title "Columns" /display
/title "Rows" /transpose /display
/title "Column x Row" /move "a" column /display
/title "Row x Column" /transpose /display
/title "Row x Column - delete b2" /cells[all,1]=delete /display
/title "Row x Column - delete b2 - show empty" /look empty=show /display
/title "Row x Column - delete b1" /cells[all,0]=delete /look empty=hide /display
/title "Row x Column - delete b1 - show empty" /look empty=show.
_ATEOF

cat >expout <<'_ATEOF'
Columns
╭─────────────────┬────────╮
│       bg1       │        │
├────────┬────────┤        │
│   b1   │   b2   │   b3   │
├──┬─────┼──┬─────┼──┬─────┤
│  │ ag1 │  │ ag1 │  │ ag1 │
│  ├──┬──┤  ├──┬──┤  ├──┬──┤
│a1│a2│a3│a1│a2│a3│a1│a2│a3│
├──┼──┼──┼──┼──┼──┼──┼──┼──┤
│ 0│ 1│ 2│ 3│ 4│ 5│ 6│ 7│ 8│
╰──┴──┴──┴──┴──┴──┴──┴──┴──╯

Rows
╭─────────────┬─╮
│bg1 b1 a1    │0│
│      ╶──────┼─┤
│       ag1 a2│1│
│           a3│2│
│   ╶─────────┼─┤
│    b2 a1    │3│
│      ╶──────┼─┤
│       ag1 a2│4│
│           a3│5│
├─────────────┼─┤
│b3     a1    │6│
│      ╶──────┼─┤
│       ag1 a2│7│
│           a3│8│
╰─────────────┴─╯

Column x Row
╭──────┬──┬─────╮
│      │  │ ag1 │
│      │  ├──┬──┤
│      │a1│a2│a3│
├──────┼──┼──┼──┤
│bg1 b1│ 0│ 1│ 2│
│    b2│ 3│ 4│ 5│
├──────┼──┼──┼──┤
│b3    │ 6│ 7│ 8│
╰──────┴──┴──┴──╯

Row x Column
╭──────┬─────┬──╮
│      │ bg1 │  │
│      ├──┬──┤  │
│      │b1│b2│b3│
├──────┼──┼──┼──┤
│a1    │ 0│ 3│ 6│
├──────┼──┼──┼──┤
│ag1 a2│ 1│ 4│ 7│
│    a3│ 2│ 5│ 8│
╰──────┴──┴──┴──╯

Row x Column - delete b2
╭──────┬───┬──╮
│      │bg1│  │
│      ├───┤  │
│      │ b1│b3│
├──────┼───┼──┤
│a1    │  0│ 6│
├──────┼───┼──┤
│ag1 a2│  1│ 7│
│    a3│  2│ 8│
╰──────┴───┴──╯

Row x Column - delete b2 - show empty
╭──────┬─────┬──╮
│      │ bg1 │  │
│      ├──┬──┤  │
│      │b1│b2│b3│
├──────┼──┼──┼──┤
│a1    │ 0│  │ 6│
├──────┼──┼──┼──┤
│ag1 a2│ 1│  │ 7│
│    a3│ 2│  │ 8│
╰──────┴──┴──┴──╯

Row x Column - delete b1
╭──────┬──╮
│      │b3│
├──────┼──┤
│a1    │ 6│
├──────┼──┤
│ag1 a2│ 7│
│    a3│ 8│
╰──────┴──╯

Row x Column - delete b1 - show empty
╭──────┬─────┬──╮
│      │ bg1 │  │
│      ├──┬──┤  │
│      │b1│b2│b3│
├──────┼──┼──┼──┤
│a1    │  │  │ 6│
├──────┼──┼──┼──┤
│ag1 a2│  │  │ 7│
│    a3│  │  │ 8│
╰──────┴──┴──┴──╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:313: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:313"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:313"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:314: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:314"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:314"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1577
#AT_START_1578
at_fn_group_banner 1578 'pivot-table.at:317' \
  "2-d pivot table - layers" "                       " 153
at_xfail=no
(
  printf "%s\n" "1578. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"("a1", "a2", "a3")
/layer "b"("b1", "b2", "b3")
/cell[all, all]
/title "Column x b1" /display
/title "Row x b1" /transpose /display
/title "Column x b2" /show layer 1 /transpose /display
/title "Row x b2" /transpose /display
/title "Column (All Layers)" /look layers=all /display
/title "Row (All Layers)" /transpose /look layers=all
_ATEOF

cat >expout <<'_ATEOF'
Column x b1
b1
╭──┬──┬──╮
│a1│a2│a3│
├──┼──┼──┤
│ 0│ 1│ 2│
╰──┴──┴──╯

Row x b1
b1
╭──┬─╮
│a1│0│
│a2│1│
│a3│2│
╰──┴─╯

Column x b2
b2
╭──┬──┬──╮
│a1│a2│a3│
├──┼──┼──┤
│ 3│ 4│ 5│
╰──┴──┴──╯

Row x b2
b2
╭──┬─╮
│a1│3│
│a2│4│
│a3│5│
╰──┴─╯

Column (All Layers)
b1
╭──┬─╮
│a1│0│
│a2│1│
│a3│2│
╰──┴─╯

Column (All Layers)
b2
╭──┬─╮
│a1│3│
│a2│4│
│a3│5│
╰──┴─╯

Column (All Layers)
b3
╭──┬─╮
│a1│6│
│a2│7│
│a3│8│
╰──┴─╯

Row (All Layers)
b1
╭──┬──┬──╮
│a1│a2│a3│
├──┼──┼──┤
│ 0│ 1│ 2│
╰──┴──┴──╯

Row (All Layers)
b2
╭──┬──┬──╮
│a1│a2│a3│
├──┼──┼──┤
│ 3│ 4│ 5│
╰──┴──┴──╯

Row (All Layers)
b3
╭──┬──┬──╮
│a1│a2│a3│
├──┼──┼──┤
│ 6│ 7│ 8│
╰──┴──┴──╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:410: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:410"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:410"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:411: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:411"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:411"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1578
#AT_START_1579
at_fn_group_banner 1579 'pivot-table.at:414' \
  "3-d pivot table - layers" "                       " 153
at_xfail=no
(
  printf "%s\n" "1579. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/layer "a"("a1", "a2", "a3")
/layer "b"("b1", "b2", "b3", "b4")
/col "c"("c1", "c2", "c3", "c4", "c5")
/cell[all, all, all]
/title "Column x b1 x a1" /display
/title "Column x b2 x a1" /show layer 0 1 /display
/title "Column x b3 x a2" /show layer 1 2 /display
_ATEOF

cat >expout <<'_ATEOF'
Column x b1 x a1
b1
a1
╭──┬──┬──┬──┬──╮
│c1│c2│c3│c4│c5│
├──┼──┼──┼──┼──┤
│ 0│12│24│36│48│
╰──┴──┴──┴──┴──╯

Column x b2 x a1
b2
a1
╭──┬──┬──┬──┬──╮
│c1│c2│c3│c4│c5│
├──┼──┼──┼──┼──┤
│ 3│15│27│39│51│
╰──┴──┴──┴──┴──╯

Column x b3 x a2
b3
a2
╭──┬──┬──┬──┬──╮
│c1│c2│c3│c4│c5│
├──┼──┼──┼──┼──┤
│ 7│19│31│43│55│
╰──┴──┴──┴──┴──╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:452: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:452"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:452"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:453: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:453"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:453"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1579
#AT_START_1580
at_fn_group_banner 1580 'pivot-table.at:456' \
  "pivot table title and caption" "                  " 153
at_xfail=no
(
  printf "%s\n" "1580. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"("a1", "a2")
/row "b"("b1", "b2")
/cell[all, all]
/title "Title + Caption" /caption "Title + Caption" /display
/title "Title Only" /caption "(Not Shown)" /show title=yes caption=no /display
/title "(Not Shown)" /caption "Caption Only" /show title=no caption=yes /display
/title "(Not Shown)" /caption "(Not Shown)" /show title=no caption=no
_ATEOF

cat >expout <<'_ATEOF'
Title + Caption
╭──┬──┬──╮
│  │a1│a2│
├──┼──┼──┤
│b1│ 0│ 1│
│b2│ 2│ 3│
╰──┴──┴──╯
Title + Caption

Title Only
╭──┬──┬──╮
│  │a1│a2│
├──┼──┼──┤
│b1│ 0│ 1│
│b2│ 2│ 3│
╰──┴──┴──╯

╭──┬──┬──╮
│  │a1│a2│
├──┼──┼──┤
│b1│ 0│ 1│
│b2│ 2│ 3│
╰──┴──┴──╯
Caption Only

╭──┬──┬──╮
│  │a1│a2│
├──┼──┼──┤
│b1│ 0│ 1│
│b2│ 2│ 3│
╰──┴──┴──╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:499: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:499"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:499"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:500: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:500"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:500"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1580
#AT_START_1581
at_fn_group_banner 1581 'pivot-table.at:503' \
  "pivot table footnotes" "                          " 153
at_xfail=no
(
  printf "%s\n" "1581. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >pivot.txt <<'_ATEOF'

/footnote[0] "First footnote" marker="*"
/footnote[1] "Second footnote"
/col "A"[footnote 0]*("B"[footnote 1], "C"[footnote 0 1])
/row "D"[footnote 1]*("E"[footnote 0], "F"[footnote 1 0])
/look rowlabels=nested
/cell[0, 0]=0
/cell[1, 0]=1[footnote 0]
/cell[0, 1]=2[footnote 1]
/cell[1, 1]=3[footnote 0 1]
/caption "Caption"[footnote 0]
/corner "Corner"[footnote 0 1]
/title "Pivot Table with Alphabetic Subscript Footnotes"[footnote 0]
/look marker=alpha level=sub
/display
/title "Pivot Table with Alphabetic Superscript Footnotes"[footnote 0]
/look marker=alpha level=super
/display
/title "Pivot Table with Numeric Subscript Footnotes"[footnote 0]
/look marker=numeric level=sub
/display
/title "Pivot Table with Numeric Superscript Footnotes"[footnote 0]
/look marker=numeric level=super
/display
/title "Hidden Footnote"[footnote 0]
/footnote[0] "First footnote" marker="*" hide
_ATEOF

cat >expout <<'_ATEOF'
Pivot Table with Alphabetic Subscript Footnotes[*]
╭────────────┬──────────────────╮
│            │       A[*]       │
│            ├───────┬──────────┤
│Corner[*][b]│  B[b] │  C[*][b] │
├────────────┼───────┼──────────┤
│D[b] E[*]   │    .00│   1.00[*]│
│     F[*][b]│2.00[b]│3.00[*][b]│
╰────────────┴───────┴──────────╯
Caption[*]
*. First footnote
b. Second footnote

Pivot Table with Alphabetic Superscript Footnotes[*]
╭────────────┬──────────────────╮
│            │       A[*]       │
│            ├───────┬──────────┤
│Corner[*][b]│  B[b] │  C[*][b] │
├────────────┼───────┼──────────┤
│D[b] E[*]   │    .00│   1.00[*]│
│     F[*][b]│2.00[b]│3.00[*][b]│
╰────────────┴───────┴──────────╯
Caption[*]
*. First footnote
b. Second footnote

Pivot Table with Numeric Subscript Footnotes[*]
╭────────────┬──────────────────╮
│            │       A[*]       │
│            ├───────┬──────────┤
│Corner[*][2]│  B[2] │  C[*][2] │
├────────────┼───────┼──────────┤
│D[2] E[*]   │    .00│   1.00[*]│
│     F[*][2]│2.00[2]│3.00[*][2]│
╰────────────┴───────┴──────────╯
Caption[*]
*. First footnote
2. Second footnote

Pivot Table with Numeric Superscript Footnotes[*]
╭────────────┬──────────────────╮
│            │       A[*]       │
│            ├───────┬──────────┤
│Corner[*][2]│  B[2] │  C[*][2] │
├────────────┼───────┼──────────┤
│D[2] E[*]   │    .00│   1.00[*]│
│     F[*][2]│2.00[2]│3.00[*][2]│
╰────────────┴───────┴──────────╯
Caption[*]
*. First footnote
2. Second footnote

Hidden Footnote[*]
╭────────────┬──────────────────╮
│            │       A[*]       │
│            ├───────┬──────────┤
│Corner[*][2]│  B[2] │  C[*][2] │
├────────────┼───────┼──────────┤
│D[2] E[*]   │    .00│   1.00[*]│
│     F[*][2]│2.00[2]│3.00[*][2]│
╰────────────┴───────┴──────────╯
Caption[*]
2. Second footnote
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:597: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:597"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:597"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:598: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:598"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:598"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1581
#AT_START_1582
at_fn_group_banner 1582 'pivot-table.at:601' \
  "pivot table with no dimensions" "                 " 153
at_xfail=no
(
  printf "%s\n" "1582. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/title "No Dimensions"
_ATEOF

cat >expout <<'_ATEOF'
No Dimensions
╭╮
╰╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:610: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:610"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:610"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:611: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:611"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:611"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1582
#AT_START_1583
at_fn_group_banner 1583 'pivot-table.at:614' \
  "pivot table with empty dimensions" "              " 153
at_xfail=no
(
  printf "%s\n" "1583. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"()
/look empty=show
/title "One Empty Dimension" /display
/title "Two Empty Dimensions" /row "b"*() /display
/title "Three Dimensions, Two Empty" /row "c"("c1", "c2")
_ATEOF

cat >expout <<'_ATEOF'
One Empty Dimension

Two Empty Dimensions

Three Dimensions, Two Empty
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:629: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:629"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:629"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:630: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:630"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:630"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1583
#AT_START_1584
at_fn_group_banner 1584 'pivot-table.at:633' \
  "pivot table with empty groups" "                  " 153
at_xfail=no
(
  printf "%s\n" "1584. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"("a1", "a2"(), "a3")
/row "b"("b1"(), "b2", "b3")
/cell[all,all]
/look empty=show
/display
_ATEOF

cat >expout <<'_ATEOF'
Default Title
╭──┬──┬──╮
│  │a1│a3│
├──┼──┼──┤
│b2│ 0│ 1│
│b3│ 2│ 3│
╰──┴──┴──╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:650: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:650"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:650"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:651: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:651"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:651"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1584
#AT_START_1585
at_fn_group_banner 1585 'pivot-table.at:654' \
  "pivot table - category and dimension borders 1" " " 153
at_xfail=no
(
  printf "%s\n" "1585. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"*("a1", "ag1"("a2", "a3"))
/col "b"*("bg1"("b1", "b2"), "b3")
/row "c"*("c1", "cg1"("c2", "c3"))
/row "d"*("dg1"("d1", "d2"), "d3")
/cell[all, all, all, all]
/border "*" (none)
/border "dim-row-horz" (solid "blue")
/border	"dim-col-vert" (solid "blue")
/title "Dimension Borders 1"
/display
/border "*" (none)
/border "cat-row-horz" (dashed "red")
/border	"cat-col-vert" (dashed "red")
/title "Category Borders 1"
/display
/border "*" (none)
/border "dim-row-horz" (solid "blue")
/border	"dim-col-vert" (solid "blue")
/border "cat-row-horz" (dashed "red")
/border	"cat-col-vert" (dashed "red")
/title "Category and Dimension Borders 1"
_ATEOF

cat >expout <<'_ATEOF'
Dimension Borders 1
                           b
                     bg1       │
                 b1   │   b2   │   b3
                  a   │    a   │    a
                │ ag1 │  │ ag1 │  │ ag1
d      c      a1│a2 a3│a1│a2 a3│a1│a2 a3
dg1 d1 c1      0│ 1  2│ 3│ 4  5│ 6│ 7  8
      ╶─────────┼─────┼──┼─────┼──┼─────
       cg1 c2  9│10 11│12│13 14│15│16 17
           c3 18│19 20│21│22 23│24│25 26
   ╶────────────┼─────┼──┼─────┼──┼─────
    d2 c1     27│28 29│30│31 32│33│34 35
      ╶─────────┼─────┼──┼─────┼──┼─────
       cg1 c2 36│37 38│39│40 41│42│43 44
           c3 45│46 47│48│49 50│51│52 53
────────────────┼─────┼──┼─────┼──┼─────
d3     c1     54│55 56│57│58 59│60│61 62
      ╶─────────┼─────┼──┼─────┼──┼─────
       cg1 c2 63│64 65│66│67 68│69│70 71
           c3 72│73 74│75│76 77│78│79 80

Category Borders 1
                           b
                     bg1       ┊
                 b1   ┊   b2   ┊   b3
                  a   ┊    a   ┊    a
                ┊ ag1 ┊  ┊ ag1 ┊  ┊ ag1
d      c      a1┊a2┊a3┊a1┊a2┊a3┊a1┊a2┊a3
dg1 d1 c1      0┊ 1┊ 2┊ 3┊ 4┊ 5┊ 6┊ 7┊ 8
      ╌╌╌╌╌╌╌╌╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌
       cg1 c2  9┊10┊11┊12┊13┊14┊15┊16┊17
          ╌╌╌╌╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌
           c3 18┊19┊20┊21┊22┊23┊24┊25┊26
   ╌╌╌╌╌╌╌╌╌╌╌╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌
    d2 c1     27┊28┊29┊30┊31┊32┊33┊34┊35
      ╌╌╌╌╌╌╌╌╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌
       cg1 c2 36┊37┊38┊39┊40┊41┊42┊43┊44
          ╌╌╌╌╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌
           c3 45┊46┊47┊48┊49┊50┊51┊52┊53
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌
d3     c1     54┊55┊56┊57┊58┊59┊60┊61┊62
      ╌╌╌╌╌╌╌╌╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌
       cg1 c2 63┊64┊65┊66┊67┊68┊69┊70┊71
          ╌╌╌╌╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌+╌╌
           c3 72┊73┊74┊75┊76┊77┊78┊79┊80

Category and Dimension Borders 1
                           b
                     bg1       │
                 b1   │   b2   │   b3
                  a   │    a   │    a
                │ ag1 │  │ ag1 │  │ ag1
d      c      a1│a2┊a3│a1│a2┊a3│a1│a2┊a3
dg1 d1 c1      0│ 1┊ 2│ 3│ 4┊ 5│ 6│ 7┊ 8
      ╶─────────┼──┼──┼──┼──┼──┼──┼──┼──
       cg1 c2  9│10┊11│12│13┊14│15│16┊17
          ╌╌╌╌╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌
           c3 18│19┊20│21│22┊23│24│25┊26
   ╶────────────┼──┼──┼──┼──┼──┼──┼──┼──
    d2 c1     27│28┊29│30│31┊32│33│34┊35
      ╶─────────┼──┼──┼──┼──┼──┼──┼──┼──
       cg1 c2 36│37┊38│39│40┊41│42│43┊44
          ╌╌╌╌╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌
           c3 45│46┊47│48│49┊50│51│52┊53
────────────────┼──┼──┼──┼──┼──┼──┼──┼──
d3     c1     54│55┊56│57│58┊59│60│61┊62
      ╶─────────┼──┼──┼──┼──┼──┼──┼──┼──
       cg1 c2 63│64┊65│66│67┊68│69│70┊71
          ╌╌╌╌╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌
           c3 72│73┊74│75│76┊77│78│79┊80
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:751: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:751"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:751"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:752: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:752"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:752"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1585
#AT_START_1586
at_fn_group_banner 1586 'pivot-table.at:755' \
  "pivot table - category and dimension borders 2" " " 153
at_xfail=no
(
  printf "%s\n" "1586. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"*("a1", "ag1"("a2", "a3"))
/col "b"*("bg1"("b1", "b2"), "b3")
/row "c"*("c1", "cg1"("c2", "c3"))
/row "d"*("dg1"("d1", "d2"), "d3")
/cell[all, all, all, all]
/border "*" (none)
/border	"dim-row-vert" (solid "blue")
/border	"dim-col-horz" (solid "blue")
/title "Dimension Borders 2"
/display
/border "*" (none)
/border	"cat-row-vert" (dashed "red")
/border	"cat-col-horz" (dashed "red")
/title "Category Borders 2"
/display
/border "*" (none)
/border	"dim-row-vert" (solid "blue")
/border	"cat-row-vert" (dashed "red")
/border	"dim-col-horz" (solid "blue")
/border	"cat-col-horz" (dashed "red")
/title "Category and Dimension Borders 2"
_ATEOF

cat >expout <<'_ATEOF'
Dimension Borders 2
                           b
                     bg1
                 b1       b2       b3
             ╶──────────────────────────
                  a        a        a
                  ag1      ag1      ag1
d      c      a1 a2 a3 a1 a2 a3 a1 a2 a3
dg1 d1│c1      0  1  2  3  4  5  6  7  8
      │cg1 c2  9 10 11 12 13 14 15 16 17
      │    c3 18 19 20 21 22 23 24 25 26
    d2│c1     27 28 29 30 31 32 33 34 35
      │cg1 c2 36 37 38 39 40 41 42 43 44
      │    c3 45 46 47 48 49 50 51 52 53
d3    │c1     54 55 56 57 58 59 60 61 62
      │cg1 c2 63 64 65 66 67 68 69 70 71
      │    c3 72 73 74 75 76 77 78 79 80

Category Borders 2
                           b
             ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
                     bg1
             ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
                 b1       b2       b3
             ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
                  a        a        a
             ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
                  ag1      ag1      ag1
                ╌╌╌╌╌╌╌  ╌╌╌╌╌╌╌  ╌╌╌╌╌╌
d      c      a1 a2 a3 a1 a2 a3 a1 a2 a3
dg1┊d1┊c1      0  1  2  3  4  5  6  7  8
   ┊  ┊cg1┊c2  9 10 11 12 13 14 15 16 17
   ┊  ┊   ┊c3 18 19 20 21 22 23 24 25 26
   ┊d2┊c1     27 28 29 30 31 32 33 34 35
   ┊  ┊cg1┊c2 36 37 38 39 40 41 42 43 44
   ┊  ┊   ┊c3 45 46 47 48 49 50 51 52 53
d3    ┊c1     54 55 56 57 58 59 60 61 62
      ┊cg1┊c2 63 64 65 66 67 68 69 70 71
      ┊   ┊c3 72 73 74 75 76 77 78 79 80

Category and Dimension Borders 2
                           b
             ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
                     bg1
             ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
                 b1       b2       b3
             ╶──────────────────────────
                  a        a        a
             ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
                  ag1      ag1      ag1
                ╌╌╌╌╌╌╌  ╌╌╌╌╌╌╌  ╌╌╌╌╌╌
d      c      a1 a2 a3 a1 a2 a3 a1 a2 a3
dg1┊d1│c1      0  1  2  3  4  5  6  7  8
   ┊  │cg1┊c2  9 10 11 12 13 14 15 16 17
   ┊  │   ┊c3 18 19 20 21 22 23 24 25 26
   ┊d2│c1     27 28 29 30 31 32 33 34 35
   ┊  │cg1┊c2 36 37 38 39 40 41 42 43 44
   ┊  │   ┊c3 45 46 47 48 49 50 51 52 53
d3    │c1     54 55 56 57 58 59 60 61 62
      │cg1┊c2 63 64 65 66 67 68 69 70 71
      │   ┊c3 72 73 74 75 76 77 78 79 80
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:842: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:842"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:842"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:843: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:843"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:843"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1586
#AT_START_1587
at_fn_group_banner 1587 'pivot-table.at:846' \
  "pivot table - category and dimension borders 3" " " 153
at_xfail=no
(
  printf "%s\n" "1587. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/col "a"("a1", "ag1"("a2", "a3"))
/col "b"("bg1"("b1", "b2"), "b3")
/row "c"("c1", "cg1"("c2", "c3"))
/row "d"("dg1"("d1", "d2"), "d3")
/cell[all, all, all, all]
/border "*" (none)
/border "dim-row-horz" (solid "blue")
	"cat-row-horz" (dashed "red")
	"dim-row-vert" (solid "blue")
	"cat-row-vert" (dashed "red")
	"dim-col-horz" (solid "blue")
	"cat-col-horz" (dashed "red")
	"dim-col-vert" (solid "blue")
	"cat-col-vert" (dashed "red")
/title "Category and Dimension Borders 3"
_ATEOF

cat >expout <<'_ATEOF'
Category and Dimension Borders 3
                     bg1       │
             ╌╌╌╌╌╌╌╌╌┬╌╌╌╌╌╌╌╌┤
                 b1   │   b2   │   b3
             ╶──┬─────┼──┬─────┼──┬─────
                │ ag1 │  │ ag1 │  │ ag1
                ├╌╌┬╌╌┤  ├╌╌┬╌╌┤  ├╌╌┬╌╌
              a1│a2┊a3│a1│a2┊a3│a1│a2┊a3
dg1┊d1│c1      0│ 1┊ 2│ 3│ 4┊ 5│ 6│ 7┊ 8
   ┊  ├───┬─────┼──┼──┼──┼──┼──┼──┼──┼──
   ┊  │cg1┊c2  9│10┊11│12│13┊14│15│16┊17
   ┊  │   ├╌╌╌╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌
   ┊  │   ┊c3 18│19┊20│21│22┊23│24│25┊26
   ├──┼───┴─────┼──┼──┼──┼──┼──┼──┼──┼──
   ┊d2│c1     27│28┊29│30│31┊32│33│34┊35
   ┊  ├───┬─────┼──┼──┼──┼──┼──┼──┼──┼──
   ┊  │cg1┊c2 36│37┊38│39│40┊41│42│43┊44
   ┊  │   ├╌╌╌╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌
   ┊  │   ┊c3 45│46┊47│48│49┊50│51│52┊53
───┴──┼───┴─────┼──┼──┼──┼──┼──┼──┼──┼──
d3    │c1     54│55┊56│57│58┊59│60│61┊62
      ├───┬─────┼──┼──┼──┼──┼──┼──┼──┼──
      │cg1┊c2 63│64┊65│66│67┊68│69│70┊71
      │   ├╌╌╌╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌┼╌╌┼╌╌+╌╌
      │   ┊c3 72│73┊74│75│76┊77│78│79┊80
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:891: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:891"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:891"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:892: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:892"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:892"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1587
#AT_START_1588
at_fn_group_banner 1588 'pivot-table.at:895' \
  "pivot table - small numbers" "                    " 153
at_xfail=no
(
  printf "%s\n" "1588. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >pivot.txt <<'_ATEOF'

/title "small numbers"
/row "exponent"*("0", "-1", "-2", "-3", "-4", "-5", "-6", "-7", "-8", "-9")
/col "sign"*("positive", "negative")
/col "result class"*("general" RC_OTHER, "specific" RC_RESIDUAL)
/cell[0, 0, 0] = 1
/cell[1, 0, 0] = .1
/cell[2, 0, 0] = .01
/cell[3, 0, 0] = .001
/cell[4, 0, 0] = .0001
/cell[5, 0, 0] = .00001
/cell[6, 0, 0] = .000001
/cell[7, 0, 0] = .0000001
/cell[8, 0, 0] = .00000001
/cell[9, 0, 0] = .000000001
/cell[0, 0, 1] = -1
/cell[1, 0, 1] = -.1
/cell[2, 0, 1] = -.01
/cell[3, 0, 1] = -.001
/cell[4, 0, 1] = -.0001
/cell[5, 0, 1] = -.00001
/cell[6, 0, 1] = -.000001
/cell[7, 0, 1] = -.0000001
/cell[8, 0, 1] = -.00000001
/cell[9, 0, 1] = -.000000001
/cell[0, 1, 0] = 1
/cell[1, 1, 0] = .1
/cell[2, 1, 0] = .01
/cell[3, 1, 0] = .001
/cell[4, 1, 0] = .0001
/cell[5, 1, 0] = .00001
/cell[6, 1, 0] = .000001
/cell[7, 1, 0] = .0000001
/cell[8, 1, 0] = .00000001
/cell[9, 1, 0] = .000000001
/cell[0, 1, 1] = -1
/cell[1, 1, 1] = -.1
/cell[2, 1, 1] = -.01
/cell[3, 1, 1] = -.001
/cell[4, 1, 1] = -.0001
/cell[5, 1, 1] = -.00001
/cell[6, 1, 1] = -.000001
/cell[7, 1, 1] = -.0000001
/cell[8, 1, 1] = -.00000001
/cell[9, 1, 1] = -.000000001
_ATEOF

cat >expout <<'_ATEOF'
small numbers
╭────────┬─────────────────────────────────────╮
│        │             result class            │
│        ├───────────────────┬─────────────────┤
│        │      general      │     specific    │
│        ├───────────────────┼─────────────────┤
│        │        sign       │       sign      │
│        ├─────────┬─────────┼────────┬────────┤
│exponent│ positive│ negative│positive│negative│
├────────┼─────────┼─────────┼────────┼────────┤
│0       │     1.00│     1.00│   -1.00│   -1.00│
│-1      │      .10│      .10│    -.10│    -.10│
│-2      │      .01│      .01│    -.01│    -.01│
│-3      │      .00│      .00│     .00│     .00│
│-4      │      .00│      .00│     .00│     .00│
│-5      │1.00E-005│1.00E-005│     .00│     .00│
│-6      │1.00E-006│1.00E-006│     .00│     .00│
│-7      │1.00E-007│1.00E-007│     .00│     .00│
│-8      │1.00E-008│1.00E-008│     .00│     .00│
│-9      │1.00E-009│1.00E-009│     .00│     .00│
╰────────┴─────────┴─────────┴────────┴────────╯
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:965: pivot-table-test --table-look \$srcdir/output/look.stt pivot.txt --box unicode"
at_fn_check_prepare_dynamic "pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode" "pivot-table.at:965"
( $at_check_trace; pivot-table-test --table-look $srcdir/output/look.stt pivot.txt --box unicode
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:965"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pivot-table.at:966: pspp-output -O box=unicode convert render.spv -"
at_fn_check_prepare_trace "pivot-table.at:966"
( $at_check_trace; pspp-output -O box=unicode convert render.spv -
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pivot-table.at:966"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1588
#AT_START_1589
at_fn_group_banner 1589 'render.at:21' \
  "LIST puts space between columns" "                " 154
at_xfail=no
(
  printf "%s\n" "1589. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >list.sps <<'_ATEOF'
DATA LIST LIST NOTABLE /x y z (F1.0).
BEGIN DATA.
1 2 3
4 5 6
7 8 9
END DATA.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/render.at:32: pspp list.sps"
at_fn_check_prepare_trace "render.at:32"
( $at_check_trace; pspp list.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Data List
+-+-+-+
|x|y|z|
+-+-+-+
|1|2|3|
|4|5|6|
|7|8|9|
+-+-+-+
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/render.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1589
#AT_START_1590
at_fn_group_banner 1590 'tables.at:19' \
  "OUTPUT precision" "                               " 155
at_xfail=no
(
  printf "%s\n" "1590. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >prec.sps <<'_ATEOF'

data list notable list /A * B *.
begin data.
2.0 3.0
1.0 2.0
2.0 4.5
2.0 4.5
3.0 6.0
end data.

OUTPUT MODIFY
       /SELECT TABLES
       /TABLECELLS  SELECT = [ SIGNIFICANCE ]
       	    FORMAT = F.3.

t-test /PAIRS a with b (PAIRED).

OUTPUT MODIFY
       /SELECT TABLES
       /TABLECELLS  SELECT = [ SIGNIFICANCE ]
       	    FORMAT = F12.5.

t-test /PAIRS a with b (PAIRED).

_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/tables.at:47: pspp -O format=csv prec.sps"
at_fn_check_prepare_trace "tables.at:47"
( $at_check_trace; pspp -O format=csv prec.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Paired Sample Statistics
,,N,Mean,Std. Deviation,S.E. Mean
Pair 1,A,5,2.00,.71,.32
,B,5,4.00,1.54,.69

Table: Paired Samples Correlations
,,N,Correlation,Sig.
Pair 1,A & B,5,.918,.028

Table: Paired Samples Test
,,Paired Differences,,,,,t,df,Sig. (2-tailed)
,,Mean,Std. Deviation,S.E. Mean,95% Confidence Interval of the Difference,,,,
,,,,,Lower,Upper,,,
Pair 1,A - B,-2.00,.94,.42,-3.16,-.84,-4.78,4,.009

Table: Paired Sample Statistics
,,N,Mean,Std. Deviation,S.E. Mean
Pair 1,A,5,2.00,.71,.32
,B,5,4.00,1.54,.69

Table: Paired Samples Correlations
,,N,Correlation,Sig.
Pair 1,A & B,5,.918,.02801

Table: Paired Samples Test
,,Paired Differences,,,,,t,df,Sig. (2-tailed)
,,Mean,Std. Deviation,S.E. Mean,95% Confidence Interval of the Difference,,,,
,,,,,Lower,Upper,,,
Pair 1,A - B,-2.00,.94,.42,-3.16,-.84,-4.78,4,.00877
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tables.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1590
#AT_START_1591
at_fn_group_banner 1591 'tables.at:84' \
  "OUTPUT crash" "                                   " 155
at_xfail=no
(
  printf "%s\n" "1591. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >prec.sps <<'_ATEOF'

data list notable list /A * B *.
begin data.
2.0 3.0
1.0 2.0
end data.

OUTPUT MODIFY
       /SELECT TABLES
       /TABLECELLS  SELECT = [ SIGNIFICANCE ]
       "FORMAT = F/1.

t-test /PAIRS a with b (PAIRED).
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/tables.at:101: pspp -O format=csv prec.sps"
at_fn_check_prepare_trace "tables.at:101"
( $at_check_trace; pspp -O format=csv prec.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 1 $at_status "$at_srcdir/tables.at:101"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1591
#AT_START_1592
at_fn_group_banner 1592 'tex.at:25' \
  "tex glyphs" "                                     " 156
at_xfail=no
(
  printf "%s\n" "1592. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/tex.at:27: tex-glyphs pspp.tex"
at_fn_check_prepare_trace "tex.at:27"
( $at_check_trace; tex-glyphs pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }


printf "%s\n" "tex.at:29" >"$at_check_line_file"
(test "$TEX" = no) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:29"

printf "%s\n" "tex.at:34" >"$at_check_line_file"
(! kpsewhich wasyfont.tex) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:34"
{ set +x
printf "%s\n" "$at_srcdir/tex.at:35: \$TEX --halt-on-error pspp.tex"
at_fn_check_prepare_dynamic "$TEX --halt-on-error pspp.tex" "tex.at:35"
( $at_check_trace; $TEX --halt-on-error pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/tex.at:38: grep '^Overfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:38"
( $at_check_trace; grep '^Overfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:40: grep '^Underfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:40"
( $at_check_trace; grep '^Underfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }


test -z "$at_arg_xdvi" || { set +x
printf "%s\n" "$at_srcdir/tex.at:42: \$at_arg_xdvi -s 3 pspp.dvi"
at_fn_check_prepare_dynamic "$at_arg_xdvi -s 3 pspp.dvi" "tex.at:42"
( $at_check_trace; $at_arg_xdvi -s 3 pspp.dvi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:42"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1592
#AT_START_1593
at_fn_group_banner 1593 'tex.at:48' \
  "tex utf8-strings" "                               " 156
at_xfail=no
(
  printf "%s\n" "1593. $at_setup_line: testing $at_desc ..."
  $at_traceon


mkdir sample-texts

cat >sample-texts/en.txt <<'_ATEOF'
The
Battle of Artaza (Acción de Artaza) was
a battle that occurred on April 20–22, 1835 during the First
Carlist War.

Jerónimo Valdés, at the time Minister of War, arrived at the area known as
Las Amescoas with 22,000 men with the intention of
definitively destroying the Carlist forces.[1] Zumalacárregui had 5,000 men,
but had the advantage of knowing the terrain and practicing guerrilla tactics.
_ATEOF


cat >sample-texts/pl.txt <<'_ATEOF'
The Giszowiec składa się z budynków
wielorodzinnych z wielkiej płyty oraz
zabytkowych domów, przeważnie jedno- i dwurodzinnych, stanowiących
niegdyś zwarte osiedle górnicze, które do dziś jest unikatowe w skali
europejskiej i znajduje się na Szlaku Zabytków Techniki Województwa
Śląskiego. Zostało ono wybudowane dla górników pracujących w kopalni
Giesche (późniejszej kopalni Wieczorek) przez koncern Georg von
Giesches Erben na zlecenie dyrektora spółki Antona Uthemanna w latach
1907–1910. Projektantami osiedla byli Zillmannowie: Georg i
go dwa szlaki komunikacyjne: droga krajowa nr 86 oraz autostrada A4, a
także rozpoczyna swój bieg droga krajowa nr 81. Dzielnica ma
powierzchnię 12,03 km² (7,30% powierzchni miasta) i liczyła w 2007
roku 18 475 mieszkańców (5,9% ludności Katowic).
_ATEOF


cat >sample-texts/el.txt <<'_ATEOF'
Η πόλη των Σερρών υπήρξε η πιο
οχυρωμένη πόλη της περιοχής λόγω της στρατηγικής γεωγραφικής της
θέσης. Στα βόρεια της πόλης των Σερρών, πάνω σε λόφο γνωστό με την
επωνυμία Κουλάς, βρίσκεται η αρχαία και βυζαντινή ακρόπολη. Η ακρόπολη
όπως σώζεται σήμερα αποτελεί έργο των βυζαντινών χρόνων, αλλά
θεμελιώθηκε πάνω σε αρχαίο φρούριο  του 7ου και  6ου π. Χ. αιώνα. Η
κατασκευή της ακρόπολης χρονολογείται στον 9ο μ. Χ. αιώνα, πιθανότατα,
επί Αυτοκράτορα Νικηφόρου Φωκά και αναφέρεται σε πολλά βυζαντινά
χρυσόβουλα ως «κάστρο» με γνωστότερο καστροφύλακα τον Λέοντα τον
Αζανίτη. [1] Με την πάροδο των χρόνων ολόκληρη η πόλη χαρακτηριζόταν
ως «κάστρο» και οι Σερραίοι, «καστρινοί».
_ATEOF


cat >sample-texts/is.txt <<'_ATEOF'
Saloth Sar, betur þekktur sem Pol Pot,
var fæddur 19. maí 1925 og dó
15. apríl 1998. Hann var leiðtogi Rauðu khmeranna í Kambódíu frá 1963
til 1979 og er þekktastur fyrir dauða óhemjumargs fólks í stjórnartíð
sinni, sem var frá 1975 til 1979. Rauðu khmerarnir reyndu að
framfylgja sýn sinni um eins konar samyrkjuvæðingu, en meðal þess sem
hún átti að fela í sér var að borgarbúar flyttu út í sveitir og ynnu
þar við landbúnað eða í betrunarvinnu. Þeir töldu sig geta byrjað
siðmenninguna upp á nýtt og tóku því upp tímatal sem átti að hefjast
með valdatíð þeirra. Sú valdatíð var ekki löng, en því
mannskæðari. Þrælkunarvinna, vannæring, hrun í heilbrigðiskerfinu og
beinar aftökur kostuðu á bilinu 750.000 - 1.700.000 manns lífið (sumir
segja á bilinu).
_ATEOF


cat >sample-texts/hr.txt <<'_ATEOF'
Nakon što je film završen početkom
1984., autori su krenuli tražiti distributera. Odnijeli su film u Los
Angeles i pokazali ga velikim studijima. Svi su odbili izuzev Oriona
koji je prihvatio distribuciju, ali uz uvjet da ne bi ništa platio
unaprijed, što je investitorima bilo neprihvatljivo. Joel Coen
napominje da se dogovorio sa agentom za prodaju prava u inozemstvu
kako bi se napokon film počeo prikazivati negdje, no to je bio
riskantan potez jer to ubija zanimanje domaćih distributera.
_ATEOF


cat >sample-texts/cz.txt <<'_ATEOF'
Volarský dům alpského typu (německy
Wallerer Haus) je na území České
republiky ojedinělý typ venkovského dřevěného domu, jenž se vyskytuje
v šumavském městě Volary, které proto někdy bylo nazýváno „alpským
městečkem na Šumavě“. Mimo Volary se vyskytuje ještě v sousední obci
Dobrá a další jeden dům se nachází v Železné Rudě.[1] Další, do
současnosti nedochované domy, se nacházely v Českých Žlebech, Lenoře,
Hůrce a Vimperku. V širším okolí Šumavy (Chodsko, Klatovsko, Plánicko)
se vyskytují domy volarským stylem více nebo méně ovlivněné.[2]
_ATEOF


cat >sample-texts/de.txt <<'_ATEOF'
Urkundlich wurde Rehme 753 erstmals
in den fränkischen Reichsannalen erwähnt, als sich die fränkischen
Könige Pippin der Jüngere und sein Nachfolger Karl der Große auf
Feldzügen dorthin begaben.[2] Seit ca. 800 ist Rehme Sitz einer
Kirchengemeinde. Die romanische Laurentiuskirche stammt aus dem
12. Jahrhundert und wurde 1890–1892 im neoromanischen Stil erweitert.
_ATEOF


cat >sample-texts/ang.txt <<'_ATEOF'
Regn is ƿǣt æðmhēap, nā heard cynn
æðmhēapes sƿilce snāƿ, hægel, and īsregn. Tō regnenne, hit is nȳdmicel
þæt þicce dǣl þæs lyfthelmes sīe ƿearmra þonne his hāt meltunge, nēah
þǣm andƿlitan þǣre eorðan and ēac ofer him. Hē is sēo gæderung þæs
lyfthelmes æðmes on lyfte oþþæt hē is sƿā hefig þæt hē fealle, oft
full tō þǣre eorðan þǣm andƿlitan. Tū ƿeorc cunnon fyllan þā lyfte
oþþæt hire ƿæter beflōƿe: sēo acēlung þǣre lyfte and sēo settung
ƿæteres æðmes on þā lyfte.
_ATEOF


cat >sample-texts/sv.txt <<'_ATEOF'
Årsmedeltemperaturen i trakten är 18
°C. Den varmaste månaden är januari, då medeltemperaturen är 20 °C,
och den kallaste är juni, med 16 °C.[5] Genomsnittlig årsnederbörd är
2 874 millimeter. Den regnigaste månaden är februari, med i genomsnitt
421 mm nederbörd, och den torraste är augusti, med 79 mm nederbörd.[6]
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/tex.at:156: tex-strings -o pspp.tex sample-texts/*"
at_fn_check_prepare_trace "tex.at:156"
( $at_check_trace; tex-strings -o pspp.tex sample-texts/*
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:156"
$at_failed && at_fn_log_failure
$at_traceon; }


printf "%s\n" "tex.at:158" >"$at_check_line_file"
(test "$TEX" = no) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:158"
printf "%s\n" "tex.at:159" >"$at_check_line_file"
(! kpsewhich wasyfont.tex) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:159"
{ set +x
printf "%s\n" "$at_srcdir/tex.at:160: \$TEX --halt-on-error pspp.tex"
at_fn_check_prepare_dynamic "$TEX --halt-on-error pspp.tex" "tex.at:160"
( $at_check_trace; $TEX --halt-on-error pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:160"
$at_failed && at_fn_log_failure
$at_traceon; }


test -z "$at_arg_xdvi" || { set +x
printf "%s\n" "$at_srcdir/tex.at:162: \$at_arg_xdvi -s 3 pspp.dvi"
at_fn_check_prepare_dynamic "$at_arg_xdvi -s 3 pspp.dvi" "tex.at:162"
( $at_check_trace; $at_arg_xdvi -s 3 pspp.dvi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:162"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1593
#AT_START_1594
at_fn_group_banner 1594 'tex.at:170' \
  "tex simple example" "                             " 156
at_xfail=no
(
  printf "%s\n" "1594. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >simple.sps <<'_ATEOF'
data list list /name (a16) score *.
begin data
alfred   34.0
bertram  12.2
charlie  12.1
david    54.1
end data.

descriptives /score.
_ATEOF



{ set +x
printf "%s\n" "$at_srcdir/tex.at:185: pspp -O format=tex simple.sps"
at_fn_check_prepare_trace "tex.at:185"
( $at_check_trace; pspp -O format=tex simple.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:185"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:186: (while IFS= read -r line; do max=\$(( max > \${#line} ? max : \${#line} )); done; test \$max -le 80) < pspp.tex"
at_fn_check_prepare_notrace 'a $(...) command substitution' "tex.at:186"
( $at_check_trace; (while IFS= read -r line; do max=$(( max > ${#line} ? max : ${#line} )); done; test $max -le 80) < pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:186"
$at_failed && at_fn_log_failure
$at_traceon; }


printf "%s\n" "tex.at:188" >"$at_check_line_file"
(test "$TEX" = no) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:188"
{ set +x
printf "%s\n" "$at_srcdir/tex.at:189: \$TEX --halt-on-error pspp.tex"
at_fn_check_prepare_dynamic "$TEX --halt-on-error pspp.tex" "tex.at:189"
( $at_check_trace; $TEX --halt-on-error pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:189"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/tex.at:192: grep '^Overfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:192"
( $at_check_trace; grep '^Overfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:192"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:194: grep '^Underfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:194"
( $at_check_trace; grep '^Underfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:194"
$at_failed && at_fn_log_failure
$at_traceon; }


test -z "$at_arg_xdvi" || { set +x
printf "%s\n" "$at_srcdir/tex.at:196: \$at_arg_xdvi -s 3 pspp.dvi"
at_fn_check_prepare_dynamic "$at_arg_xdvi -s 3 pspp.dvi" "tex.at:196"
( $at_check_trace; $at_arg_xdvi -s 3 pspp.dvi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:196"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1594
#AT_START_1595
at_fn_group_banner 1595 'tex.at:202' \
  "tex another example" "                            " 156
at_xfail=no
(
  printf "%s\n" "1595. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/tex.at:204: pspp -O format=tex \"\$abs_top_srcdir/examples/regress.sps\""
at_fn_check_prepare_dynamic "pspp -O format=tex \"$abs_top_srcdir/examples/regress.sps\"" "tex.at:204"
( $at_check_trace; pspp -O format=tex "$abs_top_srcdir/examples/regress.sps"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:204"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:205: (while IFS= read -r line; do max=\$(( max > \${#line} ? max : \${#line} )); done; test \$max -le 80) < pspp.tex"
at_fn_check_prepare_notrace 'a $(...) command substitution' "tex.at:205"
( $at_check_trace; (while IFS= read -r line; do max=$(( max > ${#line} ? max : ${#line} )); done; test $max -le 80) < pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:205"
$at_failed && at_fn_log_failure
$at_traceon; }



printf "%s\n" "tex.at:208" >"$at_check_line_file"
(test "$TEX" = no) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:208"
{ set +x
printf "%s\n" "$at_srcdir/tex.at:209: \$TEX --halt-on-error pspp.tex"
at_fn_check_prepare_dynamic "$TEX --halt-on-error pspp.tex" "tex.at:209"
( $at_check_trace; $TEX --halt-on-error pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:209"
$at_failed && at_fn_log_failure
$at_traceon; }


test -z "$at_arg_xdvi" || { set +x
printf "%s\n" "$at_srcdir/tex.at:211: \$at_arg_xdvi -s 3 pspp.dvi"
at_fn_check_prepare_dynamic "$at_arg_xdvi -s 3 pspp.dvi" "tex.at:211"
( $at_check_trace; $at_arg_xdvi -s 3 pspp.dvi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:211"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1595
#AT_START_1596
at_fn_group_banner 1596 'tex.at:217' \
  "tex table footnotes" "                            " 156
at_xfail=no
(
  printf "%s\n" "1596. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >footnote.sps <<'_ATEOF'
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
	.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/tex.at:239: pspp -O format=tex footnote.sps"
at_fn_check_prepare_trace "tex.at:239"
( $at_check_trace; pspp -O format=tex footnote.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:239"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:240: (while IFS= read -r line; do max=\$(( max > \${#line} ? max : \${#line} )); done; test \$max -le 80) < pspp.tex"
at_fn_check_prepare_notrace 'a $(...) command substitution' "tex.at:240"
( $at_check_trace; (while IFS= read -r line; do max=$(( max > ${#line} ? max : ${#line} )); done; test $max -le 80) < pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:240"
$at_failed && at_fn_log_failure
$at_traceon; }


printf "%s\n" "tex.at:242" >"$at_check_line_file"
(test "$TEX" = no) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:242"
{ set +x
printf "%s\n" "$at_srcdir/tex.at:243: \$TEX --halt-on-error pspp.tex"
at_fn_check_prepare_dynamic "$TEX --halt-on-error pspp.tex" "tex.at:243"
( $at_check_trace; $TEX --halt-on-error pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:243"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/tex.at:246: grep '^Overfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:246"
( $at_check_trace; grep '^Overfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:246"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:248: grep '^Underfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:248"
( $at_check_trace; grep '^Underfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:248"
$at_failed && at_fn_log_failure
$at_traceon; }


test -z "$at_arg_xdvi" || { set +x
printf "%s\n" "$at_srcdir/tex.at:250: \$at_arg_xdvi -s 3 pspp.dvi"
at_fn_check_prepare_dynamic "$at_arg_xdvi -s 3 pspp.dvi" "tex.at:250"
( $at_check_trace; $at_arg_xdvi -s 3 pspp.dvi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:250"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1596
#AT_START_1597
at_fn_group_banner 1597 'tex.at:257' \
  "tex non-ascii" "                                  " 156
at_xfail=no
(
  printf "%s\n" "1597. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >utf8.sps <<'_ATEOF'
set format = F11.3.
data list notable list /items (a16).
begin data.
Äpfeln
Öl
Üter
Tschüß
école
côte
français
þekktastur
landbúnað
16°C
powierzchnię
12.03km²
end data.

frequencies items.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/tex.at:280: LC_ALL=C.UTF-8 pspp -O format=tex utf8.sps"
at_fn_check_prepare_trace "tex.at:280"
( $at_check_trace; LC_ALL=C.UTF-8 pspp -O format=tex utf8.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:280"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:281: (while IFS= read -r line; do max=\$(( max > \${#line} ? max : \${#line} )); done; test \$max -le 80) < pspp.tex"
at_fn_check_prepare_notrace 'a $(...) command substitution' "tex.at:281"
( $at_check_trace; (while IFS= read -r line; do max=$(( max > ${#line} ? max : ${#line} )); done; test $max -le 80) < pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:281"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/tex.at:284: grep -F '??' pspp.tex"
at_fn_check_prepare_trace "tex.at:284"
( $at_check_trace; grep -F '??' pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:284"
$at_failed && at_fn_log_failure
$at_traceon; }


printf "%s\n" "tex.at:286" >"$at_check_line_file"
(test "$TEX" = no) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:286"
{ set +x
printf "%s\n" "$at_srcdir/tex.at:287: \$TEX --halt-on-error pspp.tex"
at_fn_check_prepare_dynamic "$TEX --halt-on-error pspp.tex" "tex.at:287"
( $at_check_trace; $TEX --halt-on-error pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:287"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/tex.at:290: grep '^Overfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:290"
( $at_check_trace; grep '^Overfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:290"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:292: grep '^Underfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:292"
( $at_check_trace; grep '^Underfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:292"
$at_failed && at_fn_log_failure
$at_traceon; }


test -z "$at_arg_xdvi" || { set +x
printf "%s\n" "$at_srcdir/tex.at:294: \$at_arg_xdvi -s 3 pspp.dvi"
at_fn_check_prepare_dynamic "$at_arg_xdvi -s 3 pspp.dvi" "tex.at:294"
( $at_check_trace; $at_arg_xdvi -s 3 pspp.dvi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:294"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1597
#AT_START_1598
at_fn_group_banner 1598 'tex.at:301' \
  "tex multispan" "                                  " 156
at_xfail=no
(
  printf "%s\n" "1598. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >t-test.sps <<'_ATEOF'
set format = F11.3.
data list notable list /score * group (a20).
begin data.
1 this
2 this
3 this
4 this
5 that
6 that
7 that
8 that
end data.

t-test /variables=score /group=group("this", "that").
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/tex.at:320: pspp -O format=tex t-test.sps"
at_fn_check_prepare_trace "tex.at:320"
( $at_check_trace; pspp -O format=tex t-test.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:320"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:321: (while IFS= read -r line; do max=\$(( max > \${#line} ? max : \${#line} )); done; test \$max -le 80) < pspp.tex"
at_fn_check_prepare_notrace 'a $(...) command substitution' "tex.at:321"
( $at_check_trace; (while IFS= read -r line; do max=$(( max > ${#line} ? max : ${#line} )); done; test $max -le 80) < pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:321"
$at_failed && at_fn_log_failure
$at_traceon; }


printf "%s\n" "tex.at:323" >"$at_check_line_file"
(test "$TEX" = no) \
  && at_fn_check_skip 77 "$at_srcdir/tex.at:323"
{ set +x
printf "%s\n" "$at_srcdir/tex.at:324: \$TEX --halt-on-error pspp.tex"
at_fn_check_prepare_dynamic "$TEX --halt-on-error pspp.tex" "tex.at:324"
( $at_check_trace; $TEX --halt-on-error pspp.tex
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:324"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/tex.at:327: grep '^Overfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:327"
( $at_check_trace; grep '^Overfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:327"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/tex.at:329: grep '^Underfull ' pspp.log"
at_fn_check_prepare_trace "tex.at:329"
( $at_check_trace; grep '^Underfull ' pspp.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/tex.at:329"
$at_failed && at_fn_log_failure
$at_traceon; }


test -z "$at_arg_xdvi" || { set +x
printf "%s\n" "$at_srcdir/tex.at:331: \$at_arg_xdvi -s 3 pspp.dvi"
at_fn_check_prepare_dynamic "$at_arg_xdvi -s 3 pspp.dvi" "tex.at:331"
( $at_check_trace; $at_arg_xdvi -s 3 pspp.dvi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/tex.at:331"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1598
#AT_START_1599
at_fn_group_banner 1599 'main.at:19' \
  "nonexistent syntax file crash" "                  " 157
at_xfail=no
(
  printf "%s\n" "1599. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/main.at:20: pspp nonexistent"
at_fn_check_prepare_trace "main.at:20"
( $at_check_trace; pspp nonexistent
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "error: Opening \`nonexistent': No such file or directory.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/main.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1599
#AT_START_1600
at_fn_group_banner 1600 'main.at:25' \
  "SIGTERM yields clean shutdown" "                  " 157
at_xfail=no
(
  printf "%s\n" "1600. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >main.sps <<'_ATEOF'
INPUT PROGRAM.
COMPUTE x = x + 1.
DO IF x = 10000.
END CASE.
ELSE IF x < 0.
END FILE.
END IF.
END INPUT PROGRAM.
EXECUTE.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/main.at:38: pspp main.sps & sleep 1; kill \$!; wait \$!"
at_fn_check_prepare_dynamic "pspp main.sps & sleep 1; kill $!; wait $!" "main.at:38"
( $at_check_trace; pspp main.sps & sleep 1; kill $!; wait $!
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 143 $at_status "$at_srcdir/main.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1600
#AT_START_1601
at_fn_group_banner 1601 'main.at:41' \
  "SIGSEGV yields error report" "                    " 157
at_xfail=no
(
  printf "%s\n" "1601. $at_setup_line: testing $at_desc ..."
  $at_traceon

# This test intentionally causes SIGSEGV, so make Address Sanitizer ignore it.
ASAN_OPTIONS=$ASAN_OPTIONS:handle_segv=0; export ASAN_OPTIONS

{ set +x
printf "%s\n" "$at_srcdir/main.at:45: echo 'host command=[\"kill -SEGV \$PPID\"].' | pspp -O format=csv"
at_fn_check_prepare_notrace 'a shell pipeline' "main.at:45"
( $at_check_trace; echo 'host command=["kill -SEGV $PPID"].' | pspp -O format=csv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 139 $at_status "$at_srcdir/main.at:45"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > expout <<EOF
******************************************************
You have discovered a bug in PSPP.  Please report this
to $PACKAGE_BUGREPORT.  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

{ set +x
printf "%s\n" "$at_srcdir/main.at:59: sed '/proximate/q' < stderr"
at_fn_check_prepare_trace "main.at:59"
( $at_check_trace; sed '/proximate/q' < stderr
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
$at_diff expout "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/main.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1601
#AT_START_1602
at_fn_group_banner 1602 'main.at:63' \
  "argument parsing" "                               " 157
at_xfail=no
(
  printf "%s\n" "1602. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >main.sps <<'_ATEOF'
ECHO 'This is a test'.
FINISH.
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/main.at:70: pspp --syntax=enhanced main.sps"
at_fn_check_prepare_trace "main.at:70"
( $at_check_trace; pspp --syntax=enhanced main.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/main.at:70"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1602
#AT_START_1603
at_fn_group_banner 1603 'syntax-gen.at:19' \
  "Syntax Generation - printf like" "                " 158
at_xfail=no
(
  printf "%s\n" "1603. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/syntax-gen.at:21: \"\$abs_top_builddir/tests/ui/syntax-gen-test\""
at_fn_check_prepare_dynamic "\"$abs_top_builddir/tests/ui/syntax-gen-test\"" "syntax-gen.at:21"
( $at_check_trace; "$abs_top_builddir/tests/ui/syntax-gen-test"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "A simple string: Hello worldEND
A syntax string: \"Hello world\"END
A syntax string containing \": 'here\"is the quote'END
A syntax string containing non-printables: X'41204374726C4C0C63686172'END
An integer: 98765END
A floating point number: 3.142END
A floating point number with default precision: 1.234000END
A floating point number with given precision: 1.23399999999999998579END
A literal %
and finally a \"concatination\" of 6 different 20.309000 examples 23.09 of 100% conversions.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/syntax-gen.at:21"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1603
#AT_START_1604
at_fn_group_banner 1604 'pspp-convert.at:3' \
  "pspp-convert crash when output cannot be opened" "" 159
at_xfail=no
(
  printf "%s\n" "1604. $at_setup_line: testing $at_desc ..."
  $at_traceon

cat >sysfile.sps <<'_ATEOF'
DATA LIST NOTABLE/x 1.
BEGIN DATA.
5
END DATA.
SAVE OUTFILE='data.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/pspp-convert.at:12: pspp -O format=csv sysfile.sps"
at_fn_check_prepare_trace "pspp-convert.at:12"
( $at_check_trace; pspp -O format=csv sysfile.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-convert.at:12"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/pspp-convert.at:14: pspp-convert data.sav nonexistent/output.sav"
at_fn_check_prepare_trace "pspp-convert.at:14"
( $at_check_trace; pspp-convert data.sav nonexistent/output.sav
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/pspp-convert.at:14"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/pspp-convert.at:15: grep '[eE]rror opening' stderr"
at_fn_check_prepare_trace "pspp-convert.at:15"
( $at_check_trace; grep '[eE]rror opening' stderr
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Error opening \`nonexistent/output.sav' for writing as a system file: No such file or directory.
pspp-convert: nonexistent/output.sav: error opening output file
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-convert.at:15"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1604
#AT_START_1605
at_fn_group_banner 1605 'pspp-output.at:18' \
  "pspp-output dir" "                                " 160
at_xfail=no
(
  printf "%s\n" "1605. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:19: pspp-output dir \$srcdir/utilities/regress.spv"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv" "pspp-output.at:19"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- group \"Set\" command \"Set\"
- group \"Title\" command \"Title\"
    - text \"Page Title\" command \"Title\"
- group \"Data List\" command \"Data List\"
    - table \"Reading 1 record from INLINE.\" command \"Data List\" subtype \"Fixed Data Records\"
- group \"Begin Data\" command \"Begin Data\"
- group \"List\" command \"List\"
    - table \"Data List\" command \"List\"
- group \"Frequencies\" command \"Frequencies\"
    - table \"Statistics\" command \"Frequencies\"
    - table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
- group \"Regression\" command \"Regression\"
    - table \"Model Summary (v2)\" command \"Regression\" subtype \"Model Summary\"
    - table \"ANOVA (v2)\" command \"Regression\" subtype \"ANOVA\"
    - table \"Coefficients (v2)\" command \"Regression\" subtype \"Coefficients\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1605
#AT_START_1606
at_fn_group_banner 1606 'pspp-output.at:40' \
  "pspp-output --select equal" "                     " 160
at_xfail=no
(
  printf "%s\n" "1606. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:41: pspp-output dir \$srcdir/utilities/regress.spv --select=tables"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --select=tables" "pspp-output.at:41"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --select=tables
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- table \"Reading 1 record from INLINE.\" command \"Data List\" subtype \"Fixed Data Records\"
- table \"Data List\" command \"List\"
- table \"Statistics\" command \"Frequencies\"
- table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
- table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
- table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
- table \"Model Summary (v2)\" command \"Regression\" subtype \"Model Summary\"
- table \"ANOVA (v2)\" command \"Regression\" subtype \"ANOVA\"
- table \"Coefficients (v2)\" command \"Regression\" subtype \"Coefficients\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1606
#AT_START_1607
at_fn_group_banner 1607 'pspp-output.at:55' \
  "pspp-output --select unequal" "                   " 160
at_xfail=no
(
  printf "%s\n" "1607. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:56: pspp-output dir \$srcdir/utilities/regress.spv --select=^outlineheaders"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --select=^outlineheaders" "pspp-output.at:56"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --select=^outlineheaders
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- text \"Page Title\" command \"Title\"
- table \"Reading 1 record from INLINE.\" command \"Data List\" subtype \"Fixed Data Records\"
- table \"Data List\" command \"List\"
- table \"Statistics\" command \"Frequencies\"
- table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
- table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
- table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
- table \"Model Summary (v2)\" command \"Regression\" subtype \"Model Summary\"
- table \"ANOVA (v2)\" command \"Regression\" subtype \"ANOVA\"
- table \"Coefficients (v2)\" command \"Regression\" subtype \"Coefficients\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:56"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1607
#AT_START_1608
at_fn_group_banner 1608 'pspp-output.at:71' \
  "pspp-output --commands equal" "                   " 160
at_xfail=no
(
  printf "%s\n" "1608. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:72: pspp-output dir \$srcdir/utilities/regress.spv --commands='reg*'"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --commands='reg*'" "pspp-output.at:72"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --commands='reg*'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- group \"Regression\" command \"Regression\"
    - table \"Model Summary (v2)\" command \"Regression\" subtype \"Model Summary\"
    - table \"ANOVA (v2)\" command \"Regression\" subtype \"ANOVA\"
    - table \"Coefficients (v2)\" command \"Regression\" subtype \"Coefficients\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:72"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1608
#AT_START_1609
at_fn_group_banner 1609 'pspp-output.at:81' \
  "pspp-output --commands unequal" "                 " 160
at_xfail=no
(
  printf "%s\n" "1609. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:82: pspp-output dir \$srcdir/utilities/regress.spv --commands='^reg*'"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --commands='^reg*'" "pspp-output.at:82"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --commands='^reg*'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- group \"Set\" command \"Set\"
- group \"Title\" command \"Title\"
    - text \"Page Title\" command \"Title\"
- group \"Data List\" command \"Data List\"
    - table \"Reading 1 record from INLINE.\" command \"Data List\" subtype \"Fixed Data Records\"
- group \"Begin Data\" command \"Begin Data\"
- group \"List\" command \"List\"
    - table \"Data List\" command \"List\"
- group \"Frequencies\" command \"Frequencies\"
    - table \"Statistics\" command \"Frequencies\"
    - table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1609
#AT_START_1610
at_fn_group_banner 1610 'pspp-output.at:100' \
  "pspp-output --nth-commands" "                     " 160
at_xfail=no
(
  printf "%s\n" "1610. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:101: pspp-output dir \$srcdir/utilities/regress.spv --nth-commands=2,4,6"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --nth-commands=2,4,6" "pspp-output.at:101"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --nth-commands=2,4,6
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- group \"Title\" command \"Title\"
    - text \"Page Title\" command \"Title\"
- group \"Begin Data\" command \"Begin Data\"
- group \"Frequencies\" command \"Frequencies\"
    - table \"Statistics\" command \"Frequencies\"
    - table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:101"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1610
#AT_START_1611
at_fn_group_banner 1611 'pspp-output.at:114' \
  "pspp-output --subtypes equal" "                   " 160
at_xfail=no
(
  printf "%s\n" "1611. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:115: pspp-output dir \$srcdir/utilities/regress.spv --subtypes='freq*'"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --subtypes='freq*'" "pspp-output.at:115"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --subtypes='freq*'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
- table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
- table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:115"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1611
#AT_START_1612
at_fn_group_banner 1612 'pspp-output.at:123' \
  "pspp-output --subtypes unequal" "                 " 160
at_xfail=no
(
  printf "%s\n" "1612. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:124: pspp-output dir \$srcdir/utilities/regress.spv --subtypes='^freq*'"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --subtypes='^freq*'" "pspp-output.at:124"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --subtypes='^freq*'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- group \"Set\" command \"Set\"
- group \"Title\" command \"Title\"
    - text \"Page Title\" command \"Title\"
- group \"Data List\" command \"Data List\"
    - table \"Reading 1 record from INLINE.\" command \"Data List\" subtype \"Fixed Data Records\"
- group \"Begin Data\" command \"Begin Data\"
- group \"List\" command \"List\"
    - table \"Data List\" command \"List\"
- group \"Frequencies\" command \"Frequencies\"
    - table \"Statistics\" command \"Frequencies\"
- group \"Regression\" command \"Regression\"
    - table \"Model Summary (v2)\" command \"Regression\" subtype \"Model Summary\"
    - table \"ANOVA (v2)\" command \"Regression\" subtype \"ANOVA\"
    - table \"Coefficients (v2)\" command \"Regression\" subtype \"Coefficients\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:124"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1612
#AT_START_1613
at_fn_group_banner 1613 'pspp-output.at:143' \
  "pspp-output --labels equal" "                     " 160
at_xfail=no
(
  printf "%s\n" "1613. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:144: pspp-output dir \$srcdir/utilities/regress.spv --labels='v*'"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --labels='v*'" "pspp-output.at:144"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --labels='v*'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
- table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
- table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:144"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1613
#AT_START_1614
at_fn_group_banner 1614 'pspp-output.at:152' \
  "pspp-output --labels unequal" "                   " 160
at_xfail=no
(
  printf "%s\n" "1614. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:153: pspp-output dir \$srcdir/utilities/regress.spv --labels='^data*'"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --labels='^data*'" "pspp-output.at:153"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --labels='^data*'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- group \"Set\" command \"Set\"
- group \"Title\" command \"Title\"
    - text \"Page Title\" command \"Title\"
- table \"Reading 1 record from INLINE.\" command \"Data List\" subtype \"Fixed Data Records\"
- group \"Begin Data\" command \"Begin Data\"
- group \"List\" command \"List\"
- group \"Frequencies\" command \"Frequencies\"
    - table \"Statistics\" command \"Frequencies\"
    - table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
- group \"Regression\" command \"Regression\"
    - table \"Model Summary (v2)\" command \"Regression\" subtype \"Model Summary\"
    - table \"ANOVA (v2)\" command \"Regression\" subtype \"ANOVA\"
    - table \"Coefficients (v2)\" command \"Regression\" subtype \"Coefficients\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:153"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1614
#AT_START_1615
at_fn_group_banner 1615 'pspp-output.at:173' \
  "pspp-output --instances" "                        " 160
at_xfail=no
(
  printf "%s\n" "1615. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:174: pspp-output dir \$srcdir/utilities/regress.spv --instances=1"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --instances=1" "pspp-output.at:174"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --instances=1
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- text \"Page Title\" command \"Title\"
- table \"Reading 1 record from INLINE.\" command \"Data List\" subtype \"Fixed Data Records\"
- table \"Data List\" command \"List\"
- table \"Statistics\" command \"Frequencies\"
- table \"Model Summary (v2)\" command \"Regression\" subtype \"Model Summary\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1615
#AT_START_1616
at_fn_group_banner 1616 'pspp-output.at:184' \
  "pspp-output --instances=last" "                   " 160
at_xfail=no
(
  printf "%s\n" "1616. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:186: pspp-output dir \$srcdir/utilities/regress.spv --instances=last"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --instances=last" "pspp-output.at:186"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --instances=last
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- text \"Page Title\" command \"Title\"
- table \"Reading 1 record from INLINE.\" command \"Data List\" subtype \"Fixed Data Records\"
- table \"Data List\" command \"List\"
- table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
- table \"Coefficients (v2)\" command \"Regression\" subtype \"Coefficients\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:186"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1616
#AT_START_1617
at_fn_group_banner 1617 'pspp-output.at:199' \
  "pspp-output --or" "                               " 160
at_xfail=no
(
  printf "%s\n" "1617. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:200: pspp-output dir \$srcdir/utilities/regress.spv --select=outlineheaders --or --labels='v*'"
at_fn_check_prepare_dynamic "pspp-output dir $srcdir/utilities/regress.spv --select=outlineheaders --or --labels='v*'" "pspp-output.at:200"
( $at_check_trace; pspp-output dir $srcdir/utilities/regress.spv --select=outlineheaders --or --labels='v*'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "- group \"Set\" command \"Set\"
- group \"Title\" command \"Title\"
- group \"Data List\" command \"Data List\"
- group \"Begin Data\" command \"Begin Data\"
- group \"List\" command \"List\"
- group \"Frequencies\" command \"Frequencies\"
    - table \"v0\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v1\" command \"Frequencies\" subtype \"Frequencies\"
    - table \"v2\" command \"Frequencies\" subtype \"Frequencies\"
- group \"Regression\" command \"Regression\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:200"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1617
#AT_START_1618
at_fn_group_banner 1618 'pspp-output.at:215' \
  "pspp-output convert" "                            " 160
at_xfail=no
(
  printf "%s\n" "1618. $at_setup_line: testing $at_desc ..."
  $at_traceon

{ set +x
printf "%s\n" "$at_srcdir/pspp-output.at:216: pspp-output convert \$srcdir/utilities/regress.spv -O format=csv - --subtypes='model*'"
at_fn_check_prepare_dynamic "pspp-output convert $srcdir/utilities/regress.spv -O format=csv - --subtypes='model*'" "pspp-output.at:216"
( $at_check_trace; pspp-output convert $srcdir/utilities/regress.spv -O format=csv - --subtypes='model*'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Model Summary (v2)
R,R Square,Adjusted R Square,Std. Error of the Estimate
.96,.92,.91,1.49
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/pspp-output.at:216"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1618
#AT_START_1619
at_fn_group_banner 1619 'perl-module.at:48' \
  "Perl create system file" "                        " 161
at_xfail=no
(
  printf "%s\n" "1619. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:49" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:49"
cat >test.pl <<'_ATEOF'
use warnings;
   use strict;
   use PSPP;

   my $d = PSPP::Dict->new();
   die "dictionary creation" if !ref $d;
   die if $d->get_var_cnt () != 0;

   $d->set_label ("My Dictionary");
   $d->set_documents ("These Documents");

   # Tests for variable creation

   my $var0 = PSPP::Var->new ($d, "le");
   die "trap illegal variable name" if ref $var0;
   die if $d->get_var_cnt () != 0;

   $var0 = PSPP::Var->new ($d, "legal");
   die "accept legal variable name" if !ref $var0;
   die if $d->get_var_cnt () != 1;

   my $var1 = PSPP::Var->new ($d, "money",
			      (fmt=>PSPP::Fmt::DOLLAR,
			       width=>4, decimals=>2) );
   die "cappet valid format" if !ref $var1;
   die if $d->get_var_cnt () != 2;

   $d->set_weight ($var1);

   my $sysfile = PSPP::Sysfile->new ('testfile.sav', $d);
   die "create sysfile object" if !ref $sysfile;

   $sysfile->close ();
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:85: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:85"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:85"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >dump-dict.sps <<'_ATEOF'
GET FILE='testfile.sav'.
DISPLAY FILE LABEL.
DISPLAY DOCUMENTS.
DISPLAY DICTIONARY.
SHOW WEIGHT.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:93: pspp -O format=csv dump-dict.sps"
at_fn_check_prepare_trace "perl-module.at:93"
( $at_check_trace; pspp -O format=csv dump-dict.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: File Label
Label,My Dictionary

Table: Documents
These Documents

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
legal,1,Scale,Input,8,Right,F9.2,F9.2
money,2,Scale,Input,8,Right,DOLLAR6.2,DOLLAR6.2

Table: Settings
WEIGHT,money
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:93"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1619
#AT_START_1620
at_fn_group_banner 1620 'perl-module.at:110' \
  "Perl writing cases to system files" "             " 161
at_xfail=no
(
  printf "%s\n" "1620. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:111" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:111"
cat >test.pl <<'_ATEOF'
use warnings;
    use strict;
    use PSPP;

    my $d = PSPP::Dict->new();
    PSPP::Var->new ($d, "id",
		    (
		     fmt=>PSPP::Fmt::F,
		     width=>2,
		     decimals=>0
		     )
		    );

    PSPP::Var->new ($d, "name",
			   (
			    fmt=>PSPP::Fmt::A,
			    width=>20,
			    )
			   );

    $d->set_documents ("This should not appear");
    $d->clear_documents ();
    $d->add_document ("This is a document line");

    $d->set_label ("This is the file label");

    # Check that we can write cases to system files.
    my $sysfile = PSPP::Sysfile->new ("testfile.sav", $d);
    my $res = $sysfile->append_case ( [34, "frederick"]);
    die "append case" if !$res;

    $res = $sysfile->append_case ( [34, "frederick", "extra"]);
    die "append case with too many variables" if $res;
    $sysfile->close ();

    # Check that sysfiles are closed properly automaticallly in the destructor.
    my $sysfile2 = PSPP::Sysfile->new ("testfile2.sav", $d);
    $res = $sysfile2->append_case ( [21, "wheelbarrow"]);
    die "append case 2" if !$res;

    $res = $sysfile->append_case ( [34, "frederick", "extra"]);
    die "append case with too many variables" if $res;

    # Don't close.  We want to test that the destructor does that.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:158: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:158"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:158"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >dump-dicts.sps <<'_ATEOF'
GET FILE='testfile.sav'.
DISPLAY DICTIONARY.
DISPLAY FILE LABEL.
DISPLAY DOCUMENTS.
LIST.

GET FILE='testfile2.sav'.
DISPLAY DICTIONARY.
DISPLAY FILE LABEL.
DISPLAY DOCUMENTS.
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:172: pspp -O format=csv dump-dicts.sps"
at_fn_check_prepare_trace "perl-module.at:172"
( $at_check_trace; pspp -O format=csv dump-dicts.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
id,1,Scale,Input,8,Right,F2.0,F2.0
name,2,Nominal,Input,20,Left,A20,A20

Table: File Label
Label,This is the file label

Table: Documents
This is a document line

Table: Data List
id,name
34,frederick

Table: Variables
Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
id,1,Scale,Input,8,Right,F2.0,F2.0
name,2,Nominal,Input,20,Left,A20,A20

Table: File Label
Label,This is the file label

Table: Documents
This is a document line

Table: Data List
id,name
21,wheelbarrow
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:172"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1620
#AT_START_1621
at_fn_group_banner 1621 'perl-module.at:205' \
  "Perl write variable parameters" "                 " 161
at_xfail=no
(
  printf "%s\n" "1621. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:206" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:206"
cat >test.pl <<'_ATEOF'
use warnings;
    use strict;
    use PSPP;

    my $dict = PSPP::Dict->new();
    die "dictionary creation" if !ref $dict;

    my $int = PSPP::Var->new ($dict, "integer",
			      (width=>8, decimals=>0) );

    $int->set_label ("My Integer");

    $int->add_value_label (99, "Silly");
    $int->clear_value_labels ();
    $int->add_value_label (0, "Zero");
    $int->add_value_label (1, "Unity");
    $int->add_value_label (2, "Duality");

    my $str = PSPP::Var->new ($dict, "string",
			      (fmt=>PSPP::Fmt::A, width=>8) );


    $str->set_label ("My String");
    $str->add_value_label ("xx", "foo");
    $str->add_value_label ("yy", "bar");

    $str->set_missing_values ("this", "that");

    my $longstr = PSPP::Var->new ($dict, "longstring",
			      (fmt=>PSPP::Fmt::A, width=>9) );


    $longstr->set_label ("My Long String");
    my $re = $longstr->add_value_label ("xxx", "xfoo");

    $int->set_missing_values (9, 99);

    my $sysfile = PSPP::Sysfile->new ("testfile.sav", $dict);


    $sysfile->close ();
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:250: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:250"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; tee stderr <"$at_stderr"
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:250"
$at_failed && at_fn_log_failure
$at_traceon; }

cat stderr
cat >dump-dict.sps <<'_ATEOF'
GET FILE='testfile.sav'.
DISPLAY DICTIONARY.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:256: pspp -O format=csv dump-dict.sps"
at_fn_check_prepare_trace "perl-module.at:256"
( $at_check_trace; pspp -O format=csv dump-dict.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
integer,1,My Integer,Scale,Input,8,Right,F8.0,F8.0,9; 99
string,2,My String,Nominal,Input,8,Left,A8,A8,\"\"\"this    \"\"; \"\"that    \"\"\"
longstring,3,My Long String,Nominal,Input,9,Left,A9,A9,

Table: Value Labels
Variable Value,,Label
My Integer,0,Zero
,1,Unity
,2,Duality
My String,xx,foo
,yy,bar
My Long String,xxx,xfoo
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:256"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1621
#AT_START_1622
at_fn_group_banner 1622 'perl-module.at:274' \
  "Perl dictionary survives system file" "           " 161
at_xfail=no
(
  printf "%s\n" "1622. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:275" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:275"
cat >test.pl <<'_ATEOF'
use warnings;
use strict;
use PSPP;

my $sysfile ;

    {
	my $d = PSPP::Dict->new();

	PSPP::Var->new ($d, "id",
			(
			 fmt=>PSPP::Fmt::F,
			 width=>2,
			 decimals=>0
			 )
			);

	$sysfile = PSPP::Sysfile->new ("testfile.sav", $d);
    }

    my $res = $sysfile->append_case ([3]);
    print "Dictionary survives sysfile\n" if $res;
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:300: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:300"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Dictionary survives sysfile
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:300"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1622
#AT_START_1623
at_fn_group_banner 1623 'perl-module.at:343' \
  "Perl read system file" "                          " 161
at_xfail=no
(
  printf "%s\n" "1623. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:344" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:344"
cat >sample.sps <<'_ATEOF'
data list notable list /string (a8) longstring (a12) numeric (f10) date (date11) dollar (dollar8.2) datetime (datetime17)
begin data.
1111 One   1 1/1/1 1   1/1/1+01:01
2222 Two   2 2/2/2 2   2/2/2+02:02
3333 Three 3 3/3/3 3   3/3/3+03:03
.    .     . .     .   .
5555 Five  5 5/5/5 5   5/5/5+05:05
end data.


variable labels string 'A Short String Variable'
  /longstring 'A Long String Variable'
  /numeric 'A Numeric Variable'
  /date 'A Date Variable'
  /dollar 'A Dollar Variable'
  /datetime 'A Datetime Variable'.


missing values numeric (9, 5, 999).

missing values string ("3333").

add value labels
  /string '1111' 'ones' '2222' 'twos' '3333' 'threes'
  /numeric 1 'Unity' 2 'Duality' 3 'Thripality'.

variable attribute
    variables = numeric
    attribute=colour[1]('blue') colour[2]('pink') colour[3]('violet')
    attribute=size('large') nationality('foreign').


save outfile='sample.sav'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/perl-module.at:345: pspp -O format=csv sample.sps"
at_fn_check_prepare_trace "perl-module.at:345"
( $at_check_trace; pspp -O format=csv sample.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:345"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >test.pl <<'_ATEOF'
use warnings;
    use strict;
    use PSPP;

    my $sf = PSPP::Reader->open ("sample.sav");

    my $dict = $sf->get_dict ();

    for (my $v = 0 ; $v < $dict->get_var_cnt() ; $v++)
    {
       my $var = $dict->get_var ($v);
       my $name = $var->get_name ();
       my $label = $var->get_label ();

       print "Variable $v is \"$name\", label is \"$label\"\n";

       my $vl = $var->get_value_labels ();

       print "Value Labels:\n";
       print "$_ => $vl->{$_}\n" for sort (keys %$vl);
    }

    while (my @c = $sf->get_next_case () )
    {
       for (my $v = 0; $v < $dict->get_var_cnt(); $v++)
       {
	   print "val$v: \"$c[$v]\"\n";
       }
       print "\n";
    }
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:378: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:378"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Variable 0 is \"string\", label is \"A Short String Variable\"
Value Labels:
1111     => ones
2222     => twos
3333     => threes
Variable 1 is \"longstring\", label is \"A Long String Variable\"
Value Labels:
Variable 2 is \"numeric\", label is \"A Numeric Variable\"
Value Labels:
1 => Unity
2 => Duality
3 => Thripality
Variable 3 is \"date\", label is \"A Date Variable\"
Value Labels:
Variable 4 is \"dollar\", label is \"A Dollar Variable\"
Value Labels:
Variable 5 is \"datetime\", label is \"A Datetime Variable\"
Value Labels:
val0: \"1111    \"
val1: \"One         \"
val2: \"1\"
val3: \"13197686400\"
val4: \"1\"
val5: \"13197690060\"

val0: \"2222    \"
val1: \"Two         \"
val2: \"2\"
val3: \"13231987200\"
val4: \"2\"
val5: \"13231994520\"

val0: \"3333    \"
val1: \"Three       \"
val2: \"3\"
val3: \"13266028800\"
val4: \"3\"
val5: \"13266039780\"

val0: \".       \"
val1: \".           \"
val2: \"\"
val3: \"\"
val4: \"\"
val5: \"\"

val0: \"5555    \"
val1: \"Five        \"
val2: \"5\"
val3: \"13334630400\"
val4: \"5\"
val5: \"13334648700\"

" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:378"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1623
#AT_START_1624
at_fn_group_banner 1624 'perl-module.at:435' \
  "Perl copying system files" "                      " 161
at_xfail=no
(
  printf "%s\n" "1624. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:436" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:436"
cat >sample.sps <<'_ATEOF'
data list notable list /string (a8) longstring (a12) numeric (f10) date (date11) dollar (dollar8.2) datetime (datetime17)
begin data.
1111 One   1 1/1/1 1   1/1/1+01:01
2222 Two   2 2/2/2 2   2/2/2+02:02
3333 Three 3 3/3/3 3   3/3/3+03:03
.    .     . .     .   .
5555 Five  5 5/5/5 5   5/5/5+05:05
end data.


variable labels string 'A Short String Variable'
  /longstring 'A Long String Variable'
  /numeric 'A Numeric Variable'
  /date 'A Date Variable'
  /dollar 'A Dollar Variable'
  /datetime 'A Datetime Variable'.


missing values numeric (9, 5, 999).

missing values string ("3333").

add value labels
  /string '1111' 'ones' '2222' 'twos' '3333' 'threes'
  /numeric 1 'Unity' 2 'Duality' 3 'Thripality'.

variable attribute
    variables = numeric
    attribute=colour[1]('blue') colour[2]('pink') colour[3]('violet')
    attribute=size('large') nationality('foreign').


save outfile='sample.sav'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/perl-module.at:437: pspp -O format=csv sample.sps"
at_fn_check_prepare_trace "perl-module.at:437"
( $at_check_trace; pspp -O format=csv sample.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:437"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >test.pl <<'_ATEOF'
use warnings;
    use strict;
    use PSPP;

    my $input = PSPP::Reader->open ("sample.sav");

    my $dict = $input->get_dict ();

    my $output = PSPP::Sysfile->new ("copy.sav", $dict);

    while (my (@c) = $input->get_next_case () )
    {
      $output->append_case (\@c);
    }

    $output->close ();
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:456: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:456"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:456"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >dump-dicts.sps <<'_ATEOF'
GET FILE='sample.sav'.
DISPLAY DICTIONARY.
DISPLAY ATTRIBUTES
LIST.

GET FILE='copy.sav'.
DISPLAY DICTIONARY.
DISPLAY ATTRIBUTES
LIST.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:468: pspp -O format=csv dump-dicts.sps"
at_fn_check_prepare_trace "perl-module.at:468"
( $at_check_trace; pspp -O format=csv dump-dicts.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
string,1,A Short String Variable,Nominal,Input,8,Left,A8,A8,\"\"\"3333    \"\"\"
longstring,2,A Long String Variable,Nominal,Input,12,Left,A12,A12,
numeric,3,A Numeric Variable,Nominal,Input,8,Right,F10.0,F10.0,9; 5; 999
date,4,A Date Variable,Scale,Input,8,Right,DATE11,DATE11,
dollar,5,A Dollar Variable,Scale,Input,8,Right,DOLLAR11.2,DOLLAR11.2,
datetime,6,A Datetime Variable,Scale,Input,8,Right,DATETIME17.0,DATETIME17.0,

Table: Value Labels
Variable Value,,Label
A Short String Variable,1111,ones
,2222,twos
,3333[a],threes
A Numeric Variable,1,Unity
,2,Duality
,3,Thripality
Footnote: a. User-missing value

Table: Variable and Dataset Attributes
Variable and Name,,Value
A Numeric Variable,colour[1],blue
,colour[2],pink
,colour[3],violet
,nationality,foreign
,size,large

Table: Data List
string,longstring,numeric,date,dollar,datetime
1111,One,1,01-JAN-2001,\$1.00,01-JAN-2001 01:01
2222,Two,2,02-FEB-2002,\$2.00,02-FEB-2002 02:02
3333,Three,3,03-MAR-2003,\$3.00,03-MAR-2003 03:03
.,.,.,.,.  ,.
5555,Five,5,05-MAY-2005,\$5.00,05-MAY-2005 05:05

Table: Variables
Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
string,1,A Short String Variable,Nominal,Input,8,Left,A8,A8,\"\"\"3333    \"\"\"
longstring,2,A Long String Variable,Nominal,Input,12,Left,A12,A12,
numeric,3,A Numeric Variable,Nominal,Input,8,Right,F10.0,F10.0,9; 5; 999
date,4,A Date Variable,Scale,Input,8,Right,DATE11,DATE11,
dollar,5,A Dollar Variable,Scale,Input,8,Right,DOLLAR11.2,DOLLAR11.2,
datetime,6,A Datetime Variable,Scale,Input,8,Right,DATETIME17.0,DATETIME17.0,

Table: Value Labels
Variable Value,,Label
A Short String Variable,1111,ones
,2222,twos
,3333[a],threes
A Numeric Variable,1,Unity
,2,Duality
,3,Thripality
Footnote: a. User-missing value

Table: Variable and Dataset Attributes
Variable and Name,,Value
A Numeric Variable,colour[1],blue
,colour[2],pink
,colour[3],violet
,nationality,foreign
,size,large

Table: Data List
string,longstring,numeric,date,dollar,datetime
1111,One,1,01-JAN-2001,\$1.00,01-JAN-2001 01:01
2222,Two,2,02-FEB-2002,\$2.00,02-FEB-2002 02:02
3333,Three,3,03-MAR-2003,\$3.00,03-MAR-2003 03:03
.,.,.,.,.  ,.
5555,Five,5,05-MAY-2005,\$5.00,05-MAY-2005 05:05
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:468"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1624
#AT_START_1625
at_fn_group_banner 1625 'perl-module.at:541' \
  "Perl value formatting" "                          " 161
at_xfail=no
(
  printf "%s\n" "1625. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:542" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:542"
cat >dd.sps <<'_ATEOF'
DATA LIST LIST /d (DATETIME17).
BEGIN DATA.
11/9/2001+08:20
END DATA.

SAVE OUTFILE='dd.sav'.
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:551: pspp -O format=csv dd.sps"
at_fn_check_prepare_trace "perl-module.at:551"
( $at_check_trace; pspp -O format=csv dd.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Table: Reading free-form data from INLINE.
Variable,Format
d,DATETIME17.0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:551"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >test.pl <<'_ATEOF'
use warnings;
    use strict;
    use PSPP;

    my $sf = PSPP::Reader->open ("dd.sav");

    my $dict = $sf->get_dict ();

    my (@c) = $sf->get_next_case ();

    my $var = $dict->get_var (0);
    my $val = $c[0];
    my $formatted = PSPP::format_value ($val, $var);
    my $str = gmtime ($val - PSPP::PERL_EPOCH);
    print "Formatted string is \"$formatted\"\n";
    print "Perl representation is \"$str\"\n";
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:574: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:574"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Formatted string is \"11-SEP-2001 08:20\"
Perl representation is \"Tue Sep 11 08:20:00 2001\"
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:574"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1625
#AT_START_1626
at_fn_group_banner 1626 'perl-module.at:580' \
  "Perl opening nonexistent file" "                  " 161
at_xfail=no
(
  printf "%s\n" "1626. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:581" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:581"
cat >test.pl <<'_ATEOF'
use warnings;
    use strict;
    use PSPP;

    my $sf = PSPP::Reader->open ("no-such-file.sav");

    die "Returns undef on opening failure" if ref $sf;
    print $PSPP::errstr, "\n";
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:592: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:592"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "Name \"PSPP::errstr\" used only once: possible typo at test.pl line 8.
" | \
  $at_diff - "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "An error occurred while opening \`no-such-file.sav': No such file or directory.
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:592"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1626
#AT_START_1627
at_fn_group_banner 1627 'perl-module.at:599' \
  "Perl missing values" "                            " 161
at_xfail=no
(
  printf "%s\n" "1627. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:600" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:600"
cat >sample.sps <<'_ATEOF'
data list notable list /string (a8) longstring (a12) numeric (f10) date (date11) dollar (dollar8.2) datetime (datetime17)
begin data.
1111 One   1 1/1/1 1   1/1/1+01:01
2222 Two   2 2/2/2 2   2/2/2+02:02
3333 Three 3 3/3/3 3   3/3/3+03:03
.    .     . .     .   .
5555 Five  5 5/5/5 5   5/5/5+05:05
end data.


variable labels string 'A Short String Variable'
  /longstring 'A Long String Variable'
  /numeric 'A Numeric Variable'
  /date 'A Date Variable'
  /dollar 'A Dollar Variable'
  /datetime 'A Datetime Variable'.


missing values numeric (9, 5, 999).

missing values string ("3333").

add value labels
  /string '1111' 'ones' '2222' 'twos' '3333' 'threes'
  /numeric 1 'Unity' 2 'Duality' 3 'Thripality'.

variable attribute
    variables = numeric
    attribute=colour[1]('blue') colour[2]('pink') colour[3]('violet')
    attribute=size('large') nationality('foreign').


save outfile='sample.sav'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/perl-module.at:601: pspp -O format=csv sample.sps"
at_fn_check_prepare_trace "perl-module.at:601"
( $at_check_trace; pspp -O format=csv sample.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:601"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >test.pl <<'_ATEOF'
use warnings;
    use strict;
    use PSPP;

    my $sf = PSPP::Reader->open ("sample.sav");

    my $dict = $sf->get_dict ();

    my (@c) = $sf->get_next_case ();

    my $stringvar = $dict->get_var (0);
    my $numericvar = $dict->get_var (2);
    my $val = $c[0];

    die "Missing Value Negative String"
        if PSPP::value_is_missing ($val, $stringvar);

    $val = $c[2];

    die "Missing Value Negative Num"
        if PSPP::value_is_missing ($val, $numericvar);

    @c = $sf->get_next_case ();
    @c = $sf->get_next_case ();

    $val = $c[0];
    die "Missing Value Positive"
        if !PSPP::value_is_missing ($val, $stringvar);

    @c = $sf->get_next_case ();
    $val = $c[2];
    die "Missing Value Positive SYS"
        if !PSPP::value_is_missing ($val, $numericvar);

    @c = $sf->get_next_case ();
    $val = $c[2];
    die "Missing Value Positive Num"
        if !PSPP::value_is_missing ($val, $numericvar);
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:642: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:642"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:642"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1627
#AT_START_1628
at_fn_group_banner 1628 'perl-module.at:645' \
  "Perl custom attributes" "                         " 161
at_xfail=no
(
  printf "%s\n" "1628. $at_setup_line: testing $at_desc ..."
  $at_traceon

printf "%s\n" "perl-module.at:646" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:646"
cat >sample.sps <<'_ATEOF'
data list notable list /string (a8) longstring (a12) numeric (f10) date (date11) dollar (dollar8.2) datetime (datetime17)
begin data.
1111 One   1 1/1/1 1   1/1/1+01:01
2222 Two   2 2/2/2 2   2/2/2+02:02
3333 Three 3 3/3/3 3   3/3/3+03:03
.    .     . .     .   .
5555 Five  5 5/5/5 5   5/5/5+05:05
end data.


variable labels string 'A Short String Variable'
  /longstring 'A Long String Variable'
  /numeric 'A Numeric Variable'
  /date 'A Date Variable'
  /dollar 'A Dollar Variable'
  /datetime 'A Datetime Variable'.


missing values numeric (9, 5, 999).

missing values string ("3333").

add value labels
  /string '1111' 'ones' '2222' 'twos' '3333' 'threes'
  /numeric 1 'Unity' 2 'Duality' 3 'Thripality'.

variable attribute
    variables = numeric
    attribute=colour[1]('blue') colour[2]('pink') colour[3]('violet')
    attribute=size('large') nationality('foreign').


save outfile='sample.sav'.
_ATEOF

   { set +x
printf "%s\n" "$at_srcdir/perl-module.at:647: pspp -O format=csv sample.sps"
at_fn_check_prepare_trace "perl-module.at:647"
( $at_check_trace; pspp -O format=csv sample.sps
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:647"
$at_failed && at_fn_log_failure
$at_traceon; }

cat >test.pl <<'_ATEOF'
use warnings;
    use strict;
    use PSPP;

    my $sf = PSPP::Reader->open ("sample.sav");

    my $dict = $sf->get_dict ();

    my $var = $dict->get_var_by_name ("numeric");

    my $attr = $var->get_attributes ();

    foreach my $k (sort (keys (%$attr)))
    {
	my $ll = $attr->{$k};
	print "$k =>";
	print map "$_\n", join ', ', @$ll;
    }
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:668: run_perl_module test.pl"
at_fn_check_prepare_trace "perl-module.at:668"
( $at_check_trace; run_perl_module test.pl
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "\$@Role =>0
colour =>blue, pink, violet
nationality =>foreign
size =>large
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:668"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1628
#AT_START_1629
at_fn_group_banner 1629 'perl-module.at:676' \
  "Perl Pspp.t" "                                    " 161
at_xfail=no
(
  printf "%s\n" "1629. $at_setup_line: testing $at_desc ..."
  $at_traceon


printf "%s\n" "perl-module.at:678" >"$at_check_line_file"
(test "$WITH_PERL_MODULE" = no) \
  && at_fn_check_skip 77 "$at_srcdir/perl-module.at:678"
# Skip this test if Perl's Text::Diff module is not installed.
{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:680: perl -MText::Diff -e '' || exit 77"
at_fn_check_prepare_trace "perl-module.at:680"
( $at_check_trace; perl -MText::Diff -e '' || exit 77
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:680"
$at_failed && at_fn_log_failure
$at_traceon; }

# Skip this test if Perl's Test::More module is not installed.
{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:682: perl -MTest::More -e '' || exit 77"
at_fn_check_prepare_trace "perl-module.at:682"
( $at_check_trace; perl -MTest::More -e '' || exit 77
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:682"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/perl-module.at:683: run_perl_module \"\$abs_top_builddir/perl-module/t/Pspp.t\""
at_fn_check_prepare_dynamic "run_perl_module \"$abs_top_builddir/perl-module/t/Pspp.t\"" "perl-module.at:683"
( $at_check_trace; run_perl_module "$abs_top_builddir/perl-module/t/Pspp.t"
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; printf "%s\n" "1..37
ok 1 - use PSPP;
ok 2 - Dictionary Creation
ok 3
ok 4 - Trap illegal variable name
ok 5
ok 6 - Accept legal variable name
ok 7
ok 8 - Trap duplicate variable name
ok 9
ok 10 - Accept valid format
ok 11
ok 12 - Create sysfile object
ok 13 - Write system file
ok 14 - Append Case
ok 15 - Appending Case with too many variables
ok 16 - existance
ok 17 - Append Case 2
ok 18 - existance2
ok 19 - Check output
ok 20 - Dictionary Creation 2
ok 21 - Value label for short string
ok 22 - Value label for long string
ok 23 - Check output 2
ok 24 - Dictionary survives sysfile
ok 25 - Basic reader operation
ok 26 - Streaming of files
Formatted string is \"11-SEP-2001 08:20\"
ok 27 - format_value function
ok 28 - Perl representation of time
ok 29 - Returns undef on opening failure
ok 30 - Error string on open failure
ok 31 - Missing Value Negative String
ok 32 - Missing Value Negative Num
ok 33 - Missing Value Positive
ok 34 - Missing Value Positive SYS
ok 35 - Missing Value Positive Num
ok 36 - Custom Attributes
ok 37 - Case count
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/perl-module.at:683"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1629
