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 * PCOMPUTE for more than one kind of summary (e.g. [COUNT, ROWPCT]).
-dnl * MISSING, OTHERNM
-dnl * multi-dimensional (multiple CCT_POSTCOMPUTE in one cell)
-dnl * dates
-dnl - PPROPERTIES:
-dnl * )LABEL[N].
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_CLEANUP
AT_SETUP([CTABLES simple stacking])
+AT_KEYWORDS([stack stacked])
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 simple nesting])
+AT_KEYWORDS([nest nested])
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 nesting and scale variables])
+AT_KEYWORDS([nest nested])
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])
+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([3] + [4])
/PCOMPUTE &y=EXPR([4] + [5])
- /PPROPERTIES &x LABEL='3+4' HIDESOURCECATS=YES FORMAT=COUNT F8.2
- /PPROPERTIES &y LABEL='4+5'
- /TABLE=qn105ba BY qns1
- /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, &x, &y, SUBTOTAL]
+ /PPROPERTIES &x LABEL='3+4' FORMAT=COUNT F8.2
+ /PPROPERTIES &y LABEL=')LABEL[5]+)LABEL[6]'
+ /TABLE=qn105ba [COUNT, ROWPCT] BY qns1
+ /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, &x, &y, SUBTOTAL] TOTAL=YES
+
+* Adding HIDESOURCECATS=YES for one PPROPERTIES.
+CTABLES
+ /PCOMPUTE &x=EXPR([3] + [4])
+ /PCOMPUTE &y=EXPR([4] + [5])
+ /PPROPERTIES &x LABEL='3+4' FORMAT=COUNT F8.2
+ /PPROPERTIES &y LABEL=')LABEL[5]+)LABEL[6]' HIDESOURCECATS=YES
+ /TABLE=qn105ba [COUNT, ROWPCT] BY qns1
+ /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, &x, &y, SUBTOTAL] TOTAL=YES
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=140], [0], [dnl
+ Custom Tables
+╭───────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │ S1. Including yourself, how many members of this household are age 16 or older? │
+│ ├───────────┬───────────┬───────────┬───────────┬──────────┬──────────┬────────────┬──────────┬───────────┬────────────┤
+│ │ 1 │ 2 │ Subtotal │ 3 │ 4 │ 5 │ 3+4 │ 4+5 │ Subtotal │ Total │
+│ ├─────┬─────┼─────┬─────┼─────┬─────┼─────┬─────┼─────┬────┼─────┬────┼──────┬─────┼─────┬────┼─────┬─────┼─────┬──────┤
+│ │ │ │ │ │ │ │ │ │ │ Row│ │ Row│ │ │ │ Row│ │ │ │ │
+│ │Count│Row %│Count│Row %│Count│Row %│Count│Row %│Count│ % │Count│ % │ Count│Row %│Count│ % │Count│Row %│Count│ Row %│
+├───────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────┼─────┼────┼──────┼─────┼─────┼────┼─────┼─────┼─────┼──────┤
+│105b. How Almost │ 147│30.3%│ 246│50.7%│ 393│81.0%│ 62│12.8%│ 19│3.9%│ 11│2.3%│ 81.00│16.7%│ 30│6.2%│ 92│19.0%│ 485│100.0%│
+│likely is certain │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│it that │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│drivers Very │ 384│34.3%│ 552│49.2%│ 936│83.5%│ 120│10.7%│ 51│4.5%│ 14│1.2%│171.00│15.3%│ 65│5.8%│ 185│16.5%│ 1121│100.0%│
+│who have likely │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│had too │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│much to Somewhat│ 590│27.8%│ 1249│58.8%│ 1839│86.6%│ 193│ 9.1%│ 72│3.4%│ 20│ .9%│265.00│12.5%│ 92│4.3%│ 285│13.4%│ 2124│100.0%│
+│drink to likely │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│drive │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│safely Somewhat│ 278│26.6%│ 647│61.8%│ 925│88.3%│ 84│ 8.0%│ 32│3.1%│ 6│ .6%│116.00│11.1%│ 38│3.6%│ 122│11.7%│ 1047│100.0%│
+│will A. unlikely│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│Get │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│stopped by Very │ 141│28.5%│ 290│58.7%│ 431│87.2%│ 41│ 8.3%│ 18│3.6%│ 4│ .8%│ 59.00│11.9%│ 22│4.5%│ 63│12.8%│ 494│100.0%│
+│the unlikely│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│police? │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+╰───────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴────┴─────┴────┴──────┴─────┴─────┴────┴─────┴─────┴─────┴──────╯
+
+ Custom Tables
+╭─────────────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ │ S1. Including yourself, how many members of this household are age 16 or older? │
+│ ├───────────┬───────────┬───────────┬───────────┬────────────┬──────────┬───────────┬────────────┤
+│ │ 1 │ 2 │ Subtotal │ 3 │ 3+4 │ 4+5 │ Subtotal │ Total │
+│ ├─────┬─────┼─────┬─────┼─────┬─────┼─────┬─────┼──────┬─────┼─────┬────┼─────┬─────┼─────┬──────┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ Row│ │ │ │ │
+│ │Count│Row %│Count│Row %│Count│Row %│Count│Row %│ Count│Row %│Count│ % │Count│Row %│Count│ Row %│
+├─────────────────────────────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼──────┼─────┼─────┼────┼─────┼─────┼─────┼──────┤
+│105b. How likely is it that Almost │ 147│30.3%│ 246│50.7%│ 393│81.0%│ 62│12.8%│ 81.00│16.7%│ 30│6.2%│ 92│19.0%│ 485│100.0%│
+│drivers who have had too much certain │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│to drink to drive safely will Very │ 384│34.3%│ 552│49.2%│ 936│83.5%│ 120│10.7%│171.00│15.3%│ 65│5.8%│ 185│16.5%│ 1121│100.0%│
+│A. Get stopped by the police? likely │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│ Somewhat │ 590│27.8%│ 1249│58.8%│ 1839│86.6%│ 193│ 9.1%│265.00│12.5%│ 92│4.3%│ 285│13.4%│ 2124│100.0%│
+│ likely │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│ Somewhat │ 278│26.6%│ 647│61.8%│ 925│88.3%│ 84│ 8.0%│116.00│11.1%│ 38│3.6%│ 122│11.7%│ 1047│100.0%│
+│ unlikely │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+│ Very │ 141│28.5%│ 290│58.7%│ 431│87.2%│ 41│ 8.3%│ 59.00│11.9%│ 22│4.5%│ 63│12.8%│ 494│100.0%│
+│ unlikely │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+╰─────────────────────────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴──────┴─────┴─────┴────┴─────┴─────┴─────┴──────╯
+])
+AT_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
-╭────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────╮
-│ │ S1. Including yourself, how many members of this household │
-│ │ are age 16 or older? │
-│ ├───────┬───────┬──────────┬───────┬────────┬──────┬──────────┤
-│ │ 1 │ 2 │ Subtotal │ 5 │ 3+4 │ 4+5 │ Subtotal │
-│ ├───────┼───────┼──────────┼───────┼────────┼──────┼──────────┤
-│ │ Count │ Count │ Count │ Count │ Count │ Count│ Count │
-├────────────────────────────────────────────────────────┼───────┼───────┼──────────┼───────┼────────┼──────┼──────────┤
-│105b. How likely is it that drivers who have Almost │ 147│ 246│ 393│ 11│ 81.00│ 30│ 92│
-│had too much to drink to drive safely will certain │ │ │ │ │ │ │ │
-│A. Get stopped by the police? Very likely│ 384│ 552│ 936│ 14│ 171.00│ 65│ 185│
-│ Somewhat │ 590│ 1249│ 1839│ 20│ 265.00│ 92│ 285│
-│ likely │ │ │ │ │ │ │ │
-│ Somewhat │ 278│ 647│ 925│ 6│ 116.00│ 38│ 122│
-│ unlikely │ │ │ │ │ │ │ │
-│ Very │ 141│ 290│ 431│ 4│ 59.00│ 22│ 63│
-│ unlikely │ │ │ │ │ │ │ │
-╰────────────────────────────────────────────────────────┴───────┴───────┴──────────┴───────┴────────┴──────┴──────────╯
+ 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
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
╭───────────────────────┬────────────╮
])
AT_CLEANUP
-AT_SETUP([CTABLES VLABELS])
+AT_SETUP([CTABLES VLABELS - variables on different axes])
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 VLABELS - stacked variables])
+AT_KEYWORDS([stack stacking])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[GET 'nhtsa.sav'.
+CTABLES /VLABELS VARIABLES=qns3a DISPLAY=NAME /TABLE qnd5a + qns3a.
+CTABLES /VLABELS VARIABLES=qnd5a DISPLAY=NAME /TABLE qnd5a + qns3a.
+CTABLES /VLABELS VARIABLES=qns3a DISPLAY=NONE /TABLE qnd5a + qns3a.
+CTABLES /VLABELS VARIABLES=qnd5a DISPLAY=NONE /TABLE qnd5a + qns3a.
+CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=NONE /TABLE qnd5a + qns3a.
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode], [0], [dnl
+ Custom Tables
+╭───────────────────────────────────────────────────────────────────────┬─────╮
+│ │Count│
+├───────────────────────────────────────────────────────────────────────┼─────┤
+│D5a. What would you say is your primary ethnic Cuban │ 20│
+│background? Mexican │ 311│
+│ Spanish │ 48│
+│ South American │ 34│
+│ Central American │ 52│
+│ Puerto Rican, OR │ 78│
+│ Something else │ 68│
+│ Multiple - cannot │ 7│
+│ choose one │ │
+├───────────────────────────────────────────────────────────────────────┼─────┤
+│QNS3A Male │ 3132│
+│ Female │ 3867│
+╰───────────────────────────────────────────────────────────────────────┴─────╯
+
+ Custom Tables
+╭─────────────────────────────────────────┬─────╮
+│ │Count│
+├─────────────────────────────────────────┼─────┤
+│QND5A Cuban │ 20│
+│ Mexican │ 311│
+│ Spanish │ 48│
+│ South American │ 34│
+│ Central American │ 52│
+│ Puerto Rican, OR │ 78│
+│ Something else │ 68│
+│ Multiple - cannot choose one│ 7│
+├─────────────────────────────────────────┼─────┤
+│S3a. GENDER: Male │ 3132│
+│ Female │ 3867│
+╰─────────────────────────────────────────┴─────╯
+
+ Custom Tables
+╭───────────────────────────────────────────────────────────────────────┬─────╮
+│ │Count│
+├───────────────────────────────────────────────────────────────────────┼─────┤
+│D5a. What would you say is your primary ethnic Cuban │ 20│
+│background? Mexican │ 311│
+│ Spanish │ 48│
+│ South American │ 34│
+│ Central American │ 52│
+│ Puerto Rican, OR │ 78│
+│ Something else │ 68│
+│ Multiple - cannot │ 7│
+│ choose one │ │
+├───────────────────────────────────────────────────────────────────────┼─────┤
+│Male │ 3132│
+├───────────────────────────────────────────────────────────────────────┼─────┤
+│Female │ 3867│
+╰───────────────────────────────────────────────────────────────────────┴─────╯
+
+ Custom Tables
+╭─────────────────────────────┬─────╮
+│ │Count│
+├─────────────────────────────┼─────┤
+│Cuban │ 20│
+├─────────────────────────────┼─────┤
+│Mexican │ 311│
+├─────────────────────────────┼─────┤
+│Spanish │ 48│
+├─────────────────────────────┼─────┤
+│South American │ 34│
+├─────────────────────────────┼─────┤
+│Central American │ 52│
+├─────────────────────────────┼─────┤
+│Puerto Rican, OR │ 78│
+├─────────────────────────────┼─────┤
+│Something else │ 68│
+├─────────────────────────────┼─────┤
+│Multiple - cannot choose one │ 7│
+├─────────────────────────────┼─────┤
+│S3a. GENDER: Male │ 3132│
+│ Female │ 3867│
+╰─────────────────────────────┴─────╯
+
+ Custom Tables
+╭────────────────────────────┬─────╮
+│ │Count│
+├────────────────────────────┼─────┤
+│Cuban │ 20│
+│Mexican │ 311│
+│Spanish │ 48│
+│South American │ 34│
+│Central American │ 52│
+│Puerto Rican, OR │ 78│
+│Something else │ 68│
+│Multiple - cannot choose one│ 7│
+│Male │ 3132│
+│Female │ 3867│
+╰────────────────────────────┴─────╯
+])
+AT_CLEANUP
+
+AT_SETUP([CTABLES VLABELS - nested variables])
+AT_KEYWORDS([nest nesting])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[GET 'nhtsa.sav'.
+CTABLES /VLABELS VARIABLES=qns3a DISPLAY=NAME /TABLE qnd5a > qns3a.
+CTABLES /VLABELS VARIABLES=qnd5a DISPLAY=NAME /TABLE qnd5a > qns3a.
+CTABLES /VLABELS VARIABLES=qns3a DISPLAY=NONE /TABLE qnd5a > qns3a.
+CTABLES /VLABELS VARIABLES=qnd5a DISPLAY=NONE /TABLE qnd5a > qns3a.
+CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=NONE /TABLE qnd5a > qns3a.
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode], [0], [dnl
+ Custom Tables
+╭───────────────────────────────────────────────────────────────────────┬─────╮
+│ │Count│
+├───────────────────────────────────────────────────────────────────────┼─────┤
+│D5a. What would you say is your Cuban QNS3A Male │ 13│
+│primary ethnic background? Female│ 7│
+│ ╶─────────────────────────────────┼─────┤
+│ Mexican QNS3A Male │ 175│
+│ Female│ 136│
+│ ╶─────────────────────────────────┼─────┤
+│ Spanish QNS3A Male │ 20│
+│ Female│ 28│
+│ ╶─────────────────────────────────┼─────┤
+│ South American QNS3A Male │ 21│
+│ Female│ 13│
+│ ╶─────────────────────────────────┼─────┤
+│ Central American QNS3A Male │ 27│
+│ Female│ 25│
+│ ╶─────────────────────────────────┼─────┤
+│ Puerto Rican, OR QNS3A Male │ 37│
+│ Female│ 41│
+│ ╶─────────────────────────────────┼─────┤
+│ Something else QNS3A Male │ 35│
+│ Female│ 33│
+│ ╶─────────────────────────────────┼─────┤
+│ Multiple - cannot QNS3A Male │ 2│
+│ choose one Female│ 5│
+╰───────────────────────────────────────────────────────────────────────┴─────╯
+
+ Custom Tables
+╭──────────────────────────────────────────────────────┬─────╮
+│ │Count│
+├──────────────────────────────────────────────────────┼─────┤
+│QND5A Cuban S3a. GENDER: Male │ 13│
+│ Female│ 7│
+│ ╶────────────────────────────────────────────────┼─────┤
+│ Mexican S3a. GENDER: Male │ 175│
+│ Female│ 136│
+│ ╶────────────────────────────────────────────────┼─────┤
+│ Spanish S3a. GENDER: Male │ 20│
+│ Female│ 28│
+│ ╶────────────────────────────────────────────────┼─────┤
+│ South American S3a. GENDER: Male │ 21│
+│ Female│ 13│
+│ ╶────────────────────────────────────────────────┼─────┤
+│ Central American S3a. GENDER: Male │ 27│
+│ Female│ 25│
+│ ╶────────────────────────────────────────────────┼─────┤
+│ Puerto Rican, OR S3a. GENDER: Male │ 37│
+│ Female│ 41│
+│ ╶────────────────────────────────────────────────┼─────┤
+│ Something else S3a. GENDER: Male │ 35│
+│ Female│ 33│
+│ ╶────────────────────────────────────────────────┼─────┤
+│ Multiple - cannot choose one S3a. GENDER: Male │ 2│
+│ Female│ 5│
+╰──────────────────────────────────────────────────────┴─────╯
+
+ Custom Tables
+╭───────────────────────────────────────────────────────────────────────┬─────╮
+│ │Count│
+├───────────────────────────────────────────────────────────────────────┼─────┤
+│D5a. What would you say is your primary Cuban Male │ 13│
+│ethnic background? Female│ 7│
+│ ╶────────────────────────────┼─────┤
+│ Mexican Male │ 175│
+│ Female│ 136│
+│ ╶────────────────────────────┼─────┤
+│ Spanish Male │ 20│
+│ Female│ 28│
+│ ╶────────────────────────────┼─────┤
+│ South American Male │ 21│
+│ Female│ 13│
+│ ╶────────────────────────────┼─────┤
+│ Central American Male │ 27│
+│ Female│ 25│
+│ ╶────────────────────────────┼─────┤
+│ Puerto Rican, OR Male │ 37│
+│ Female│ 41│
+│ ╶────────────────────────────┼─────┤
+│ Something else Male │ 35│
+│ Female│ 33│
+│ ╶────────────────────────────┼─────┤
+│ Multiple - cannot Male │ 2│
+│ choose one Female│ 5│
+╰───────────────────────────────────────────────────────────────────────┴─────╯
+
+ Custom Tables
+╭────────────────────────────────────────────────┬─────╮
+│ │Count│
+├────────────────────────────────────────────────┼─────┤
+│Cuban S3a. GENDER: Male │ 13│
+│ Female│ 7│
+├────────────────────────────────────────────────┼─────┤
+│Mexican S3a. GENDER: Male │ 175│
+│ Female│ 136│
+├────────────────────────────────────────────────┼─────┤
+│Spanish S3a. GENDER: Male │ 20│
+│ Female│ 28│
+├────────────────────────────────────────────────┼─────┤
+│South American S3a. GENDER: Male │ 21│
+│ Female│ 13│
+├────────────────────────────────────────────────┼─────┤
+│Central American S3a. GENDER: Male │ 27│
+│ Female│ 25│
+├────────────────────────────────────────────────┼─────┤
+│Puerto Rican, OR S3a. GENDER: Male │ 37│
+│ Female│ 41│
+├────────────────────────────────────────────────┼─────┤
+│Something else S3a. GENDER: Male │ 35│
+│ Female│ 33│
+├────────────────────────────────────────────────┼─────┤
+│Multiple - cannot choose one S3a. GENDER: Male │ 2│
+│ Female│ 5│
+╰────────────────────────────────────────────────┴─────╯
+
+ Custom Tables
+╭───────────────────────────────────┬─────╮
+│ │Count│
+├───────────────────────────────────┼─────┤
+│Cuban Male │ 13│
+│ Female│ 7│
+├───────────────────────────────────┼─────┤
+│Mexican Male │ 175│
+│ Female│ 136│
+├───────────────────────────────────┼─────┤
+│Spanish Male │ 20│
+│ Female│ 28│
+├───────────────────────────────────┼─────┤
+│South American Male │ 21│
+│ Female│ 13│
+├───────────────────────────────────┼─────┤
+│Central American Male │ 27│
+│ Female│ 25│
+├───────────────────────────────────┼─────┤
+│Puerto Rican, OR Male │ 37│
+│ Female│ 41│
+├───────────────────────────────────┼─────┤
+│Something else Male │ 35│
+│ Female│ 33│
+├───────────────────────────────────┼─────┤
+│Multiple - cannot choose one Male │ 2│
+│ Female│ 5│
+╰───────────────────────────────────┴─────╯
+])
+AT_CLEANUP
+
AT_SETUP([CTABLES FORMAT EMPTY])
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 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 │ 1│ 2│ 4│ 3│ 6│ 5│ 8│ 7│ 9│10│ 11│12│ 14│13│ 15│16│
+│ Layer Column ID│ 1│ 2│ 4│ 3│ 6│ 5│ 8│ 7│ 9│10│ 11│12│ 14│13│ 15│16│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 1│ 2│ 4│ 3│ 6│ 5│ 8│ 7│ 9│10│ 11│12│ 14│13│ 15│16│
+│ Layer Column ID│ 1│ 2│ 4│ 3│ 6│ 5│ 8│ 7│ 9│10│ 11│12│ 14│13│ 15│16│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 18│17│ 19│20│ 22│21│ 23│24│ 25│26│ 27│28│ 29│30│ 32│31│
+│ Layer Column ID│ 1│ 2│ 4│ 3│ 6│ 5│ 8│ 7│ 9│10│ 11│12│ 14│13│ 15│16│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 18│17│ 19│20│ 22│21│ 23│24│ 25│26│ 27│28│ 29│30│ 32│31│
+│ Layer Column ID│ 1│ 2│ 4│ 3│ 6│ 5│ 8│ 7│ 9│10│ 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 │ 33│34│ 36│35│ 37│38│ 39│40│ 42│41│ 44│43│ 45│46│ 47│48│
+│ Layer Column ID│ 17│18│ 20│19│ 21│22│ 23│24│ 26│25│ 28│27│ 29│30│ 31│32│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 33│34│ 36│35│ 37│38│ 39│40│ 42│41│ 44│43│ 45│46│ 47│48│
+│ Layer Column ID│ 17│18│ 20│19│ 21│22│ 23│24│ 26│25│ 28│27│ 29│30│ 31│32│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 49│50│ 51│52│ 54│53│ 56│55│ 57│58│ 60│59│ 62│61│ 64│63│
+│ Layer Column ID│ 17│18│ 20│19│ 21│22│ 23│24│ 26│25│ 28│27│ 29│30│ 31│32│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 49│50│ 51│52│ 54│53│ 56│55│ 57│58│ 60│59│ 62│61│ 64│63│
+│ Layer Column ID│ 17│18│ 20│19│ 21│22│ 23│24│ 26│25│ 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 │ 1│ 1│ 3│ 3│
+│ Layer Row ID│ 1│ 1│ 1│ 1│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 2│ 2│ 4│ 4│
+│ Layer Row ID│ 2│ 2│ 2│ 2│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 6│ 6│ 7│ 7│
+│ Layer Row ID│ 4│ 4│ 4│ 4│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 5│ 5│ 8│ 8│
+│ Layer Row ID│ 3│ 3│ 3│ 3│
+│ ╶─────────────────────────────┼────┼────┼────┼────┤
+│ 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 │ 13│ 13│ 15│ 15│
+│ Layer Row ID│ 7│ 7│ 7│ 7│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 14│ 14│ 16│ 16│
+│ Layer Row ID│ 8│ 8│ 8│ 8│
+│ ╶──────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Yes Row ID │ 17│ 17│ 20│ 20│
+│ Layer Row ID│ 9│ 9│ 9│ 9│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 18│ 18│ 19│ 19│
+│ Layer Row ID│ 10│ 10│ 10│ 10│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 21│ 21│ 24│ 24│
+│ Layer Row ID│ 11│ 11│ 11│ 11│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 22│ 22│ 23│ 23│
+│ Layer Row ID│ 12│ 12│ 12│ 12│
+│ ╶─────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Yes Row ID │ 25│ 25│ 27│ 27│
+│ Layer Row ID│ 13│ 13│ 13│ 13│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 26│ 26│ 28│ 28│
+│ Layer Row ID│ 14│ 14│ 14│ 14│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 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 │ 34│ 34│ 35│ 35│
+│ Layer Row ID│ 18│ 18│ 18│ 18│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 33│ 33│ 36│ 36│
+│ Layer Row ID│ 17│ 17│ 17│ 17│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 38│ 38│ 39│ 39│
+│ Layer Row ID│ 20│ 20│ 20│ 20│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 37│ 37│ 40│ 40│
+│ Layer Row ID│ 19│ 19│ 19│ 19│
+│ ╶─────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Yes Row ID │ 42│ 42│ 43│ 43│
+│ Layer Row ID│ 22│ 22│ 22│ 22│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 41│ 41│ 44│ 44│
+│ Layer Row ID│ 21│ 21│ 21│ 21│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 45│ 45│ 47│ 47│
+│ Layer Row ID│ 23│ 23│ 23│ 23│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 46│ 46│ 48│ 48│
+│ Layer Row ID│ 24│ 24│ 24│ 24│
+│ ╶──────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Yes Row ID │ 50│ 50│ 51│ 51│
+│ Layer Row ID│ 26│ 26│ 26│ 26│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 49│ 49│ 52│ 52│
+│ Layer Row ID│ 25│ 25│ 25│ 25│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 53│ 53│ 55│ 55│
+│ Layer Row ID│ 27│ 27│ 27│ 27│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 54│ 54│ 56│ 56│
+│ Layer Row ID│ 28│ 28│ 28│ 28│
+│ ╶─────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Yes Row ID │ 57│ 57│ 59│ 59│
+│ Layer Row ID│ 29│ 29│ 29│ 29│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 58│ 58│ 60│ 60│
+│ Layer Row ID│ 30│ 30│ 30│ 30│
+│ ╶────────────────────┼────┼────┼────┼────┤
+│ No Yes Row ID │ 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│ 4│ 4│ 6│ 6│ 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│ 4│ 4│ 6│ 6│ 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│ 15│15│
+│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 15│15│
+╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ Custom Tables
+Male
+No
+╭──────────────────────────────────┬───────────────────────────╮
+│ │ QN27 │
+│ ├─────────────┬─────────────┤
+│ │ Yes │ No │
+│ ├─────────────┼─────────────┤
+│ │ QND7A │ QND7A │
+│ ├──────┬──────┼──────┬──────┤
+│ │ Yes │ No │ Yes │ No │
+│ ├──────┼──────┼──────┼──────┤
+│ │ QN86 │ QN86 │ QN86 │ QN86 │
+│ ├───┬──┼───┬──┼───┬──┼───┬──┤
+│ │Yes│No│Yes│No│Yes│No│Yes│No│
+├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│QN26 Yes QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│
+│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│
+│ Subtable ID│ 1│ 1│ 3│ 3│ 5│ 5│ 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│ 3│ 3│ 5│ 5│ 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│ 16│16│
+│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 16│16│
+╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ Custom Tables
+Female
+Yes
+╭──────────────────────────────────┬───────────────────────────╮
+│ │ QN27 │
+│ ├─────────────┬─────────────┤
+│ │ Yes │ No │
+│ ├─────────────┼─────────────┤
+│ │ QND7A │ QND7A │
+│ ├──────┬──────┼──────┬──────┤
+│ │ Yes │ No │ Yes │ No │
+│ ├──────┼──────┼──────┼──────┤
+│ │ QN86 │ QN86 │ QN86 │ QN86 │
+│ ├───┬──┼───┬──┼───┬──┼───┬──┤
+│ │Yes│No│Yes│No│Yes│No│Yes│No│
+├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│QN26 Yes QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│
+│ Subtable ID│ 18│18│ 20│20│ 21│21│ 23│23│
+│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 21│21│ 23│23│
+│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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
+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 │ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│
+│ Subtable ID│ 17│17│ 19│19│ 22│22│ 24│24│
+│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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│ 22│22│ 24│24│
+│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ 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
+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│ 7│ 7│
+│ Layer Row ID│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 10│10│ 11│11│ 13│13│ 15│15│
+│ Layer Row ID│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│
+│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Row ID │ 17│17│ 20│20│ 21│21│ 24│24│
+│ Layer Row ID│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 25│25│ 28│28│ 30│30│ 31│31│
+│ Layer Row ID│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│
+╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ Custom Tables
+Male
+No
+╭───────────────────────────────────┬───────────────────────────╮
+│ │ QN27 │
+│ ├─────────────┬─────────────┤
+│ │ Yes │ No │
+│ ├─────────────┼─────────────┤
+│ │ QND7A │ QND7A │
+│ ├──────┬──────┼──────┬──────┤
+│ │ Yes │ No │ Yes │ No │
+│ ├──────┼──────┼──────┼──────┤
+│ │ QN86 │ QN86 │ QN86 │ QN86 │
+│ ├───┬──┼───┬──┼───┬──┼───┬──┤
+│ │Yes│No│Yes│No│Yes│No│Yes│No│
+├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│QN26 Yes QN61 Yes QN57 Row ID │ 2│ 2│ 4│ 4│ 5│ 5│ 8│ 8│
+│ Layer Row ID│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 9│ 9│ 12│12│ 14│14│ 16│16│
+│ Layer Row ID│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│
+│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Row ID │ 18│18│ 19│19│ 22│22│ 23│23│
+│ Layer Row ID│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 26│26│ 27│27│ 29│29│ 32│32│
+│ Layer Row ID│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│
+╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ Custom Tables
+Female
+Yes
+╭───────────────────────────────────┬───────────────────────────╮
+│ │ QN27 │
+│ ├─────────────┬─────────────┤
+│ │ Yes │ No │
+│ ├─────────────┼─────────────┤
+│ │ QND7A │ QND7A │
+│ ├──────┬──────┼──────┬──────┤
+│ │ Yes │ No │ Yes │ No │
+│ ├──────┼──────┼──────┼──────┤
+│ │ QN86 │ QN86 │ QN86 │ QN86 │
+│ ├───┬──┼───┬──┼───┬──┼───┬──┤
+│ │Yes│No│Yes│No│Yes│No│Yes│No│
+├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│QN26 Yes QN61 Yes QN57 Row ID │ 34│34│ 36│36│ 38│38│ 39│39│
+│ Layer Row ID│ 10│10│ 10│10│ 10│10│ 10│10│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 41│41│ 43│43│ 46│46│ 47│47│
+│ Layer Row ID│ 11│11│ 11│11│ 11│11│ 11│11│
+│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Row ID │ 50│50│ 51│51│ 53│53│ 56│56│
+│ Layer Row ID│ 14│14│ 14│14│ 14│14│ 14│14│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 58│58│ 59│59│ 62│62│ 63│63│
+│ Layer Row ID│ 16│16│ 16│16│ 16│16│ 16│16│
+╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ 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 │ 33│33│ 35│35│ 37│37│ 40│40│
+│ Layer Row ID│ 9│ 9│ 9│ 9│ 9│ 9│ 9│ 9│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 42│42│ 44│44│ 45│45│ 48│48│
+│ Layer Row ID│ 12│12│ 12│12│ 12│12│ 12│12│
+│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Row ID │ 49│49│ 52│52│ 54│54│ 55│55│
+│ Layer Row ID│ 13│13│ 13│13│ 13│13│ 13│13│
+│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Row ID │ 57│57│ 60│60│ 61│61│ 64│64│
+│ Layer Row ID│ 15│15│ 15│15│ 15│15│ 15│15│
+╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯
+
+ Custom Tables
+Male
+Yes
+╭──────────────────────────────────────┬───────────────────────────╮
+│ │ QN27 │
+│ ├─────────────┬─────────────┤
+│ │ Yes │ No │
+│ ├─────────────┼─────────────┤
+│ │ QND7A │ QND7A │
+│ ├──────┬──────┼──────┬──────┤
+│ │ Yes │ No │ Yes │ No │
+│ ├──────┼──────┼──────┼──────┤
+│ │ QN86 │ QN86 │ QN86 │ QN86 │
+│ ├───┬──┼───┬──┼───┬──┼───┬──┤
+│ │Yes│No│Yes│No│Yes│No│Yes│No│
+├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│QN26 Yes QN61 Yes QN57 Column ID │ 1│ 4│ 6│ 8│ 9│11│ 14│15│
+│ Layer Column ID│ 1│ 4│ 6│ 8│ 9│11│ 14│15│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 1│ 4│ 6│ 8│ 9│11│ 14│15│
+│ Layer Column ID│ 1│ 4│ 6│ 8│ 9│11│ 14│15│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 18│19│ 22│23│ 25│27│ 29│32│
+│ Layer Column ID│ 1│ 4│ 6│ 8│ 9│11│ 14│15│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 18│19│ 22│23│ 25│27│ 29│32│
+│ Layer Column ID│ 1│ 4│ 6│ 8│ 9│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 │ 2│ 3│ 5│ 7│ 10│12│ 13│16│
+│ Layer Column ID│ 2│ 3│ 5│ 7│ 10│12│ 13│16│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 2│ 3│ 5│ 7│ 10│12│ 13│16│
+│ Layer Column ID│ 2│ 3│ 5│ 7│ 10│12│ 13│16│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 17│20│ 21│24│ 26│28│ 30│31│
+│ Layer Column ID│ 2│ 3│ 5│ 7│ 10│12│ 13│16│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 17│20│ 21│24│ 26│28│ 30│31│
+│ Layer Column ID│ 2│ 3│ 5│ 7│ 10│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 │ 33│36│ 37│39│ 42│44│ 45│47│
+│ Layer Column ID│ 17│20│ 21│23│ 26│28│ 29│31│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 33│36│ 37│39│ 42│44│ 45│47│
+│ Layer Column ID│ 17│20│ 21│23│ 26│28│ 29│31│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 49│51│ 54│56│ 57│60│ 62│64│
+│ Layer Column ID│ 17│20│ 21│23│ 26│28│ 29│31│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 49│51│ 54│56│ 57│60│ 62│64│
+│ Layer Column ID│ 17│20│ 21│23│ 26│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 │ 34│35│ 38│40│ 41│43│ 46│48│
+│ Layer Column ID│ 18│19│ 22│24│ 25│27│ 30│32│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 34│35│ 38│40│ 41│43│ 46│48│
+│ Layer Column ID│ 18│19│ 22│24│ 25│27│ 30│32│
+│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN61 Yes QN57 Column ID │ 50│52│ 53│55│ 58│59│ 61│63│
+│ Layer Column ID│ 18│19│ 22│24│ 25│27│ 30│32│
+│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤
+│ No QN57 Column ID │ 50│52│ 53│55│ 58│59│ 61│63│
+│ Layer Column ID│ 18│19│ 22│24│ 25│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│ 8│ 8│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 2│ 2│ 2│ 2│
+│ Subtable ID│ 5│ 5│ 8│ 8│
+│ ╶─────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 2│ 2│ 2│ 2│
+│ Subtable ID│ 9│ 9│ 12│ 12│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 2│ 2│ 2│ 2│
+│ Subtable ID│ 9│ 9│ 12│ 12│
+│ ╶────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 2│ 2│ 2│ 2│
+│ Subtable ID│ 14│ 14│ 15│ 15│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 2│ 2│ 2│ 2│
+│ Subtable ID│ 14│ 14│ 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│ 7│ 7│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 1│ 1│ 1│ 1│
+│ Subtable ID│ 6│ 6│ 7│ 7│
+│ ╶─────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 1│ 1│ 1│ 1│
+│ Subtable ID│ 10│ 10│ 11│ 11│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 1│ 1│ 1│ 1│
+│ Subtable ID│ 10│ 10│ 11│ 11│
+│ ╶────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 1│ 1│ 1│ 1│
+│ Subtable ID│ 13│ 13│ 16│ 16│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 1│ 1│ 1│ 1│
+│ Subtable ID│ 13│ 13│ 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│ 20│ 20│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 18│ 18│ 20│ 20│
+│ ╶────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 21│ 21│ 23│ 23│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 21│ 21│ 23│ 23│
+│ ╶─────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 25│ 25│ 28│ 28│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 25│ 25│ 28│ 28│
+│ ╶────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 30│ 30│ 32│ 32│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 4│ 4│ 4│ 4│
+│ Subtable ID│ 30│ 30│ 32│ 32│
+╰──────────────────────────────────────┴────┴────┴────┴────╯
+
+ Custom Tables
+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│ 19│ 19│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 17│ 17│ 19│ 19│
+│ ╶────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 22│ 22│ 24│ 24│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 22│ 22│ 24│ 24│
+│ ╶─────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 26│ 26│ 27│ 27│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 26│ 26│ 27│ 27│
+│ ╶────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 29│ 29│ 31│ 31│
+│ ╶───────────────┼────┼────┼────┼────┤
+│ No Table ID │ 1│ 1│ 1│ 1│
+│ Layer ID │ 3│ 3│ 3│ 3│
+│ Subtable ID│ 29│ 29│ 31│ 31│
+╰──────────────────────────────────────┴────┴────┴────┴────╯
+
+ Custom Tables
+Male
+Yes
+╭───────────────────────────────────────┬───────────────────╮
+│ │ QN27 │
+│ ├─────────┬─────────┤
+│ │ Yes │ No │
+│ ├─────────┼─────────┤
+│ │ QND7A │ QND7A │
+│ ├────┬────┼────┬────┤
+│ │ Yes│ No │ Yes│ No │
+│ ├────┼────┼────┼────┤
+│ │QN86│QN86│QN86│QN86│
+├───────────────────────────────────────┼────┼────┼────┼────┤
+│QN26 Yes QN61 Yes QN57 Yes Row ID │ 1│ 1│ 3│ 3│
+│ Layer Row ID│ 1│ 1│ 1│ 1│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 6│ 6│ 7│ 7│
+│ Layer Row ID│ 4│ 4│ 4│ 4│
+│ ╶─────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Row ID │ 10│ 10│ 11│ 11│
+│ Layer Row ID│ 6│ 6│ 6│ 6│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 13│ 13│ 15│ 15│
+│ Layer Row ID│ 7│ 7│ 7│ 7│
+│ ╶──────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Row ID │ 17│ 17│ 20│ 20│
+│ Layer Row ID│ 9│ 9│ 9│ 9│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 21│ 21│ 24│ 24│
+│ Layer Row ID│ 11│ 11│ 11│ 11│
+│ ╶─────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Row ID │ 25│ 25│ 27│ 27│
+│ Layer Row ID│ 13│ 13│ 13│ 13│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 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 │ 2│ 2│ 4│ 4│
+│ Layer Row ID│ 2│ 2│ 2│ 2│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 5│ 5│ 8│ 8│
+│ Layer Row ID│ 3│ 3│ 3│ 3│
+│ ╶─────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Row ID │ 9│ 9│ 12│ 12│
+│ Layer Row ID│ 5│ 5│ 5│ 5│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 14│ 14│ 16│ 16│
+│ Layer Row ID│ 8│ 8│ 8│ 8│
+│ ╶──────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Row ID │ 18│ 18│ 19│ 19│
+│ Layer Row ID│ 10│ 10│ 10│ 10│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 22│ 22│ 23│ 23│
+│ Layer Row ID│ 12│ 12│ 12│ 12│
+│ ╶─────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Row ID │ 26│ 26│ 28│ 28│
+│ Layer Row ID│ 14│ 14│ 14│ 14│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 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 │ 34│ 34│ 35│ 35│
+│ Layer Row ID│ 18│ 18│ 18│ 18│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 38│ 38│ 39│ 39│
+│ 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 │ 45│ 45│ 47│ 47│
+│ Layer Row ID│ 23│ 23│ 23│ 23│
+│ ╶──────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Row ID │ 50│ 50│ 51│ 51│
+│ Layer Row ID│ 26│ 26│ 26│ 26│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 53│ 53│ 55│ 55│
+│ Layer Row ID│ 27│ 27│ 27│ 27│
+│ ╶─────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Row ID │ 57│ 57│ 59│ 59│
+│ Layer Row ID│ 29│ 29│ 29│ 29│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 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 │ 33│ 33│ 36│ 36│
+│ Layer Row ID│ 17│ 17│ 17│ 17│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 37│ 37│ 40│ 40│
+│ 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 │ 46│ 46│ 48│ 48│
+│ Layer Row ID│ 24│ 24│ 24│ 24│
+│ ╶──────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Row ID │ 49│ 49│ 52│ 52│
+│ Layer Row ID│ 25│ 25│ 25│ 25│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 54│ 54│ 56│ 56│
+│ Layer Row ID│ 28│ 28│ 28│ 28│
+│ ╶─────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Row ID │ 58│ 58│ 60│ 60│
+│ Layer Row ID│ 30│ 30│ 30│ 30│
+│ ╶────────────────┼────┼────┼────┼────┤
+│ No Row ID │ 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 │ 2│ 4│ 6│ 7│
+│ Layer Column ID│ 2│ 4│ 6│ 7│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 2│ 4│ 6│ 7│
+│ Layer Column ID│ 2│ 4│ 6│ 7│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 9│ 12│ 13│ 16│
+│ Layer Column ID│ 2│ 4│ 6│ 7│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 9│ 12│ 13│ 16│
+│ Layer Column ID│ 2│ 4│ 6│ 7│
+│ ╶─────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Column ID │ 18│ 19│ 22│ 24│
+│ Layer Column ID│ 2│ 4│ 6│ 7│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 18│ 19│ 22│ 24│
+│ Layer Column ID│ 2│ 4│ 6│ 7│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 25│ 27│ 29│ 32│
+│ Layer Column ID│ 2│ 4│ 6│ 7│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 25│ 27│ 29│ 32│
+│ Layer Column ID│ 2│ 4│ 6│ 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 │ 1│ 3│ 5│ 8│
+│ Layer Column ID│ 1│ 3│ 5│ 8│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 1│ 3│ 5│ 8│
+│ Layer Column ID│ 1│ 3│ 5│ 8│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 10│ 11│ 14│ 15│
+│ Layer Column ID│ 1│ 3│ 5│ 8│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 10│ 11│ 14│ 15│
+│ Layer Column ID│ 1│ 3│ 5│ 8│
+│ ╶─────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Column ID │ 17│ 20│ 21│ 23│
+│ Layer Column ID│ 1│ 3│ 5│ 8│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 17│ 20│ 21│ 23│
+│ Layer Column ID│ 1│ 3│ 5│ 8│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 26│ 28│ 30│ 31│
+│ Layer Column ID│ 1│ 3│ 5│ 8│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 26│ 28│ 30│ 31│
+│ Layer Column ID│ 1│ 3│ 5│ 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│ 40│
+│ Layer Column ID│ 10│ 12│ 13│ 16│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 34│ 36│ 37│ 40│
+│ Layer Column ID│ 10│ 12│ 13│ 16│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 41│ 43│ 45│ 47│
+│ Layer Column ID│ 10│ 12│ 13│ 16│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 41│ 43│ 45│ 47│
+│ Layer Column ID│ 10│ 12│ 13│ 16│
+│ ╶─────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Column ID │ 49│ 51│ 54│ 55│
+│ Layer Column ID│ 10│ 12│ 13│ 16│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 49│ 51│ 54│ 55│
+│ Layer Column ID│ 10│ 12│ 13│ 16│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 58│ 60│ 62│ 63│
+│ Layer Column ID│ 10│ 12│ 13│ 16│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 58│ 60│ 62│ 63│
+│ Layer Column ID│ 10│ 12│ 13│ 16│
+╰──────────────────────────────────────────┴────┴────┴────┴────╯
+
+ 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│ 39│
+│ Layer Column ID│ 9│ 11│ 14│ 15│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 33│ 35│ 38│ 39│
+│ Layer Column ID│ 9│ 11│ 14│ 15│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 42│ 44│ 46│ 48│
+│ Layer Column ID│ 9│ 11│ 14│ 15│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 42│ 44│ 46│ 48│
+│ Layer Column ID│ 9│ 11│ 14│ 15│
+│ ╶─────────────────────────────────────┼────┼────┼────┼────┤
+│ No QN61 Yes QN57 Yes Column ID │ 50│ 52│ 53│ 56│
+│ Layer Column ID│ 9│ 11│ 14│ 15│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 50│ 52│ 53│ 56│
+│ Layer Column ID│ 9│ 11│ 14│ 15│
+│ ╶────────────────────────────┼────┼────┼────┼────┤
+│ No QN57 Yes Column ID │ 57│ 59│ 61│ 64│
+│ Layer Column ID│ 9│ 11│ 14│ 15│
+│ ╶───────────────────┼────┼────┼────┼────┤
+│ No Column ID │ 57│ 59│ 61│ 64│
+│ Layer Column ID│ 9│ 11│ 14│ 15│
+╰──────────────────────────────────────────┴────┴────┴────┴────╯
+])
+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]
+ /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
│ Sum │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│
-│ ╶────────────────────┼────────┤
-│ 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│
-│ ╶────────────────────┼────────┤
-│ 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│
-│ ╶────────────────────┼────────┤
-│ 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│
-╰───────────────────────────┴────────╯
+ 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 - assertion failure])
+AT_SETUP([CTABLES hidden scale VLABELS])
AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
AT_DATA([ctables.sps],
[[GET 'nhtsa.sav'.
+CTABLES
+ /TABLE region BY qn19a + qn35
+ /SLABELS POSITION=ROW.
CTABLES
/VLABELS VARIABLE=qn19a DISPLAY=NONE
- /TABLE region BY qn19a
- /CATEGORIES VARIABLES=qn19a TOTAL=YES MISSING=INCLUDE
+ /TABLE region BY qn19a + qn35
+ /SLABELS POSITION=ROW.
+CTABLES
+ /VLABELS VARIABLE=qn35 DISPLAY=NONE
+ /TABLE region BY qn19a + qn35
+ /SLABELS POSITION=ROW.
+
+* This one in particular caused a crash because no categories were
+ created on the column axis, so passing in 0 for the index was still
+ too big for that number of categories. It was fixed by creating a
+ name-only category for each variable despite the "NONE" request,
+ then hiding the entire dimension's labels if all its labels were
+ set to "NONE".
+CTABLES
+ /VLABELS VARIABLE=qn19a qn35 DISPLAY=NONE
+ /TABLE region BY qn19a + qn35
/SLABELS POSITION=ROW.
]])
-AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [])
+AT_CHECK([pspp ctables.sps -O box=unicode], [0], [dnl
+ Custom Tables
+╭──────────────┬────────────────────────────┬─────────────────────────────────╮
+│ │ 19a. About how old were you│ 35. In the past thirty days, how│
+│ │ when you first starting │ many times have you driven a │
+│ │ drinking alcohol, not │ motor vehicle WITHIN TWO HOURS │
+│ │ counting small tastes or │ AFTER drinking alcoholic │
+│ │ sips of alcohol. │ beverages? │
+├──────────────┼────────────────────────────┼─────────────────────────────────┤
+│Region NE Mean│ 19.33│ 2│
+│ ╶───────┼────────────────────────────┼─────────────────────────────────┤
+│ MW Mean│ 19.83│ 2│
+│ ╶───────┼────────────────────────────┼─────────────────────────────────┤
+│ S Mean│ 20.29│ 2│
+│ ╶───────┼────────────────────────────┼─────────────────────────────────┤
+│ W Mean│ 19.87│ 2│
+╰──────────────┴────────────────────────────┴─────────────────────────────────╯
+
+ Custom Tables
+╭──────────────┬─────┬────────────────────────────────────────────────────────╮
+│ │ │ 35. In the past thirty days, how many times have you │
+│ │ │ driven a motor vehicle WITHIN TWO HOURS AFTER drinking │
+│ │QN19A│ alcoholic beverages? │
+├──────────────┼─────┼────────────────────────────────────────────────────────┤
+│Region NE Mean│19.33│ 2│
+│ ╶───────┼─────┼────────────────────────────────────────────────────────┤
+│ MW Mean│19.83│ 2│
+│ ╶───────┼─────┼────────────────────────────────────────────────────────┤
+│ S Mean│20.29│ 2│
+│ ╶───────┼─────┼────────────────────────────────────────────────────────┤
+│ W Mean│19.87│ 2│
+╰──────────────┴─────┴────────────────────────────────────────────────────────╯
+
+ Custom Tables
+╭──────────────┬─────────────────────────────────────────────────────────┬────╮
+│ │ 19a. About how old were you when you first starting │ │
+│ │ drinking alcohol, not counting small tastes or sips of │ │
+│ │ alcohol. │qn35│
+├──────────────┼─────────────────────────────────────────────────────────┼────┤
+│Region NE Mean│ 19.33│ 2│
+│ ╶───────┼─────────────────────────────────────────────────────────┼────┤
+│ MW Mean│ 19.83│ 2│
+│ ╶───────┼─────────────────────────────────────────────────────────┼────┤
+│ S Mean│ 20.29│ 2│
+│ ╶───────┼─────────────────────────────────────────────────────────┼────┤
+│ W Mean│ 19.87│ 2│
+╰──────────────┴─────────────────────────────────────────────────────────┴────╯
+
+ Custom Tables
+╭──────────────┬───────╮
+│Region NE Mean│19.33 2│
+│ ╶───────┼───────┤
+│ MW Mean│19.83 2│
+│ ╶───────┼───────┤
+│ S Mean│20.29 2│
+│ ╶───────┼───────┤
+│ W Mean│19.87 2│
+╰──────────────┴───────╯
+])
AT_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