AT_BANNER([CTABLES])
dnl Features not yet tested:
-dnl - Preprocessing to distinguish categorical from scale.
-dnl - Testing details of missing value handling in summaries.
-dnl - Test WEIGHT and adjustment weights.
dnl - Summary functions:
-dnl * Separate summary functions for totals and subtotals.
-dnl * )CILEVEL in summary label specification
-dnl - CATEGORIES:
-dnl * Date values
-dnl * THRU (numeric ranges)
-dnl * OTHERNM
-dnl - Date/time variables and values
-dnl - Test PCOMPUTE:
-dnl * MISSING, OTHERNM
-dnl * multi-dimensional (multiple CCT_POSTCOMPUTE in one cell)
-dnl * dates
-dnl - Summary functions:
-dnl * U-prefix for unweighted summaries.
-dnl * areaPCT.SUM and UareaPCT.SUM functions.
-dnl - SPLIT FILE with SEPARATE splits
-dnl - Definition of columns/rows when labels are rotated from one axis to another.
+dnl * WEIGHT and adjustment weights.
+dnl * details of missing value handling in summaries.
dnl
dnl Not for v1:
dnl - Multiple response sets
dnl - Summary functions:
dnl * .LCL and .UCL suffixes.
dnl * .SE suffixes.
+dnl - Summary functions:
+dnl * )CILEVEL in summary label specification
dnl - CATEGORIES:
dnl * Data-dependent sorting.
AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
AT_DATA([ctables.sps],
[[GET 'nhtsa.sav'.
+DESCRIPTIVES qnd1.
CTABLES /TABLE qnd1[COUNT, VALIDN, TOTALN, MEAN, STDDEV, MINIMUM, MAXIMUM].
CTABLES /TABLE BY qnd1.
CTABLES /TABLE BY BY qnd1.
]])
AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
+ 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 │ │ │
AT_CLEANUP
AT_SETUP([CTABLES PCOMPUTE])
+AT_KEYWORDS([postcompute])
AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
AT_DATA([ctables.sps],
[[GET 'nhtsa.sav'.
])
AT_CLEANUP
+AT_SETUP([CTABLES PCOMPUTE - OTHERNM and MISSING])
+AT_KEYWORDS([postcompute])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[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]
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=140], [0], [dnl
+ 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_CLEANUP
+
+AT_SETUP([CTABLES PCOMPUTE - THRU])
+AT_KEYWORDS([postcompute])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[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]
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=140], [0], [dnl
+ 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_CLEANUP
+
+dnl I'm not sure that this is the correct behavior (see
+dnl https://mail.gnu.org/archive/html/pspp-users/2022-07/msg00002.html)
+dnl but at least this test will notify us if the behavior changes.
+AT_SETUP([CTABLES intersecting PCOMPUTEs])
+AT_KEYWORDS([PCOMPUTE postcompute])
+AT_DATA([ctables.sps],
+[[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].
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode], [0],
+[[ 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_CLEANUP
+
+AT_SETUP([CTABLES string and date and time])
+
+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
+
+AT_DATA([ctables.sps],
+[[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.
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl
+ 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│ │ │ 29│ 12│ 13│ 14│ 15│ 16│ 17│ │ │
+│ 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│ │ │ 62│ 33│ 28│ 30│ 32│ 27│ 29│ │ │
+│ 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│ │ │ 26│ 14│ 15│ 16│ 17│ 18│ 12│ │ │
+╰──────────────────┴───┴───┴───┴───┴───┴───┴───┴───────┴─────┴───┴───┴───┴───┴───┴───┴───┴───────┴─────╯
+])
+AT_CLEANUP
+
AT_SETUP([CTABLES CLABELS])
AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
AT_DATA([ctables.sps],
CTABLES /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=LAYER.
CTABLES /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=LAYER.
]])
-pwd
AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl
Custom Tables
╭───────────────────────┬────────────╮
│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 %│ 16.7%│ 16.7%│ 16.7%│ .│
+│ 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%│
│ 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 %│ 16.7%│ 16.7%│ 16.7%│ .│
+│ 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%│
│ 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 %│ 16.7%│ 16.7%│ 16.7%│ .│
+│ 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%│
│ Row Valid N % │ .│ .│ .│ .│
│ Row Total N % │ .│ .│ .│ .│
│ Valid N │ 3│ 3│ 3│ 9│
-│ Total N │ 6│ 6│ 6│ 36│
+│ Total N │ 3│ 3│ 3│ 18│
╰────────────────────────┴──────┴──────┴──────┴──────╯
Custom Tables
├────────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│x 1.00 Count │ 1│ 1│ 1│ 1│ 1│ 5│
│ Column % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│
-│ Column Valid N %│ .0%│ .│ .│ .0%│ .0%│ .│
-│ Column Total N %│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ .│
+│ 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 % │ .│ .│ .│ .│ .│ .│
+│ 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 │ │ │ │ │ │ 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 %│ .0%│ .│ .│ .0%│ .0%│ .│
-│ Column Total N %│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ .│
+│ 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 % │ .│ .│ .│ .│ .│ .│
+│ 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 │ │ │ │ │ │ 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 %│ 33.3%│ .│ .│ 33.3%│ 33.3%│ .│
-│ Column Total N %│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ .│
+│ 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%│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ 4.00 Count │ 1│ 1│ 1│ 1│ 1│ 5│
│ Column % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│
-│ Column Valid N %│ 33.3%│ .│ .│ 33.3%│ 33.3%│ .│
-│ Column Total N %│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ .│
+│ 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%│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤
│ 5.00 Count │ 1│ 1│ 1│ 1│ 1│ 5│
│ Column % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│
-│ Column Valid N %│ 33.3%│ .│ .│ 33.3%│ 33.3%│ .│
-│ Column Total N %│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│ .│
+│ 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%│
│ Row % │ .│ .│ .│ .│ .│ .│
│ Row Valid N % │ .│ .│ .│ .│ .│ .│
│ Row Total N % │ .│ .│ .│ .│ .│ .│
-│ Valid N │ 3│ 0│ 0│ 3│ 3│ 9│
-│ Total N │ 6│ 6│ 6│ 6│ 6│ 36│
+│ Valid N │ 5│ 0│ 0│ 5│ 5│ 15│
+│ Total N │ 5│ 5│ 5│ 5│ 5│ 30│
╰────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────╯
Custom Tables
├────────────────────────┼──────┼──────┼──────┼──────┼──────┤
│x 1.00 Count │ 1│ 1│ 1│ 1│ 4│
│ Column % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│
-│ Column Valid N %│ .0%│ .│ .0%│ .0%│ .│
-│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.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 % │ .│ .│ .│ .│ .│
+│ 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 │ │ │ │ │ 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 %│ .0%│ .│ .0%│ .0%│ .│
-│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.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 % │ .│ .│ .│ .│ .│
+│ 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 │ │ │ │ │ 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 %│ 50.0%│ .│ 50.0%│ 50.0%│ .│
-│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.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%│
│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤
│ 4.00 Count │ 1│ 1│ 1│ 1│ 4│
│ Column % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│
-│ Column Valid N %│ 50.0%│ .│ 50.0%│ 50.0%│ .│
-│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.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%│
│ Row % │ .│ .│ .│ .│ .│
│ Row Valid N % │ .│ .│ .│ .│ .│
│ Row Total N % │ .│ .│ .│ .│ .│
-│ Valid N │ 2│ 0│ 2│ 2│ 6│
-│ Total N │ 5│ 5│ 5│ 5│ 30│
+│ Valid N │ 4│ 0│ 4│ 4│ 12│
+│ Total N │ 4│ 4│ 4│ 4│ 24│
╰────────────────────────┴──────┴──────┴──────┴──────┴──────╯
])
AT_CLEANUP
[[GET 'nhtsa.sav'.
CTABLES
/VLABELS VARIABLES=ALL DISPLAY=NAME
- /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[TABLE.ID, LAYER.ID, SUBTABLE.ID]
+ /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[TABLEID, LAYERID, SUBTABLEID]
/SLABELS POSITION=ROW
- /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[ROW.ID, LAYERROW.ID]
+ /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[ROWID, LAYERROWID]
/SLABELS POSITION=ROW
- /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[COL.ID, LAYERCOL.ID]
+ /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[COLID, LAYERCOLID]
/SLABELS POSITION=ROW.
]])
AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=80], [0], [dnl
])
AT_CLEANUP
+AT_SETUP([CTABLES area definitions with CLABELS ROWLABELS=OPPOSITE])
+AT_KEYWORDS([ROWLABELS OPPOSITE])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[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.
+]])
+AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl
+ 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 │ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│
+│ Layer Column ID│ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│
+│ Layer Column ID│ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 32│31│
+│ Layer Column ID│ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 32│31│
+│ Layer Column ID│ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 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 │ 34│33│ 35│36│ 37│38│ 39│40│ 41│42│ 44│43│ 45│46│ 47│48│
+│ Layer Column ID│ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 31│32│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 34│33│ 35│36│ 37│38│ 39│40│ 41│42│ 44│43│ 45│46│ 47│48│
+│ Layer Column ID│ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 31│32│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 50│49│ 51│52│ 53│54│ 55│56│ 57│58│ 59│60│ 62│61│ 64│63│
+│ Layer Column ID│ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 31│32│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 50│49│ 51│52│ 53│54│ 55│56│ 57│58│ 59│60│ 62│61│ 64│63│
+│ Layer Column ID│ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 31│32│
+╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯
+])
+AT_CLEANUP
+
+AT_SETUP([CTABLES area definitions with CLABELS COLLABELS=OPPOSITE])
+AT_KEYWORDS([COLLABELS OPPOSITE])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[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.
+]])
+AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl
+ 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 │ 2│ 2│ 3│ 3│
+│ Layer Row ID│ 2│ 2│ 2│ 2│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 1│ 1│ 4│ 4│
+│ Layer Row ID│ 1│ 1│ 1│ 1│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ 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 │ 10│ 10│ 11│ 11│
+│ Layer Row ID│ 6│ 6│ 6│ 6│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 9│ 9│ 12│ 12│
+│ Layer Row ID│ 5│ 5│ 5│ 5│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 14│ 14│ 16│ 16│
+│ Layer Row ID│ 8│ 8│ 8│ 8│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 13│ 13│ 15│ 15│
+│ Layer Row ID│ 7│ 7│ 7│ 7│
+│ ╶──────────────────────────────────────┼────┼────┼────┼────┤
+│ 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 │ 26│ 26│ 28│ 28│
+│ Layer Row ID│ 14│ 14│ 14│ 14│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 25│ 25│ 27│ 27│
+│ Layer Row ID│ 13│ 13│ 13│ 13│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 30│ 30│ 32│ 32│
+│ Layer Row ID│ 16│ 16│ 16│ 16│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 29│ 29│ 31│ 31│
+│ Layer Row ID│ 15│ 15│ 15│ 15│
+╰───────────────────────────────────────────┴────┴────┴────┴────╯
+
+ 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│ 36│ 36│
+│ Layer Row ID│ 17│ 17│ 17│ 17│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 34│ 34│ 35│ 35│
+│ 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│ 44│ 44│
+│ Layer Row ID│ 21│ 21│ 21│ 21│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 42│ 42│ 43│ 43│
+│ Layer Row ID│ 22│ 22│ 22│ 22│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 45│ 45│ 48│ 48│
+│ Layer Row ID│ 23│ 23│ 23│ 23│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 46│ 46│ 47│ 47│
+│ Layer Row ID│ 24│ 24│ 24│ 24│
+│ ╶──────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Yes Row ID │ 49│ 49│ 52│ 52│
+│ Layer Row ID│ 25│ 25│ 25│ 25│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 50│ 50│ 51│ 51│
+│ 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 │ 58│ 58│ 59│ 59│
+│ Layer Row ID│ 30│ 30│ 30│ 30│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 57│ 57│ 60│ 60│
+│ Layer Row ID│ 29│ 29│ 29│ 29│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 62│ 62│ 64│ 64│
+│ Layer Row ID│ 32│ 32│ 32│ 32│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 61│ 61│ 63│ 63│
+│ Layer Row ID│ 31│ 31│ 31│ 31│
+╰───────────────────────────────────────────┴────┴────┴────┴────╯
+
+ 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_CLEANUP
+
+AT_SETUP([CTABLES area definitions with CLABELS ROWLABELS=LAYER])
+AT_KEYWORDS([ROWLABELS LAYER])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[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.
+]])
+AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl
+ 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 │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│
+│ Subtable ID│ 2│ 2│ 3│ 3│ 5│ 5│ 7│ 7│
+│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 3│ 3│ 5│ 5│ 7│ 7│
+│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 13│13│ 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│ 13│13│ 16│16│
+╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ 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 │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│
+│ Subtable ID│ 1│ 1│ 4│ 4│ 6│ 6│ 8│ 8│
+│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 4│ 4│ 6│ 6│ 8│ 8│
+│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 14│14│ 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│ 14│14│ 15│15│
+╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ 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│ 28│28│ 29│29│ 32│32│
+│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 28│28│ 29│29│ 32│32│
+╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ 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│ 27│27│ 30│30│ 31│31│
+│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 27│27│ 30│30│ 31│31│
+╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ 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│ 6│ 6│ 8│ 8│
+│ Layer Row ID│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 9│ 9│ 11│11│ 14│14│ 15│15│
+│ Layer Row ID│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│
+│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Row ID │ 18│18│ 20│20│ 22│22│ 23│23│
+│ Layer Row ID│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 26│26│ 28│28│ 29│29│ 32│32│
+│ Layer Row ID│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│
+╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ 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│ 5│ 5│ 7│ 7│
+│ Layer Row ID│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 10│10│ 12│12│ 13│13│ 16│16│
+│ Layer Row ID│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│
+│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Row ID │ 17│17│ 19│19│ 21│21│ 24│24│
+│ Layer Row ID│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 25│25│ 27│27│ 30│30│ 31│31│
+│ Layer Row ID│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│
+╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ 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│ 36│36│ 38│38│ 40│40│
+│ Layer Row ID│ 9│ 9│ 9│ 9│ 9│ 9│ 9│ 9│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 42│42│ 43│43│ 45│45│ 47│47│
+│ Layer Row ID│ 12│12│ 12│12│ 12│12│ 12│12│
+│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Row ID │ 50│50│ 52│52│ 53│53│ 56│56│
+│ Layer Row ID│ 14│14│ 14│14│ 14│14│ 14│14│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 57│57│ 60│60│ 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│ 35│35│ 37│37│ 39│39│
+│ Layer Row ID│ 10│10│ 10│10│ 10│10│ 10│10│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 41│41│ 44│44│ 46│46│ 48│48│
+│ Layer Row ID│ 11│11│ 11│11│ 11│11│ 11│11│
+│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Row ID │ 49│49│ 51│51│ 54│54│ 55│55│
+│ Layer Row ID│ 13│13│ 13│13│ 13│13│ 13│13│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 58│58│ 59│59│ 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 │ 2│ 4│ 6│ 7│ 10│11│ 14│15│
+│ Layer Column ID│ 2│ 4│ 6│ 7│ 10│11│ 14│15│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 2│ 4│ 6│ 7│ 10│11│ 14│15│
+│ Layer Column ID│ 2│ 4│ 6│ 7│ 10│11│ 14│15│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 18│19│ 21│23│ 25│28│ 29│32│
+│ Layer Column ID│ 2│ 4│ 6│ 7│ 10│11│ 14│15│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 18│19│ 21│23│ 25│28│ 29│32│
+│ Layer Column ID│ 2│ 4│ 6│ 7│ 10│11│ 14│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 │ 1│ 3│ 5│ 8│ 9│12│ 13│16│
+│ Layer Column ID│ 1│ 3│ 5│ 8│ 9│12│ 13│16│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 1│ 3│ 5│ 8│ 9│12│ 13│16│
+│ Layer Column ID│ 1│ 3│ 5│ 8│ 9│12│ 13│16│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 17│20│ 22│24│ 26│27│ 30│31│
+│ Layer Column ID│ 1│ 3│ 5│ 8│ 9│12│ 13│16│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 17│20│ 22│24│ 26│27│ 30│31│
+│ Layer Column ID│ 1│ 3│ 5│ 8│ 9│12│ 13│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 │ 34│35│ 37│39│ 41│44│ 45│47│
+│ Layer Column ID│ 18│19│ 21│23│ 25│28│ 29│31│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 34│35│ 37│39│ 41│44│ 45│47│
+│ Layer Column ID│ 18│19│ 21│23│ 25│28│ 29│31│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 50│51│ 53│55│ 57│59│ 62│64│
+│ Layer Column ID│ 18│19│ 21│23│ 25│28│ 29│31│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 50│51│ 53│55│ 57│59│ 62│64│
+│ Layer Column ID│ 18│19│ 21│23│ 25│28│ 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 │ 33│36│ 38│40│ 42│43│ 46│48│
+│ Layer Column ID│ 17│20│ 22│24│ 26│27│ 30│32│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 33│36│ 38│40│ 42│43│ 46│48│
+│ Layer Column ID│ 17│20│ 22│24│ 26│27│ 30│32│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 49│52│ 54│56│ 58│60│ 61│63│
+│ Layer Column ID│ 17│20│ 22│24│ 26│27│ 30│32│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 49│52│ 54│56│ 58│60│ 61│63│
+│ Layer Column ID│ 17│20│ 22│24│ 26│27│ 30│32│
+╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+])
+AT_CLEANUP
+
+AT_SETUP([CTABLES area definitions with CLABELS COLLABELS=LAYER])
+AT_KEYWORDS([COLLABELS LAYER])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[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.
+]])
+AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl
+ 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 │ 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│ 5│ 5│ 7│ 7│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 2│ 2│ 2│ 2│
+│ Subtable ID│ 5│ 5│ 7│ 7│
+│ ╶─────────────────────────────────┼────┼────┼────┼────┤
+│ 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│ 13│ 13│ 15│ 15│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 2│ 2│ 2│ 2│
+│ 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 │ 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│ 6│ 6│ 8│ 8│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 1│ 1│ 1│ 1│
+│ Subtable ID│ 6│ 6│ 8│ 8│
+│ ╶─────────────────────────────────┼────┼────┼────┼────┤
+│ 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│ 14│ 14│ 16│ 16│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 1│ 1│ 1│ 1│
+│ 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 │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 18│ 18│ 19│ 19│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 18│ 18│ 19│ 19│
+│ ╶────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 22│ 22│ 23│ 23│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 22│ 22│ 23│ 23│
+│ ╶─────────────────────────────────┼────┼────┼────┼────┤
+│ 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│ 29│ 29│ 31│ 31│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ 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 │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 17│ 17│ 20│ 20│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 17│ 17│ 20│ 20│
+│ ╶────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 21│ 21│ 24│ 24│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 21│ 21│ 24│ 24│
+│ ╶─────────────────────────────────┼────┼────┼────┼────┤
+│ 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│ 30│ 30│ 32│ 32│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ 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 │ 2│ 2│ 3│ 3│
+│ Layer Row ID│ 2│ 2│ 2│ 2│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 5│ 5│ 7│ 7│
+│ Layer Row ID│ 3│ 3│ 3│ 3│
+│ ╶─────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Row ID │ 10│ 10│ 11│ 11│
+│ 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 │ 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 │ 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
+Male
+No
+╭───────────────────────────────────────┬───────────────────╮
+│ │ QN27 │
+│ ├─────────┬─────────┤
+│ │ Yes │ No │
+│ ├─────────┼─────────┤
+│ │ QND7A │ QND7A │
+│ ├────┬────┼────┬────┤
+│ │ Yes│ No │ Yes│ No │
+│ ├────┼────┼────┼────┤
+│ │QN86│QN86│QN86│QN86│
+├───────────────────────────────────────┼────┼────┼────┼────┤
+│QN26 Yes QN61 Yes QN57 Yes Row ID │ 1│ 1│ 4│ 4│
+│ Layer Row ID│ 1│ 1│ 1│ 1│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 6│ 6│ 8│ 8│
+│ Layer Row ID│ 4│ 4│ 4│ 4│
+│ ╶─────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Row ID │ 9│ 9│ 12│ 12│
+│ 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 │ 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 │ 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
+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│ 36│ 36│
+│ 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│ 44│ 44│
+│ Layer Row ID│ 21│ 21│ 21│ 21│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 45│ 45│ 48│ 48│
+│ Layer Row ID│ 23│ 23│ 23│ 23│
+│ ╶──────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Row ID │ 49│ 49│ 52│ 52│
+│ 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 │ 58│ 58│ 59│ 59│
+│ Layer Row ID│ 30│ 30│ 30│ 30│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 62│ 62│ 64│ 64│
+│ Layer Row ID│ 32│ 32│ 32│ 32│
+╰───────────────────────────────────────┴────┴────┴────┴────╯
+
+ 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│ 35│ 35│
+│ 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│ 43│ 43│
+│ Layer Row ID│ 22│ 22│ 22│ 22│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 46│ 46│ 47│ 47│
+│ Layer Row ID│ 24│ 24│ 24│ 24│
+│ ╶──────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Row ID │ 50│ 50│ 51│ 51│
+│ 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 │ 57│ 57│ 60│ 60│
+│ Layer Row ID│ 29│ 29│ 29│ 29│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 61│ 61│ 63│ 63│
+│ Layer Row ID│ 31│ 31│ 31│ 31│
+╰───────────────────────────────────────┴────┴────┴────┴────╯
+
+ 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│ 4│ 5│ 7│
+│ Layer Column ID│ 1│ 4│ 5│ 7│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 1│ 4│ 5│ 7│
+│ Layer Column ID│ 1│ 4│ 5│ 7│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 9│ 12│ 14│ 15│
+│ Layer Column ID│ 1│ 4│ 5│ 7│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 9│ 12│ 14│ 15│
+│ Layer Column ID│ 1│ 4│ 5│ 7│
+│ ╶─────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Column ID │ 18│ 20│ 22│ 24│
+│ Layer Column ID│ 1│ 4│ 5│ 7│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 18│ 20│ 22│ 24│
+│ Layer Column ID│ 1│ 4│ 5│ 7│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 26│ 27│ 30│ 31│
+│ Layer Column ID│ 1│ 4│ 5│ 7│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 26│ 27│ 30│ 31│
+│ Layer Column ID│ 1│ 4│ 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│ 3│ 6│ 8│
+│ Layer Column ID│ 2│ 3│ 6│ 8│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 2│ 3│ 6│ 8│
+│ Layer Column ID│ 2│ 3│ 6│ 8│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 10│ 11│ 13│ 16│
+│ Layer Column ID│ 2│ 3│ 6│ 8│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 10│ 11│ 13│ 16│
+│ Layer Column ID│ 2│ 3│ 6│ 8│
+│ ╶─────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Column ID │ 17│ 19│ 21│ 23│
+│ Layer Column ID│ 2│ 3│ 6│ 8│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 17│ 19│ 21│ 23│
+│ Layer Column ID│ 2│ 3│ 6│ 8│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 25│ 28│ 29│ 32│
+│ Layer Column ID│ 2│ 3│ 6│ 8│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 25│ 28│ 29│ 32│
+│ Layer Column ID│ 2│ 3│ 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 │ 34│ 36│ 37│ 39│
+│ Layer Column ID│ 10│ 12│ 13│ 15│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 34│ 36│ 37│ 39│
+│ Layer Column ID│ 10│ 12│ 13│ 15│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 41│ 43│ 46│ 48│
+│ Layer Column ID│ 10│ 12│ 13│ 15│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 41│ 43│ 46│ 48│
+│ Layer Column ID│ 10│ 12│ 13│ 15│
+│ ╶─────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Column ID │ 50│ 51│ 53│ 55│
+│ Layer Column ID│ 10│ 12│ 13│ 15│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 50│ 51│ 53│ 55│
+│ Layer Column ID│ 10│ 12│ 13│ 15│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 58│ 60│ 62│ 64│
+│ Layer Column ID│ 10│ 12│ 13│ 15│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 58│ 60│ 62│ 64│
+│ Layer Column ID│ 10│ 12│ 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 │ 33│ 35│ 38│ 40│
+│ Layer Column ID│ 9│ 11│ 14│ 16│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 33│ 35│ 38│ 40│
+│ Layer Column ID│ 9│ 11│ 14│ 16│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 42│ 44│ 45│ 47│
+│ Layer Column ID│ 9│ 11│ 14│ 16│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 42│ 44│ 45│ 47│
+│ Layer Column ID│ 9│ 11│ 14│ 16│
+│ ╶─────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Column ID │ 49│ 52│ 54│ 56│
+│ Layer Column ID│ 9│ 11│ 14│ 16│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 49│ 52│ 54│ 56│
+│ Layer Column ID│ 9│ 11│ 14│ 16│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 57│ 59│ 61│ 63│
+│ Layer Column ID│ 9│ 11│ 14│ 16│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 57│ 59│ 61│ 63│
+│ Layer Column ID│ 9│ 11│ 14│ 16│
+╰──────────────────────────────────────────┴────┴────┴────┴────╯
+])
+AT_CLEANUP
+
AT_SETUP([CTABLES categorical summary functions])
AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
AT_DATA([ctables.sps],
])
AT_CLEANUP
-
AT_SETUP([CTABLES scale summary functions])
AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
AT_DATA([ctables.sps],
SPLIT FILE OFF.
CTABLES
- /VLABELS VARIABLE=qn19a DISPLAY=NAME /*XXX NONE yields an assertion failure
- /TABLE region BY qn19a[VALIDN, MISSING, MEAN, SEMEAN, MEDIAN, MODE, STDDEV, VARIANCE, RANGE, MINIMUM, MAXIMUM, SUM, COUNT, TOTALN, COLPCT.SUM]
+ /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.
+ /SLABELS POSITION=ROW
+ /CLABELS ROWLABELS=OPPOSITE.
]])
AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl
- Statistics
-╭────────────────┬────────╮
-│REGION │ QN19A │
-├────────────────┼────────┤
-│NE N Valid │ 936│
-│ Missing│ 473│
-│ ╶─────────┼────────┤
-│ Mean │ 19.33│
-│ ╶─────────┼────────┤
-│ S.E. Mean│ .14│
-│ ╶─────────┼────────┤
-│ Median │ 18.00│
-│ ╶─────────┼────────┤
-│ Mode │ 18.00│
-│ ╶─────────┼────────┤
-│ Std Dev │ 4.41│
-│ ╶─────────┼────────┤
-│ Variance │ 19.41│
-│ ╶─────────┼────────┤
-│ Range │ 59.00│
-│ ╶─────────┼────────┤
-│ Minimum │ .00│
-│ ╶─────────┼────────┤
-│ Maximum │ 59.00│
-│ ╶─────────┼────────┤
-│ Sum │18092.00│
-├────────────────┼────────┤
-│MW N Valid │ 1019│
-│ Missing│ 635│
-│ ╶─────────┼────────┤
-│ Mean │ 19.83│
-│ ╶─────────┼────────┤
-│ S.E. Mean│ .16│
-│ ╶─────────┼────────┤
-│ Median │ 19.00│
-│ ╶─────────┼────────┤
-│ Mode │ 18.00│
-│ ╶─────────┼────────┤
-│ Std Dev │ 5.15│
-│ ╶─────────┼────────┤
-│ Variance │ 26.47│
-│ ╶─────────┼────────┤
-│ Range │ 71.00│
-│ ╶─────────┼────────┤
-│ Minimum │ 4.00│
-│ ╶─────────┼────────┤
-│ Maximum │ 75.00│
-│ ╶─────────┼────────┤
-│ Sum │20206.00│
-├────────────────┼────────┤
-│S N Valid │ 1276│
-│ Missing│ 1114│
-│ ╶─────────┼────────┤
-│ Mean │ 20.29│
-│ ╶─────────┼────────┤
-│ S.E. Mean│ .18│
-│ ╶─────────┼────────┤
-│ Median │ 19.00│
-│ ╶─────────┼────────┤
-│ Mode │ 18.00│
-│ ╶─────────┼────────┤
-│ Std Dev │ 6.44│
-│ ╶─────────┼────────┤
-│ Variance │ 41.43│
-│ ╶─────────┼────────┤
-│ Range │ 75.00│
-│ ╶─────────┼────────┤
-│ Minimum │ 4.00│
-│ ╶─────────┼────────┤
-│ Maximum │ 79.00│
-│ ╶─────────┼────────┤
-│ Sum │25886.00│
-├────────────────┼────────┤
-│W N Valid │ 950│
-│ Missing│ 596│
-│ ╶─────────┼────────┤
-│ Mean │ 19.87│
-│ ╶─────────┼────────┤
-│ S.E. Mean│ .17│
-│ ╶─────────┼────────┤
-│ Median │ 19.00│
-│ ╶─────────┼────────┤
-│ Mode │ 18.00│
-│ ╶─────────┼────────┤
-│ Std Dev │ 5.25│
-│ ╶─────────┼────────┤
-│ Variance │ 27.59│
-│ ╶─────────┼────────┤
-│ Range │ 61.00│
-│ ╶─────────┼────────┤
-│ Minimum │ 4.00│
-│ ╶─────────┼────────┤
-│ Maximum │ 65.00│
-│ ╶─────────┼────────┤
-│ Sum │18877.00│
-╰────────────────┴────────╯
+ 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
-╭───────────────────────────┬────────╮
-│ │ QN19A │
-├───────────────────────────┼────────┤
-│REGION NE Valid N │ 936│
-│ Missing │ 473.00│
-│ Mean │ 19.33│
-│ Std Error of Mean│ .14│
-│ Median │ 18.00│
-│ Mode │ 18.00│
-│ Std Deviation │ 4.41│
-│ Variance │ 19.41│
-│ Range │ 59.00│
-│ Minimum │ .00│
-│ Maximum │ 59.00│
-│ Sum │18092.00│
-│ Count │ 1409│
-│ Total N │ 1409│
-│ Column Sum % │ 21.8%│
-│ ╶────────────────────┼────────┤
-│ MW Valid N │ 1019│
-│ Missing │ 635.00│
-│ Mean │ 19.83│
-│ Std Error of Mean│ .16│
-│ Median │ 19.00│
-│ Mode │ 18.00│
-│ Std Deviation │ 5.15│
-│ Variance │ 26.47│
-│ Range │ 71.00│
-│ Minimum │ 4.00│
-│ Maximum │ 75.00│
-│ Sum │20206.00│
-│ Count │ 1654│
-│ Total N │ 1654│
-│ Column Sum % │ 24.3%│
-│ ╶────────────────────┼────────┤
-│ S Valid N │ 1276│
-│ Missing │ 1114.00│
-│ Mean │ 20.29│
-│ Std Error of Mean│ .18│
-│ Median │ 19.00│
-│ Mode │ 18.00│
-│ Std Deviation │ 6.44│
-│ Variance │ 41.43│
-│ Range │ 75.00│
-│ Minimum │ 4.00│
-│ Maximum │ 79.00│
-│ Sum │25886.00│
-│ Count │ 2390│
-│ Total N │ 2390│
-│ Column Sum % │ 31.2%│
-│ ╶────────────────────┼────────┤
-│ W Valid N │ 950│
-│ Missing │ 596.00│
-│ Mean │ 19.87│
-│ Std Error of Mean│ .17│
-│ Median │ 19.00│
-│ Mode │ 18.00│
-│ Std Deviation │ 5.25│
-│ Variance │ 27.59│
-│ Range │ 61.00│
-│ Minimum │ 4.00│
-│ Maximum │ 65.00│
-│ Sum │18877.00│
-│ Count │ 1546│
-│ Total N │ 1546│
-│ Column Sum % │ 22.7%│
-╰───────────────────────────┴────────╯
+ 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_CLEANUP
+AT_SETUP([CTABLES scale summary functions - weighting])
+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
+
+AT_DATA([analysis.sps],
+[[* 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.
+]])
+
+AT_DATA([ctables.sps],
+[[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.
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl
+ 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 Valid N │ 7│ 6│ 8│ 7│ 7│ 8│ 7│ 7│ 8│
+│ 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│
+│ 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│
+│ 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│
+│ 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_CLEANUP
AT_SETUP([CTABLES hidden scale VLABELS])
AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
])
AT_CLEANUP
+AT_SETUP([CTABLES with SPLIT FILE])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[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.
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
+ 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_CLEANUP
+
+AT_SETUP([CTABLES variable level inference])
+AT_DATA([data.txt], [dnl
+dnl n1 has 10 unique small values -> nominal.
+dnl n2 has 23 unique small values -> nominal.
+dnl n3 is all missing -> nominal.
+dnl s1 has 24 unique small values -> scale.
+dnl s2 has one negative value -> scale.
+dnl s3 has one non-integer value -> scale.
+dnl s4 has no valid values less than 10 -> scale.
+dnl s5 has no valid values less than 10,000 -> scale.
+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
+])
+
+AT_DATA([ctables.sps], [dnl
+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.
+])
+
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
+ 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_CLEANUP