From cf8aa1f317ac569ac742a597e6f7cf1b4cbb293c Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 26 Dec 2021 16:01:47 -0800 Subject: [PATCH] Implement CTABLES procedure. --- NEWS | 2 + doc/automake.mk | 43 + doc/pspp-figures/ctables1.sps | 2 + doc/pspp-figures/ctables10.sps | 4 + doc/pspp-figures/ctables11.sps | 4 + doc/pspp-figures/ctables12.sps | 2 + doc/pspp-figures/ctables13.sps | 2 + doc/pspp-figures/ctables14.sps | 2 + doc/pspp-figures/ctables15.sps | 2 + doc/pspp-figures/ctables16.sps | 2 + doc/pspp-figures/ctables17.sps | 3 + doc/pspp-figures/ctables18.sps | 9 + doc/pspp-figures/ctables19.sps | 9 + doc/pspp-figures/ctables2.sps | 2 + doc/pspp-figures/ctables20.sps | 9 + doc/pspp-figures/ctables21.sps | 9 + doc/pspp-figures/ctables22.sps | 5 + doc/pspp-figures/ctables23.sps | 2 + doc/pspp-figures/ctables24.sps | 4 + doc/pspp-figures/ctables25.sps | 4 + doc/pspp-figures/ctables26.sps | 4 + doc/pspp-figures/ctables27.sps | 3 + doc/pspp-figures/ctables28.sps | 3 + doc/pspp-figures/ctables29.sps | 6 + doc/pspp-figures/ctables3.sps | 2 + doc/pspp-figures/ctables30.sps | 3 + doc/pspp-figures/ctables31.sps | 3 + doc/pspp-figures/ctables32.sps | 15 + doc/pspp-figures/ctables33.sps | 15 + doc/pspp-figures/ctables34.sps | 16 + doc/pspp-figures/ctables35.sps | 11 + doc/pspp-figures/ctables36.sps | 2 + doc/pspp-figures/ctables4.sps | 2 + doc/pspp-figures/ctables5.sps | 3 + doc/pspp-figures/ctables6.sps | 2 + doc/pspp-figures/ctables7.sps | 2 + doc/pspp-figures/ctables8.sps | 2 + doc/pspp-figures/ctables9.sps | 4 + doc/statistics.texi | 1329 ++++++ doc/tutorial.stt | 2 +- doc/utilities.texi | 1 + doc/variables.texi | 14 +- examples/automake.mk | 6 +- examples/nhtsa-drinking-2008.sav | Bin 0 -> 1086683 bytes examples/nhtsa-drinking-2008.sps | 102 + examples/nhtsa.sav | Bin 0 -> 1091700 bytes src/language/command.def | 2 +- src/language/stats/automake.mk | 2 + src/language/stats/ctables.c | 6704 ++++++++++++++++++++++++++++++ src/language/stats/ctables.inc | 27 + tests/automake.mk | 11 +- tests/language/stats/ctables.at | 5495 ++++++++++++++++++++++++ 52 files changed, 13900 insertions(+), 14 deletions(-) create mode 100644 doc/pspp-figures/ctables1.sps create mode 100644 doc/pspp-figures/ctables10.sps create mode 100644 doc/pspp-figures/ctables11.sps create mode 100644 doc/pspp-figures/ctables12.sps create mode 100644 doc/pspp-figures/ctables13.sps create mode 100644 doc/pspp-figures/ctables14.sps create mode 100644 doc/pspp-figures/ctables15.sps create mode 100644 doc/pspp-figures/ctables16.sps create mode 100644 doc/pspp-figures/ctables17.sps create mode 100644 doc/pspp-figures/ctables18.sps create mode 100644 doc/pspp-figures/ctables19.sps create mode 100644 doc/pspp-figures/ctables2.sps create mode 100644 doc/pspp-figures/ctables20.sps create mode 100644 doc/pspp-figures/ctables21.sps create mode 100644 doc/pspp-figures/ctables22.sps create mode 100644 doc/pspp-figures/ctables23.sps create mode 100644 doc/pspp-figures/ctables24.sps create mode 100644 doc/pspp-figures/ctables25.sps create mode 100644 doc/pspp-figures/ctables26.sps create mode 100644 doc/pspp-figures/ctables27.sps create mode 100644 doc/pspp-figures/ctables28.sps create mode 100644 doc/pspp-figures/ctables29.sps create mode 100644 doc/pspp-figures/ctables3.sps create mode 100644 doc/pspp-figures/ctables30.sps create mode 100644 doc/pspp-figures/ctables31.sps create mode 100644 doc/pspp-figures/ctables32.sps create mode 100644 doc/pspp-figures/ctables33.sps create mode 100644 doc/pspp-figures/ctables34.sps create mode 100644 doc/pspp-figures/ctables35.sps create mode 100644 doc/pspp-figures/ctables36.sps create mode 100644 doc/pspp-figures/ctables4.sps create mode 100644 doc/pspp-figures/ctables5.sps create mode 100644 doc/pspp-figures/ctables6.sps create mode 100644 doc/pspp-figures/ctables7.sps create mode 100644 doc/pspp-figures/ctables8.sps create mode 100644 doc/pspp-figures/ctables9.sps create mode 100644 examples/nhtsa-drinking-2008.sav create mode 100644 examples/nhtsa-drinking-2008.sps create mode 100644 examples/nhtsa.sav create mode 100644 src/language/stats/ctables.c create mode 100644 src/language/stats/ctables.inc create mode 100644 tests/language/stats/ctables.at diff --git a/NEWS b/NEWS index 7f288ded91..1dbb673689 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,8 @@ Please send PSPP bug reports to bug-gnu-pspp@gnu.org. Changes after 1.6.2: + * The CTABLES command is now implemented. + * FREQUENCIES now honors the LAYERED setting on SPLIT FILE. * Building from a Git repository, which previously required GIMP, now diff --git a/doc/automake.mk b/doc/automake.mk index 83209001d1..e80d5c5043 100644 --- a/doc/automake.mk +++ b/doc/automake.mk @@ -117,6 +117,42 @@ FIGURE_SYNTAX = \ doc/pspp-figures/chisquare.sps \ doc/pspp-figures/compute.sps \ doc/pspp-figures/count.sps \ + doc/pspp-figures/ctables1.sps \ + doc/pspp-figures/ctables2.sps \ + doc/pspp-figures/ctables3.sps \ + doc/pspp-figures/ctables4.sps \ + doc/pspp-figures/ctables5.sps \ + doc/pspp-figures/ctables6.sps \ + doc/pspp-figures/ctables7.sps \ + doc/pspp-figures/ctables8.sps \ + doc/pspp-figures/ctables9.sps \ + doc/pspp-figures/ctables10.sps \ + doc/pspp-figures/ctables11.sps \ + doc/pspp-figures/ctables12.sps \ + doc/pspp-figures/ctables13.sps \ + doc/pspp-figures/ctables14.sps \ + doc/pspp-figures/ctables15.sps \ + doc/pspp-figures/ctables16.sps \ + doc/pspp-figures/ctables17.sps \ + doc/pspp-figures/ctables18.sps \ + doc/pspp-figures/ctables19.sps \ + doc/pspp-figures/ctables20.sps \ + doc/pspp-figures/ctables21.sps \ + doc/pspp-figures/ctables22.sps \ + doc/pspp-figures/ctables23.sps \ + doc/pspp-figures/ctables24.sps \ + doc/pspp-figures/ctables25.sps \ + doc/pspp-figures/ctables26.sps \ + doc/pspp-figures/ctables27.sps \ + doc/pspp-figures/ctables28.sps \ + doc/pspp-figures/ctables29.sps \ + doc/pspp-figures/ctables30.sps \ + doc/pspp-figures/ctables31.sps \ + doc/pspp-figures/ctables32.sps \ + doc/pspp-figures/ctables33.sps \ + doc/pspp-figures/ctables34.sps \ + doc/pspp-figures/ctables35.sps \ + doc/pspp-figures/ctables36.sps \ doc/pspp-figures/crosstabs.sps \ doc/pspp-figures/descriptives.sps \ doc/pspp-figures/flip.sps \ @@ -246,6 +282,13 @@ EXTRA_DIST += doc/tutorial.stt .spv.html: $(convert) -O format=html -O bare=true +# Make sure that tutorial.stt outputs all layers, because a few of the +# examples in the manual rely on that and it would be easy to replace +# it with a style that didn't. +ALL_LOCAL += tutorial-stt-must-print-all-layers +tutorial-stt-must-print-all-layers: + $(AM_V_GEN)grep 'printAllLayers="true"' $(srcdir)/doc/tutorial.stt >/dev/null 2>&1 && touch $@ + # Convert a text file into a Texinfo file. .txt.texi: $(AM_V_GEN)$(SED) -e 's/@/@@/g' $< > $@ diff --git a/doc/pspp-figures/ctables1.sps b/doc/pspp-figures/ctables1.sps new file mode 100644 index 0000000000..ca6431a837 --- /dev/null +++ b/doc/pspp-figures/ctables1.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=AgeGroup. diff --git a/doc/pspp-figures/ctables10.sps b/doc/pspp-figures/ctables10.sps new file mode 100644 index 0000000000..8adb5ff336 --- /dev/null +++ b/doc/pspp-figures/ctables10.sps @@ -0,0 +1,4 @@ +GET FILE='nhtsa.sav'. +CTABLES + /TABLE=qnd1 [MEAN, MEDIAN] BY qns3a + /TABLE=AgeGroup [COLPCT, ROWPCT] BY qns3a. diff --git a/doc/pspp-figures/ctables11.sps b/doc/pspp-figures/ctables11.sps new file mode 100644 index 0000000000..d2e064c4cb --- /dev/null +++ b/doc/pspp-figures/ctables11.sps @@ -0,0 +1,4 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=AgeGroup [COLPCT 'Gender %' PCT5.0, + ROWPCT 'Age Group %' PCT5.0] + BY qns3a. diff --git a/doc/pspp-figures/ctables12.sps b/doc/pspp-figures/ctables12.sps new file mode 100644 index 0000000000..0ec07bb344 --- /dev/null +++ b/doc/pspp-figures/ctables12.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=(AgeGroup + qns1)[COLPCT] BY qns3a. diff --git a/doc/pspp-figures/ctables13.sps b/doc/pspp-figures/ctables13.sps new file mode 100644 index 0000000000..723dbeda31 --- /dev/null +++ b/doc/pspp-figures/ctables13.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=qnd1 [MEAN, MEDIAN] BY qns3a. diff --git a/doc/pspp-figures/ctables14.sps b/doc/pspp-figures/ctables14.sps new file mode 100644 index 0000000000..168d237f17 --- /dev/null +++ b/doc/pspp-figures/ctables14.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=qnd1 [MEAN, MEDIAN] BY qns3a /SLABELS POSITION=ROW. diff --git a/doc/pspp-figures/ctables15.sps b/doc/pspp-figures/ctables15.sps new file mode 100644 index 0000000000..c8b86f7162 --- /dev/null +++ b/doc/pspp-figures/ctables15.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=AgeGroup [TABLEPCT] /SLABELS VISIBLE=NO. diff --git a/doc/pspp-figures/ctables16.sps b/doc/pspp-figures/ctables16.sps new file mode 100644 index 0000000000..5812acef97 --- /dev/null +++ b/doc/pspp-figures/ctables16.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE AgeGroup BY qns3a. diff --git a/doc/pspp-figures/ctables17.sps b/doc/pspp-figures/ctables17.sps new file mode 100644 index 0000000000..ffeabf56b9 --- /dev/null +++ b/doc/pspp-figures/ctables17.sps @@ -0,0 +1,3 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=OPPOSITE. +CTABLES /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=OPPOSITE. diff --git a/doc/pspp-figures/ctables18.sps b/doc/pspp-figures/ctables18.sps new file mode 100644 index 0000000000..847aeada07 --- /dev/null +++ b/doc/pspp-figures/ctables18.sps @@ -0,0 +1,9 @@ +DATA LIST LIST NOTABLE/x (F8.0) y z (F8.2). +BEGIN DATA. +1 . 40 +1 10 50 +1 20 60 +1 30 . +END DATA. +VARIABLE LEVEL x (NOMINAL). +LIST. diff --git a/doc/pspp-figures/ctables19.sps b/doc/pspp-figures/ctables19.sps new file mode 100644 index 0000000000..ee9187af8f --- /dev/null +++ b/doc/pspp-figures/ctables19.sps @@ -0,0 +1,9 @@ +DATA LIST LIST NOTABLE/x (F8.0) y z (F8.2). +BEGIN DATA. +1 . 40 +1 10 50 +1 20 60 +1 30 . +END DATA. +VARIABLE LEVEL x (NOMINAL). +CTABLES /TABLE (y + z) > x. diff --git a/doc/pspp-figures/ctables2.sps b/doc/pspp-figures/ctables2.sps new file mode 100644 index 0000000000..bc4dbbe80d --- /dev/null +++ b/doc/pspp-figures/ctables2.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=AgeGroup BY qns3a. diff --git a/doc/pspp-figures/ctables20.sps b/doc/pspp-figures/ctables20.sps new file mode 100644 index 0000000000..dc76dd41bf --- /dev/null +++ b/doc/pspp-figures/ctables20.sps @@ -0,0 +1,9 @@ +DATA LIST LIST NOTABLE/x (F8.0) y z (F8.2). +BEGIN DATA. +1 . 40 +1 10 50 +1 20 60 +1 30 . +END DATA. +VARIABLE LEVEL x (NOMINAL). +CTABLES /SMISSING LISTWISE /TABLE (y + z) > x. diff --git a/doc/pspp-figures/ctables21.sps b/doc/pspp-figures/ctables21.sps new file mode 100644 index 0000000000..c5396fa158 --- /dev/null +++ b/doc/pspp-figures/ctables21.sps @@ -0,0 +1,9 @@ +DATA LIST LIST NOTABLE/x (F8.0) y z (F8.2). +BEGIN DATA. +1 . 40 +1 10 50 +1 20 60 +1 30 . +END DATA. +VARIABLE LEVEL x (NOMINAL). +CTABLES /SMISSING LISTWISE /TABLE (y > x) + (z > x). diff --git a/doc/pspp-figures/ctables22.sps b/doc/pspp-figures/ctables22.sps new file mode 100644 index 0000000000..205814c3d7 --- /dev/null +++ b/doc/pspp-figures/ctables22.sps @@ -0,0 +1,5 @@ +GET FILE='nhtsa.sav'. +CTABLES + /VLABELS VARIABLES=ALL DISPLAY=NAME + /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[TABLEID, LAYERID, SUBTABLEID] + /SLABELS POSITION=ROW. diff --git a/doc/pspp-figures/ctables23.sps b/doc/pspp-figures/ctables23.sps new file mode 100644 index 0000000000..df37390d46 --- /dev/null +++ b/doc/pspp-figures/ctables23.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE AgeGroup BY qns3a [ROWPCT, COLPCT]. diff --git a/doc/pspp-figures/ctables24.sps b/doc/pspp-figures/ctables24.sps new file mode 100644 index 0000000000..7a12c08037 --- /dev/null +++ b/doc/pspp-figures/ctables24.sps @@ -0,0 +1,4 @@ +GET FILE='nhtsa.sav'. +CTABLES + /TABLE AgeGroup BY qns3a [ROWPCT, COLPCT] + /CLABELS COLLABELS=OPPOSITE. diff --git a/doc/pspp-figures/ctables25.sps b/doc/pspp-figures/ctables25.sps new file mode 100644 index 0000000000..f52da99f06 --- /dev/null +++ b/doc/pspp-figures/ctables25.sps @@ -0,0 +1,4 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE (qn105ba + qn105bb) [COLPCT]. +CTABLES /TABLE (qn105ba + qn105bb) [ROWPCT] + /CLABELS ROW=OPPOSITE. diff --git a/doc/pspp-figures/ctables26.sps b/doc/pspp-figures/ctables26.sps new file mode 100644 index 0000000000..270dfe65ca --- /dev/null +++ b/doc/pspp-figures/ctables26.sps @@ -0,0 +1,4 @@ +GET FILE='nhtsa.sav'. +CTABLES + /TABLE qnd7a [COUNT, TOTALS[COUNT, VALIDN]] + /CATEGORIES VARIABLES=qnd7a TOTAL=YES MISSING=INCLUDE. diff --git a/doc/pspp-figures/ctables27.sps b/doc/pspp-figures/ctables27.sps new file mode 100644 index 0000000000..bc613c0e37 --- /dev/null +++ b/doc/pspp-figures/ctables27.sps @@ -0,0 +1,3 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE qn1. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [1, 2, 3]. diff --git a/doc/pspp-figures/ctables28.sps b/doc/pspp-figures/ctables28.sps new file mode 100644 index 0000000000..dd8ffb4deb --- /dev/null +++ b/doc/pspp-figures/ctables28.sps @@ -0,0 +1,3 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE qn1. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 MISSING=INCLUDE. diff --git a/doc/pspp-figures/ctables29.sps b/doc/pspp-figures/ctables29.sps new file mode 100644 index 0000000000..944ab1e5db --- /dev/null +++ b/doc/pspp-figures/ctables29.sps @@ -0,0 +1,6 @@ +GET FILE='nhtsa.sav'. +CTABLES + /TABLE qn1 + /CATEGORIES VARIABLES=qn1 [OTHERNM, SUBTOTAL='Valid Total', + MISSING, SUBTOTAL='Missing Total'] + TOTAL=YES LABEL='Overall Total'. diff --git a/doc/pspp-figures/ctables3.sps b/doc/pspp-figures/ctables3.sps new file mode 100644 index 0000000000..4736cce247 --- /dev/null +++ b/doc/pspp-figures/ctables3.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE AgeGroup > qns3a BY qn86. diff --git a/doc/pspp-figures/ctables30.sps b/doc/pspp-figures/ctables30.sps new file mode 100644 index 0000000000..569e4aed50 --- /dev/null +++ b/doc/pspp-figures/ctables30.sps @@ -0,0 +1,3 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=qn20 [MEAN F8.1, COUNT, VALIDN] > region + /CATEGORIES VARIABLES=region TOTAL=YES LABEL='All regions'. diff --git a/doc/pspp-figures/ctables31.sps b/doc/pspp-figures/ctables31.sps new file mode 100644 index 0000000000..bde6fa52a8 --- /dev/null +++ b/doc/pspp-figures/ctables31.sps @@ -0,0 +1,3 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE=qns1. +CTABLES /TABLE=qns1 /CATEGORIES VARIABLES=qns1 EMPTY=EXCLUDE. diff --git a/doc/pspp-figures/ctables32.sps b/doc/pspp-figures/ctables32.sps new file mode 100644 index 0000000000..8884509167 --- /dev/null +++ b/doc/pspp-figures/ctables32.sps @@ -0,0 +1,15 @@ +DATA LIST LIST NOTABLE /x y (F1.0) z (F10.0). +VARIABLE LEVEL z (SCALE). +MISSING VALUES x y (9). +BEGIN DATA. +1 1 1 +1 2 10 +1 9 100 +2 1 1000 +2 2 10000 +2 9 100000 +9 1 1000000 +9 2 10000000 +9 9 100000000 +END DATA. +LIST. diff --git a/doc/pspp-figures/ctables33.sps b/doc/pspp-figures/ctables33.sps new file mode 100644 index 0000000000..ef768b864a --- /dev/null +++ b/doc/pspp-figures/ctables33.sps @@ -0,0 +1,15 @@ +DATA LIST LIST NOTABLE /x y (F1.0) z (F10.0). +VARIABLE LEVEL z (SCALE). +MISSING VALUES x y (9). +BEGIN DATA. +1 1 1 +1 2 10 +1 9 100 +2 1 1000 +2 2 10000 +2 9 100000 +9 1 1000000 +9 2 10000000 +9 9 100000000 +END DATA. +CTABLES /TABLE x > y > z [SUM]. diff --git a/doc/pspp-figures/ctables34.sps b/doc/pspp-figures/ctables34.sps new file mode 100644 index 0000000000..e8ef373624 --- /dev/null +++ b/doc/pspp-figures/ctables34.sps @@ -0,0 +1,16 @@ +DATA LIST LIST NOTABLE /x y (F1.0) z (F10.0). +VARIABLE LEVEL z (SCALE). +MISSING VALUES x y (9). +BEGIN DATA. +1 1 1 +1 2 10 +1 9 100 +2 1 1000 +2 2 10000 +2 9 100000 +9 1 1000000 +9 2 10000000 +9 9 100000000 +END DATA. +CTABLES /TABLE x > y > z [SUM] /CATEGORIES VARIABLES=y MISSING=INCLUDE. +CTABLES /TABLE x > y > z [SUM] /CATEGORIES VARIABLES=x y MISSING=INCLUDE. diff --git a/doc/pspp-figures/ctables35.sps b/doc/pspp-figures/ctables35.sps new file mode 100644 index 0000000000..7024f9d707 --- /dev/null +++ b/doc/pspp-figures/ctables35.sps @@ -0,0 +1,11 @@ +GET FILE='nhtsa.sav'. +CTABLES + /PCOMPUTE &all_drivers=EXPR([1 THRU 2] + [3 THRU 4]) + /PPROPERTIES &all_drivers LABEL='All Drivers' + /PCOMPUTE &pct_never=EXPR([5] / ([1 THRU 2] + [3 THRU 4] + [5]) * 100) + /PPROPERTIES &pct_never LABEL='% Not Drivers' FORMAT=COUNT PCT40.1 + /TABLE=qn1 BY qns3a + /CATEGORIES VARIABLES=qn1 [1 THRU 2, SUBTOTAL='Frequent Drivers', + 3 THRU 4, SUBTOTAL='Infrequent Drivers', + &all_drivers, 5, &pct_never, + MISSING, SUBTOTAL='Not Drivers or Missing']. diff --git a/doc/pspp-figures/ctables36.sps b/doc/pspp-figures/ctables36.sps new file mode 100644 index 0000000000..6ee7387aaa --- /dev/null +++ b/doc/pspp-figures/ctables36.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /HIDESMALLCOUNTS COUNT=10 /TABLE qn37. diff --git a/doc/pspp-figures/ctables4.sps b/doc/pspp-figures/ctables4.sps new file mode 100644 index 0000000000..4ddee23ef6 --- /dev/null +++ b/doc/pspp-figures/ctables4.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE AgeGroup + qn1 BY qns3a. diff --git a/doc/pspp-figures/ctables5.sps b/doc/pspp-figures/ctables5.sps new file mode 100644 index 0000000000..ba12f4b7a2 --- /dev/null +++ b/doc/pspp-figures/ctables5.sps @@ -0,0 +1,3 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE qn26 + qn27 > qns3a. +CTABLES /TABLE (qn26 + qn27) > qns3a. diff --git a/doc/pspp-figures/ctables6.sps b/doc/pspp-figures/ctables6.sps new file mode 100644 index 0000000000..9cbaf89cc5 --- /dev/null +++ b/doc/pspp-figures/ctables6.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE qnd1. diff --git a/doc/pspp-figures/ctables7.sps b/doc/pspp-figures/ctables7.sps new file mode 100644 index 0000000000..678570a26b --- /dev/null +++ b/doc/pspp-figures/ctables7.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE qnd1 > qns3a BY lang. diff --git a/doc/pspp-figures/ctables8.sps b/doc/pspp-figures/ctables8.sps new file mode 100644 index 0000000000..799195ace5 --- /dev/null +++ b/doc/pspp-figures/ctables8.sps @@ -0,0 +1,2 @@ +GET FILE='nhtsa.sav'. +CTABLES /TABLE qns3a > qnd1 BY lang. diff --git a/doc/pspp-figures/ctables9.sps b/doc/pspp-figures/ctables9.sps new file mode 100644 index 0000000000..e0494444bb --- /dev/null +++ b/doc/pspp-figures/ctables9.sps @@ -0,0 +1,4 @@ +GET FILE='nhtsa.sav'. +CTABLES + /TABLE qn20 BY qns3a + /TABLE qn20 [C] BY qns3a. diff --git a/doc/statistics.texi b/doc/statistics.texi index 01976e27c9..e23f894080 100644 --- a/doc/statistics.texi +++ b/doc/statistics.texi @@ -20,6 +20,7 @@ far. * GRAPH:: Plot data. * CORRELATIONS:: Correlation tables. * CROSSTABS:: Crosstabulation tables. +* CTABLES:: Custom tables. * FACTOR:: Factor analysis and Principal Components analysis. * GLM:: Univariate Linear Models. * LOGISTIC REGRESSION:: Bivariate Logistic Regression. @@ -897,6 +898,1334 @@ person's occupation. @caption {The results of a test of independence between @exvar{sex} and @exvar{occupation}} @end float +@node CTABLES +@section CTABLES + +@vindex CTABLES +@cindex custom tables +@cindex tables, custom + +@code{CTABLES} has the following overall syntax. At least one +@code{TABLE} subcommand is required: + +@display +@t{CTABLES} + @dots{}@i{global subcommands}@dots{} + [@t{/TABLE} @i{axis} [@t{BY} @i{axis} [@t{BY} @i{axis}]] + @dots{}@i{per-table subcommands}@dots{}]@dots{} +@end display + +@noindent +where each @i{axis} may be empty or take one of the following forms: + +@display +@i{variable} +@i{variable} @t{[}@{@t{C} @math{|} @t{S}@}@t{]} +@i{axis} + @i{axis} +@i{axis} > @i{axis} +(@i{axis}) +@i{axis} @t{[}@i{summary} [@i{string}] [@i{format}]@t{]} +@end display + +The following subcommands precede the first @code{TABLE} subcommand +and apply to all of the output tables. All of these subcommands are +optional: + +@display +@t{/FORMAT} + [@t{MINCOLWIDTH=}@{@t{DEFAULT} @math{|} @i{width}@}] + [@t{MAXCOLWIDTH=}@{@t{DEFAULT} @math{|} @i{width}@}] + [@t{UNITS=}@{@t{POINTS} @math{|} @t{INCHES} @math{|} @t{CM}@}] + [@t{EMPTY=}@{@t{ZERO} @math{|} @t{BLANK} @math{|} @i{string}@}] + [@t{MISSING=}@i{string}] +@t{/VLABELS} + @t{VARIABLES=}@i{variables} + @t{DISPLAY}=@{@t{DEFAULT} @math{|} @t{NAME} @math{|} @t{LABEL} @math{|} @t{BOTH} @math{|} @t{NONE}@} +@ignore @c not yet implemented +@t{/MRSETS COUNTDUPLICATES=}@{@t{YES} @math{|} @t{NO}@} +@end ignore +@t{/SMISSING} @{@t{VARIABLE} @math{|} @t{LISTWISE}@} +@t{/PCOMPUTE} @t{&}@i{postcompute}@t{=EXPR(}@i{expression}@t{)} +@t{/PPROPERTIES} @t{&}@i{postcompute}@dots{} + [@t{LABEL=}@i{string}] + [@t{FORMAT=}[@i{summary} @i{format}]@dots{}] + [@t{HIDESOURCECATS=}@{@t{NO} @math{|} @t{YES}@} +@t{/WEIGHT VARIABLE=}@i{variable} +@t{/HIDESMALLCOUNTS COUNT=@i{count}} +@end display + +The following subcommands follow @code{TABLE} and apply only to the +previous @code{TABLE}. All of these subcommands are optional: + +@display +@t{/SLABELS} + [@t{POSITION=}@{@t{COLUMN} @math{|} @t{ROW} @math{|} @t{LAYER}@}] + [@t{VISIBLE=}@{@t{YES} @math{|} @t{NO}@}] +@t{/CLABELS} @{@t{AUTO} @math{|} @{@t{ROWLABELS}@math{|}@t{COLLABELS}@}@t{=}@{@t{OPPOSITE}@math{|}@t{LAYER}@}@} +@t{/CATEGORIES} @t{VARIABLES=}@i{variables} + @{@t{[}@i{value}@t{,} @i{value}@dots{}@t{]} + @math{|} [@t{ORDER=}@{@t{A} @math{|} @t{D}@}] + [@t{KEY=}@{@t{VALUE} @math{|} @t{LABEL} @math{|} @i{summary}@t{(}@i{variable}@t{)}@}] + [@t{MISSING=}@{@t{EXCLUDE} @math{|} @t{INCLUDE}@}]@} + [@t{TOTAL=}@{@t{NO} @math{|} @t{YES}@} [@t{LABEL=}@i{string}] [@t{POSITION=}@{@t{AFTER} @math{|} @t{BEFORE}@}]] + [@t{EMPTY=}@{@t{INCLUDE} @math{|} @t{EXCLUDE}@}] +@t{/TITLES} + [@t{TITLE=}@i{string}@dots{}] + [@t{CAPTION=}@i{string}@dots{}] + [@t{CORNER=}@i{string}@dots{}] +@ignore @c not yet implemented +@t{/CRITERIA CILEVEL=}@i{percentage} +@t{/SIGTEST TYPE=CHISQUARE} + [@t{ALPHA=}@i{siglevel}] + [@t{INCLUDEMRSETS=}@{@t{YES} @math{|} @t{NO}@}] + [@t{CATEGORIES=}@{@t{ALLVISIBLE} @math{|} @t{SUBTOTALS}@}] +@t{/COMPARETEST TYPE=}@{@t{PROP} @math{|} @t{MEAN}@} + [@t{ALPHA=}@i{value}[@t{,} @i{value}]] + [@t{ADJUST=}@{@t{BONFERRONI} @math{|} @t{BH} @math{|} @t{NONE}@}] + [@t{INCLUDEMRSETS=}@{@t{YES} @math{|} @t{NO}@}] + [@t{MEANSVARIANCE=}@{@t{ALLCATS} @math{|} @t{TESTEDCATS}@}] + [@t{CATEGORIES=}@{@t{ALLVISIBLE} @math{|} @t{SUBTOTALS}@}] + [@t{MERGE=}@{@t{NO} @math{|} @t{YES}@}] + [@t{STYLE=}@{@t{APA} @math{|} @t{SIMPLE}@}] + [@t{SHOWSIG=}@{@t{NO} @math{|} @t{YES}@}] +@end ignore +@end display + +The @code{CTABLES} (aka ``custom tables'') command produces +multi-dimensional tables from categorical and scale data. It offers +many options for data summarization and formatting. + +This section's examples use data from the 2008 (USA) National Survey +of Drinking and Driving Attitudes and Behaviors, a public domain data +set from the (USA) National Highway Traffic Administration and +available at @url{https://data.transportation.gov}. @pspp{} includes +this data set, with a slightly modified dictionary, as +@file{examples/nhtsa.sav}. + +@node CTABLES Basics +@subsection Basics + +The only required subcommand is @code{TABLE}, which specifies the +variables to include along each axis: +@display +@t{/TABLE} @i{rows} [@t{BY} @i{columns} [@t{BY} @i{layers}]] +@end display +@noindent +In @code{TABLE}, each of @var{rows}, @var{columns}, and @var{layers} +is either empty or an axis expression that specifies one or more +variables. At least one must specify an axis expression. + +@node CTABLES Categorical Variable Basics +@subsubsection Categorical Variables + +An axis expression that names a categorical variable divides the data +into cells according to the values of that variable. When all the +variables named on @code{TABLE} are categorical, by default each cell +displays the number of cases that it contains, so specifying a single +variable yields a frequency table, much like the output of the +@code{FREQUENCIES} command (@pxref{FREQUENCIES}): + +@example +CTABLES /TABLE=AgeGroup. +@end example +@psppoutput {ctables1} + +@noindent +Specifying a row and a column categorical variable yields a +crosstabulation, much like the output of the @code{CROSSTABS} command +(@pxref{CROSSTABS}): + +@example +CTABLES /TABLE=AgeGroup BY qns3a. +@end example +@psppoutput {ctables2} + +@noindent +The @samp{>} ``nesting'' operator nests multiple variables on a single +axis, e.g.: + +@example +CTABLES /TABLE qn105ba BY AgeGroup > qns3a. +@end example +@psppoutput {ctables3} + +@noindent +The @samp{+} ``stacking'' operator allows a single output table to +include multiple data analyses. With @samp{+}, @code{CTABLES} divides +the output table into multiple @dfn{sections}, each of which includes +an analysis of the full data set. For example, the following command +separately tabulates age group and driving frequency by gender: + +@example +CTABLES /TABLE AgeGroup + qn1 BY qns3a. +@end example +@psppoutput {ctables4} + +@noindent +When @samp{+} and @samp{>} are used together, @samp{>} binds more +tightly. Use parentheses to override operator precedence. Thus: + +@example +CTABLES /TABLE qn26 + qn27 > qns3a. +CTABLES /TABLE (qn26 + qn27) > qns3a. +@end example +@psppoutput {ctables5} + +@node CTABLES Scalar Variable Basics +@subsubsection Scalar Variables + +For a categorical variable, @code{CTABLES} divides the table into a +cell per category. For a scalar variable, @code{CTABLES} instead +calculates a summary measure, by default the mean, of the values that +fall into a cell. For example, if the only variable specified is a +scalar variable, then the output is a single cell that holds the mean +of all of the data: + +@example +CTABLES /TABLE qnd1. +@end example +@psppoutput {ctables6} + +A scalar variable may nest with categorical variables. The following +example shows the mean age of survey respondents across gender and +language groups: + +@example +CTABLES /TABLE qns3a > qnd1 BY region. +@end example +@psppoutput {ctables7} + +The order of nesting of scalar and categorical variables affects table +labeling, but it does not affect the data displayed in the table. The +following example shows how the output changes when the nesting order +of the scalar and categorical variable are interchanged: + +@example +CTABLES /TABLE qnd1 > qns3a BY region. +@end example +@psppoutput {ctables8} + +Only a single scalar variable may appear in each section; that is, a +scalar variable may not nest inside a scalar variable directly or +indirectly. Scalar variables may only appear on one axis within +@code{TABLE}. + +@node CTABLES Overriding Measurement Level +@subsubsection Overriding Measurement Level + +By default, @code{CTABLES} uses a variable's measurement level to +decide whether to treat it as categorical or scalar. Variables +assigned the nominal or ordinal measurement level are treated as +categorical, and scalar variables are treated as scalar. + +When @pspp{} reads data from a file in an external format, such as a +text file, variables' measurement levels are often unknown. If +@code{CTABLES} runs when a variable has an unknown measurement level, +it makes an initial pass through the data to guess measurement levels +using the rules described in an earlier section (@pxref{Measurement +Level}). Use the @code{VARIABLE LEVEL} command to set or change a +variable's measurement level (@pxref{VARIABLE LEVEL}). + +To treat a variable as categorical or scalar only for one use on +@code{CTABLES}, add @samp{[C]} or @samp{[S]}, respectively, after the +variable name. The following example shows the output when variable +@code{qn20} is analyzed as scalar (the default for its measurement +level) and as categorical: + +@example +CTABLES + /TABLE qn20 BY qns3a + /TABLE qn20 [C] BY qns3a. +@end example +@psppoutput {ctables9} + +@ignore +@node CTABLES Multiple Response Sets +@subsubheading Multiple Response Sets + +The @code{CTABLES} command does not yet support multiple response +sets. +@end ignore + +@node CTABLES Data Summarization +@subsection Data Summarization + +The @code{CTABLES} command allows the user to control how the data are +summarized with @dfn{summary specifications}, syntax that lists one or +more summary function names, optionally separated by commas, and which +are enclosed in square brackets following a variable name on the +@code{TABLE} subcommand. When all the variables are categorical, +summary specifications can be given for the innermost nested variables +on any one axis. When a scalar variable is present, only the scalar +variable may have summary specifications. + +The following example includes a summary specification for column and +row percentages for categorical variables, and mean and median for a +scalar variable: + +@example +CTABLES + /TABLE=qnd1 [MEAN, MEDIAN] BY qns3a + /TABLE=AgeGroup [COLPCT, ROWPCT] BY qns3a. +@end example +@psppoutput {ctables10} + +A summary specification may override the default label and format by +appending a string or format specification or both (in that order) to +the summary function name. For example: + +@example +CTABLES /TABLE=AgeGroup [COLPCT 'Gender %' PCT5.0, + ROWPCT 'Age Group %' PCT5.0] + BY qns3a. +@end example +@psppoutput {ctables11} + +In addition to the standard formats, @code{CTABLES} allows the user to +specify the following special formats: + +@multitable {@code{NEGPAREN@i{w}.@i{d}}} {Encloses all numbers in parentheses.} {@t{(42.96%)}} {@t{(-42.96%)}} +@item @code{NEGPAREN@i{w}.@i{d}} +@tab Encloses negative numbers in parentheses. +@tab @t{@w{ }42.96} +@tab @t{@w{ }(42.96)} + +@item @code{NEQUAL@i{w}.@i{d}} +@tab Adds a @code{N=} prefix. +@tab @t{@w{ }N=42.96} +@tab @t{@w{ }N=-42.96} + +@item @code{@code{PAREN@i{w}.@i{d}}} +@tab Encloses all numbers in parentheses. +@tab @t{@w{ }(42.96)} +@tab @t{@w{ }(-42.96)} + +@item @code{PCTPAREN@i{w}.@i{d}} +@tab Encloses all numbers in parentheses with a @samp{%} suffix. +@tab @t{@w{ }(42.96%)} +@tab @t{(-42.96%)} +@end multitable + +Parentheses provide a shorthand to apply summary specifications to +multiple variables. For example, both of these commands: + +@example +CTABLES /TABLE=AgeGroup[COLPCT] + qns1[COLPCT] BY qns3a. +CTABLES /TABLE=(AgeGroup + qns1)[COLPCT] BY qns3a. +@end example + +@noindent +produce the same output shown below: + +@psppoutput {ctables12} + +The following sections list the available summary functions. After +each function's name is given its default label and format. If no +format is listed, then the default format is the print format for the +variable being summarized. + +@node CTABLES Summary Functions for Individual Cells +@subsubsection Summary Functions for Individual Cells + +This section lists the summary functions that consider only an +individual cell in @code{CTABLES}. Only one such summary function, +@code{COUNT}, may be applied to both categorical and scale variables: + +@table @asis +@item @code{COUNT} (``Count'', F40.0) +The sum of weights in a cell. + +If @code{CATEGORIES} for one or more of the variables in a table +include missing values (@pxref{CTABLES Per-Variable Category +Options}), then some or all of the categories for a cell might be +missing values. @code{COUNT} counts data included in a cell +regardless of whether its categories are missing. +@end table + +The following summary functions apply only to scale variables or +totals and subtotals for categorical variables. Be cautious about +interpreting the summary value in the latter case, because it is not +necessarily meaningful; however, the mean of a Likert scale, etc.@: +may have a straightforward interpreation. + +@table @asis +@item @code{MAXIMUM} (``Maximum'') +The largest value. + +@item @code{MEAN} (``Mean'') +The mean. + +@item @code{MEDIAN} (``Median'') +The median value. + +@item @code{MINIMUM} (``Minimum'') +The smallest value. + +@item @code{MISSING} (``Missing'') +Sum of weights of user- and system-missing values. + +@item @code{MODE} (``Mode'') +The highest-frequency value. Ties are broken by taking the smallest mode. + +@item @code{PTILE} @i{n} (``Percentile @i{n}'') +The @var{n}th percentile, where @math{0 @leq{} @var{n} @leq{} 100}. + +@item @code{RANGE} (``Range'') +The maximum minus the minimum. + +@item @code{SEMEAN} (``Std Error of Mean'') +The standard error of the mean. + +@item @code{STDDEV} (``Std Deviation'') +The standard deviation. + +@item @code{SUM} (``Sum'') +The sum. + +@item @code{TOTALN} (``Total N'', F40.0) +The sum of weights in a cell. + +For scale data, @code{COUNT} and @code{TOTALN} are the same. + +For categorical data, @code{TOTALN} counts missing values in excluded +categories, that is, user-missing values not in an explicit category +list on @code{CATEGORIES} (@pxref{CTABLES Per-Variable Category +Options}), or user-missing values excluded because +@code{MISSING=EXCLUDE} is in effect on @code{CATEGORIES}, or +system-missing values. @code{COUNT} does not count these. + +@xref{CTABLES Missing Values for Summary Variables}, for details of +how @code{CTABLES} summarizes missing values. + +@item @code{VALIDN} (``Valid N'', F40.0) +The sum of valid count weights in included categories. + +For categorical variables, @code{VALIDN} does not count missing values +regardless of whether they are in included categories via +@code{CATEGORIES}. @code{VALIDN} does not count valid values that are +in excluded categories. @xref{CTABLES Missing Values for Summary +Variables}, for details. + +@item @code{VARIANCE} (``Variance'') +The variance. +@end table + +@node CTABLES Summary Functions for Groups of Cells +@subsubsection Summary Functions for Groups of Cells + +These summary functions summarize over multiple cells within an area +of the output chosen by the user and specified as part of the function +name. The following basic @var{area}s are supported, in decreasing +order of size: + +@table @code +@item TABLE +A @dfn{section}. Stacked variables divide sections of the output from +each other. sections may span multiple layers. + +@item LAYER +A section within a single layer. + +@item SUBTABLE +A @dfn{subtable}, whose contents are the cells that pair an innermost +row variable and an innermost column variable within a single layer. +@end table + +The following shows how the output for the table expression @code{qn61 +> qn57 BY qnd7a > qn86 + qn64b BY qns3a}@footnote{This is not +necessarily a meaningful table, so for clarity variable labels are +omitted.} is divided up into @code{TABLE}, @code{LAYER}, and +@code{SUBTABLE} areas. Each unique value for Table ID is one section, +and similarly for Layer ID and Subtable ID. Thus, this output has two +@code{TABLE} areas (one for @code{qnd7a} and one for @code{qn64b}), +four @code{LAYER} areas (for those two variables, per layer), and 12 +@code{SUBTABLE} areas. +@psppoutput {ctables22} + +@code{CTABLES} also supports the following @var{area}s that further +divide a subtable or a layer within a section: + +@table @code +@item LAYERROW +@itemx LAYERCOL +A row or column, respectively, in one layer of a section. + +@item ROW +@itemx COL +A row or column, respectively, in a subtable. +@end table + +The following summary functions for groups of cells are available for +each @var{area} described above, for both categorical and scale +variables: + +@table @asis +@item @code{@i{area}PCT} or @code{@i{area}PCT.COUNT} (``@i{Area} %'', PCT40.1) +A percentage of total counts within @var{area}. + +@item @code{@i{area}PCT.VALIDN} (``@i{Area} Valid N %'', PCT40.1) +A percentage of total counts for valid values within @var{area}. + +@item @code{@i{area}PCT.TOTALN} (``@i{Area} Total N %'', PCT40.1) +A percentage of total counts for all values within @var{area}. +@end table + +Scale variables and totals and subtotals for categorical variables may +use the following additional group cell summary function: + +@table @asis +@item @code{@i{area}PCT.SUM} (``@i{Area} Sum %'', PCT40.1) +Percentage of the sum of the values within @var{area}. +@end table + +@node CTABLES Summary Functions for Adjusted Weights +@subsubsection Summary Functions for Adjusted Weights + +If the @code{WEIGHT} subcommand specified an effective weight variable +(@pxref{CTABLES Effective Weight}), then the following summary functions +use its value instead of the dictionary weight variable. Otherwise, +they are equivalent to the summary function without the +@samp{E}-prefix: + +@itemize @bullet +@item +@code{ECOUNT} (``Adjusted Count'', F40.0) + +@item +@code{ETOTALN} (``Adjusted Total N'', F40.0) + +@item +@code{EVALIDN} (``Adjusted Valid N'', F40.0) +@end itemize + +@node CTABLES Unweighted Summary Functions +@subsubsection Unweighted Summary Functions + +The following summary functions with a @samp{U}-prefix are equivalent +to the same ones without the prefix, except that they use unweighted +counts: + +@itemize @bullet +@item +@code{UCOUNT} (``Unweighted Count'', F40.0) + +@item +@code{U@i{area}PCT} or @code{U@i{area}PCT.COUNT} (``Unweighted @i{Area} %'', PCT40.1) + +@item +@code{U@i{area}PCT.VALIDN} (``Unweighted @i{Area} Valid N %'', PCT40.1) + +@item +@code{U@i{area}PCT.TOTALN} (``Unweighted @i{Area} Total N %'', PCT40.1) + +@item +@code{UMEAN} (``Unweighted Mean'') + +@item +@code{UMEDIAN} (``Unweighted Median'') + +@item +@code{UMISSING} (``Unweighted Missing'') + +@item +@code{UMODE} (``Unweighted Mode'') + +@item +@code{U@i{area}PCT.SUM} (``Unweighted @i{Area} Sum %'', PCT40.1) + +@item +@code{UPTILE} @i{n} (``Unweighted Percentile @i{n}'') + +@item +@code{USEMEAN} (``Unweighted Std Error of Mean'') + +@item +@code{USTDDEV} (``Unweighted Std Deviation'') + +@item +@code{USUM} (``Unweighted Sum'') + +@item +@code{UTOTALN} (``Unweighted Total N'', F40.0) + +@item +@code{UVALIDN} (``Unweighted Valid N'', F40.0) + +@item +@code{UVARIANCE} (``Unweighted Variance'', F40.0) +@end itemize + +@node CTABLES Statistics Positions and Labels +@subsection Statistics Positions and Labels + +@display +@t{/SLABELS} + [@t{POSITION=}@{@t{COLUMN} @math{|} @t{ROW} @math{|} @t{LAYER}@}] + [@t{VISIBLE=}@{@t{YES} @math{|} @t{NO}@}] +@end display + +The @code{SLABELS} subcommand controls the position and visibility of +summary statistics for the @code{TABLE} subcommand that it follows. + +@code{POSITION} sets the axis on which summary statistics appear. +With @t{POSITION=COLUMN}, which is the default, each summary statistic +appears in a column. For example: + +@example +CTABLES /TABLE=qnd1 [MEAN, MEDIAN] BY qns3a. +@end example +@psppoutput {ctables13} + +@noindent +With @t{POSITION=ROW}, each summary statistic appears in a row, as +shown below: + +@example +CTABLES /TABLE=qnd1 [MEAN, MEDIAN] BY qns3a /SLABELS POSITION=ROW. +@end example +@psppoutput {ctables14} + +@noindent +@t{POSITION=LAYER} is also available to place each summary statistic in +a separate layer. + +Labels for summary statistics are shown by default. Use +@t{VISIBLE=NO} to suppress them. Because unlabeled data can cause +confusion, it should only be considered if the meaning of the data is +evident, as in a simple case like this: + +@example +CTABLES /TABLE=AgeGroup [TABLEPCT] /SLABELS VISIBLE=NO. +@end example +@psppoutput {ctables15} + +@node CTABLES Category Label Positions +@subsection Category Label Positions + +@display +@t{/CLABELS} @{@t{AUTO} @math{|} @{@t{ROWLABELS}@math{|}@t{COLLABELS}@}@t{=}@{@t{OPPOSITE}@math{|}@t{LAYER}@}@} +@end display + +The @code{CLABELS} subcommand controls the position of category labels +for the @code{TABLE} subcommand that it follows. By default, or if +@t{AUTO} is specified, category labels for a given variable nest +inside the variable's label on the same axis. For example, the +command below results in age categories nesting within the age group +variable on the rows axis and gender categories within the gender +variable on the columns axis: + +@example +CTABLES /TABLE AgeGroup BY qns3a. +@end example +@psppoutput {ctables16} + +@t{ROWLABELS=OPPOSITE} or @t{COLLABELS=OPPOSITE} move row or column +variable category labels, respectively, to the opposite axis. The +setting affects only the innermost variable or variables, which must +be categorical, on the given axis. For example: + +@example +CTABLES /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=OPPOSITE. +CTABLES /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=OPPOSITE. +@end example +@psppoutput {ctables17} + +@t{ROWLABELS=LAYER} or @t{COLLABELS=LAYER} move the innermost row or +column variable category labels, respectively, to the layer axis. + +Only one axis's labels may be moved, whether to the opposite axis or +to the layer axis. + +@subsubheading Effect on Summary Statistics + +@code{CLABELS} primarily affects the appearance of tables, not the +data displayed in them. However, @code{CTABLES} can affect the values +displayed for statistics that summarize areas of a table, since it can +change the definitions of these areas. + +For example, consider the following syntax and output: + +@example +CTABLES /TABLE AgeGroup BY qns3a [ROWPCT, COLPCT]. +@end example +@psppoutput {ctables23} + +@noindent +Using @code{COLLABELS=OPPOSITE} changes the definitions of rows and +columns, so that column percentages display what were previously row +percentages and the new row percentages become meaningless (because +there is only one cell per row): + +@example +CTABLES + /TABLE AgeGroup BY qns3a [ROWPCT, COLPCT] + /CLABELS COLLABELS=OPPOSITE. +@end example +@psppoutput {ctables24} + +@subsubheading Moving Categories for Stacked Variables + +If @code{CLABELS} moves category labels from an axis with stacked +variables, the variables that are moved must have the same category +specifications (@pxref{CTABLES Per-Variable Category Options}) and the +same value labels. + +The following shows both moving stacked category variables and +adapting to the changing definitions of rows and columns: + +@example +CTABLES /TABLE (qn105ba + qn105bb) [COLPCT]. +CTABLES /TABLE (qn105ba + qn105bb) [ROWPCT] + /CLABELS ROW=OPPOSITE. +@end example +@psppoutput {ctables25} + +@node CTABLES Per-Variable Category Options +@subsection Per-Variable Category Options + +@display +@t{/CATEGORIES} @t{VARIABLES=}@i{variables} + @{@t{[}@i{value}@t{,} @i{value}@dots{}@t{]} + @math{|} [@t{ORDER=}@{@t{A} @math{|} @t{D}@}] + [@t{KEY=}@{@t{VALUE} @math{|} @t{LABEL} @math{|} @i{summary}@t{(}@i{variable}@t{)}@}] + [@t{MISSING=}@{@t{EXCLUDE} @math{|} @t{INCLUDE}@}]@} + [@t{TOTAL=}@{@t{NO} @math{|} @t{YES}@} [@t{LABEL=}@i{string}] [@t{POSITION=}@{@t{AFTER} @math{|} @t{BEFORE}@}]] + [@t{EMPTY=}@{@t{INCLUDE} @math{|} @t{EXCLUDE}@}] +@end display + +The @code{CATEGORIES} subcommand specifies, for one or more +categorical variables, the categories to include and exclude, the sort +order for included categories, and treatment of missing values. It +also controls the totals and subtotals to display. It may be +specified any number of times, each time for a different set of +variables. @code{CATEGORIES} applies to the table produced by the +@code{TABLE} subcommand that it follows. + +@code{CATEGORIES} does not apply to scalar variables. + +@t{VARIABLES} is required and must list the variables for the subcommand +to affect. + +The syntax may specify the categories to include and their sort order +either explicitly or implicitly. The following sections give the +details of each form of syntax, followed by information on totals and +subtotals and the @code{EMPTY} setting. + +@node CTABLES Explicit Categories +@subsubsection Explicit Categories + +@anchor{CTABLES Explicit Category List} + +To use @code{CTABLES} to explicitly specify categories to include, +list the categories within square brackets in the desired sort order. +Use spaces or commas to separate values. Categories not covered by +the list are excluded from analysis. + +Each element of the list takes one of the following forms: + +@table @t +@item @i{number} +@itemx '@i{string}' +A numeric or string category value, for variables that have the +corresponding type. + +@item '@i{date}' +@itemx '@i{time}' +A date or time category value, for variables that have a date or time +print format. + +@item @i{min} THRU @i{max} +@itemx LO THRU @i{max} +@itemx @i{min} THRU HI +A range of category values, where @var{min} and @var{max} each takes +one of the forms above, in increasing order. + +@item MISSING +All user-missing values. (To match individual user-missing values, +specify their category values.) + +@item OTHERNM +Any non-missing value not covered by any other element of the list +(regardless of where @t{OTHERNM} is placed in the list). + +@item &@i{postcompute} +A computed category name (@pxref{CTABLES Computed Categories}). + +@item SUBTOTAL +@itemx HSUBTOTAL +A subtotal (@pxref{CTABLES Totals and Subtotals}). +@end table + +If multiple elements of the list cover a given category, the last one +in the list takes precedence. + +The following example syntax and output show how an explicit category +can limit the displayed categories: + +@example +CTABLES /TABLE qn1. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [1, 2, 3]. +@end example +@psppoutput {ctables27} + +@node CTABLES Implicit Categories +@subsubsection Implicit Categories + +In the absence of an explicit list of categories, @code{CATEGORIES} +allows @code{KEY}, @code{ORDER}, and @code{MISSING} to specify how to +select and sort categories. + +The @code{KEY} setting specifies the sort key. By default, or with +@code{KEY=VALUE}, categories are sorted by default. Categories may +also be sorted by value label, with @code{KEY=LABEL}, or by the value +of a summary function, e.g.@: @code{KEY=COUNT}. +@ignore @c Not yet implemented +For summary functions, a variable name may be specified in +parentheses, e.g.@: @code{KEY=MAXIUM(qnd1)}, and this is required for +functions that apply only to scalar variables. The @code{PTILE} +function also requires a percentage argument, e.g.@: +@code{KEY=PTILE(qnd1, 90)}. Only summary functions used in the table +may be used, except that @code{COUNT} is always allowed. +@end ignore + +By default, or with @code{ORDER=A}, categories are sorted in ascending +order. Specify @code{ORDER=D} to sort in descending order. + +User-missing values are excluded by default, or with +@code{MISSING=EXCLUDE}. Specify @code{MISSING=INCLUDE} to include +user-missing values. The system-missing value is always excluded. + +The following example syntax and output show how +@code{MISSING=INCLUDE} causes missing values to be included in a +category list. + +@example +CTABLES /TABLE qn1. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 MISSING=INCLUDE. +@end example +@psppoutput {ctables28} + +@node CTABLES Totals and Subtotals +@subsubsection Totals and Subtotals + +@code{CATEGORIES} also controls display of totals and subtotals. By +default, or with @code{TOTAL=NO}, totals are not displayed. Use +@code{TOTAL=YES} to display a total. By default, the total is labeled +``Total''; use @code{LABEL="@i{label}"} to override it. + +Subtotals are also not displayed by default. To add one or more +subtotals, use an explicit category list and insert @code{SUBTOTAL} or +@code{HSUBTOTAL} in the position or positions where the subtotal +should appear. The subtotal becomes an extra row or column or layer. +@code{HSUBTOTAL} additionally hides the categories that make up the +subtotal. Either way, the default label is ``Subtotal'', use +@code{SUBTOTAL="@i{label}"} or @code{HSUBTOTAL="@i{label}"} to specify +a custom label. + +The following example syntax and output show how to use +@code{TOTAL=YES} and @code{SUBTOTAL}: + +@example +CTABLES + /TABLE qn1 + /CATEGORIES VARIABLES=qn1 [OTHERNM, SUBTOTAL='Valid Total', + MISSING, SUBTOTAL='Missing Total'] + TOTAL=YES LABEL='Overall Total'. +@end example +@psppoutput {ctables29} + +By default, or with @code{POSITION=AFTER}, totals are displayed in the +output after the last category and subtotals apply to categories that +precede them. With @code{POSITION=BEFORE}, totals come before the +first category and subtotals apply to categories that follow them. + +Only categorical variables may have totals and subtotals. Scalar +variables may be ``totaled'' indirectly by enabling totals and +subtotals on a categorical variable within which the scalar variable +is summarized. For example, the following syntax produces a mean, +count, and valid count across all data by adding a total on the +categorical @code{region} variable, as shown: + +@example +CTABLES /TABLE=region > qn20 [MEAN, VALIDN] + /CATEGORIES VARIABLES=region TOTAL=YES LABEL='All regions'. +@end example +@psppoutput {ctables30} + +By default, @pspp{} uses the same summary functions for totals and +subtotals as other categories. To summarize totals and subtotals +differently, specify the summary functions for totals and subtotals +after the ordinary summary functions inside a nested set of @code{[]} +following @code{TOTALS}. For example, the following syntax displays +@code{COUNT} for individual categories and totals and @code{VALIDN} +for totals, as shown: + +@example +CTABLES + /TABLE qnd7a [COUNT, TOTALS[COUNT, VALIDN]] + /CATEGORIES VARIABLES=qnd7a TOTAL=YES MISSING=INCLUDE. +@end example +@psppoutput {ctables26} + +@node CTABLES Categories Without Values +@subsubsection Categories Without Values + +Some categories might not be included in the data set being analyzed. +For example, our example data set has no cases in the ``15 or +younger'' age group. By default, or with @code{EMPTY=INCLUDE}, +@pspp{} includes these empty categories in output tables. To exclude +them, specify @code{EMPTY=EXCLUDE}. + +For implicit categories, empty categories potentially include all the +values with value labels for a given variable; for explicit +categories, they include all the values listed individually and all +values with value labels that are covered by ranges or @code{MISSING} +or @code{OTHERNM}. + +The following example syntax and output show the effect of +@code{EMPTY=EXCLUDE} for the @code{qns1} variable, in which 0 is labeled +``None'' but no cases exist with that value: + +@example +CTABLES /TABLE=qns1. +CTABLES /TABLE=qns1 /CATEGORIES VARIABLES=qns1 EMPTY=EXCLUDE. +@end example +@psppoutput {ctables31} + +@node CTABLES Titles +@subsection Titles + +@display +@t{/TITLES} + [@t{TITLE=}@i{string}@dots{}] + [@t{CAPTION=}@i{string}@dots{}] + [@t{CORNER=}@i{string}@dots{}] +@end display + +The @code{TITLES} subcommand sets the title, caption, and corner text +for the table output for the previous @code{TABLE} subcommand. Any +number of strings may be specified for each kind of text, with each +string appearing on a separate line in the output. The title appears +above the table, the caption below the table, and the corner text +appears in the table's upper left corner. By default, the title is +``Custom Tables'' and the caption and corner text are empty. With +some table output styles, the corner text is not displayed. + +The strings provided in this subcommand may contain the following +macro-like keywords that @pspp{} substitutes at the time that it runs +the command: + +@table @code @c ( +@item )DATE +The current date, e.g.@: MM/DD/YY. The format is locale-dependent. + +@c ( +@item )TIME +The current time, e.g.@: HH:MM:SS. The format is locale-dependent. + +@c ( +@item )TABLE +The expression specified on the @code{TABLE} command. Summary +and measurement level specifications are omitted, and variable labels are used in place of variable names. +@end table + +@node CTABLES Table Formatting +@subsection Table Formatting + +@display +@t{/FORMAT} + [@t{MINCOLWIDTH=}@{@t{DEFAULT} @math{|} @i{width}@}] + [@t{MAXCOLWIDTH=}@{@t{DEFAULT} @math{|} @i{width}@}] + [@t{UNITS=}@{@t{POINTS} @math{|} @t{INCHES} @math{|} @t{CM}@}] + [@t{EMPTY=}@{@t{ZERO} @math{|} @t{BLANK} @math{|} @i{string}@}] + [@t{MISSING=}@i{string}] +@end display + +The @code{FORMAT} subcommand, which must precede the first +@code{TABLE} subcommand, controls formatting for all the output +tables. @code{FORMAT} and all of its settings are optional. + +Use @code{MINCOLWIDTH} and @code{MAXCOLWIDTH} to control the minimum +or maximum width of columns in output tables. By default, with +@code{DEFAULT}, column width varies based on content. Otherwise, +specify a number for either or both of these settings. If both are +specified, @code{MAXCOLWIDTH} must be greater than or equal to +@code{MINCOLWIDTH}. The default unit, or with @code{UNITS=POINTS}, is +points (1/72 inch), or specify @code{UNITS=INCHES} to use inches or +@code{UNITS=CM} for centimeters. @pspp{} does not currently honor any +of these settings. + +By default, or with @code{EMPTY=ZERO}, zero values are displayed in +their usual format. Use @code{EMPTY=BLANK} to use an empty cell +instead, or @code{EMPTY="@i{string}"} to use the specified string. + +By default, missing values are displayed as @samp{.}, the same as in +other tables. Specify @code{MISSING="@i{string}"} to instead use a +custom string. + +@node CTABLES Display of Variable Labels +@subsection Display of Variable Labels + +@display +@t{/VLABELS} + @t{VARIABLES=}@i{variables} + @t{DISPLAY}=@{@t{DEFAULT} @math{|} @t{NAME} @math{|} @t{LABEL} @math{|} @t{BOTH} @math{|} @t{NONE}@} +@end display + +The @code{VLABELS} subcommand, which must precede the first +@code{TABLE} subcommand, controls display of variable labels in all +the output tables. @code{VLABELS} is optional. It may appear +multiple times to adjust settings for different variables. + +@code{VARIABLES} and @code{DISPLAY} are required. The value of +@code{DISPLAY} controls how variable labels are displayed for the +variables listed on @code{VARIABLES}. The supported values are: + +@table @code +@item DEFAULT +Use the setting from @code{SET TVARS} (@pxref{SET TVARS}). + +@item NAME +Show only a variable name. + +@item LABEL +Show only a variable label. + +@item BOTH +Show variable name and label. + +@item NONE +Show nothing. +@end table + +@node CTABLES Missing Value Treatment +@subsection Missing Value Treatment + +The @code{TABLE} subcommand on @code{CTABLES} specifies two different +kinds of variables: variables that divide tables into cells (which are +always categorical) and variables being summarized (which may be +categorical or scale). @pspp{} treats missing values differently in +each kind of variable, as described in the sections below. + +@node CTABLES Missing Values for Cell-Defining Variables +@subsubsection Missing Values for Cell-Defining Variables + +For variables that divide tables into cells, per-variable category +options, as described in @ref{CTABLES Per-Variable Category Options}, +determine which data is analyzed. If any of the categories for such a +variable would exclude a case, then that case is not included. + +As an example, consider the following entirely artificial dataset, in +which @samp{x} and @samp{y} are categorical variables with missing +value 9, and @samp{z} is scale: + +@psppoutput{ctables32} + +Using @samp{x} and @samp{y} to define cells, and summarizing @samp{z}, +by default @pspp{} omits all the cases that have @samp{x} or @samp{y} (or both) +missing: + +@example +CTABLES /TABLE x > y > z [SUM]. +@end example +@psppoutput{ctables33} + +If, however, we add @code{CATEGORIES} specifications to include +missing values for @samp{y} or for @samp{x} and @samp{y}, the output +table includes them, like so: + +@example +CTABLES /TABLE x > y > z [SUM] /CATEGORIES VARIABLES=y MISSING=INCLUDE. +CTABLES /TABLE x > y > z [SUM] /CATEGORIES VARIABLES=x y MISSING=INCLUDE. +@end example +@psppoutput{ctables34} + +@node CTABLES Missing Values for Summary Variables +@subsubsection Missing Values for Summary Variables + +For summary variables, values that are valid and in included +categories are analyzed, and values that are missing or in excluded +categories are not analyzed, with the following exceptions: + +@itemize @bullet +@item +The ``@t{VALIDN}'' summary functions (@code{VALIDN}, @code{EVALIDN}, +@code{UVALIDN}, @code{@i{area}PCT.VALIDN}, and +@code{U@i{area}PCT.VALIDN}) only count valid values in included +categories (not missing values in included categories). + +@item +The ``@t{TOTALN}'' summary functions (@code{TOTALN}, @code{ETOTALN}, +@code{UTOTALN}, @code{@i{area}PCT.TOTALN}), and +@code{U@i{area}PCT.TOTALN} count all values (valid and missing) in +included categories and missing (but not valid) values in excluded +categories. +@end itemize + +@noindent +For categorical variables, system-missing values are never in included +categories. For scale variables, there is no notion of included and +excluded categories, so all values are effectively included. + +The following table provides another view of the above rules: + +@multitable {@w{ }@w{ }@w{ }@w{ }Missing values in excluded categories} {@t{VALIDN}} {other} {@t{TOTALN}} +@headitem @tab @t{VALIDN} @tab other @tab @t{TOTALN} +@item @headitemfont{Categorical variables:} +@item @w{ }@w{ }@w{ }@w{ }Valid values in included categories @tab yes @tab yes @tab yes +@item @w{ }@w{ }@w{ }@w{ }Missing values in included categories @tab --- @tab yes @tab yes +@item @w{ }@w{ }@w{ }@w{ }Missing values in excluded categories @tab --- @tab --- @tab yes +@item @w{ }@w{ }@w{ }@w{ }Valid values in excluded categories @tab --- @tab --- @tab --- +@item @headitemfont{Scale variables:} +@item @w{ }@w{ }@w{ }@w{ }Valid values @tab yes @tab yes @tab yes +@item @w{ }@w{ }@w{ }@w{ }User- or system-missing values @tab --- @tab yes @tab yes +@end multitable + +@node CTABLES Scale Missing Values +@subsubsection Scale Missing Values + +@display +@t{/SMISSING} @{@t{VARIABLE} @math{|} @t{LISTWISE}@} +@end display + +The @code{SMISSING} subcommand, which must precede the first +@code{TABLE} subcommand, controls treatment of missing values for +scalar variables in producing all the output tables. @code{SMISSING} +is optional. + +With @code{SMISSING=VARIABLE}, which is the default, missing values +are excluded on a variable-by-variable basis. With +@code{SMISSING=LISTWISE}, when stacked scalar variables are nested +together with a categorical variable, a missing value for any of the +scalar variables causes the case to be excluded for all of them. + +As an example, consider the following dataset, in which @samp{x} is a +categorical variable and @samp{y} and @samp{z} are scale: + +@psppoutput{ctables18} + +@noindent +With the default missing-value treatment, @samp{x}'s mean is 20, based +on the values 10, 20, and 30, and @samp{y}'s mean is 50, based on 40, +50, and 60: + +@example +CTABLES /TABLE (y + z) > x. +@end example +@psppoutput{ctables19} + +@noindent +By adding @code{SMISSING=LISTWISE}, only cases where @samp{y} and +@samp{z} are both non-missing are considered, so @samp{x}'s mean +becomes 15, as the average of 10 and 20, and @samp{y}'s mean becomes +55, the average of 50 and 60: + +@example +CTABLES /SMISSING LISTWISE /TABLE (y + z) > x. +@end example +@psppoutput{ctables20} + +@noindent +Even with @code{SMISSING=LISTWISE}, if @samp{y} and @samp{z} are +separately nested with @samp{x}, instead of using a single @samp{>} +operator, missing values revert to being considered on a +variable-by-variable basis: + +@example +CTABLES /SMISSING LISTWISE /TABLE (y > x) + (z > x). +@end example +@psppoutput{ctables21} + +@node CTABLES Computed Categories +@subsection Computed Categories + +@display +@t{/PCOMPUTE} @t{&}@i{postcompute}@t{=EXPR(}@i{expression}@t{)} +@t{/PPROPERTIES} @t{&}@i{postcompute}@dots{} + [@t{LABEL=}@i{string}] + [@t{FORMAT=}[@i{summary} @i{format}]@dots{}] + [@t{HIDESOURCECATS=}@{@t{NO} @math{|} @t{YES}@} +@end display + +@dfn{Computed categories}, also called @dfn{postcomputes}, are +categories created using arithmetic on categories obtained from the +data. The @code{PCOMPUTE} subcommand creates a postcompute, which may +then be used on @code{CATEGORIES} within an explicit category list +(@pxref{CTABLES Explicit Category List}). Optionally, +@code{PPROPERTIES} refines how a postcompute is displayed. The +following sections provide the details. + +@node CTABLES PCOMPUTE +@subsubsection PCOMPUTE + +@display +@t{/PCOMPUTE} @t{&}@i{postcompute}@t{=EXPR(}@i{expression}@t{)} +@end display + +The @code{PCOMPUTE} subcommand, which must precede the first +@code{TABLE} command, defines computed categories. It is optional and +may be used any number of times to define multiple postcomputes. + +Each @code{PCOMPUTE} defines one postcompute. Its syntax consists of +a name to identify the postcompute as a @pspp{} identifier prefixed by +@samp{&}, followed by @samp{=} and a postcompute expression enclosed +in @code{EXPR(@dots{})}. A postcompute expression consists of: + +@table @t +@item [@i{category}] +This form evaluates to the summary statistic for @i{category}, e.g.@: +@code{[1]} evaluates to the value of the summary statistic associated +with category 1. The @i{category} may be a number, a quoted string, +or a quoted time or date value. All of the categories for a given +postcompute must have the same form. The category must appear in all +the @code{CATEGORIES} list in which the postcompute is used. + +@item [@i{min} THRU @i{max}] +@itemx [LO THRU @i{max}] +@itemx [@i{min} THRU HI] +@itemx MISSING +@itemx OTHERNM +These forms evaluate to the summary statistics for a category +specified with the same syntax, as described in previous section +(@pxref{CTABLES Explicit Category List}). The category must appear in +all the @code{CATEGORIES} list in which the postcompute is used. + +@item SUBTOTAL +The summary statistic for the subtotal category. This form is allowed +only if the @code{CATEGORIES} lists that include this postcompute have +exactly one subtotal. + +@item SUBTOTAL[@i{index}] +The summary statistic for subtotal category @i{index}, where 1 is the +first subtotal, 2 is the second, and so on. This form may be used for +@code{CATEGORIES} lists with any number of subtotals. + +@item TOTAL +The summary statistic for the total. The @code{CATEGORIES} lsits that +include this postcompute must have a total enabled. + +@item @i{a} + @i{b} +@itemx @i{a} - @i{b} +@itemx @i{a} * @i{b} +@itemx @i{a} / @i{b} +@itemx @i{a} ** @i{b} +These forms perform arithmetic on the values of postcompute +expressions @i{a} and @i{b}. The usual operator precedence rules +apply. + +@item @i{number} +Numeric constants may be used in postcompute expressions. + +@item (@i{a}) +Parentheses override operator precedence. +@end table + +A postcompute is not associated with any particular variable. +Instead, it may be referenced within @code{CATEGORIES} for any +suitable variable (e.g.@: only a string variable is suitable for a +postcompute expression that refers to a string category, only a +variable with subtotals for an expression that refers to subtotals, +@dots{}). + +Normally a named postcompute is defined only once, but if a later +@code{PCOMPUTE} redefines a postcompute with the same name as an +earlier one, the later one take precedence. + +The following syntax and output shows how @code{PCOMPUTE} can compute +a total over subtotals, summing the ``Frequent Drivers'' and +``Infrequent Drivers'' subtotals to form an ``All Drivers'' +postcompute. It also shows how to calculate and display a percentage, +in this case the percentage of valid responses that report never +driving. It uses @code{PPROPERTIES} (@pxref{CTABLES PPROPERTIES}) to +display the latter in @code{PCT} format. + +@example +CTABLES + /PCOMPUTE &all_drivers=EXPR([1 THRU 2] + [3 THRU 4]) + /PPROPERTIES &all_drivers LABEL='All Drivers' + /PCOMPUTE &pct_never=EXPR([5] / ([1 THRU 2] + [3 THRU 4] + [5]) * 100) + /PPROPERTIES &pct_never LABEL='% Not Drivers' FORMAT=COUNT PCT40.1 + /TABLE=qn1 BY qns3a + /CATEGORIES VARIABLES=qn1 [1 THRU 2, SUBTOTAL='Frequent Drivers', + 3 THRU 4, SUBTOTAL='Infrequent Drivers', + &all_drivers, 5, &pct_never, + MISSING, SUBTOTAL='Not Drivers or Missing']. +@end example +@psppoutput{ctables35} + +@node CTABLES PPROPERTIES +@subsubsection PPROPERTIES + +@display +@t{/PPROPERTIES} @t{&}@i{postcompute}@dots{} + [@t{LABEL=}@i{string}] + [@t{FORMAT=}[@i{summary} @i{format}]@dots{}] + [@t{HIDESOURCECATS=}@{@t{NO} @math{|} @t{YES}@} +@end display + +The @code{PPROPERTIES} subcommand, which must appear before +@code{TABLE}, sets properties for one or more postcomputes defined on +prior @code{PCOMPUTE} subcommands. The subcommand syntax begins with +the list of postcomputes, each prefixed with @samp{&} as specified on +@code{PCOMPUTE}. + +All of the settings on @code{PPROPERTIES} are optional. Use +@code{LABEL} to set the label shown for the postcomputes in table +output. The default label for a postcompute is the expression used to +define it. + +A postcompute always uses same summary functions as the variable whose +categories contain it, but @code{FORMAT} allows control over the +format used to display their values. It takes a list of summary +function names and format specifiers. + +By default, or with @code{HIDESOURCECATS=NO}, categories referred to +by computed categories are displayed like other categories. Use +@code{HIDESOURCECATS=YES} to hide them. + +The previous section provides an example for @code{PPROPERTIES}. + +@node CTABLES Effective Weight +@subsection Effective Weight + +@display +@t{/WEIGHT VARIABLE=}@i{variable} +@end display + +The @code{WEIGHT} subcommand is optional and must appear before +@code{TABLE}. If it appears, it must name a numeric variable, known +as the @dfn{effective weight} or @dfn{adjustment weight}. The +effective weight variable stands in for the dictionary's weight +variable (@pxref{WEIGHT}), if any, in most calculations in +@code{CTABLES}. The only exceptions are the @code{COUNT}, +@code{TOTALN}, and @code{VALIDN} summary functions, which use the +dictionary weight instead. + +Weights obtained from the @pspp{} dictionary are rounded to the +nearest integer at the case level. Effective weights are not rounded. +Regardless of the weighting source, @pspp{} does not analyze cases +with zero, missing, or negative effective weights. + +@node CTABLES Hiding Small Counts +@subsection Hiding Small Counts + +@display +@t{/HIDESMALLCOUNTS COUNT=@i{count}} +@end display + +The @code{HIDESMALLCOUNTS} subcommand is optional. If it specified, +then @code{COUNT}, @code{ECOUNT}, and @code{UCOUNT} values in output +tables less than the value of @i{count} are shown as @code{<@i{count}} +instead of their true values. The value of @i{count} must be an +integer and must be at least 2. + +The following syntax and example shows how to use +@code{HIDESMALLCOUNTS}: + +@example +CTABLES /HIDESMALLCOUNTS COUNT=10 /TABLE qn37. +@end example +@psppoutput{ctables36} @node FACTOR @section FACTOR diff --git a/doc/tutorial.stt b/doc/tutorial.stt index 130ae9b23b..5c15a7130d 100644 --- a/doc/tutorial.stt +++ b/doc/tutorial.stt @@ -49,5 +49,5 @@ - + diff --git a/doc/utilities.texi b/doc/utilities.texi index 4cad836ad1..5062ead2eb 100644 --- a/doc/utilities.texi +++ b/doc/utilities.texi @@ -861,6 +861,7 @@ If the value has no label, then the literal value is used for display. If @subcmd{TNUMBERS} is set to @subcmd{BOTH}, then values are displayed with both their label (if any) and their literal value in parentheses. @item TVARS +@anchor{SET TVARS} The @subcmd{TVARS} option sets the way in which variables are displayed in output tables. The valid settings are @subcmd{NAMES}, @subcmd{LABELS} and @subcmd{BOTH}. If @subcmd{TVARS} is set to @subcmd{NAMES}, then all variables are displayed using their names. diff --git a/doc/variables.texi b/doc/variables.texi index 5cc1a23620..ab6f83daea 100644 --- a/doc/variables.texi +++ b/doc/variables.texi @@ -600,18 +600,12 @@ purposes. It does not affect the display of variables in the @pspp{} output. @section VARIABLE LEVEL @vindex VARIABLE LEVEL @display -VARIABLE LEVEL - @var{var_list} ( SCALE | NOMINAL | ORDINAL ) - [ /@var{var_list} ( SCALE | NOMINAL | ORDINAL ) ] - . - . - . - [ /@var{var_list} ( SCALE | NOMINAL | ORDINAL ) ] +@t{VARIABLE LEVEL} @i{variables} @t{(}@{@t{SCALE} @math{|} @t{NOMINAL} @math{|} @t{ORDINAL}@}@t{)}@dots{} @end display -@cmd{VARIABLE LEVEL} sets the measurement level of variables. -Currently, this has no effect except for certain third party software. - +@cmd{VARIABLE LEVEL} sets the measurement level of @var{variables} as +specified. @xref{Attributes}, for the definitions of the available +measurement levels. @node VARIABLE ROLE @section VARIABLE ROLE diff --git a/examples/automake.mk b/examples/automake.mk index fd78765c00..b20cfea8a9 100644 --- a/examples/automake.mk +++ b/examples/automake.mk @@ -25,10 +25,14 @@ examples_DATA = \ examples/grid.sps \ examples/hotel.sav \ examples/horticulture.sav \ + examples/nhtsa.sav \ examples/personnel.sav \ examples/physiology.sav \ examples/repairs.sav \ examples/regress.sps \ examples/regress_categorical.sps -EXTRA_DIST += $(examples_DATA) +EXTRA_DIST += \ + $(examples_DATA) \ + examples/nhtsa-drinking-2008.sav \ + examples/nhtsa-drinking-2008.sps diff --git a/examples/nhtsa-drinking-2008.sav b/examples/nhtsa-drinking-2008.sav new file mode 100644 index 0000000000000000000000000000000000000000..bae9e0109e244d045177ddbab26ed1b943fb89ba GIT binary patch literal 1086683 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�{sLU+|7AX=8^+Xe0-p=9%G_cJR{HE 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 z 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�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

>PxDt?tuMD~GeKr=; z^_@N6tLr;Qe1pI4@I+gWFFL3m_e|jO7!V!+$9N?6!wu3J&1SutW72*XLbjvY7q#|3 zjK@iSADqG$C7M}Hojdv)LKsOxM zxY|ErpzSG&oc8v6?|JBjr(AmXFVFRU{e@TmXv=4M!&eGVA3VhC`b>Rxb7Z}B@o+xz zg67@KS3(!O9w8W~#R(3F7gl&i6&~V-Nj&pwu%GZKT3*R3Lz%=Qg`>d9c;P8LE znvcN+)xH|z3K#qoxUNsQKG|FM8q2A_G~B+0aLL^4v&K!aYl=i!ZwZgcCke$oPE}17 zseZ>mM3jIjfoD=*Xl@vNi2H+Nv~(|&K& zzkZ{)<4C*k(dzy>$vt?mB_M<%yGC@?dS*T~{0XY!3kM#l$#r(?i*Lz%0R3nn;SIst z^*F=-ZolWA8F^of`#Ta3eYtlG^5Kt1OM{KM@2k50Mz&{z2qd}{=crB~LQq^TeMva{ z_dVa0XX(E~7t;ma%8 zM0<1-hu&hpQS7H*jd$#4lBZAB_&NwLD*kr8laGgVbuQZv78CZP@tz=%DW~A%s0sPN0w^xYbR*Rh>1}4T6W15i|D5&rJZH zeIIH5Z*Aj0GG9kL$v!&Yd(7rDH$3N?bE{9k{hn`r<8{6B@MnCj`PF%Ug?i*S`5S-cbMU6OoeWz9&$;pacAG*GG-z#4EvEP5_H|Ewa z{mUhn4?ov?+d7Z4ness_lXi`i)F`E(mcO@rG!p_4#UrY($Z5mWqg{%JO8vs)tUc~u zw|?Ixe}3DK=ic~)o1Zaw$!)#2hu?q~w?;fWAs@PZYtgjJr@wi8PeuD88_ke;#b=^BM?L6KGtE=%&+J1T8qluD5)IHNUF>qz@r#g3!2W4*^$=Phk% z%Ui8d|FoIcd;Z;5L?Oh}18b3G(p0N3X|VbO!+6WILgx*Bilc8~Gjw{Bnk z!r70#p!K7lz4}|Hz3A}Qe?k7m)5DY7Q{-c4MM42^p6Mz7`02Vmm2s0ge^|%;4X--- zn1A{Dcc=b*?e9J3i8p+$_2m?ou893^^_8q|DATJ4w<}4Qcw*%lr-WqmC|!|AupN$e zrQS~crMe3Kx$Bg`>ifQT{(pJZw5wfz_1kax$}ikC^-ueM{+1&)-`=`2`h%I3=-csV zvpT;sL8n!=oqc>Q`4&RI9@jNdAI`zu@mYkPzK30-R7l%;-Kzp}|7EE4xU9f@P9@0nP z&li8@H*Y=T_wJc`(<3*Yb=-UIXniB((w_a?3g-`o>pbX=#3;HBZj2`!fkPKc!{d;MBE}a6 zdQz*FAXpDN1SD~F+LyMO_f!0>x}M034fFX2_H!oM!KVL*xuRoI`wD-Qi{t$%AEtCL zB+?6By8kSCnqgNf>uDIrgSLNT{Tm5tBn}8N;IHhD1)*^lUidYAi2c4YUR95WY3IZJ z`9s1pA#M{zNp4S}mWUhlmijY9bY;!Inf>M>a`~a{@Y9it=n-_>)bD~E9C%&>hy9*UQ&ANALKh~|u9XwUeegqjNH_}{-O z`JtZ2MBWW|qx4JUZ-@Q91Chsx@g~MsDp-b|8W%Un5s>3i_X%R#y#-l3ddYfzQvOe; z{b%A0e{PSC)QSEKJ()*adX0R}0Y#_8cYc5A^f+9KtAbTEToO@|mn3SKQe5H>Z>pnU z`@`z^oObmyu1lUbwQt>r9-X@47oPu>XaD5B)`2b7Tj0T89THCEC6^s-cbp#pil{9- zqzAZ|@%X8ld%tt8I=a$7)cru_)ki-*=&uf7f1p9&+S`6AxJJh}$VI5YWtvN3J~c0! zlH<>IFZ27(W6%ER4R1X-wfyBz9DKo-9&8B@f0+2x8H)!gRNGrIJH-EKTn2`BDzx8w1_!l!ziGh)2rK=i9oZ$X}({kw_PePkKw z_u_Vn*3MONI)XTWroP8SYFXROz^krO99!J@)O@q(9?q4Q*9`b5u|7f`1#m+<2v@Q_!`s_EG)>Es? ziJKiBZ_e?C?ItZ<_DD@jeys2~&+DhW>ReV^53eq#Wlg_2@jUdmWUjUR*3Dz%SECKc zdJJAkNWx|22@{9pmJR`?-$OzruCKR0`rDA#Adh%Jd7<3zEn6{Gf8eOv1=VxgW(5ch z-sjf>RQx7~`|bB=zHI4_I|taPtMtc9R<%BTyGG_Uj}cND+0c_pG44_O#d+Dz2P`G_B!xnIf(+gokz){vGien&ZdDGUTPJ(&(@X z9;X|`YxQ`xIZk&#&sR$e<;njQZ)?gA+P7g=y<08$j8qyzt|kXFP<-XB=WO}O0d9J+M&{0 zl9uaqURz_04m?F0FMU;dY8FFfN{_fOsa<(rSZ^R#GyF;Dje5-t zp!u6`=KAfvDz2z8dTYyvFv5!p|Rjb#KbG5zq-5X z`m6E1#DRml8T$=cZac=xZ5S84k|YBcqO)CHF_RH~>>}ew| zJ+H#^dnV#pu=0`ytw*U0Qu{~m`gNSjPyPG9OHK$fc-6UAC&AO`m$9QXnBdit)suL| zWjShibpH}gvZICA^vgjov#h$3Wyz+QJ z)JN0)hV>?NQi&W*S?*ZZ$>!AlvFrovvL1S!8ziS(~`Ts!GcdX)a`FgT7#W?j0ne^vUO!l#BGs_{_1$Z|RfIdwL~{zgN1)X#7= z^4=vM75)OghU})8!Z&&RI#6g`SS&ehP==?M>sEqKb$d=+I#y1rR%_je(4TB2Q&_M< zt`kf4lM4)wtD__k)6irEEGJ&0Rq;v!(gVKEpVjKa8oX-A3%>J*!S@|w`7U0`^Bm&4 z{PfiRWT&F~0XtBh#hFWLysG;R*dW*b*@Q6^(2kC`6 zL0)^`;(}-He!WxVQ;BErS4uqd(0Duutci!lB_2VrKK`KE9o>owXSK2#Pe^p|(CK|j z`<-dmZi&6)yvqPjMPII?OMd6>wc7t_v3NA>Ky@CkChAB&NX~2i%MPSgW_?Kp9E_^; z*t--YCGS$~QjC8+l*YgAaUMvf!~D5vt>zVP#naG5YW!i&N__cXpCx@D@bFp5L%8J2 zgr}*x8sq{u$ty6gOZk?fubBhB!olhs$d1E73P zCHYzBO7^n&on_pm5x>;(Q|nqY3%7A`4%J)^4$qI}%qY9$d;oxVL_!z&!aytTibJ`$|ud7PU&lP52oBC&>28@v&WuR5XC37TP>QnR*X))iC z$9T%Ce*fLEK3`dvkJeGfv&diXy6?Q-yKK)dv_8B2mKR@n+;d-_^0Fy^4X#d_7v8j6 z?vLB;QokMTP*xK;aVvHdOnTcY*H=j@!TWP-`Qo~thka=9KH~PUTU*v^Keni!9OBtP zkDFuVTru4C0VLc5B1`rZVJddFKWu<9`<>3venyMN?GaxEo*nD)JJY@dGCrhErn_F> zt+YdtDYe7kJ!F!cybgk73ma6B!CxyN1&9R5f5*vEw7ww5{R*$ht2cNb<066U4sfwy zs94OQFUUt(->rg6Pjy-SNKRsvIVVX8mw$7Xe{JSVFdm72H)=eR`tsp=Zs$L9ob?d6 zx~V^;0A+@qUYJj;DV#-K?cTb9yo8?SLI*9&tx{8+f%AdOz<9uK=tn$L>;&VtfX(fY ze9*6b{_s8jZS9>?yY4*obH9J<=c1qHPu&ieY#{zy&xCn@dzO`cXI#Oy5G80NFX+x$ zQQkIB+C#C3&RPsz^75~1`TpJkEv=Vv;iotH!?0h;K7gx}_LIdD4CY^_{?Hm(KYwb% zMc-{)+(+n9sC`Q^@XB-Oh2_=lTvUr6kQX1xxR6()9ai(9$8DJ8A7ijeW=K8-d%oCS{fW#j|5l4aUfnWpVd#y zW3Y@QLfwNP>gbhm_|zU39k;3GUrw4RC-p4IBIOw^r?3xP6HQ4@78G|l6lYzbb!w4j zv_tz@WgKGnh;|6CU_sdT-ICL;wx5yshw@%Y~bP#W(|1i@!;+FPd=bZe=)NMcB`Ksq%2jB4@kZ$s`PLmyF-$AI# zS5%H}+8>7t*4B68`rwfAB(k8muyBsoMO^I}wYhStbr%w2nXSM$G z=ihnVzde3`s`u!I9(SAuuhM>c;_Tqayc(7l0A#i*yaJ01A@T}T1`Br2Q%A6Q9R$#q zd1~bS8-7jrTM@VJKCQL#)=lAW@fDS$;Nr$NSL_zJB6xOt)88N~;%R`%;#*>_QgLyW;w#Nznk2KhAw zm+gGje+a+kA5+~u#X;(alQt5*4y;tOTd62J5bn;nI)_%$Y) zd_o$;&U#*}Hm<}t>hQb?^@~scS261 z;vVAGun&i}VqW&+?w`58;MMNU#I0KwnfJ%1XwpNt6qAZLkR78gU1_%*_WNr$M(9tMlo6nH$S#Q6 z`rlrshr#h-tvf)27}f7A>!f(6Vi&68@=H%2%d3J5D4u5<{xZ$a%Hu4!#4;mV$1kOD zIV8dQ_-VbLzGr$dJDSFwPbZJGVU5z*Si;^xCg4nWoR@45{Ju)O6ZI9!AfZ2cQPcx2 zb=)9}@n%G4!_eI(zL$Qwj*D^2hP^^wSi)$BH;tDUOov&@9O0iA*6Sv0uf(cohn81` z?|h&>Z<2i-B*+{el0UlP-V0yze;!w4OAN@af{mAtL+)~)9hfXJ+W?qvt63kYs z(~;MQ9Ojo)WIQHP$V=fg-yp;5rxS|o%jR2Wz2t-&U;DdxeVP@(XDUY~FwEIR{!t&M%h z=*L*ktUulNx`J{0pa5Iepq@&Hwhu5zqb7k1hu!&8IqsNi*Nb|dN|6`+bVZL#I?Z@` zrR;p#pJU4z^oJ=AsO#4bkq3Qhc*NlRXjt+e1RPXC>im`|r<5w1=IF&bjKzPL{i@Ew zukdFE>utE+m(_6WH{1lC?kTcBA&(Jw3?=Xk@_&3u7Iq6!%`n$ZEr(wNheI)aJ zRNaT_`mo5xb%*qq#-C~Pl>F6kf5;RKxE>UWg`e9XlQua7O4a#t((Vd`HxB-{Cs}2d*klW$qjM z5GMVZ&(s~p_`ttT#rOd86U?iG>!hcIE9L(H0?(D~MP=~Yo()j&lcSRcCdb8!?~7gN z=lPGr>rJTM7imZTylM+}YJIH7!WaT0gR`KoZe?S8(YmC*2WBk0CFe@F(%J;+bA{JLjf$ILd#=&x-NQd(-&l zS0XRTZiANBNoS6+4_t3l{RJ1LyKz4Vzrm0-CqK&oy#r=@hw``(Fpam~&by0`wu zU46xFYJ1yK1KQDoL}2^Ch_SR zkxvebBx9!|_kY87O7c+eCcVk8tMDB81R&*<`)$`bsYBA&wQUcS7u~hz@gFTc`r)Zl zR_wm;i|-__7UL7)PwhC<{*;)Y9A4$f`-jj%2Ocr}=8}9C9K<&X4=)3v{69tTz~srh zHGWzA^?E-;y=B8+kGMJP)a~N;sZqbmJ;r*5TF;C|B`Rwix_`!?PFp*2D*oeg=t%(V z`GtU}Z!jPM=M3W}D=T)h=D#e<^ZhIB&VF91GrU9kOY0d%3(F$Q@*1T-b#h@3Bp~SH z{H#vV|A|dH7x`oCXVRZ=mAv*M@jRlA{_ml&JXgCL#wDIRkBprHgLoySK{nPi&&6s;^VCWJS|Ymwa>kJ7O#O?UWZ4M+S#^Whv;~02db|7euqN3Z*|_f&;ANMI||l zjh7$NdUOTX+=HAN_<0q3U_2=gbIf=-0b{{X26(JDKn!@Us74cY2kT=-@bIy!pWg0e z|6r7T;vRxWd&lBgB;NsLq_^Debl*C>K3+Wa;|F99ihW{y7s2JYVHCgdqxeYlcXw>1 z-KDq>!ji8`b*r`qV(&1&5mDr4tv4P}puP`2scwz8xxCB*ekc4cdYk#Sz=ErhFScKo z^mf-+ImOlLJhI-nBgsh&;B`JK`2;n;ZO(tTwVJ&CsAivtWB$Jn{Od2?{m$=BedEx* z`ySoP{?Z|*@K^S2#cqzCA3^>_xSDdp8mWINxYG6|yyi5eMoCT`@4H+4mAXC0FKE<< zVb5jU>=zt*R;%0Hx^;~kG2cv+n#S~HdoElJztiHW@XF=^$z^+h6gBMDxk>&?@jL7F zVT>!iuKRPByrTQa)QQLZ#$g9O&iIYyZ)Cn7an@KnB`xv4Y7fZgnLS|-wBVF}ILi1u zVZ1Z$yVHE2u;+RFCe6Q?PI=IZ{dC=E@>`A_j|)V@dQ5yudK7BQPY*-m;Wx=HEYs%Bqx>#YNyTw3&4j~~F*sAtfqOP(*WY`naLtD;BZEP5cE1&Dx{l=@5ZLX&;T%W;-Q zmFNY>tykO1@xx%Wj3mznr){B-7brd^c zzKxv^x3@D=UI;tv{I;hguK;2WoyQm|Kao%sGao#-7 zGU3|!ba3h7(Ld8N7w7$%J&p6`d7qu{@mH$z>ukL9mGjFVnY!zO>nHf0#bf?uK%as3H#u6R|fszbgMBg;c>3yhn{dYc78s_ zQPt`Ohj}GR58*;z;iRLtzy%VXai|^YH!nH5-v6`M`Fb9W@ta0|f%<`xM_YFGSbGZ0 zVO*S%5ePfa<+J|C#ALq9uO~-wO>MlS-Y?SsH1eSlcZD8%<8kS#L-OK`lEYPdnpiGe zN)zSdFWR+n!P|5mUcKviXZAn8^|7f-cI`d-=C83&f%L~=yRhYK@-V6XYN5SV`)RE> z5c}iAeAHW~vVCawiwrAcAAlzNsmfRKRpQtNJoYF}vEyz#Ki7-8*7jWHdn4abt&iC` zQBGAmYLQ8Q9@mw)MFpZwoObNZGCr^J&ojWZHvD0*KHu&jVfLi|Ge7tb4FMcR#0<=NMj(So1vr6#Tw@ zqTUvaGN8tzip%Mf0GjK;oWFMeN53aD2&_-IOTS$FBs&*hKucYgmaiIqMSbqJ}JLo6NN5?MsgCH zY{+{3T>lvM)AMy@KO6OFx{WNSeG}y*rYvsH^{#T&(1zQQ9hDp8|I}NdvBIOeA6opX z$~+;~K>=Fm?}&58+D)!nZFhuL9F~Rc0AIr=5EV&&lA=6QB3m-Ua#F7y>o7z-QD5JS zbweBDBGvkZW5?oBJjfMFeG`d1<8T|5#;iZ2ugYYNe{0%AbTvS$*ZX?@#2{X-$Vqum zK5jl8cMjuP*iBu5@S)58Jky;unx}w#I5{LIUPG9ur$sYjvxKB}$Jj8IN;AFu3BJvB z?L~ie|8vy%5pn`W@caaDQ4}<4o=K_$tHw9f>3{>VxSm2<;-4ulnFUTg)6BHq(7K&< zT!mMa`~vwZ1QvGcB*|+n4P6JZG7~7a9$+tC#A10ad3?~%4C;^(o7g2ysTV?S>Sr`O z0=sld6FcO@Bg9_+yz%oC8sj76iMZQ{S5H0%KPIi~8J?7wts~pfD({6$azj+oHaEco z=)^M)>_ZZwe_fX1!mtnaV~T%uPp=t&nP+MIbQ`!j+rz&yoa%#3#0Xr(3lf%o^by2I zUK?D*6UkpNu20EM&`{hShsICwV;cRlV^H9-olw{$U{-NV%G?2ze&V~1j zj*mzRO*wUDm0Lu4u6h8g5)L#==N)OAc!SWY7wbQlc#!#o+(zzq$QL!@RIkg>3wyfs z+)4Iygq&o|o!1V&i&Xkac{QH8e6D?N+E*dQAWuj`sz_vk@R=$L|h9^{SC$` z(>Sx)p8G@T5;b;IPhRP#>+>(+RmiJiSDC+8+Tro%!uJIXgb$M^J(PA>@k2FE>2_G+ zLG#KD(^R9^G3%6wY?FsvK8WkQDp z$#?fQ=2co}T+$IB;x5&X0|;-cKQw+?_aByK{Z;Hd`47G%_`c)m@JfqT$=hsp@yndp*s<;5b!Plp8O5LBB?Hk2^ z_ftFwtp=?1;*)*nSIXZG>N0cQZ?G>-&0oG9d3EMfeN$Z4*RJ%3?B6q(x94`~u^RDR zWqim>J|LWea!OyR2pNF=&J{KPw4T4EzM_#|lYdGjto?*L#>z{6;0U{g!w`B*^Zczi z8en0XjDEYfN4WT4w8KtbAGpyDoqz9#-?9(8Ftc&N+(-f%{A$<*Spn-S^Iaecib4FP zNuj;|HS(7cr2U4-j~2fHKd>?G74c5U>7lW560niH%D6JG_{}jC7jCM>VfDPs-qo$Y zd*^Sz<~GsJ|y~K9~$F2{0-k3`a9y?XT;{m)>^NNcn6?#0JGsE(dVDMMWE17zD1*J4so4PAy+<0p9#j-23 zz@opN@>kN|)c^bC^NxG%LsRcKc?WaXWxT|7+L&u_*lG(8UIG$QK9mPFIsfms zFG};4=43eAJ=GPepJ~+RRPED_iFiVbl8hwb_1vs5UL=1VG#Yr5X-Hv>G&7ht7kE6r#8 za_a!N^gZVH_1o}2*;htB2p8(C4}XtK7W-83izPKUqy(t>6!Df`sfDQiU)D*oqDA&U zn*9WedhVOL0{Uz8dulM*4(uB*C-KRuk;Gn1S++#gT zK5zZGo}sK8L0#d!fAQuM|N2>9o%+z3-~ZsX@4T(PzW4Ft<;7Rl`Cic@*Ry>??~15 zp)nQEd;`c-H4^qF!mBJrZd*naRRF~;V>~xI% zuIv3Xo}qeU`n|?{RN>0?_503mt<3wq2cF8K+~Jy>gbo==T~Z!))N%rr45*p_9dZ1l zGdwHlFZ|ECz1rPx{n^gnzxIxo{Oi;$FL}*#cV78}T>laM@sbP3$DBS=Uc~G&mBaeu zx^kdGe$DpF3%K}};QI*|!1uM`zlbA) zLwr{cL>{@aE`#G`{3-NjUS&HfG7aJf-sc+id8kAA_KM%B_1UwWmVu|YKH^aoe9kN1 zezDihE%UkBv$M&53b2GD%|U7zO-}iVlv3=cUbNd6)aD`7?G$lVqdqk9LebxB8P6wh zjNlVuMlC>!JdF93~Urz6VG6n*PqKgAIhI?88Kf2{c&s2{_YqjCtZD1JgVV8 zx4*PMxKN1j>(Ckp56T$z>id;<$K`{#oxpR~L_Ae{koBeuA|$Wg0H4Hhr#j@Z%S)E$ z(1~@NianpJk3)>8Hvf|o$$X+OAUntM*Px|8~Q{1jE&V8TO zrNu+gsHXn3-O20Ejq->2itvYz-`<*?@#>FiF8afK1fTr%Ycdjjfa~d_iBIB>mrirM zE<>OrSbiE?v=98doF@(*Q#Uj+Kh;U&HLdY-0tgb}2*~kh>u5d+Vc~hD-wR=RpGx#M zD*hwy*=T=Zr_%W8_SQ^qo$L+NjLRm075mxlm-XHB0UAHFl05*L+n-NJOzbC7u?Ou- zROdUJ>(T5d6#GdX`!na?aOB_L{@B#-{K=Z%`iKAUomj^v=hfG5XFdDz`ym=_Ku);S zHJew^h*LZ`ogh1fQI{&kFZMGQuIx|MY5sUvG|q!y`9J_&xdWu zOHx5530GPLNcY519LSCh=De|9(wtj1V_XmGx zKkF~pk4g0acfj}dn%GxD{S6cOx60rVH-w*mNJ}k_t5)qPFLhEjJlQRM0$VP+%jAPj z5f07+*qv`IxUi>ue~u&2V1iAy@ah#2v6y{?w=<_&-JXS2^|Ke2tUy5^ko{(G!mVe7;`l!N#p$2*OB+K3AyuGsM&>_m=JQP-@R-eKwk5O z-+$3o>g&&|;5lM49_;!2=@t@Hb{3$r31Se^4Zp{&J*lreKq>yQ*=YA z{U0+KkD+8d&VNR}AK{2dAs@uSQ}xSw=2yMEK6Ch?_4OXvzar{ZE8`I1hlc-r?1i-d z4QF~Bf^LKPuxUS++%L1PqSjE9RUFju={2g4L0et~KKO0>#B1>3$;b#mao5vU{21xB z^vf%od1L!ADIPrjDay@yj5rlu&BS`5ggvZBko!LoUV5eOzmhj@&*gZqF^)@X!SN0| z-g-)Sk~Tw+mXlf~NZk10mFg5E4t^=_0*~b6INp9jsqfe_)7o+8*}w6+qaT|(w2u6I1?LgridqOOn|uN)nG|_9541W?1Q>JrMxbHO>v>w* zWAw+BJdyG;*^b^c5m!}ShR6`D8k^%n^~n zKi>ntdS1Vi94+%?H}qzvXHd8EMF^pp|L2y>A@Pg644)zEf#bp-vF{9r$i>-C=hW%h zN?v<5&nIrw|7*Rb%=f+E$@}tffyz<%4t1;gGvDPGBZ25|%y5}3&D#|of-sKm`SrLf zkHt6Z&P-!RqaH2d8`VQ|uWDu5zAzx`5nPOv((J*dEHQDH zU?^#&aV2CXbgC#X>&)qHhwEYT{yg=(DDn-y-!Yz7qVmvjZD&Og+We*S;Z*g%B zaLKKbMm1id&_~%@aqE4W*OmR4;df>$VilQuP8p;HpN+Tl zSa6|AS*;kyQPGKUp-xhOkgd}_M|qIqhjt(3FJ(`IU-zZ`V_E;i;}U87=K71MXJVZS z;R(x>F`4f}?Jwa;abT8{Bc-I8ba95x$o#L@QfNK;jbeP^AP%KuN$o2wn9Tm zcc*$#{$4|){dK37_+38DFpqQ{AB=m;GRfo7yce%q2x_mQKVKEDJ;lmxj57Yq}TX5y11Y zke|eFuS-_?zoB(Ba=me-UflEM6R&=0BCe1Zg4qItf>&xl;1aZjke3L?Ydz#6@v7*t zo`)%Q{}o*5k$5fSb=-JdL*q9ISM0mS73JlL{}I32j}g(e{1E2B>yFD##rVw^xf}U? zqw)z*A&oQdkl!BT@id^yVSB*UhIxf7Ji$!*15U`vVT9zy5whYPum4))RF9L9(@4H& zT(8~Hnz?mD_@T7*%3)mg7ZmQsTY3~Or9J5w(|8Flr8F4i4oJ_`0d~*tVWA4Hl6P$M z%hkNg3FGw!05Qh4X}~9^4T4Xy{ptnXvp6He)1dj#ICGs()QLCpF3xi#o}V-k*RcM; z*z2}?7kSXix&n%u^SZRlo*u5`CkO!Y$`aE0 zudtkh2GDK0PN(Rv?iaHkcmtRFzf{jVy#xC`AN}75UU5~musW~E0?p8k@P_jqNDT?n z2h;zNAJT|3Kg9QcqxH5*f78e}Hu{~2>my&aT)5J@P2$Sn7}E}=D*JmxOG55w)Fuom z;aL%lso(kY91rSChsIGy=@C0h!wLH^FZ*y|TCW-j&>wC+@EJDq%KNmId^=a)xF%at z;vBO`&ZqPyoM9dGsut&T+OB^@pUH2yU!TWr#kycewqjkdXTIKbkJ%61G?8BmLweM$ zyEvS?Kv2RXy3>`(ZztQHkB<3;5~823+b!1j9>p(iHthSQ6LD4BW3CfbyMbJ3UsU1& z4PhcOd3qWFfL%EEAC$jW__g>x+>!SWf99$k`ngw69UJ|JC`GolR>t zT4-(q+*0J#M15Me{7?-(BPil7H2^@{&vKnwX^-{srBQy3{q}VI8^!yypTp?(NL>p1 z69+Cm8khV(L?#f{qu2&6+b{J%Fu%ik+Au2n?d{&9`bhErD)mI*!7K;gKY_eDF>cA- zPA|t$Zar`re>mVf=T*u?=U1tVUM&PH5k1F~CbzB7)>^Z;1KwNT-ekR#Svj>6_o2I{$`S-}3U8vTjWD zJE6aaglFv{`x)^C;!`!x;PnC>Hp)}6(r|3B^D^knQ|GBvh>`CO){Qrw{*P-sulS+L z`)50~f4rT-4-IXGO5>4B@&#^pX`ZK0aMbKM&_jbx+l}#K2C~<_YfYHrKDPypsR- zvhldgYtbTW(BlEz6{6LH?Wcr9k3&C*E(Ops>&1FD+(6icx?fuS_sYIO^8d0PkGoj& zTq2G}6$fXvKiqEfToM5eCo8zv&rvps0a(2uok@ODEMVEEhnxe?_y{t)P>z4;Z|Z(2 z_2VP`c>d0D_N&0vzId_yiG_AEIN(e!s>*JQxcMpVjtu^M9Pnr@R#ySi@f@`33}-VEA}DAPXo^h6Y*5_ z7kENC2#Le}GA9sLu9ML-r8+woxlShYs&3b@4~=+-eo$X&{herDahn|U9tSt{J-@l5 zB|>EjK~e3-_YQ9g))CR46?W@ywBl^>LPRjQ*)?J$oMHsWXLFXv^ZC+e@s zCkD6p0`aMv#=F864D7oEr+rH3#*1C(-Y?}8K2`W#wNuNV4jz>)RO}S8!x(^o_1ple z%krzkT1qv3=e&RHGkrwsO^@7o)^YDy@_N@%VCl@GO&4n)G4{psAxo4G)ftLMRr#cR zvCZ|My$OI0*#-OpJp*r-b#kkIXFuotLthnpX?>;s<)$YoA9#!K(>Sy8u+~@VUt}XO znX;GZnNe-+FwR{1m%6>Ae`(muu;an&z2C$}Zud zJKs^-f4#qB9I#=(!By<{?PGD_Adae|4P11|k#A&ZMs6?mJ7pB?3U~URzl@@z{Wtb+ zY2+2O9t6RLd4A``jOSADqD!%cTW5}err#`e{$E$I}{)?#(&GV|;(+hQ8g+DxqXE5|~8bof{1M+*&MphF; zNz=noQ`MJJF?4$E#(t$azzt7>&a zbzIDwYP84dxWvg%30IO==n*t|JqRp@UQjQ9@YErDOfc7vr+#m^uDy|m2|E#S#5*p* z&zp}p0vS|}WVaZ7ZV&CNu1*CFLq5!SRbKO1aPj;7vhSrm_H!LkLryVIBK)akPf1RJ z7+T^MM}H$rlRBA7yanU=(ABkeSkG6Lbw(<@Ld3WT0dBeYp|z{en<6$dA+&y6LD4fp3s3x_CYF?52mlvQCa5zRNb)iMStB|eeV%# zM(!`o{e&Jjjl*S8RdFfT1CGd}@vbBCPj)|I)oTS6L_uhbJ^mLQsV&s9~&pr>)7 z@A+NDZq@mILLK!abDUMU!!&B=ofRI&+Em(Yi>8B2JQM#VG#?RSNNxP@bZqa-_({Egq>eo7MP(m{=!c@;-g^oDDdY6& zP?~ZRt99k9Pd(M=#3I`Z{|(__Y$VIRn(7&$p(cv3juUc2z{{1uYWKd3q6h1DR_3XP zJqgxOID5AuszAK(fggn&0nz3YhT}`M#dk7ah!lc~@)8ul~ui7rylM zsU@y z%JyPtT!(s@D^}nCi9dMYCsS9y{JXE~{P6>6U%zC>?j48A`_2UG0#SP8#)Dr9T!l+C z=Z9x;I3`c)^rieCc1(z~9mAh^(=-0vffrx7Z|bLCzvZzgms`6Aj9cDE}`?NnAybrst(P&vOBq^Th%Xt<177Y0Hzl9lGjebb= zJ6V56y?2t|)sz!6fRt~L{@f06X0Y&bS>-m{c^32f_ERhUP{LzBmHb-6e>UG!-Ng$g z;;Qm0$BS6bBq!Nb#XJy6yuvQ1%LW`UbA4a%s$PeMKM{Uc#ont|%ko!iEeSP+y1#D=JuhO`$STr~?uj+Yak6$X> z02d}L`4b`*2Zq`US_>415h@>--G#Cbp2a()nn!~+&V ztsa-DZVkcaJiI=V+aY?q`cLkB`=9>DC#GJy0+>-gS>b;8h*J^B!F06NOb&tI5#qf#y^L!lQvEF=Mr$Ib|IFW}i&xHr? zfkP1WO#TdJ6$5s5whOwUp?R0Zj#lcVBkvYG-y~dVza_r7a(KQmXR3BoA8?~nV}l{N z{iT83A}3ka)ISgSt#Ly2H<6coXe#oOtPd7`OvJ5Q-pjfJr^a}_E;7@dou1YD(fqCE z9>~9Huc^q14-pqiUwm45$Y^%hQ0Lu^OcLkyMT##5cxv(3l2y&T2)NKr@O%42K7mU; zGJgEV>@D-xfeTECPWLZ9Gu|J}c4ye_dR^awt5G-e%m4E1g=hTg{;Au)eDjfao_4S2 zHS#5qpWK0+>ZbaEV02cY)=5#S2p77{7Y|;^D-f%d*cj@de6b(rMLxS}MIXb5;_vzwAXU zG`~tvXfKKmJ-<=CGog_Hqtg;!M7^K%S@6O8M*Jh5R;SH*()9L~4C~4t;j!bALG9BgH=5)jAi&FCE4O z`81l7+ok2FK^;^myFtq!V~NCiJ=aMV{@2Hy7!PaIU#MMXf9v+~^5Uw)xI&K>7P^wX zaMZ6jOz{}PlW7Ggetb30wLFhweCbWkdiV!Nes}7=A3kyL+w<)26}%5S@r9>{hs%cj zLXXm?OojcdcoL7EXI11>AIBh{G)hh=A?(CH?0kD|jL&I78y0rijs6x{=NJ0R&MQte zF3Cu80|%1VDOJ~rclv*2t^XPFV^%ivr`7S5mt9JoYs!PGO$`q8MtehlmHHWdfNR2K zKuBb=uV#}?7V9_I+(a&%`Ij0OOZlXB?{Oif|9RPGe)HGwJmLFOZ+_Vi-t^l4!TcQX za6=)d*Mg^gHMI7%2Wb3k512j)oQuZ;GDzGB~( z*pI%nL(VtyB2{^va4GquRIe=Q3=YXlz05G*rAO$M^r*jq6XODD#OY@QV>#Dc)EQ$HkD$$m*%aSZ$jzji;gIPU{jWxj{? znQ)yv5!bN1z!CWe@jQw;JylPmwxN)ket?sgs1CREi}kz+>pnH+*Y?#elRvQvdEI(tta~Ar4~}9d zd^X;7||k5Z|Bpr00z?LTZmUY*m$2i>>U zRAezZEa})Q#$YO8#L;UUSWQW#UBIarD<`Pn6dP z`#@F(o&zoH1FXW+;a0WIvO7j)m3r;Vl06MS(Cx7Jfy+j$Q|`Dd)#>kq@10Z+uQoL} z#CNf|ii@E<%Ss{(J?dFSUfHAITqovXA<)3p`>`ZVzt~u3N#mTIlrOz%yqthn#S?&m zAioC2zynSRkUmY-bsG+P@V z!+ySX`|20Ye(X7|AN}mr-#YC@2lBd45!ZY|JYN&@iC_b53qP5wOfwYAm51~uIRQ); zO}N14RY??vh5s&J*DaxY-kAQm#QFQDRvh}(qmTSM;xXnK^5wzvJ>&JqRTl)NVHePw z?UUXGN9eDN4_JNLKctd}_x{uJvl{u3svmRnrL3DbdVfUKb91#SpGv)$_{0wc5uV^Y zemhoNPy!C+>nmmz=g(?jtlj%Q?}$%-_U_G39R0+@Q}^yU@yIv)Kk!NYarTeDAia%V zuM69wdiRCOI(`xrCs9q<0iK6^0s;JvC-Li?HZ5&nH@_-5f~Vn6DSwsYnte}GUlNYw z6L^57i{R-ZGVao9eyk7{A z2@rA? zvIXTh5be(WtKtdw%Q4<0e))WvH(sfKpkL++5%09#*P7|C!+tg*ma8+IpPU}2*zbfO}JKg%z7yQbf-}%-@rk=C*tuN_( zkoHLb$9IQ5-#A`w2&ySJtzKmEi}vD~;&`cjF$A#~gIuUh?c!2fzrXEL7H`&NHxPB$!dh^r46&$n*B}J1GC?;ZvNP$ns^T3M# z!a6;CB=ddQTr-Y{x`(v>)ceSToHlR2ohMWXPkjZT1WsCtlfQr0KLZ$YnLvr-5 zjco{yK%@QD{dLC2Z$0eSd-LC4(rW+HPyOs=uV6nr$Meaa-ZWlbXl_LNQ&biDOZG}Q z0EDNdKAdL8?_P{!qG0>QoyIyijs2b#-(>&zj)}NN=&|6E^=<0WAbHqb^RMdT1LQ{= zbs<&1{obd9i##_OW^9XuBYs6bi%IUO8V#_v}Wr&LQmR1LNhSs~S?^ibsX-!K=_8X2J|N-(^F&75;Y} z2a=Bo|Dl`L0dCCim7m3TxPM%78S4PguSnyC+>_>csBXD8Th?{2?n~pkELAy4ZydoV z`7j(MUXBJxp0Bb_P+d-=)2Hh+d!_isn0OG>5L2AF zO7RVLJ?ug~|9D4USFqy8C?Au@b54Acxa#_oZ3hHVr21u)Nv;Y+3mKtU+NNHz>c98y zmlQ|Y_3%d{4t(=va=M?t6rM)jSnV$R2`7(}4>y_hHoybI=#Np^V7$vN+6FZ_25*!V;#k+i0`%K6 zkx%F=&#r#vdB^cqPvVhOW_}aRsKwx~dz_1B`ssKbo<;K5#L1)LE^a6IJv~lNHUZLI)?2D0<)XQN z3C$t_d770xhln(v_HRx0l6g9|muI~C(fO-BytMVx&$#q;AK7Ka^1h3QtfFaiYjC$Zn!X8a>}6 z9pa`y1Ngu*q8Vv6aFu+2U60uFM!wi}GO6FYbfUb#Cp0Er8V4WLO|vDf8X-1Qc~8ch zu~z)o=zO>5_@U^rZqJd|NWUe=r90{WXg`bO*TtS;exWHJ>Zl`MEZd|KneIW^PrX2B zJh)!1;HvWrf2uLBLf$MlXgyv9F6Z||;Sh=?10ED(TwV`6$%|k7Dc5!XN06mYm|lJ= z{fYHF^0)6Eliy?i$kFwXNsrf0)MHg%%BO)t<1)^tMSp`?@I7dJ36=67WS!1c%C8rG zHT?BxkCk=l6vyZF1@FGBHAkHEl=LX6ATR6D?NJ~sT&1rpE}dy#CtTdXDEmd;qtPFR zzZZIJU9S9bs%Hpg6+Ny*Wwvw$O6_=1#lReG($2VS%Uwm518`tru`*nXfSZ^cYF%akbY`1{m zL;SBE+vFF+_voL!Pow(hScl-K*0t;VAAS3)e=7Q&><^!O`B*}zZ{o7_ zRxr39R2$OKX`kJr4hy{n9^0!DmmYUfS|6c;EAq6Vx9Q8_)7q}%2cl3dSU$}TBnXZ% z0AFF4=bTjYGoP^I;Nme_om--GDZX{PJL>U6o=4m87x42?d*E4hIrVd=xcTxmi9-I> z2M-9jd^MhN{)~Y?j5tsrbI3_~D*Qadl8kJyHfmi2+Fi)0zE1i*?`oa(j9>e|UjCwI zwtjr(vRD1M{cz+%=|ya(=Hd79b+;*(h%Kg#sK22VN=~bM)!W+Def5M(mRxc|UcqpX z7}3CwkpkQ2OHQTT)$J$axTEY8Ulab-_VK(z8Vi8AC$j9e;xLzzApfE(XoHX{b~P@uckVpY|kg+s`K3SX=smjhh`#9<~{*} zIzh-AsR4FlUQV&+^*SQf4{P{Wv_FI$`n&Nd;Y#`oyNT+^CxmgpLI^5^<2~t8$6rj( zR`v_;-6p+{inAiFiTw3Vw7<@psB4nV863!m@08uvxrD^^g=sz-?Nt}%J-N%YRmBm| zNY6A-(!HeCztsH~)`e`y346|0MxOB#*mI2s>%Kx$8Ck|9CTCoFDuL)nfYBVMj6@Hm z{ptI9-H&$QRncGjQJVBfIfb7Wc4`lD>ZN*i?(g6Vtw*ADWn{HDp?uz8Jze<+x)u8^ zyvqR|z0^^`xU8qT-a=0(jdn+GE;-Tu<)LGr6d+qh(5ZK& zaAB*$9+bNJs7L$fRFC#Wk4w^4gWq2eztcVrqxoIsQPj^O1^6o-Mcgj2z-!M>6*R1s z|9icA;&w$F%qNk(RQ~Sj-~Yj{T>IFgQ~%}t55I2iMAk=l+@9(Z?gCFc?cW?%)*tK0 zybiXD(ZO!i1gk~r!fP&M-Jv%%ehvvK)^RHRO5HA%_^MK0662-O-uBbq&9INGuEck; z4_kk_ulhz95%~lf$h_T-_8J6kZ)i@Cz@<|ptCV+%dWnLo(cd-fK;+9pe~%-t zS#`LGfhJoy@_sn9yHcO64_IEZ1D2PDwD@DWz1~Mw7Dg>oh_^Uj*6u}K(RH(BT$1$% z-roC-6Tb6@OIu(1-#5PaBbSg@K#%Y$?D&$MWBofzLtq1PJm&UiJ@P^#@=@#)uRwNz z^83gu`FH=sS^0Od4(p3rv9HT>U+?+-aMS+EAv>vKpI;#_pQ9os{LG|3pXIAIW?uDX zINa_cej$A(1B2YC;8moof+`f~{A;mKbvwRDeKFq>cJokhwNu?Qwk7Q5?o_vAT`U+^ zmXP!(FG|X@Jpcp+@H(OXB@0czJJ+WECFEpY6+f8qwMIRh^_S}5p0m^QimehZR5{cR z!=CroY%cwt3Q*M!@jKCs`Vo+-vlG!bFitA_AdEchuH`%H_1KKhH1^$9znA0oqa?3| z)E~Dg>}gMLJrLt-*7K5krj)NUCL^)1vM-6WOk5*aw*eT}dXDkYR@ZEu&{N_|ef zJ%X>XzD3xH;Mogywz{45IS*6Ye?}IQs}k3+D-Acq>W0alhW{c)TW(N`AL$c>0yzsT zsOEj_7Rfu}?=|d%@UUbfzGa#+x;Qt8vUz*cRKq7*0+&-4kI1!V9l` z<=kNWuao_SM*gg7-(QA&I`iRqi$2<++9Kkx}4TEA1d zewhoP?vNcV{?t&t*NAyR_VZG{@wl;a(p48MqN<$mE*1X)EvdL~I^6vn&^l9d zQSVmjJKFVraa5f#yy7my&cA9rK8^NO@TL5ooJ@g1M7S%ag~Ud`sOE_j{M^`PZq>ZolQlS02YcUe$V?*N(>pCi?5zx~CwOVYS@2IG+ev0h0bl zkT{@NPxZW&__Us{!mc*z(%cS{yxuqw7m}&9LrD;dSzhM9aH%PRi#K%W5kJJZ`1A1p zI``?q$6?U0vl1MT$~44Di70jcYKFc4(mX{;~b$b$-3 zUSI9xiMX1)XBla&Z%9k)$G9@fyRf5>HW%`&E^;cGIo`h}>cAMJI0#k z;JGy=G;vUu2En109(x_{+arPMD=8J?Wbq%i%%nWp{;A0C-52>r{?2lm7p@JlJ|%6N z@Qpm0=A-ftv>u16E=$T^AxF@8pNC36*pK+s*S)9H><3*R zkm9fPV|j(S8qx2N<^YKd8RlF_^HJ6<3JLy|^D$Xo-ZxzG8dYCK(~0)CeJmcXI?BH5 z`l%mOE0FCJgOu;%pMGU6+EB&w*Ck_jdgU9kL;S|cl;HtnN6qQZg4=w%Hg~o zSE||rF%G?G?Gq*S33YUaM~xk+9~2&~wdmvY8o%p)72`->{K}2D{g)pe()wTDdilqm z^M*&gJ{R{Aa%x>MDV_*ipqa_DfB+*rR?Z3`<&fD-@w~()lq_4YVtMfwI?MOz9CB*R zi;cJ|`pXlqV4NncH!Q9WjxuhF5VAj|Yj9zrPzg!=Hjj|8t_2>6+fVgSUw^+IPtd}FqgmE`p1v2vmzj^wwTOz}JFaWvgVhj3O8uT#Vgggx)(`PL1;%K7X5ocXkTEFKAt z#ydN+Iz*TrHS!;LYzLt8tQDOx?HX3m7Y1MdK0IBjka9I|{B?$KS%xlJcZ5oWFv6%vRE79BSKx13c1F16LwW$jf~|)>*|*_o?t(dW+2q zZ19SB5Qih=b@oJg1=@fdkC>#qzM7F|T&jP`9Mic^J;i+;G>;|wFWV>L8lguz5ojYm z)$MsT&j7A*^Q7qiM#&3hL|$eGdhDubiUU7kX13>e!u?+Cj|zn<_QCa4ayyfsAp0P1 zLH>d5Lmn*!`uW<|xx`y_`#^nhV?4>cPyXl5vGNkDlN|-QET+eC<(!Cp^e)@ICjvmm`e~)_){FpqR6!U*7`D5%Uok!r=I}s1v%wWA3GaFm^go#8j!eg*l3O)=h$ch{ShzX$y_C@7cH^}H3nJOA&Ci&wE8 zvWzMDY;f7E@*wxG-|>2C13AeLRsZb%1zt7cE%b-ngLhxRpXtoaY6MR;BL`_`f)Wql zvOlo#l$>FZv``v{oEbhR{zsONW*qTpvh(fs#c3QM@haD)joQzWt4F@?PT@)WCWzI8 zBgU64r`5SGK=CqnBASO?KvnoxDd{hsi&pu#O#W4|3uWDyMjedue0jaaedGBAyhYoc z`J{1@e0}*<12md`5cBTrFN8fPdLu8|Sm(fgda|FrU4wCeK#(P6K1nN}8uK^vL}@ge1hN}SclFRsMNmHdC?6T+Ua+6BKi)1rN3Ecz`x1G^b`a$XN-MPP^) zg*N1byb2zf(GK<3HNDmNjlVZae|%y1SKD_zIlp)yCrL`(iUbHE;R1!RG5^Q*DS!^g zqq$z8QTJj#<^E+Xo?-tpw=W0{n5?&uF_5%QrgUmNoz52ZFGX+ld=PSK#1HmgQl8_+ zvACq21&gRECr#QCC@EO)2D_=0CjYO%hVa2fa^A0m8wkI6`Q3|+mx70z2|Iq%L_ETT zuJn+z>^K*+f38nPk~esm(IQQZ1III!#}RI^&u1k+)&Hslh`k)8H{J?Jsj|4eMU@K3DePr^JmQ{qnlJL) zR?HV+J$cD1$EACBX`E!n?TNYWk|zr=@W*)L)dpi(yR6dB&RZ- zR9|-(yERIW$T<9}{qA=nj~1HJP3cg-V_e>6iMvnPY)-;#@hgv$Fsh|GChRH05@dFy zLnzk0RH9wPuOfbK_@SDAm+jZ%6XmsFrG@6Q{=g>G{ODa?pfQlB1BF_8m-}w-nVwxf z;8iF0I}QKSd5@&OC09=B2S?!Hit3-$?}%~I6-U)>31R1Y^*cp>^}N;6l}*2RqulG1 zZ#;B7uFxZoH93jIfh+RZflF~zGIgWVF zcw8k<1QhS8QeE#}agFSjz^L5`mw)qN{r3J;@G9(lz5Wur6?LJNys_*;=G75T5?4)L zGFM4nS&w2=U0xmPcB22`5%7(CQ6tapI^$Gtb<~yke}n!Jdx}>#Sf5OxLc3q-7dL{5 z&;`?3vk#J1@XgQS!Toh_NoI=FLJ~J|U{~$h?Eu zfq%UCIK1l{lYEv<#G@UHY#4fylukGEfi9XLDYm4##^9UZwp9+sC_p)f|8$#I18#T?kplsC3d z^?ubo4{+VDkHDu!{HOe9Zf}=P)L*BeKmOeO7R7~DtTv^kKcooN=@+{l>{5kKWAh38 zdB|tyRa!4p_FP}oIk;MNplSZCUGI_prbdm!-$YK%Ql)V}#%*y7l%)ci=jE69uUT`iC`~@9uy#p`T!E8bb(I2U#a`Stxm#K;ZrrP zxl!`k*i-kxR|b>fG4s5tznl+}G}QhA7k?W^%|Ga}o;Q9cpG@`=|6s5_2JNr0-U)U} zhTQ)7-L${n{Ay<|*r#=2fNXJ|OJ3-)(`L~F`3DF`@&PL4pym~^Gq>sWO9yd7_U{%M z7m51Id)4k%Zx%mARa*F_=}p*#gE%8nhx)sL-Beyd?T*V!NK7u5Y;|+82X1%z7BxaX z@{wBprC$HScum7jRqH1n7|Sc+THt@(esbNM?-=Xf4ev_@+7g#iAKt*Fc!orP^|$S6 zZ{Ti}eFZ-`G^03vqxb0UnUb;2* zg^Vj_Opf1?5t^#WNqD$Cc0s(=yNV6;qj4>bSc_$7wC8@f;-3q1_Jem%H|>J!ae84F zc3eHtUm3y$j!J!1;G#WZ(M>h34QNI4%xjxlRf%J2c|F$kY2;(*ml1U6?^5Y6uNUQf zI(GCkx@V+kYose@UWxBqmgWb~tv|ItAaF=tdQ;ET9d_Cumt83ROfQc+H2f&pDZbQv zx(+<-kL<4;vQw%3p^f6Va7kc*N9zTEho|6C^ojpO9-WE+e)MIkV82%5f5jfm-Y=x3 z->dt-C2xKGSiPx^L(ItXv8W_A4iQaPmOYm=xSIAmlxQVD;LUeb4^Y;fklspt(B5`) z91DBE_eB4<_iFOi>%u?KH3o<6RKy9?elX;Cj5jLC?MhpRNx2Fd^s~l&lXF+cf=hf?j z$ZN#94Fd_rGBqj4Dk`|Hf(f1OjyZ2&C~%XZ$L^<&0VbN*XmID%g`Tj3uKm@ zEH5;t^~3pUezZM9_Y>1|m3>Ehng=1f+31Jm*U>>4&#}Uj)&f=|$ zFQfEU?7#^VaSijDTTcF*uD!s2iU7oH^yaF0&M>P0$ECg>%a9!yvF{J(+#Z0>_2s8?w5@y?XJFm4SyJNI(aM}q%i^yzLESnJ+MV-rDQ_UN zM2Q4Sc3l^MqaUua?Ob zF7JFxNA)eTm%t#*cU`405vO z>ML*Cd-yAVm3gkp|Ik&s-`hh!)80JR53b}7Bqv%m(FwdlRNOeHJXZyZTb~jTAHZ{H zdp&&FDRngM{{4Jg>r4uP(Jd!OSNte7Ox6dNUsvQb z_n1CMyK9V3g&7IG-8)fl3qx|^`mxSDcuHPcmukrACXF)|etRB|`0aK@UErws4X7q? z?VE^e1fPT<^e4VsPC7NLzl%K&IOjLpdA`giU%TXuFZr#dtu32=;kZwq%e-Xy1=(NO zKM_x8GgKOnv^VrZ9*P+e!lM;9WFf;Jm&fArh~Cwn0G`+5sQW8RdTBk5$I^Nn*iHIj zfQ6h6xpq=KH9}6=zsq%|u!>XaU&2)Q6?M5<=LI7Zao$XBca8ZC;g<)VL!TxdDF(xPJi&F|Mo{yYfpH`jW0R%yLr8*=A z>v?L@kmOa(mkT&JG`s=N$rp<6mJ%JDc#g0z;q>yPKD(}`#@Yv;n9mBZio6b$w)nDAR<7i8BP>&?e_Rp{@;Yss%X>GjsK{`h9| zO3{1e@ zk>h7XZ^Qn9E-$p`Z9z}DcFrUCH}BK_Iv!W2{f+YP81HDrd)QIFE%HC_Q2R^sizJo7 zQRc1rY`mpMV1%6bxB%)5#z5f<&qOVxr}bJp_59e}qrwlL8u{tyj{{E+Id#%Hwqoeq zV4i5!TLn+#qsWhGemfG7r)fKdT(}tX88pHGU=26+&#H~<)#EDcdSe|i_J84T1K0Lz z@jEv%=Ar|0wW96$J1h(bpRhy9PYuQ!lbqD4L(IlkIC-X5T@5q4^J2FFFb5`T~vQq#Ol>;c+SaVK^G z|9qYDWt=syI?L||y!yd)xBShucb)Oj)bjVQd+zV=C6DhsOX~lw7oScWY0ot#Wk0xg z>M853#B9&yqy(POpRE&DEA7slYG0Pdg+|%)EvGd1#i;V?M)iNWUMnu1s6Ma<9U{qi zOOK{87mo2pe#dyf)Tn)`!fYu7#Idvfvj1E9K`A@;gTz^lyl~jj=x_Fn*CSW2>QQzy z_j}S1adCbvC50=YXS#{7>vYy(uj=`8=F7yoa1}okxp8-a>*mS0hIkLI@EdFobp04V zvfMN-!xKoxHO`lRobzT;FC}>e-yckTFZ>ETcaFzX#$~uHS=l5f=nT)rck@eLmJj%) zLN}ci&P!5$D%thg`0S|oFY0c>zCUnnYh|`ui}W{W2v(VOdgPKw16muGG zBPDe-VA}6)s@aG7coDdcxTSsAIVV3db=!}3zUukcF@IG4LY@!#(0F-qRb9D?3mm9S z!jimXA0#e~6w}YgxSHXqPD1@)?w`v#Y>hgEs(si`JG^zP{A0}pvoO*_ZiiJoKuB`3 zQ&sc_9{tm6U^x$qv~oRA*azG9;!orB=UKc{UpP02wczH{Z!&W$xHeY7U>TJ(w`6L#xoI%N4+t; zp6#Q0XH@@89Ugxccn+C}r>ehDFk+T{x4ssvvCv!8#p|k0dyX9!#gA#&Px5)(MYO*o zcQeku5dF?VTsHBFD~rty`^le%T`(@$Pq7}qL824e10)3VJUZDa83xwF!PO~tebjn5 z_@Nlvkk>I24~g&vh==P7EmlF{pZjOU58SPI-hH3^tAb}X=M@_3cX>U4 z#HTlpmrt?h8IRkYdJuu(5RrK)G~zor{F-we${grl6hA0nZrguRJag{fpY@98KlsSh zYj1hh?jOCDed{6*8~S?7cs#%uvI8KbiI?@2zy+}A!YLWLC7oW zfZhh5+8b9n&I$xVp(ECt;VY=`9<0D2_2}TU%%??bmX|)oJE2njh32jGjcc}n>wp?( zmRo6m`=)+te)k7|Xa8MZ_X)9w+}<%>ZbSUaa)U>S@7AYc8%awRLPS%0!c^Fo zab0}rZy3LAtUu^F^nSF%KiN%u%KSCSBjiVotU5D>)x!aoZkw;7L*4&^;= z5bulMUa!O1lH?rKJ34=cgyS-Rs$# zB|EWcA}%p!$WEZQ+}~{CU0R=y_CkIZzpqsM)nfrIeF05S0?zG_`C+k6*5R$#=bU{? z72o9k`E=QdoF`&nZ-v~ySl2RmC1w{~cpK;tA<1tS-$BSF6`9H?F+YW;YKfSFUhf>` z{fi$uce|uIidSlX*^k*ePENiW@%-v6C#_GybD|dUYA{{{1T{eIJIzymWSTnLv>r!^ zYi4pjyOCdjPe?HA)Y;?k*hWYK8IPX=L`OwFy1I@bKDizp1qaW)U#jfX=y@s0pW22U zxOEGDIu{wT1G*vrs_ic905TB25fNIKzWAJ!-ZSb+cw30I6T>3&}VXcTQXu@m%iIu@aejVxE3mMD)uSyDaQY- zEM2t7$@*(M-(UQgdOm^rl19Ft`f9!^^mqMk@_T6?-XUJK@kNy%s^L0CoMBKs`=4T- zB4dDpOXu~>|2h}d;;g#e+_JKn-wXQ`{oZHbRd;QyhYEo!N7S7ubJgFpKCMfY>fp$8 zWWFaoN@U<-*B5@|B+Djve$hZ)d0es~r--vcPPd5XtAppd=fQz|q@|(ucc#P;a&r3< z&n+4I={y4&*2and;-@>$Z#k9m+bz8`zV-0b7jAg|rX7cqPY5{$uWldDtKv^V@HAc{ zeQ^jiE}w7#NqR$MJVS+k$sfGCiya@dzgqqUUN!s#cm)pv*SE&w8j=?;IR@=8)`!%r z6c$i0->pZCyDH)?Q=Q4G+z#vG5R3Tj++Fy2`^0`*JyFS&&Q|~#~V_cH)YZeR2@@aR<`bEMc(R%$N^N9!R zQ4J4>Vb}GG6ZL()>f@5s2gQ8$C#GUw_3x*;rDWHim?)>Jol0_wIJvYxgAp+K2f`Qq zU(7c|kQDm^e(r9xtoa0u_^(R_1?P z*E;*&e>~)oskv*vcHB$<06P%&DdN6E-_L$88`om8(MNlDU2Et0EtDh~atq?ME-GGY z1q!I5!FM7(<mvOrZo3ShXE;1c2dZa8yrlsGy310}S(-Flruy??3a;Xphq5Fd4)AcndOxENRON-*IE84?B7HLN5%8f$Vm=-` z{#WdI-A`cLp&_rZ3t^{@d;hq+Ck;k~6&gLHNA-W9$H0ZVt`s`*;+ZMW{Cfh?b*g`1 z$i(Y`#C{!RJ`eNg{_*#Af9;!lzdJSa;va52{Uu*>KAroFe)(0>Bl$9H$Wzg?7`A2D}ckV z0AYx-qjA`d3Z!@fdaq}c`PHfG5r4g5-|26#JE6x5$KwLX2wYrS@{&NsFTWI=vc9gy zP15>w@GHeN@)t_}g?@R*ooD~X>yCbG>Wo+4_qP|!G0z~@ZwNhJD&D8M6Pn?Sd}N+Cz-!i*;lCE9(PYS^|(^qYntb`>-~%~r@GXz zRGDL$UtFLz-+)W10SW}hP5raaNOxtNSz&XJ?M~^Ri@f^x2{8T6*f{Vi5Tn%5I@3O}aK_fg}3-z7 z=NZD~{o*9AnVFRpyJcL6#Qv4}4vsi#{#7UHP6qvAo=?+gf3a>tw7(lBw!g4qA;Nf6 z^ObS3ASI`K)bO<1UT=3Xdo`QpBUjdYQrwJuEvFl$zjb9_jJDe!^I0Vy*6-q~RsBVN zL2;k_2YPkBNg5?dEH;t%CtoZ{Q{H#2`ZqL(@m#ip=fn(7nzHgnn`IS4azHjPppLoN`&wQA95X$Rid3{QL z&06gTA}3(LcF74}f&+PB2;(h1>XXK0Q>DM*L;6DdqwW~Nq&RhRecYxVcdcytTeL&k zN$_j$lav=)8jQz-Onm2D@LihI3(u>Oeb9?``=TBtR=7?& z{mQ{#{10cH$NoOSufX-WiMU4eJNQ({Nzjx(&ZB@8I~p)QoaCkOnGZ=`r4EyQ!y9>H zjhFC^=Ka3+vyMWVZ^wlyhwVFOs<`O#EUU~fOn>Onp`q-%*29o&RR`ucwb+NcJ*A&+ z_<@e=Q$PKK@$xEheL&9nB5BS2j(#UQ0i0qd@T)<5Mwjsj^2XtBwN)=CJ$5$U`O5j_ zk4)Y5*}weFx9lOlP@X8~LmwKCry-|29#1>mh7clz zDFh5dNPpj2d+$1@PTjgm&bzN})v3C5{%5VV|7+OOOgqH8a281VKX66wDfte5$6@27 z_70|`xqGpFt!{;<^5z7>4BuwFE8e{<)vgbKs1Y?i?B6i+?ij?pCcZEJpd z2G<;UCCy|zJmR87alBgU*?XqMDKBtX=R=nIBfd2AR=Jupm`Xn%>*FH+8`ygn*FEkW zuF)P^faaNc%yuX)fuUFPLq!&WP3*JP{7*lAI9&6@uPpuM(|+(Jk6Xv?i64-1%ImRr z3Rjp~w!6?{^iPy_i1u3i7rM-ONzJ}?_WaL0zleF_z!KNv?+UIEO4?Vp$F#3#kL9Ut zm3d{;`3U2fFJ;~6!4G-#;UB%r3;DGTYkPUi(jJ5Sdp5KeW8!sLAqcu6y|@|MY#IUV7!xk3M{l-z$C^V8QQCy@)#U zo?M5`wmv=N_q^(0oT&C3am_~McjEb2D$c4Os5oGVOLKpw+8^*wRL^n(~e=x+z|n(R41BtR^HpW3-PI&>R0Lc$;KA8~8lPmXK0JgoEwWF3hX2AKog zFO7i9b>akH>RbJBAbsAVzBS-2cwQQg>+e!-2g*J=+se%kcq3>l>O0$cv>Xmj>_{W_8N6y7=jzVQhMtVwdO#x=CfvhITTJjN&QKCVhE*B8Pn#TS31 zrRfa$uYrx6+Wfi@Hb)q zQiYL3SU!A8yv)4H&is=8d;t0f2JKK>&~oVEBzR(ceAY$MqAIk$J`=K!9iy_7Is}z+ z?Zl@+_s5UuZ)$oBJ8S-j`q8By{clfu<=wx$bkn1D9QiYk{im|eU8#$lB0n6zkXK{B z$tkWTFK#334Wv3n$jgYQJoR;dyzkE1k2&B|;$`kG{q&*5?GYHPGqPUyH%L@=x+Txo z@rGVK@Z^*7*k5nD-yW&s4(cMAA7;PP^RTPQ-lL#Y_!()?=ADYA|$ph!q%5s zR`R*+5LS>{wfFJ(c{BY4+u`cwJ?BSUqZ^F-B#yww-e&2c**hZ~kWvUT<)!yaen@%w zh$BRV_-UTT_Nw%+K3`lNe$eEqyjXv8Fm9%sC%$5_yZ{1EsJ({EmWYH(9N~DU(lR5C zXwP{P^8u#u^39rE^M{@BhTS~uGTYzYl+z3^=<&o8^CbXa|2VH(`{PO&P@J)R1V-K? zLDQ~0Cb7>?^M`%DBHo(kfB3V^Ti5Q-b4A#j%_qGcIN4DP^m!^6=>G+Oa z0RR*gmoldD(K3a||J0&#o4nqBo`!3!j=LYk%kYAcT3q+);PpKbKcuFr4y*p;g)WbB zLDiFS4Y6ke0FHJp4iCNJ>ec$ehNsV?*wuhXX@A^S^84EswmB5e{PVyccGu^9=eD@!$O~8*FK6AsyW~KG zJ}Sk~E$i8!$HrIv`XBw%16=1SucF8IY>R7-yyD8y2nCaRRdrK6hMAq$tGD&@v3cXS ztvl55zwf_OxI_UCot?trM`;p;5?7HyGlQM^{Z5uM6U%WuOqB`$glanY?mM0R&HLo@_jtjFBV=+I}?5=P<;lk8sW!!q1|=ndi@3P z{eUlwZz`^jZ;MNf&EQ&-$z-S;2a#ZqRl}8MUa!3PAdd)jhQ}(de%{aBq`a=(78iyx zzy&*mot6HA6jIL9QBdXhbJuTab~d@e)5H-2Iptj>p6j;7Gfz%YG(xdh6lm-9886#A zSg&k-D>*TaJN;0n-!AJT88=_AAKIVmKxb=HDjrimWZbOf@Mr|>crE8agDdhyo6IFYMi5I9}QcJluF! zfA))YGUK#5dNL>p1+ItOxGP_>_C^994f@n)N5SVvOI6JU{C-K*B=B z711dMP9yUv*r-3Ot;W7(%`dk39RoZE`IZ_#d}*u?}GOC z_CJ6Adq4Dye_49M1xLRBKfIN7ifDJdlX$+h5RX^u%1L}`)Y%>4;kG!##n(*+S!ZUv zw(eeLCf3%Mse?dd$>)9jT~pUP@9+jaFrM0ih0@KOg)NgI&bLU z%G~t_Xwix5q1)n`C$ESXFt!dZgUzGl^UtEk!-`9!z zQjc0YprU>h@=ELSlnkb*crs@E*v8RQKiH3B;H?3lf{Q;+yZ@bw89!F%S>&%q)Sm!kj;+W^kE`=W+zgSK)cxpW>+8=myE@4+W%z^bE z&A|wb{hj-$*$zp2Xe8p9yIzsw>+1TLPh5;gIia`i_^i0TdfP#%i_{`sr-W+%YH5Sd zw{FV^gFk22qdaOk2qmupN9^+rf3uG#t;+dpzSf2y3U(2S?^ z#KWX=9i^!s+;U!a)<+Z1Dc~9J$vQIM!aQ-toi4t8X=mJW z)|C^Vc5grRpbifTvWB!X^Bm)JM#LM>=%=fx<@!@iZhanw-&1a#{Upp&YrXVr?d(qR zD5xmYfQKupN#x~Fc!gxdY-(@E2KM%fUi{wg52JoG&(5&X^oK88Y-jo%uI%G@&oShE zu}%;&sq(UQfTPq)iP{mFz-+r`)b($IPgmc=dHFQwvEROQ84>wN<^_d!Ds>OsLvbng8!gLofG3$D9xze?`lPd8>`L`gJ4fSp)saUsX;QER>UV z$u3WX$dHSx3iFF=i#pKzu*vDrAEMeAkI3gc{c|JNH8V~g@H=5oyoz(-cYNw-hspS2^+x;4xSe@U;IHv0`TSsfcelU%qJ?t8YUc4)3?9|U z6IYbuQEIe5l^GyM|GHC?C(|TRv(;B&wbE z#|!E+j;JpNwbrlc;gbymr^@>GH*L!k#vxUuTL($!X~dP{r|7+S0zs=cAv( zX3779MSm_+g5PofamSMm_Djk6>&fe{S3di4o|8@_#`VyOb6ij9H);KsQFqj-aJ96j z&@9&pvP}P+tq!Gz-dels^V7WiCc6{T&aVo+WxqIISoyr*ny)u5S@>x}3nU^!jijUU zIR#rFL!^T1^Jbq9+I*tUxVmmUbG5kkmVR+??N&rHenvH<{)}hPQ>lAs&bB{J8Fp&t zVX5+j-saR^KG?@aJ!UXpjs6oILHOUdUA(-pzK;uF397$$SV9}{6xa8#706KhRler2 z+7vtZ~e(ONAGDJc|FT z2kKL$p+}_c593rkfW(Ey;}=%{=dI4n8<@9#pZx(9-$$^oaqv4A>1opW>WX)zc2*PfTPbBH(K8ejrRpUAu^FXgHLm zuv&cVXGY^g6NshNi`sgzgZ`Vulk)k}BKar<%|;Y~Gas>H?TJVr){CXh(H|}X`!9<* z39s&Vn)VcY)$Hl0V~6oV;!3{yn!Hfjp(v&Y`r;b>c)gBeGd{pe3X#rkgu6zc+fKaXzpzK*?{-_-Hk z-`W;e%F8P&ncTmGSB0-cZT9R@$4~Ptj%Sy332Hpb$!1^p!@>Fl-MHq6OU&=rBoSlpnMWU<=YJBP*9RYY;Uwonavz{Vl>SDf{MbzYRKM8l ztY7awV$MF>)Yr&Pwi4M?$T3}O&fWgtN&?o zi}5PzbFgog{<`8haxosRHm5yW^e^@$o-n4+BM&OHJjVV;jVD%b@D1=}ouO0TwhmeS z^L;NN{=38ZeC{7@(1JREVg*0sV}VPNnft_lt}vO6OSx!^v&d5ic?G!Wb4k4&wOCGJ z-__Ea-jG9)Q`l4FI4Y6#Sv9N_6~poBI&kLmbAEdq4bvd~A=^@Xnomu^9&>q^krlY*lEo)*9=>#ID#-mtwt?92HFO#nh z`sJctRO$^6xrFgqrT02f@=OpJLPbkvJKJa0E=d+BM^b2-*UQFC6mD`_t##W$ zy)W|l636@;c*Z9~gB)An38|&%O5N5Ehu-2h6r_FGKUjgKh+=<$wYu&-``hz2^2v4I zKEIUfzWse&FDT{nSlZp{UhDY!{3;uND<4%t-rN}<)7jT3>S)SGc8W+Q^Dh2MR$^V` z5%OtqRg=%%uf6rv=RW1jOV>T>&;D?9A>*U%7p&{0|IW7UZL=evA|?JB96f&=lBxCo zBBt0!7u4yG`}|FuFyNmn!3rv4spdu#iK=wV~sd-JZC&z>W+`?zdv@Kf?YXdZJC z3H3caA=W_oW1RbjH2w8?;D}v?H#_U8WV=h=e9~e)BA~SX)L?nc@qOws8KM$UnY{WOp1#O-{p z&Cl`b$kI7h9Q=U;Wby^SVt#1jgSKzafDah2gVs|{PhBJ@@Wp^Btx4Ocae<9B^`{=$ z0EWYWpz(o18)g67>S$-o>m5hGM4O*YzeKJpe?!^d=x=lVpc)@MeGx7sSM`TPn$>IX zwnK!}+^=pJ9@i@u6;4K{_TrVuBbxrmBL;P~mQ9`Q z`F?3DtQ{9Une^AA8ss+vJ%)J}Jswz$3*BuFadA!Xgvfk1wZ^xWXBsI&8^`{YtsVCJ zZ>aYT{IR&Wy|DL##tA3S?T-uIVg-A+N8+Iz<9`8|OP@qjMsL}*z>bB+E!$?S`P zs_{2*UGj*5Uxw$oqs&vEWxRK4$>&EaJ2vdU#NEhSE?QOXtB1=Paq@h$LuY5pqMjly zF4@g!a!K9)%qBB4&JepF;7a?-I>U3|`Hg*99~H&)U>*gRAw*%)|Bl)cIR_Nf#Am}F zYF|O0d`x?zRhmlMBR)A(yKnwyt?o-RsIvz@lz8EV$SLbq8tlsY&Ybt9oC;rU2FiqL zKeVc!xLzzwl>1JgJOGC14B+{mFucia*$zWr&Ra{r*tdJ^E92u1&xhTY_IUncy9d^g z=efMR6+9ntsB44p15d!BK6N1Xc=9swZDIG!I~m07>3>p>7hXcWsEjX~(W7#+Lu|A< zyM8mU#D$V07D9tz=}|Ajw)ycGpDwP(^Q(X7N$h^0$8KDFQN-)n50@INmR0pQD<=S= zD&u1PjDJ%R1V0ooUi)i+}3BKH}3$|7GPJfB#d@WgdCVt1a#Fs!Nu4 zj!)cbJct&jL}qxk;X+V}OCbfX=97Fp)p}%$Z=#;naLx0N=F!z}zipws#MQO4S~o(M z;fKn)vRHqlgU;6>RCP9(@%)P&KhyZDA3uX@;2+ce(+_4mRQCNMVq%4-lU7b*g{$n(oG&lubzm<1 zjEOZUoskyiDZ)XZ;YaKrANA)q_5Bb2dJx~pHdS7Sjpz52e%8Lc>bi~H2-PL(T0DhdEd_-`ku#p_Pdt<^ZS1Pl7IUPw=CbrK79OH&V&3?#1mWc7vD~;v6pWEMfG7W z@H}lLz7pZR~tWc=1CJ5@>gkJ-~H-^{S|?0y%#@& zH0Kcof5{K1jdsm{>|J2yjo8T~`ZqU5lc-CK*0gu)62JWOFZr8iJm>+-fB7SCJMbS~ zcCXwAnmY^sbI(^Jr<1z#eu-1N^L|^LszlIL2-3%p2ZX>A1gfmy2OnKOSO+9H4Q)if zMQ0vZf1k(JU)SlsNWM@1_(QKIPdh&2!DNB}z=L`W>*?Ss{TJ)&>wGqvq<>>g$&?n8 z)9e|p%fsiU5hk>(IjiF353fa#-lBm(tklT%LUOvxZ8p7=EWU%tY|m0QTE)o(gH zpYct$!(YFH`UA+c-!NF9@Vt0Zd*TW;Ch*bd64#q;`E{Qk=8dPZE&)SFdwdM~tNAq- zxP51xUt9ZIqdkV)V!m2eZbA3KtIjUR?vaxWFW-CE3Mko4_d8bRqo&6}T;Ij@*jF2; zrXJPF^gyd#g7`UnOuXR-)T2LYsNx}VB>?2LTBO_DU#rxWc5ZN^Mup<(#n1HDWk1W` zmwuKHWIs#w*S~WI^_YrQo3!1_Y1>EFZ=ZE3E9DP>upjLlIUW52K z`&*Lle^0(YVXJi~Ozp{o+P(v&-%fF*yuz-UjAnQ%>Pn3tcHZFU@IQn6mAJIY>4du? zC+rI4#S#jkKVF4wrg*GbuD!yz2L07|nR6{(K4N{iE);QKiGIZd7UKd=m)|YTXx}>G9=`_;pw`-M{EqRj z6<5wHQhx(`LVsBD}I1KZTVO5m8hU8ZgPJFF{aYK%Kov&>utTpfqfIda07|w z72uidp~B6<7~k6&lD0B&eKGzy);4&v;mP(!Y-fIth_cRXFa>}$@Pr@aRoHv(Z-uAz zCTDn)I__Y9<5(ZN?9X|{wtBN=b^S7zh-$LD$-VHdI*Oy%cWSM(KDOg85?334@$|jJ zb#agvx0L?x^~QU9)q@ukK|Sohn2i@0gN!V6YzRw}Lh@iXe9Ffl zpSsWIjK3JHL!INZvhIBq{%_~WUW}1C_*ab;td9p9NxME_XxGx)!I-1jLb9=CGD^23k*g#Fo#+xgCD zhwmfqTR%2OAy0^hc1>cP5CVu+|BfKeb}(YzeTuaD8!cSs&Nx{-(1PpHfY(bz1#C6O zXElG*uOl5%>qyrx?Yi6F-sj$b^^sgJuG-lL<%tr{@ZEF9+Yz9&cA5I5+E?mslhJ{& z1QH41*mG?^3n2~h%-R+Doi?7PAJ0(F9n{?jJNTN68~$P2cG>0klp4};-8d-&A!+ca z(-@h!)HD&6*A_x(q>*V@yiKp;Djt`MSF)8hcx}I$Xe-i{1=Ds>U z%YL0L+8aDIh+ndwF8%ZOUJ8HiU(fOHSm=QX<9yT`$dBfR=~(IU=bqrt@XxmU&>Pld zIROTe3>9Xgn$2!lSe@DwIM7{I-fnOil~h`mHkUN z5yS;1h={t>)teb>iaqRc?bL*^@QSA9-ywzcD-XOYxRhepRoSmBUW=Y-0#x8SedDXmn`RI7`qH0$*n9<~Oehj-B z@Huq^?lbW`=&s<=){32jOB2MfI0BDXjrPqvo$L=!IYoZl^tW8cA%1*m;{^wQ@ZKlC zC)VYm5hY(e_)_W{Wq&JM+w^cgQ{)f5aktK_0u(n^;wSzFu7t=5n#?3Hbc{b}{Vc~N zxBW0TZV>uBJ~yAK_Vnx9$|+GM)OGJN$fjzSTK4IA!yz{<_IUP0B5-C?SQcro4awuZ<4& z>YsgF^fwRY_uAdbO-H=9*SKMC>90gQZJo$o9b3eSI-!@in6bRLfKimb%tMsFuv&jDWTJeleICko%v#y7pvJM*j?$yQQd;#K6 z_}}4)bicr)jko&sM*Q@=b!RZmD9!x{Ed&Q%~!t^5k zYy8z;-(}vo0rbZe6W96M;_}L9EgD35j5>$7EDzb01z$v5<1ikumJ#Rualx^^(v-hC z{gmM0P7==r3-N^h26&VMDE&$P!ph63_+9y|u7{fbaP14q5I!BOs|0T$+-!dr;RoCN zg}nWcgm%QftL8N`c+gMECsgFSYB7}Me4%`;cv?PrOUzdt`~3B z4;XgT;ZLD)X&M-M3i+tbVme_*DIh;G8qJLJsO@dwZ@|NsroOIPsIR~?BOk8MYJC{b z6i?AtjCZ#wOAj=_SIe8tu2)@8aIXENd=k%_x5cwL4-ex(15eC{GiZq=4e94rRv>al z#oC|AM+h?g-{^)Oo=!i5<4x-NHgAI;*W7oMGfHE6g#B=)8*jQ_o9)`HD)|vP@kIUc z9omn^6gD)O?2CP9E1v%RUHY%S_qelu`niw(^3u6Kd(w+Oa~kuQ>`$(7%ljA037B16 z2^>%ablL8;qqrr@rSg$YPI!b^$GcVARBv^k$#>oTk*j+@|D~nTC%@-jFa8u_gwE|ob_`)7(ywMiFG0jS5t4Hzwm2O=*fK?V=e#y$I&0! z+I>IXL~j`ne6H+IeQos90xa$O@M66Ir>nQbh?vvAQ6dIkM8h$=%Q`Rt07j11#*+h+ zUDTsSjyk51Mx4^EQ(u0}dAnbI_@qk(Xpot2#_8z`)%e`8)+wwC#-p&I)J|;PGWw*3!k`r*<((-W$E_Ak9zpZ z-!N{^@z53D^~6!@CsAMGNC|cAEAyG@{5b1oqDi?Kr=;AJmH4zOO$Db%yz*>$s_C=e zA42_QQ0K62R&m`(TwLdWB8$$^?7kznTJJP`^NQe-3#@yH$9OoI!h-+g^xk^N{kU`9 z_)z<|F@=!l&Dj5BKLgT{F}3(yFNK>X4vzP8A1e{#0Xy;f4qXFqz(>=JlDPo=k-r=` z!3Wgq8vV-jBQ?48<4)rBLES^^t?l5}JJ$}%`X3>;@H-+$M&4h%mUZh9^Q;=KzTD>3 z)3FKUpY8J-i*ZH#Ioh+);?Gs@=CSLR`+|JkVXX9w|cS5Dtr zj7R;2eW_+7lIt|!{HPD5oPZLnYViksDksRDu6JnP#`I|W)Wq3*3u_GVguJkKM&gJo+M_&yrDuDzj+y&&Hb2zoedIN;_l%1Z z*8^TdJ!a2=kQY5_xYx*^oo7|sV~EA}Xq24zd{k~WzvS6sU&&uBPqi1-{s@?ryGZ-$ z=l6%}Is~10R>WP%JMI3#uUS}cH_M{B@8kI39v-6}3fGG(vv}wc^`7kit9j{9Bd-zrDQGF)^YjS&lE>m~zU3nykkC&0a~0Igcmd?}^56NwLtgo{uP*)4t8RYu&c{+OBA-D0DW`{RE2q*P>1G!} z@B@Dhs5L+rT!p!s{sN!#tUBX#f=`=&yk=v0^{`fae{o37Q{3?wm zaXn%&E~JrCoXQJyDO=vic{w2~9~v(8I2uRYh=!4NwS9hSeo^K1i`(Mr>aoZR_tV#- z@}nmnc?u5}2?~q4d$ad`dz{DfnfGLSe2nd}^mj4uaT4o^9g1~kYI`jCA^x$~|BcA4 zt}C<>kEuOwxRa0ZoD(za4EELuXPm`gyo~W{)#q>BDY>Oqi$23|Z-&NEMD$zAs-f)Q z+q%zi$)g=-*z62`9n{~me>d&yvD@OBV`uP}MrIwvcV!ZTd+NBYZP* zIk!4)rw)>JhpfLpUjAab1g;38-9_^k$T_8&f6j2 zl+)_piV-}6ev0I+#Pd|;Lx0yCJgbOiE}u^8wjzO=Tr3uf*Dq@CXpU5SGRbv8DjwFu zr;%2F&3a<#7yEvv+4*>}J>hrMOjl0W5B)i~VNA)@BDJS-ptp$Y3r)PX%ri+jwfWEk zJIem0%o~rD7fQd0-#tC59nIoFEgl(fNm7AFP0iZTGxa;@E!$nJduY2GtfOQ+gS7?^ z9YAlRljrJ932?P8e+pPL@rd{@J`wPIKt2gJ&9XmVZ=>#OGT9zd!h(w>;^EH$`6E z>LG^~;|jS<5hXfDpMjR29RCF-$w>Rggw+A!LtFO`z zDlRK7+r4t*G1`6j7g2c_>6~I--Qv-H{smwDr)wYZqCflLA6tIu&b$B1Sx^1fu|Ex8 zo&N86uW?9AyjZRTTp{j_Fqc)&~)S!sM;A24*>La5ayQkxs z8gCx==o_AL_8)xb@`GRZ;8#53@|!c>tA6;!cS?T+6`0^l{jk3qKh^$0fY~9w8ufKP zRru)(oSW-cGQY|8cfq!JQfi5$Jc5FBnD{f-%>*9vJl*GrUq0o5y5g8|XdAb0tR^1j zd+MVrkE6FieiQT6OFzVg+v38COa7olB7dOy!I#PjeVIQH3>X>2dd=z&|4ei2#|8a7 zl{hc?yyJ&$9hI-%vly3|RtTvpFB=znpMNk(_($|8bAz=3}>iNBX9QE|cP>6(s?7r$j899R%KF-k#0l>@Fn8S>n>|>D^XREES@#o?^-%$Y zA?cT8RQ_RJ6YAZ)`DLH*bF{;Oozpf@ciPhzj5kkAK350RV;-OT0j>{D!GxYT<#pmH ze%bafo_;^hOdQo|cgP28Onu$Ft-jK~aN8#xJdl8KbMlnyF>uw8Pnfy>#e-5e`Wlb- zjdtt`9@imL=jPouuKwW4a9xeiTNxK~i*hRcZ$!Q0SYI^fAymBun1U$AffYH0-fXL0 zk20txpL#Qm;Y0A$?&&(2u?|Vgs~Cqe7;ojc`daTe;xgjA14tw8cx9!hKkl6@l%yqe z#OgruXV^=$J6&Q*h?5AY6L+d$#t~7cW&CBXFTZvJr(9otkmuPCSL@n$yNq!QrM|~m z$1SW-k4awAYOGUr#?#0CFX)eVg3px`U&f`tV;&TD#seSe*Jt~2OIvrRlP}0m)gK>u z*}^)NxcHBbLV%^70H0TW%J`f(g)RUTZb6bxC_AFoSf2||-0H@CT=>61T%7fUjMMLZ z8SAywb&-+RP6L&;zI@Ino31}1Iz&PO8b*YmO5R}n8F702wub`CdgdhgX>R;E9e1ifmy5jkr92`p4tqCVCuT%CNX+$Hlt=_8 zj04+JUW{89j5ntL5>rZf{m^BstFhmyYkI5|+WowJX%t4+&P0hRwE7U7z$r1=k3+u> z%`$@eaD^w9xIN>mz8}11viy>lzw>?{zwL8NA9~?mJn%nl&`*clu$1Jl``;-$6IW=I zyTR;%T&OBANc+2$~u~b zPan7~9xRC?k(5WdAljpyHqjnAK}ojdT@H*a`^GiDJl?XOKI71|s|Q^Mj~^ zo6_ES(BJTzb>CJy^I6>04|8WkQ}V+mc=#B~6ry7Ca9yX>teds^M!y|mSA#edT>NeN z>fu0U>B%AoIvNM?UA=3(L6Gw5NW(@o-%) ztixN0EB*7suy@vF<*U8rM3j%pYZjLu;B%T|;)=XRAn;Z2gLh0ru=YNQejFT7_WNq* zeEfpXz4VBuU-YG=hy3ZTCp_g-hnJn7%b%y6KVn|;J&@z2ZXukEY6t(=OsT-6}tWJDw$4MH(PT5ttn zpweQ!(Xzf&%*Ts5c8eQ`KaYOlS?4Xi^SY(?Uw*%n&iR24mprhn8}sXn<%GUcs|h(D z)fZ=l;_qhV=?~-Gc(_npb)0>!quJsH^7z4eP8qMKT|G{Dosj+Z`jF|dz^NuwB=@;=u8DTXaavg?Y@WU2rw8L6WB<*U!X5c7<@v23L(w z{mp9?Ia;*N?m0&f^N7e(i+!y`oVDdR2lMQ1AnX24*`L zkDg^cW;)O18=Nw3AJjXHv+DT0@nSiVpLXRmjc33?KA-I`go1ojY1BUz7XQy#Il41H zXP=pksZwvsM_G99p30{f6Q5!|&)w^t_{wI1 ze4@^YJq_Zk^fzheJK)dJzD4Vw^u`xeUKdxGy7v-N(Tb+)sVTZifBa>?zCfHX$V=_l zt?}r=#rm7E^D+-zepG*2jq<{(BuwJ%up=H7>4^0pI{kqY`@tJ8!0Q+M>2E&qqYwD_ z(kE~Ep|>CD`2UPYlh+U3L0n+y@Ot2i_$B29CXW^`|Xa4YTk98d|vjUncx1pe4w@{{%TZu=X=RoYX{=g;5Pp0wnuzj#VvA>?HH17YYdTp{g`?^VJ6FZm$R*S!3O zdGhI(Z!UiMQ#r4z=FKnDuJ&{1DFY#tL$mR!@WSjm9#{?Upedi&{){?d%u>gOMG1>n zNAT6I>3H!zFVOzx@>S*aSKM`Z1@PMbqGwd=Q(0=0Ts8JF!QN9|WBYC7g{&`pzRc&E z8Q*tV$F4S0Jw;A29#T2Q*?h~#P>=HQ$7Gqu5EOn7pDZAJpKh7)qCK7}c(Nazd4eyw z@+p6M);E^U_<@rjcI;O_yL?;LV=@oC-29Y0LVK9SmE*I`{|+`@sQUv1C{}d#Z@3;< z_@8w&o;X5aGI?b$pYQ8$UOu1gF!}R}ZS|M(;=ke*Fo_&gSoYt$r_SE3%UrWqUV}Ks`oB>FAn=2UOB<+qEcPCnjdiUX zu6`a5zYprPj#uCa`+KMH-tmjZC2K)l-U8ApvuMF(-08c>Ch8u{b9S@>|EYuU?>7DO zdX8(Iu5aDfC+7$K-&sdaJG*wV+_?IzKGV)jR@EQ!3;U1e$TJy@d$;kr-dwcHjNd1J zuTbELK^+-C&7UQnf7liem*pU6;E1PO6`3VZ_*>cy5Uaua0VNb$_Yo>}NaIoK9``*T;4CYfx1#=pRT$||o1o|(AneDkdq$86Mm zdEjTvA7JFL?^~45aXAi?+p|u4`?OB$CHwXh^E|m7`9LwGz9{%P2G&ea=44!lOU1lE z`D{^#IchSrYxn>?XC3BVuNBwcdE-rD-w^YxHNL)DP>k0WR@xEj)Q+%AM-=jmQ72%d z<-xFltI4T9UYk1mAl|boP~)p3U%R~P&~bdPO^1tY9AKRoBB7N@#;N#)5o^sUw-_(P z=gbDvihzgQ*asdu51U6+<`cwyh>dH2nE%JG?An<2C#_oFv)z4i@4vh4{A)h9^t-#h z{(rvvKT>Z@`DeSk_iMMSYir3>UL{{{@s((dLn(LIWt#DoR6t7@jV|r+z}D+#VCOjW zQa66B{qQ?8uHyEipCsiHmV+tRJh|i#w!6@u`r;{Av33O=`Ge9SVDO$}pUtMfjjt5> z48}og=hdF>k3Eg|?+HA%q3IFrZpP02fa>+&2`;AF?re(X2vo08J`GQQ9?lVeI2?Bt zaq(Kp=>e~0Ucx>L0NTjRG1$M=&nPF6iOaAcxJ$u=oJ1Y;g^51T`g*Gih2LxW--VOm zyoBe5ou@q=wXHq%d7(3oJw(%$SLiPVhP+0j)5V3Bc?A4S`#WYBzjWurJ`j2B+IMs; zufW~kzP=XgfW?3h`n1p^0_fC@<%Ou=sYLq)k(d2|8dAhFQF!#kWc5&w&-=KjqYdJ! z+3K2-{2sG5_mK*qfM>_A3&QvwKzmmi2k>xzy7!d_;V1i z*q>C};m^?yC;Q5VUiusNRk2@?c~xcuaqKj|Ih7q4bJ{6%oRtFB*@7cVMo`s>se`~Z*);%4+G7IAX$l+W<% z@0I0$fBnxq)l~>X?pocF-GN)M=;!rQ-blB z9TyY%JPOZzKE@Zz^MiGNjALqj;c*M`c(qLyU%-Z<6_m$Nn107535Aopt5)qD!&7YV z>e__*dS{*Lw!Y&aZ;%%dZ^-ZQ@>Qu@Z4ynzIz%)5-;-&jG4fJ^rZWC|J;#M==KNzn z0-7d>2(Jui`gN=Ry4h{KKxdqlyk7P8)P-`gm2HM_iiAR1STU))?QlGfaYH8ZAt(Ds z5K_cRW9r6eti{Lue3^NJgSv6dXDt2lPq!WJpS!PwmjzC@{fUl~!3R@6h&pL@5ET22 zAtyyg$TgYt_ebsXDEvOamHkPn$3GBPnKx?;Fg+TN##s!S^-yYkA>@UrTS~}$85o#Y zxMe&u4V*y(XDk>mK>yo9|2!7g7VFt$od~@gyZab$8L!*)f|S5x6O8s}JnCVc&xJy0 zia}s!%BO97%*Ka!!@P7*r|sI+-fit_R)3&EDBy|qr-s#+<_;dqFR&?w1+cn5PsUe$ zyP7vIFXEWe?{;W0F8EV!sJzhnlj=J0g{S0qjvB}Kf>T%O2kDJVTswN>L-9KUen`7Y z{(R12Twt0bujF-ui>M6>DUNCXO}xb3H>Try`}G&bXAkT>`@1qvJqNp5-LqG7Ans;C zzts|tqL*Bk7OUZgLukd`QB={R6Ck2x!VsKAwGc$qhkW*I?W*M!{c#NB&-45slFoMc zLh`R_@7l`rXzRbCyyHMLrjySPV9zpy#_m(zh#1fp%o8`5;U^N6e*Lk}5A)^~cjKBD z-xWPNN(&)VuEr#DI&!aKMzMHFUf7xFD1bQ5-D_+`jzZT}9VTr@eA7Ivi` zxiqDO$mEkBBA$UU0Rcaxa3l;gYI~I9`6~xKt&W~k#$Tn~w{Z*u{W+cwN(p~>q5iP! zKOiSgkH({&`AAKFVh7SB{9%<-Yli`Il=By{tBeI2{RU*2`3m8>-&#bL|FYre$&QV!Jk{~(~$amf9NmA&GC&nuC|Sv znEl`_?gOBo;O{go^p_UKGXk8o95=Uxzkxpo{kzs>YF+z-);~^6yTVX9$GmlJ z`~ZKdF&BBs3k8<_gZUJ5H)MTgZ@uN1_oiJ9_>(vWl1{t&_(J^=#uPbWLkyluz=$XO zAAY#lIlr`Q7Mn+K2rXu(vqle^Bhd*yAFtl1D8ci0zkT5+{^^>3URwY0FQ0JAPktiS zQ>39Jo=+^q6IuxniKO6(a5L>GUx|9p|3O~)@@p4wr#ee!Lj z6kOM1-{WJ`juJt|*4CZu;41k8^vFF#d{FGjS*F2P0@b#GHje$KT3w+ZPtB`)#CWuV z>n7}bpV>hi6_dZ~I$*Q%LWnp%)DnDd=mHKcp1K02l+Sn^O%9mXU;?SX{(2Q3JZAZr zOD?VFZ0wA<^PZRAnSP{%P9UnC2QGdG zJ6JFyf1j+ao3pxaBsuXG`$FQeo80Ej6YS>A_u3ZUP@j;Jb=qi$@jyOd*RMOm4}&}qc{hH)_g%mh`pb5xYSo{H51*>ncox57oi~7|-N$$x_4#Y}`@#SH zl9ewno&M%~zTtV7v7TDg(@K5lS1xycgx~2GlXJUXwRLs~+j@s&xwd03ck5AjG}~dh zc4>$9luX+p;8sUx#(cMG_p8pIYWgGo{H`C|_lkFnZ(VxWw?6*^_uafP_=+#d_V{ay z<+Me8q4E`X0$|a{(ZS{GgU;8OuFv^3&l!Jy^on=?(wDz``LC~g=o{|&t6#0-1F{|d z*5%gGO8<8XBP0^>0g^LLcfSF|c>F;gWBeXI4s~$biAP7MD=hq}{CHzDdiI!1W@=CU z@w1(AjyaDj^Y$lQ&UmIni6;m~`Z>U zUW6xf)|C(5CBE8_NwL`a!2`ZPiP5|HnSV4eGoFfOI|u*TU=fJ zh5D?=#=H^j+_ow!=;!dyIz(APH#mB(@f~qzt+#-ywL9i{5B3|*csOw#yi>T;pSK=% zg)qI6uYtoeUOU3W8kb63dqLo0Z<3Igbz*{rI-Y(std|+K5*LO%FCu=KoLu&4Npbis z9LOp3I4iFZlJEF~7tyw9a6qyBh2i_0<5eZ@OnF89x+|~2ywh$TdMUW-deoTtYK%L% zw(e)arM)~yLau(#v?cSb_=IR|f5^{_i9>rIy>{gOip}18?QnU{_(t_u^S{l-dTjlY zQ(Wqe>n1LF0;z#QfvJc%wEorAx}SUMvELtm;g;i!v!3uC{NMOcj*m-?DIJem_nfas z@PrgVl#^(X6U|U} z3`7*5ouOaO#5ks=zkYmo&15)EC*#f>pZWi=tMLgZ#n-_;)Lm8%kched-V@^Z=n{23 zExK!8YLgR*4+`TiIYsF}f$=nwKsh3g=V|vlYyCRvvaLN5e`Z{DV~MNiU&g+g+-|s2 zauZkMiLmoc=6FF>u|PSmmUrFN_Bw69T(W3s=dv+gnRLW_qV^1AKv2$_j% z`anC&{S_52W=^uKy<%X!X4>D0BRXzm|MvT!Q zq8#g9@QfV~kTj*KkH@j!V{Lci(MLEdp4`XchO&>v$6_8QZzZ4q+Upz_z90_flij*- z880MnV%M6z`m(am&9}IdMYBl``{M`KKea$U;7>eHd>!qr^l$s!(}VV}mCW!!cbu$v zY#ClBj;61C+26-v^#;!(pFw_?{X^N$w?jN9=K63$JZ4i}UJ|eZGt-PPGx!@Rg*y>n zI$<%cQkS9x*?4Jv%Q{Qc@k@TU>viM_&(8k;&4GMuTXXPWKk7?s@o%_ov!|!J(wrdy6dqE?Rr{wO~|x+ad1s!8X=0~adLD#UgY?gy%MpD*!H>a zx#Vm&0zsA)>%fOQ+Z9}DCYSL@?qqKppysA-xgQuk^4V*0F7mQhtWs^nwH2p zc$V`L<4L?6pSilblkfH8sJ8CdElaOFu=e^VKZ5yoQ6(+7-ncEUuDn8AfrGO&1{IpP zgoPgCmneM}c?0=O#&_X|r}5p&u%EBnFZveS;lAXl4XPO%tFh1A3RAV^1=`_efT@UL z90wyvcz1`|RF6gnRIJ7206roGMol2nGu2?jwSJqkidsB;^e|43e6;ZAJK@jKOEVr$ z1eLMo@s;QR>o6rzBQkMCcZY2$*JVdixIg~Qt}DV{cH@FU{WHeVm%M#*TRnPZ&;;Ck zl)@!->UY7kMR{po?Zs%+Uw>?8oo_IR3nGphmpBUjO*S|Aaw>0>CRsN%@(Jd-9J-D5 zQ!$=+?fT+7jN!&6c@>}Yq?Fr)jo~`=JftVpYG)|eMSxhCVlqCrjLXS(*{}B#7tb3n z#PzZ+^g;Nw*0IylLqI&V{f1}cW|+rKh1{@o-t`_cgz$-4i*`D*PHEJQn?C2op*b%i zcESmt^={nG7hX1K@)1tV#|Et`58c<*<<+eK6d{-x~3vA*N9 z4pQULK|T@dNEIHtVWIs~xa|4K;*ZjA10PcpkB~fwBa&!A%+vk$b2UG?R`Cqhr|9OV zpVh9){5#lc68R~~1bIZ!TjTo}hZgdIy|_%2_|>Xx;q{IC7*cC<1>q;!?>HtS#?N-ftImv8f823f}gTG8%zqc)}IrbEn1{ZjIH-zLvvnSVn-PpK;{knrVmAD>p zXTHCJUBS!2@2=+-^GYsc@84-WSp1{bQteAAA{(tI;+oR0W92vEwSEQu=k#OmU|dsi;kHYAREJf5s=9le zw?azW{C3+9br9EN-k5y4>x$*wjJuhK$Cw%k&iWm$ub~w?!`}3ei3y@Eb|0@}pS))G zEv^~F57<|$XB}8jn})9ZLg-WqbkOz0xj&2hN@w@)-CPDS3@>}X?ly#Jt|5c}rl(!O7Y z{@%4;{TUgp5R*=BpRki$)Y-yrkQX;xprFR$G4|0wzi8?N<# zvJ(n>dd|83?brX+F&|yJ@y2VO|KWGOE9Y<3@r|#r{ZIQ*yX&jAbp+%k6g-XFX&&fW z6>@P~n-Dm1-`af6;~(|>UTgn@_6A>49!);KXxsM2wc0*YMM}yt+ke<#1z;Z0Jq|g( z1MSk=g@9Mh>!<4uU0>=&AFcbNC!R|e;{iaIj|v`p7z!VO3)#^riT!Yj3@i{SxY0$n z{}vbY`)!C<26oh4ulJ4ml|4BgZ8I-hnjU!gZUx8PEO@&l&`83*Dl~)-bj-4qXM96QSnr7v?2FaoQGt$$*`2kMVoiTvt%?0g*Kc?bSQyW(p2ncc@U{RLkd6#1@r6pGo4zj@7X z$Eb2H_AU>k zvTP-4msfc-yULfrQ-I0wmm~73Shw^KF8cNZul@ahUi!zoU324Cuc03RInid*&cC%7 zk8alqDiV%)+;l~X^yB>()tzrXzYliqp%%M{)jH76OHJ{;A-F#*+E+%<2<@G~XZkMlX zIqGVZIg%wAu_XZPyHeZHC(Pl1cSN?iBd7S|m6iYf-6uy^&C z;-au|JMkuM6iSe;)?VD>_kO<|d^MOi(j7*rM#>f!&>1Fk)Y3=5#W55&O8LhpYR_3Ip;-O zx3v7fuKvc)|JjFfok{*Ec=V^Qq`rRaq0j_kC;capBIx95Ti82SOdd^p2ahi~7%%5= zD>G38Wb0E{dK;hG_s`VTQ%;?Fo^_YeM#|}-cSTOzlyZ{F`Ry%eVCE0nyKiz##?Nz{ zD(I;$@S(7)?tHRAJ0!kR#v!ktyK;H`=>2=botO(u5A2+8_o|-Dw|opx`ey;y&t&V1 zAMz|qePZHqmFy{QZMHSCte0>*Ji~|!6|G`CSQSCh> z7CaV=>W#Dfh4X)EK02xUr(J&i*+2g)zi{{EH{NZ>ecpS)*X#bnslQ*lQ~E3Yyo#dm zs1)F};}Jg?Ks>?G--or|{^0k)I?L*><~5JGa(O2WSXGsZL6ue2-z;Ax4&|h%)H$ZE zdE5T-AnHSd6Xtuzc)8^F7$@HNo&LAMeiqcx8m=dbYw^BiqqSrAw|M3RCBs$0Wy+-< zWlu&sQX1Y*GxRyTA?V8c<56~QxzGIt;mA^dt9MF&+BudEb7MzgSNcw)`^X+j`?D>I zH1^x!gEqg}^^o9&x%oup&-F#PtUe9mV=ke7I{aC*Hq~D_@w`#yfr+b)@0}NiavLe9 z^B3XaZs*2V8ehSqoVLOf@d9!x@q&8Oo(BAselP2aFN4qJ0k44cb02Ht^wRH4KeLwX zRrz0e%I9HE*o*03#(lv{f^(jf1d4hwxyei9^;Qq+#|!x7f&VjJsPejKvAkw*1w`%2 z;J_cC1=6&n+Wzo=W=ogIpDiC8#0xne{)VOBdg`9v_?sX5+Zy*JuU`VMv+oD@PTZK6 zRXiM(7t~ahmrp|`@;VwyUVz={fKy(0XnCEiz$JkC;~Dz$A|D*cE9XZft~Xyv9p?D; z&}TA}C_KcaG{|#i>cjfylvnAe;hr4+5qT@{U{i2S#?LptnzqBr3j=$nt_K|_o~y+( zfBs0R3yDda9`AME<5FkT;&_8A^DcG;O@Wd~#z?`z444*l+Fb{*pHCbyTK@fSeC(Bf z_^fX(y3N7|$>wr#xFE+Em zNRt=(ca9E zS6s=TGx6ThLp!G~%O59iy+7ROh+EZ6f>JL;={n5@#eIJEkK-9T`DP7p^u=uNb>mW@& ztvP^aFwO+tvIxiIG%V z)cE9XJUs5ld5kk0?AK`>w8rWGfSphFGYgQzzK!Wo=PxJAS6qA45G=%JgU>~d?r3wo zL5Rg0vIW12Jx%$b*Y8gI8}vVjtMb%!+sli9dm86O-O-yU{7Hb%JxUZjLKWU|J=*@X z62oZydd{2I%+^nQ@|C5>-uD;pe%n>7Q;(duoy2wXVq9Fciz{GhP1+OCGS3PeoRO!% zsH6hiKI?l^zxPT13^@(vmu8(K`RNwpsyYt9xQeb?=9hNHF{Nw@l9UR!L;Hg_WhE_% z-=d)X@hdb(V6%F<^EkJ#C*rB}GoLQ|M9>eB{y6#kYxtRU2PI)**v9S0-7+*-t z5OJSene}#bm-u|-`tdK;=M|^&TiqZNWM9PbIw8#ZIxh%lP9B2~krK@Ed*=;6XP(*U zKb^7nrr$g1Zp)v4)rEihUDw{)pC5SS>$j^{&C#FYQeH|X@K};9c~)r7>g?Kxb&p~{ z@2K#NHjG=e^TBw47^hI`EQIqk2UU}SYQOs{HhY@f z;Gco#F~_{<++W-E>7}#Iz4qqY{x5pV{_M2xhir>yGe8t1fk$Ucb1EY0wEPwa+kVF5 z*zc#=)9T+8JcDsA(Jxx&A3Xf^#&vV&x3&I0*MpkkK@_lI@+A#R`RMJG5PTWq5VHGW zHR_8EPd~0B-y85{x4!rb+sdii?g~0Ns1uhv9f^Yg(?l?T)a{F+zF6a^@GmW2$L|g1 z-NpQfGCuFo%B%80UN&?Tyd+x>_({QpKL#3cc`|{ji8v~3UPI&jj(Yu#OQ6_`b)5Ew!6nJ zmJ>kc@DgkYT7H1QCwNRat=(}qoP51P$vA$)i zBWykHCgQqr_Rp+hSEId0m-+_ltdCa?8Gx;gS5Q2J!j1$cc}K98ZxyPsqB)X2esB>pwIY|Azex z^_bjb48^8^9y=OGITJdVfgZ#DIUqn#h~E$nH~?u_$@O#{!L$X5&Z2gI2ibJ8(IKKud? zjbA*W(8Lpvlvex!AryjeRc^Ix@^=`prG#TixrosIVxV3xR6 zbNn|*fx(}LT`Mv=0ar&C+wPj)`tcsP2J(veBBj3gcICA%(v?6l#TE8Fm!}X`@Tc`n zkrVG(_`#mc+Km|k+UOkn{hGYCUYFFk7^4XNeIocg>*+J?jl62h_SVCrafZhWImvl<0}P)bll#>tb|AF#=( zkBhp?K!4f(k`KPHEgy7om43g}U+@9;75m*l7FXRb`_{#{LJEE@ zPuipYF56$R^8%%eXOywxi22@VIdS#ZL!<68@GszN-nlrU0auur1@+^7 z7Cs}$_C?~_!XMA;&kFxn*7v!`Vq9FcYwxK|R-lm|fK=lIAOcH0rV??7xPUk5Z(2KC zyUq7%{4y_}us^xRS4X~qaUCaToDlO1^n(|UNbu!RwKVKEqWwby>33|0v_Tb1yvKRC z14!hHtD{&avFWkT@2qz@h!@OrYJB{VH`vcs>I|$`vvWlJp8FmI-yU(;_?_F}u;5fA zmg_VbtB77X@dmUSckCb7H2f1ni*c+E)BMlQuljZK{IuUv^XG>z)}w7Opd_Ax3R35+ zp-kXGhm_2Kf!%9Z-UG+@v|I=9_Sl7Lb*JOP+dO`Fevq%ir+g&+&!dpnXm7@$X-Po{ zJe0Vds^7FOV|(Pvc3Xv<0HK_s=LjU!9SIzShCauW*cYXZyX@-`KRuWql6p*@SY9kI zt~$r=xionEDe}_mhzqMVc8*3cX1Q(JW7A(B7xkh6-y?kpEO9+%TU?u=ywqSma@oK| za1rv-4O(b)-mnL;fNA37`K9iV{ceG))r*kVpFQe`U;D}5IBNOeNe_6~TTeeS$2(SD zeeAZl&|}+wWWcL|3rR(HU^h;-4P4NROSkYto&7#Sk0m~R+#8s8aOPIy#kHPUJ)$Pe zKKZM&pQsF0`5xO+Y_V@rhrhtz_-kGq7hIe*GftrHU)GubDzEZ=!B4BmYyQ4!(s{^hG(M%y7Zzg33uz=SiCtLnn|U_D zT3|I63*M4fb=;#?56O7z<4eD>_ri;R>z2A6ZmApXSS+VG`U^gQ5z_w{QP_MyWnLcx zhCJo}=Q@tI`Nh>bA8^qAGJeSMg!|uM|8njhx;i?5`&xM$c|8GrTjxLq02d6UbbN?M z5$N~Q|M)KEqOgJ={KX;1=RTbcSARSOb~VWB)83OG4&D`cffvNyM0i0_rM&pX0iXS-*+6 zwE5?q|0Lvj@s;^1_Yu7LGUL7jbL&x5eOQD*=;?^I-5eCVR$ETP0J^k{U z^Qh;JljD2%v*dvb?}~kEJ*C}ggT9QTV^6+5&Vd*xHubjlZqFf~r@r+~-}m^dzH|B1 zuYBnXPyOc2RbPqcif!@C+L7|`NFLt;Pgv8-)K_b7Ys@N~uP?^Gps=i4U8P-@{;loX zo1eg^S!N78Y1dvS4*GAp2X(aF@)D@HiB;DTaoy4juD$6QFBjr* zq~L5j3p<)%9?pZ>dj1iJ4n_VBxVRzXrkH<}dD~<--_G%HwA6V2n#lWdezKzxnD4$a zavmW6SOk>ZcE$EUyGcYo^lt~>PQ zr7Ql=b?^SK?=I_wlK};u&G094>x>53z#thowQ5XM;xVe_iHqQK3OdxV_%I6P?NA#J zFLr!av!_^3c`iR{M>WrTA9%)lGcU$UZ{JndFQ4Y?AsW8Etm}Y)xP9ak{3sqy@V4@y zL3x%B0C?@p{yy2gIDmY8Po z`mvjy{N)&TgLu=fzyFQ)H)KAicBTjOSvA#O`!C~jRaudbPt{QJk^O5Clv`I}`xM4a zP2{r3FS`OkbQ>$KYcQQO%)mCte6&o_f77;qL()-SABAgE|p zQMXfy@S}Lblz1^2of_?|u8$b;wsn>92_N~{y*s|L^znE6@qc;Z)r>34I3)er54};p zmhw>=(<8>^&dA3PAdk!|fv>%YhYkjwi3h=GP9d&?{kp}!2pK$s`6wCJrr*E+8yD6! z=io`c4lqy@%?DIr&DF1^tT_2x=e0xZ85i}(x6scxuxsPmYS#}yZ*^VizTSAHUGuN* z6Ck2$*YcxAubjfH5RQCgtIK0Niv1&7JkrnKr~?oD8~GA{p7Q$9h4O+pd-e?oH7G5H zJ*g_50wn5%IUXnn?W4iiKfJ}Y>vesz0iGP^o$c+%Xm8^ZCwb4)!}vetG(K)e_58)J z87RryDJL4Q4JPaxs{)?{%DB5;|4^*Ys67P_lIITgd5HC=$~cz?E|yd1ORPmg0UOCU z&qB~!#{tN0uRKuqwPb3o0^G{$|Kz;>kJ*`Wvj9CofbUe<(aPK9KQ%ZG3uYS6-ETV7jjmn>TPYTr3*PCyZkv zVrD-*X^MmIAJcEu%?JAJudTDzsTYC^?z4VSV-~Qt-eb^Us z{!X>4Us|k3#3#1Cz1!+Ii%Hqw5*GrZjuMYPQ*ew2LS85#cyzo|UNA1m`Fx%IL$ZF7 zamugiXHLvGMWbck_d~3oE^kKrJ>s6r@Qwa$ZCDznB!0_EmV4h{N~*b?R&Q zFh8piuQa~u*U1^zHHhn^85&|-|2N-Aov!R#Jmjs=V@F;kp8^-WrM%Ma0|#g#ziToZ z#rT$nt3MB9UVRR^@qOu^AE(?-$hdqn5LC-I-YkBn)h+x0vS{<2Oc|m*<|2_9mn$!u zWv<`a!R5KeTPw?h^>B=1>Nt-7`9}KN=f_pGJ$B^fQ`;l|e7DNW7AiGxDw?Y1$48=0 z-uz)-UaU7UsEZk&W0#@FCmHXZuqVH^imLvOdB3xK%3X7Dm1rI#Pb5y1i9y=MrhV~j z^)1EjBmNvu>Uy_XU+s*4Lw~fB)DCseUX~*skV}jQS{+kx@(n^)E>4j?;!XJ7 zLYYJ4?SNspL)J4(JCsjb{|o#u*xxeibcyR}i*Tuud47i=Pm=e?Po!Lw69&bLdc4N* z=zOr$dwTg5an_(79r1CA*Z;tFxW&3=v~?N+an|0Mbxg1-+AKKu0Ju-Ss>untI7WK@O)96mgsq|BE#V~RN5=f)lZ8EI0iNmydu5vQl(;y8yaEzHIX8`(xtb0S`of zXUS`xxkzt_WG+7;1C^%g_#O6Sf5x;QR;`W3=k|D@#-SO9z)yqxChV!;de$ObaaFI} z_&lFCd&>L<(U`ZBF$CbSC7<=O9u7&YsP+#EtlBdquR$g6yT=-MNN<3tIb0Ux9v z&bade+TZGlHeUi*@`qzqQ6Cy%vL&&ISL=>TLR;82XrldzheimGYhYA@8ONo$W3Q1w zTqHj=9`DCdj2oF3M`4wzx0i1#C$Uv~il-R`ggr%nUa$j^O4O&lJqxssh+}^34nS{2 zd@vr>b@Tq}Bi|T5=Q;npbo?KG_PWR1l>2vZQ;Fx5+v4fkQNg3SBmc;Dl8-trczRSG=lhR2`q(NN@))icc`|r1GgOgY zKjs%{0e*m=m)qW2T+rvud3v*M&bNdgevP=wd=S3!_G3pY=iU~RGfSRz<5IM&h@-&G zHRF-_jeLdlZMzdp_!x&_1fObhR2v=7Jn7Fzp%QP9#vkO zqqXC@_M}Be5t!?*hyG|0F6g;FAx`H#Vq~m~<8{WH&CdJ0+2*JGb6LlaeYsPQ+5X;S zz3O1r6};1(`oA21rzeqp0&USFzm!<^Gid6WUr7v{4~o#RY=z^|SqtW|F7F=3cd5s; z_p2A%yZ&!9YU85{Iy*QDpBr~_KT(c#91D6ASL6{FtZeL_#tG|nU99A(&bS)ujJ5r} zeK8)cHmCiOJYmK~E=Z26XMYvX$R(l(gQWWF@$`9$eQE}A0`(WZChH3CP=EVmmB<06 zW;KncM&nbDb=o+Gk80E->j~;l!Nf7+_YRbPD|$ouP~;2t%f9{3pa0$uJ>y@No^ZjD z@Ba^P{Y=b1rsbsGKCnSTnPaDVfLr*+1KCUl`@|5@Y4VM$`#Li*jXRUb#<#AV@Kpo zj*gv&F~uqLz(M}55>Jp18n5@`DC&#@T=vt{I{#<4mD8N|N3W4_i*iak4>Z{x17kkC zbU~azJUobBl0VblZ`u|Yq|>WUp)Y+&!KJ0PV`f|gys$pyslHuN2O97~^h1>O-@ayE z!+ahMKTN0lFsK7%Jgj?8Tqumc;!o9`ag`mAzJNy!AF|&M7Ue_XZ`yi!N31M=_6ZNV z`u+z#xAZ+%Uh>$TpZa9oS1bL^t+dDS$(jG5h|ZxO4Eu_+`Ie7>&=JPF#?{(;gi_!# zqOwKC|HuqqGe7%Z|FN#OpLNfBy$RkrWsABeB3X$ZnaT+2 zkCPFyB%Ozx0BSYe@vouB^nc7V%Dgn|2^(MYBk=lQU633{lJU#E#Z%Tn?OT+3^9*@1 z_P`T$R`gcKotHR)3(=w{7WMF0URHmc^_G?=&)E57Xy?{}YToy6-?Y5pdeT6^*jLt> zny|9!ez#_Ufh(;naoNAEhCIUmMXtz~g`Cu1=@;Sm+9>kT7FW&iRoy?UGv1E;onXK8 zE5C_&kNq6VwL&WS(Ds#$@!iOvjo%32h?<6=M0qd51#u}Y<%O-Uo@hTV4I=Ufmb&mA z^cVi_!nNhWIG31DSL%z83|wVgNeZQ4tMdo=vd%i!rT?9Vr@Yb++RIIjhP@NUs0zg9 zWU+&z-Rs7o^XgPbO_uL_>$CseBX9rW(yM;%(0BgGqYpSgB3e1z8MAF0Q-UpMjbORoQ$@n_EX^3wnL#54Z& z-VZWfiTD^hNL;_QEv~NJ2gE`Q=?_KC;FmmR;=Wurui96C|1;K+8N|u(Dc_Uv!*A0b z$9r;ICs~T?4YDq{54An2sbmN(JnDO_ONkOSu@Yy=8(3J*D|e6w`dpnX+P{Qxxr1?e zQJ*dS5dUMbyg&rLhAZX8UAfO5xa17c=E3XUQTs(=KF?^!U-PCspLNI1yn*PCFLHX) zn;5@%;*N~7@^W6Dqsoc=rnN&q5cY076ZWoMDWr(@@Xw4FLPY5pLr#si`g}?|9MnCc z9#htXduDzS5iVIZ0*+~D)Gt)98xEk}fcx-2*7sy?8di7ziNf>b&kdK_;)86H2&j;k_o9?&di2Xn3+akh*VZR9`{CAo zmj?RFxG(wYIQ?OXV>Y>5lo&27@r&L?vr%gyJ|BYv%ujhkKNx3{J@JP;;RF03#`9OHTVf5dsUGF9Q&2;^H;=O^K zYiwoM1&{47(istjpHW2c6oKE&e9=0tap3o|&X9Kg0{vbY50EWQEqO#-#nrn0MZc$B z)K2mfzhwmrjFCr3nEW82)trwql}|6;Baay13O=7CPrXn%m3@0=ah3H7h}-M>g6a)i zu9wi26N|7z1TlY`f`_58|5k$+nmzT$=McXP_$u^Q+TDw`wap{b?6VfiqJ@6N4b}3kWG(m zy@G+AcgOF)`3~aY64UtvGvjiE5(m6lp2d^r^u~er^9Xo-(EpxsUizD>7vbXDXYJj6 zKarAhQh%sY{b}Mp)#wqL?<33p`p7f5)`oE&`&jZliR;g|#f4_}o@^S=K^2ZCm{Gx% zb)pm!kCms2U&h|M`=tJ(vTSkQKP)Z(_!HmvjRXI$j4v*B{uhhz*!p|C5D_H2q&Sk# zm6O-;;8gEm-_}k&ZNTRnXP`$r$G>sv*Y5tyuBV9|CNEqgFC3S7v)7m& zb$_@nU-mIokUTAEvmNkqu0$Si)Hq@6c^9Qtei7+$#aqyOz`ue|%0mu`C0jw65O zvE((Ozrt7l7akpzeSGj^G?%rN$T3?!-^EpUloBVF0!HD{uD~vEybvGA{50nE zG+fl#2kZOg{;0|CZx4B895Z2v>qhBsa$U{ozHFh-jvq8$Ku(hhzqET}79b!y7o_oZ zjNjwAnd?QRE|YQA#?4~Kz6SAvO{V6j@3>R;m5R2xfFtr#5i2dl1z-6X4?fvn#`l+e z{s!Lz&&Tio&_8(4Oz4H#@K?Emp8;;|9~{Il;Rj1Q+`OZ>2q?8631Z4uK~m%o<}%{)8NP?lTKDL$ zPZ0Y&w0aD6?E#Nw+>mk1d$6nV@p~dZ)~8Jm;|7}=zllE)%xU7vI$y|%2eiiDkkq)2 zgSdFD;PQxhkhDX32l>;r>j7+?_O18c`y=Ol|0kA~4jd9h6f- z%}20dQOQ^8kJlUkf)@xBM5L@nVc%GN+V{-51atc1$(OmItUrF3JYwzGJ-huL_Cecq z{B7AT85go*hFj;8^O`o7_dnhFNGb7$Hk*PIWAjY>Xm{l=q8Y?~B77im_SgGsFy-{^ZRNBXM%1$>VH7*}U1j9a9p~ulm><#FV?Rz_ zuInar#`R`BCi_*7xXONCEama~ zQ;HXg{`$GyMc&oYThtvxZ+H5{-1^0>hcUvGle)fi=?AGw zEGafJ9z`zli@?I1XfK?1C@4S3Ho7o?cvJm?!B3@M@QP;cfVX}0@6S2@H@!FB>99v{ zy79-ZXLGYL4)f07YPRp1W>2DLuDWc`9JutzH(54IVJ6)^#wD>RT9Ds~8VFGpk=Dez zS-Bs)lXpdZFZ}XdW#7AFz6Lx&_W^aQ^g3N}w?TV?(NC>Jfej0q} zQJxDZtvpA--X^;m`EEFDeDj%}-f2{1h z&IjqA@3cShXU27({lF!o1O%4cT93`CVnQWnjO^g`4enRc0GVc;>`M0D$s^z?H5c2> z1F`cQ@2MA;#6at?slO5#xSym^_g+XykDxI-x@GZ8N?|mxNJEQ=6Es1C=Q`?nT=lp) z#?yD|{=${z^rx%JNj8;nMSQF}kx9z>k|CvIY)=kf-k-)1g`L;^5v3k;bz0Ae`NHI> zC@|XLgFZ30uyym6E&BD1&6a(OTNmdSN8+o^ycQebZ#FM1q43R1n|O-mbX&Xww2|wz zsLItL#m8Q^B*Zmxe#56y+)~xmi1Rx0@thB){-lS^mKT!h+B-%=8?^t^U*%o;r+RjE zxK7LHXvZ&o`&#ax-KOA0QgT86`gxrbvs-;Ig<)lh4$==lt4N4EC9cq`8 z;c#~vU$IUjR~zq}BYW@68+Q9k{_hE&nA(;j0#}*L+pt^j5tn{7%$mdct*K^mBz|vc!;=W!09K zq{emSeT^%|&k;3Us`V&n zdORdtl3CVc;8OGiE&wZFz+?y(5E4&$kQyaMTIN5^z(pOh6VJ$N!QT#&|UcF=d3EHNnWs=5Rmywe`RS-|HgbJn`a>l z&;QOm+Rx*mJL^(to^_tr`Fz>=?y&Q)9BD~Mv8UF&8>x_M*%8W~lAVWaJU>_O=9lMG z<+OwrrT;sbsv;`M{T)j#?O+tV_FBCc)ivu>@l@~n`PSO{bCr{fcr45!rn z>eb%u{TQi&>lXHZ7jw8^KR6#=iThZmi!PA6akYeI5Ij;$+`kTXsbA_m~*Zc4|U2}D>tgqf) z?=y{4Q@oDcA`espz_7yKSfwJ^VgF3=C!dNqrt~v+_#Am*SHTCbT9pr$EyWOJJlei3 zFXoeg#SrvR#tX>o2jC%qE%sjL%VoSk%m3{Wt~3w5L0<4n#4ptONbdIRjdh_S@ACW& zSzg=DY*iAH+9Q$>3fUPAl>b;)fJfd%&60rgiDG9pj}l*X?B8)i>YrE_JYfR~i^`V9 zD_eJ*9m_4r$#Sdm3D;vw45ZqK@W%dBveS4*J02yJ;F&LFEu^$C?ay@SaF{NJ&yq!^#38%WrL^6JhM(+!FW=8+phZA z_TYoA{&Z$iPJpz&g4gv4*|MFU>|0OM;e5I9RPC3Er#iUEm$8Si^ON>Vf9f?tU}h#s zPDo|?{Ey5;S2|JW@ii{^v%?3GKSccbR@wX3s0;DKt;6*N$*UP1Ho*sk=O_2zE2Oodob3S>iZ}dKR#82OM>dP+5^KU|4?=Y_Ig2f#Uaa(Z3 zaacZ4$wu1>CS2r29h*By^-#;lccktb85r|VIUL%k&UcdHnPOixKTO+aOZB~6_kY(d zvaiszx&hS)!=9)UsSimOkKH@2;X$|b(fP&J`V_T&oj*U<88;C1$ZDW0|5y z+gE!(h}{UpN;jy`qsdg=g3jlSO>%3FSN*uyS6wH%V#@k8;)yJ;Gj5T*!T_~MlH`@@ z9|{v`g9s?ei)W5YKOo-1026OjaVhrIiL-)Fqt5VQ`=6Ni$X5oRfLKpTV&fz|75)BJ%@0CessC;7h^hg2B7Qq~?wto-|G1}Kc0=z)%U^%- zc@L-mlzu@J8Mw|~6_>7@<&%hU~FGmfBG&CK=$Qe6!YQ}!&vvA*!{%3rPe%t;$*%Y za{Bas$Vt$V9{;pTD*9u)FK1rb&%>53`8C*+3^Ch#9Y4VHojNl1j<6$N{XB9SY}&O; z^6#_WyT@fh?)&;*%=OwzPB9MBxZtfA{|^-9H3(Ea%tEI9t%k!r)%?Lhp0_)FJVVM? zzuW@O)q!hCCL0kh(V`%kI2OHPz>+zu`jkFJ=nu82$XO8B?v zIN4+%XzFja3e*`e02eK<_??>HPn+-7iLAd=ul*AGyYQ^2%Yb@ zwIL_ou#kAde>&9PrFNK(vy`V6T!XwXU}v2z=k=+d>)$1(!;}@sF&jvF$avyxyp`}o zyHju<>mFnP4;}Kzq z<`d`nm99H#-py|pUjCt9pLav=wb!0{;kCENzeGJI>MhsFAMcEH@WYa`q-NU_IBehH zUnC?B;n82EJ^bf>8{~wQa}#cNWj+^m|1B5&$tizx@HM?nSM5CW@MYHbKu)xsu&ZCA zzlEiZbZOP7j80;zQB}bc*CyZQ6jOh@RqVgzt+RJ{n^Zp8p2bc zcbw37d|cuL#)*F5?aw>)s}K6m-sd0m_&dM-o!7>=S_I~HxYxWebsnP_lB*J?Yb0M^ zQ5F44vTSK7>2X=FMVquf`D6adGh4C8raENAFN>;+3RkC}OL1|oukV{JC-5v=IDW{j z5Gh-E@VVZNK?@*}#N4zcH0>)_)%U7?o01Q<`cG|FDNa~(*35A+7?xzkqaHFYT{Pq* z-Wuz#)cMrDo2WaY;NYve{|&zCz{K=5J`fR~B$eapFxq@u~Ad zjU(c6X?#1%rTW5U0WK9PE+zppWS&Wp1Pr`0I9hRgiHmDLh}=5;gX%}k@$qeD%Z;nH z`81@5!KJ!8>a*Mk(;df%A_S3+XR7sHKeWVqHLhv%`a_>#_qRPu{wL%H_v~93+W+9N z&0kaNeWD5ZAH|{2B{I`%gsc3Ekbz)A(L>bx%DAg~KF756_#!V1p18;U$P1-nXEG(r zOOS+4?UAR_C@}l|cQsYqQ0MncUH{|wA>}#uorR05)p|_h8YB|if9!i=C_*!C33A!Q z$>1t_tn&%ttZDTl=qu!Pzgf6qeFpPavMlmJ+JG!yAS5SVW9sk^ue3e`e??`|q}RQY z-IM0yJjEBKzvBFbxs7i*{-oX)e$o5#8TUH$#5=Jby4z)1H{yY`%l>lI+e``Vhbiku zxE`|LywIu?F2hrzLtGkql!-OX$%@~Lef2Nm)YLrH_4X9MKlm)_+i87vwW;xu?7fO> z^Z_nOG%7GsAx5uxL%LM(e0r*v?BBL9j%(^X2mjOIhxWXjhtAZWq%egaWX!fJ7XK11 z4#R2rMOpq)Ro$rO2kJ(h@#O8g(Vwk~OW4LtZ@VgWWjV;eC2Z)=fAWLZjX_%1EdiYbXg!APKmhoO@vK#x!}!rozZ`nxi{Tfa2~V(iaE!aaFRq&sPpF=& zI&**LLWy)#e^Bs;+)$;wk4jfQX%Ke9bBV4Q0bG!Wo z>UEX{No(>$9&j-7IBpHi&~z*euU^Nm?APA$i>H{NLr#Btmd4M7|6x7WL98F4`VsO8 z{k7~X>hWou5yP2dT!=2Nu!eYtLq9H|HT@ICtHuA+a(d;uF0Xq1h}0fmIMePY^H}BA zq9XB?{SYAZTJ2M~lpsq7BC)jZcZnlvTt$Da_`V(A95fS`v=cnRrHG%?a~0DhP3j{$ zgTHhD0e=aO8mErIQQB{+tS>seN+;ooj-5w*8hPxC(cf@sJ83#SWv+L-$tkXvB)D4J z&UvYmDnq9D)b$b0U_pGCVIm4G_{V1k?oU~v{gGdH{Ez2<<@Gj%YsY%y;##ev^o#jy zycM{dOe8)vF4TqARBuy{w^T`xGa4LI&3~!qcT9_$;dyQ@?ENLQzX803iORYcsO-(F z;_3b{osrPT`)dP?CeLRPj-8A(tl!h;QG5_D>it{dCP- z^X=RG;aeZYenG@Fw2|QVm#%70x?;!g1RmH|vZV+`LnIQb6tDVCnW{7yIfCJolSbv_+LGZ5s}`% ztkfeX^p@*wH>CX(e~|YL3OT)OwwxyN3X6~surH^~Qve#viE&$GXm6F?ihp+e zSNt<^RwsV9J*E2OE6-B@ZyIkDmrb_r_J;+~|668W>H~l&@t>e^26|8@kNF*a@t@kw z@L2g7aPf#eE#`F*I(&eC(N|ojnHQdI;g{j_h4roR?(4X;29fp`mbL~|MwxLTrOL%0 zOITEz!kcwGTIwRL^*oVN!PO{_-Xc5EkwoM_?2Bb7wRwsrNP|jz zz`KH^{u60S6smfz%*t;K>vgPaT+_xS@6ipW_O~$8uBO>Ls?Z_fB!BGJdMNErD(p8$ zi_eSxyf5a8e4gWj_0k`88A&N5l4T`(GEZ50AwoS`MQJ@J9`wWA2mX%@zv#`q_`Kgd{#@d8`4ud{_Pr52Wj;rZ$3G80HKVeAOvpz~ z3;RJ6*dwQ8Hu}ZD#|s>uMvmq>WNL4D-cqN%IUY#)@+Ry$?`Jk)*JC^zHfoybhvjM<0DiS_kjDX&pS)gO&Dk-nac`%8N@Wp38M1et{Rvqmo2(5HQZ)b&q}a zl}YVQHyh(vr9a#8w0&jdS6F7+?;m+Hab*oE{^h2SuZ$eD!bQ`>uf#esNp#}RQ&ghI zu0me*I(X!L9e;-&2?zt%akFt1KOFK(=xA(NkNicUQY8Po-$bPQ-yxQkDV;u4uVQkGiWC zKkyP{r=~nqWk(=u-r!1n&gY{Y?h${c`4Wonyxxb_@8rvh1;n2Uhbla{TjdKfFX<0- zF&-@VikRGlKbqKAJg*ns$v-21341zuwmk`tp#+|IRQv=Ez^WyKN2_~CAX~WsZqyzI zlYL(mKb3LXoxG*(@7^kX9TxE%I%pm8zmdX?HjnEWULS%uGx8}ZO6^ebHv&~XPq~z6 z9;Kcv!BXN5|5C=Cyz6<_{@JO&ys`IJ@A<`3);;H{xxG=34f&kDKl0(SVb@_llm$n!z?|4gA3qdsO6V!_L>O5xJ_;%Mj zlV84IRi02=%)FkpX}+@DWbavQibInSf!1%luM!^!xp^L{?5ZO#>WchC#OW6*F5Wu0 z2y>C|Zyi~WaW>x4BchfpY*!+2@u)8kuV-XV`(k~8!drEJ4ehTpe=&F~#>;(4^`FBI zb6u*7OEPNPd%`7Ypga*r@PhD!Kh_=VkP=T-zeuUyxnHEjd)QZp7nHa2!?vG`h3hrj zU6;bXhMw;!zTzWt9@b7PPH-Jv0yB@MIxOa|L;4$05aMnB|DF^lq;^>G)!fGExX^%c zecAECiuDa}5sR1nFUd=EDPdtzVp_?^#j~Qvcxlg>B(KhRFpay)`OUws zYUh*s)AfOq_-a{*9U!PaB}SKp`WU!=Uh=K74ob%ls(%KpSUz8sAKW~$pP@+;Pch!O zJ+9)`-e*)IX!J{?VVS0GwNS<*bs3;*!kFK*}Q&R2u=40%77AvSj%pb;k28<0|d2j*E*QZ0%zk{yF^MzsWzpCj5?U zWPD_PnA9UW!apM?HAUl+BjT*}D5kcVpj^kH1y{|ZrEdNG-m_kD_qV-Z;osa3$nS)_ zu9__`TaT~?KOkC+w*?U5hWQ>m3_r)xe(iAx99$n?--XIw3D7S-mks~cwF;fl52Q9m1U zF%3vgDQ+-72oJoEkeu@X>8SR;Pf_O=o?V~)#7jT=vwgk4d&FN{_?HL#-0OURG~(l5 zsr}`=6#gC`YJX9WX%=^46*}@d5hy0{f_yVgjUWacss~r1cNEhfxXxJWdNp5>S9J0( z**QNHan#w0+YhrJ#70_2;ROxAtn*Wa7`7+H%R*~yIbTjT?-ihxbLR#^>ewY;DtIaWn5n;Zg4wH zb)s9HJ#)Mv(wM{r51=^l6-`shgSZ4rPaV~OO>srP`9QxN&(!0P;n5C1D9+09@~zKi zpTX3xEZ;UhVtjPYE4XruHbgWI0If&$8+lxSafE&8w@IssZ;n)6SoB!>xjTH|ev!oM zw_jCG%SIVc;}K(82!E5twR<}_q$3N90|OaOtRFvEabCaqDdD-ps(7$yjtY;;o{mGs zl8R#_G#>N#1iu>ez0Mp0WH%#}>wZ7gg<>6>@AOW2=H>h5fAp0!9y;0g9nZ$UY@X?l zTXBL=p^jF&6GI^ql|AssxdDnF2Fhz%{UCK7KR4{=@q1c+?+<8qbkI4z3W-Q6I?M+$ z;R!j(j3gKFrWgsNdg*q@U%yb0)o9*EdwtWaw@$ts;}U`g{t!7`xNF7v8sNdctNpr! zM}ks(pr?wbl6)Kwo1rW=?_V^w>nc7Vp6awW*NKun-E~!aTAq*-ra_VcC@f{*@zB7E zBgN?{)pBW^3S3l`udmlzem%w)R~k;;-7*QJg)tZX3A@F+>2F;q3e*n+s?#J;!W{_JQ&Y3U}(^<){W^;_`hcEj31ov z_`m+k+t2;e?bhD&OQ-xg>N0tJ_C06f;?mRn3}rmz#PYFZB)}kE(HZswA)Q!&IGxUq z`kxR#lz3rnHQpF`{l&$1I`36mF72Ii>9#LC@4_#{{1Sf3e)*5_GyOx?I$pqFTF1QB zS9E)<_jSS1Iq9>!Y+oRwFe;M^|AK<0*`}U{Gx~vy4j%3BgLIzb&imXVIi>N9B~IX% zxCd#G%iFH>RQAI$c)jFQ+F{M3*n9ZD*8D~69b6Ib-Bi)XM_{edUblCPczO018 zKgHu}3;du+qVPMfIp=W!d?4E4sIL3B#sfsZNW{bUUsX=a6L`2jq5!4v#QY7Ks2k%p zp7JIG+#cn8BilmCv{5W7*Q8*sEAG2#0UAS zt^nl@oUHegFZ+OW>^ty;-X6ND-rDgdTPl&qAYR2SR-Mph@wDP#pE_CgU3k;$XOG)k z%Z}t>am^qNsfP0T>kJ|B&Upy>l&B#;eBZf$zR%~jKl~s5@ToE1JI#B0wBz#i3_6fnAZNTKs-F!9P#J+xNI``%;R6NAq_4-4#AD%W}-@Kmq^MBqVIRTu5+d^{@ zAMiH}UN^>gAyGO9_ubHc+n!&&!Z@bZ`0uD|L>%=D$5Ck>WtdB={kiEkL&ke@8TJ{C z{!%PC@m2KGh%AvcnnJAvqvi=*^$FGfKr4^;q%OtxA|HJwe9pvdTS!=Pg5&%+;@?r) z@id}4*)WrMEGOBe;!O_4bsj$fGW8vytcM{SQYvM<34kUV;Q+`{W+J^hZn@PCLo`13_G3v{9=&eHIG8J%u3vVYG5Noj&Xkv~+V+3p zmn{s-OX3NQNruP^zvp+=())*M;q-+(zGH&lM|1!A%5Q(;whzCdw>W>RwU_K*Jin|V z$1yJ#Z>>BI#vzn!Ez4^Y^0L{3O9&8}o(P;&YdorIV=1w|PqC{S7vn)Ys7Pm1yL*;5|_n^By_6%m?sPds}GuJ)roCrrw!WsDb;*R`|XT-CNHHO1)m-apXPeH z2y)$seI&RL^D?96G{ z4Q9)Wt6pRw`60_o3befXeZ8xfK3Y5vIPE`Wo}V@zlyM6uUV79MpK{M%_6|SbhyVMH z>linu_L${05^udG<%LLzuCBU&@`_$1Hvpwk49G>KDe@ZoA=#PZLE}_%!Eu`UbBli* z{X}h})Q4Jrs9itata?>iUon^}GphNt*nQwpK98bg)*=NdTRK$tjN0K=;$xn3mi&4! z@H}SnifQ>OJkiNl&GX4$FCi}$oR=vfw2VoAdBvqDh)mS~fucp~lOEM7BopHbJ+g|R zvO)@t>sTLiL)2H~r@ZUlaNS-kv8;>2`Hug_Pa^h+Q@2Q;Tba$GgYPYL^_h59W-Tn~ zQ6IO6OczLxcHkrf0cssCwGqxDz|k8jo~`qYX*?VGPqfc%;{Vj2+SO~sVV!ZcW;8*~ zd08UYaXXMm8;|S5`Xa8cah3kTR{leL$PY#PeC?|3v&|c!c$pY-(m(reVF04|KmPJZ zud8}8Q^56+9QVK*o&6l#J`=9P_Xn4nw{fNZI45JqB}KZbMOzrWyQ(9ttLu?Fu1d8etFTK@yMxFaVuhjSH*mHRP|I zcn5w3Mdi!e@bvp5V^y@^tbFA!rWgbHs zZM%v*h}+`EY**4F)kx~?lqyjf4ph;O>yxZ6fTb6EpQw+l?~Wf(eg@Y#4n7_|4z{}; z_1TwaUz*Phf9>`A>>sK9dN`o3O-sciY3&=OV&FohQGZkQ6uUxhn!xKsO=)fa@TyKS zq0fc6cWk=q?C1Z-Z+q{0y(-jw{ecri1>zFQ|CAHU9Jy)$XoRH;XL$GjoIAxw5@nTms zkHYUAdyl+7{MH%L+w^&!Ilga=gG~0$ID0O~zu-~s5;r4UGIu@E_zYw1TLNlm)jwj^!K!wZ@u2}O|w?>brs)q;^(O62A(r#Czm0F!5-_gPtFxyuY(9p5wqIpMRQ-NAd|@=a$J!slWm0 zzD4pKuQ$Sddrq(NpOB9kqWQG!oT7Eu)7l^FbKvRllk6zl_gSmsF^E7Ck18P}AKG22 zx6$09-O=C_k?O*L&ihsdo;n}Hjyic_J6`^j;)OIGbD8l2?8P@v5;=3-1vL-pO;Q=# z5wCPA4q1EO@k{9+7+$WE$f*+_dw;B?x6j>7Ie{VNIp_@*iT0M`yo95)H(+wSNAXL^ zD~9R^mmPK58F42+5O#h3Y&^2-roZ*I$^RxhlKEEc48xLKG`>OvrAPdX`w5GD>i7V? zb;cJGw-DV2u78<{3s|BbjH*OgznG}jrA={il) z-{)uIlC`vXJjM+u>Ej*SkL}6r5aZJNic(y(zF0T6$gB2yQvFu9SH`7#5l^T9B7e*+D=6Y`LmB{M@`2Ff zL|(JLJFY0=&&VUb?D!?dtA)n0$g;eoskVKgCo59S8t}gLdEfjN#j^r_T>|93NrU{ z9I5e6#lC7DotrXFn|cUR4qRWGg$r{LPc&fWp)-&yZ8#-~KQcZuUY?GrBR%{tUy`o(m0{th>6+%}dMpHvoVd4ZNU&>OG$ z0dUC^@mk}sSa-Op8&!Gpw0T~UcZIyZF-u;7%aF#n#AwD-ctSjCIl-%vVHVoE8zN9{ zAnd-A*K~L_#vev~=3A<3rGA32@GP@p_Y?Ia$!na~NXAwuV2~FGB`##ohdv;?FLk!X zoX>aS2Kk>{$GvQ}oTkTBLL_Bja)2-%%Z71>;fVaI@jPDmA>wu0Rf*T>7wh;%>R7n& z(BHRb;!-}ZE4TSUI5-k6_0E-}^g}r;Zcfxha`LUPck@=Ucl_c3^G|=|L+^6Gxj)rke=^m4^Bc^|!IUQ7LGy);BIuX()s+rky&j3jQg!<+{io8xu)TXe@C zIUuO_aapVtv7REjp)boPM{P}2i zt$9Ha7l(cSaHgDW-_61}0;RrWnSYD^;~hE{~#n@jG8=8BJA7!ti`^m z>qNV2tvg8`fgMI1a~1rwuvOje($&NvSc*q?ZZ7p8V)?kNib2A{x6~b{k#wAL_Z&qI z3+$bq*Ohp)U)F8w)Hz&FNO9FzW1ba4{lCl9S!B9x&CsE;+N_6RNCE;U8)iyhTiejT*szy3bnmRE<*ZCC2PPwg*oIiFCS!_);Z9nBjQ zzl`ftl|Kg8v^=WDeFtB{mHJe9!Uf_=^w8#c-R8|B((AT=Ayqc zpFeoBRadtkPJZQQ@+*f$y)z_{5fwZ}8Bq1e<>TVEb3m9k)f{C{ZkAL#)R61>{KJbR zyHZbR@e}bA?}Wa7K3iX0O)|>%?WgF+^SF=?4n&`@jNmBZ0v;8%sA|?YPRZ?VqCcd} zFZ)*S!&{#F2fusT#dB;+InI}_TNPK^j@VybIB>8C#r{sZRxw>wbk?JDghx0EV~rZe z=f%D!>ikpeTk&R&qpn{Smn=BT3u5O;`a_Um-;rkFUv}u3@+>KM*ng{dbL{u(xS(ZE z;qO9!H?E4OEhj@me;9O-CYrN7i6`^;IhmBpLq~hwMlqi=Z?ej3&F#TFmnSNLMs)35hOf04K7 z`T~KKOYmxn2}$~s$1g-a<$Ca#pIYONt+%uv>#fhx{MV=-psm4z>Wbraizni62~cEY zd*Z5uBfK0EVPW!$pN0(7(9{F*W%Dl06Q(cTVsF+?_P=-XJJx&Fo!Fj!{~YXTQ{Yz4U;u$GT*>zu|W0-17OkHXq}%Rr#eK6c76e{E1NO^`2Mm=MG+oJpB%~ zFV!_@LLrRQ1dBgz^8$W`gMKXJBT+>jLoq`!jQHIaBE#eGILI=OtIlIs-@h{-FX}+C z{>dF>UpuzX#5FAYT#x&c;VGcVBRf8q)~GW=p%M^hrNh_C?u-AcabZ_q`T9pL`m5`1 zJ@>EQd*qpa@U$D#`s*oPxbrR2Uq}>bD0m9_fXgb=!#KY4DX*(j;)RL$rNs}(i8~4Y zyo=H728c#AO_(zEC{=}&Uv;>gDOBR@41mp;Ak4f>1zEAQ)B>WjoLr=0Vw z7k&M{-|T(+hCllJU9_%$^wUJ#d3Wq;SoW7;y{)`Y3M-0>ASdewUUyav-^Bw27P!K` z$8xe=)&1J_x;m`)+~I|=_rP@z@xoR{v`Y>ll$O2g3`t8}zi!DZ?8*|-gY2rj&^!)! zq3Eyn&(rp2P(G7+;a)TC%D9X+AjczLkGKJ=mVeGr)Gl>^);7OI_Ra@_uhuG`DS0w{ z_04-f^3@OikDvD*e~&x-?5`h5{ull^?Qb#1A2_(auFJ6T{Ka zRUh_+{$yg-BkGp0`Ea1Z+=xO)qk28edcT`#<4v3|r*`-!Gvy_#o)Y)@^3sq1jpa3N zhkyrZJ%6$0hcYg$6_3j9vmWogKe%GPCy=BW5VVrM$tnBUx-ruhKH zKbJa3r*0PgArW8Q_ZG>Acuy5jN13uG0vGUzC1m*np2aXPpBSF2x^R(C-A{A>Df7SG zUz)}{K2SWG;u+oZ_$YqRXXCBpZ72fe8^2@eT#=5xzuM`le$^38Bb{c9-JadCg}3w;K=?u;jqe0a<8=R@%? z{q4IQA7GW3Ap#)?-AAcICS14wRG(Jwi%E$oW_*J0`Hbw^zuaF?hw|vXmA=ZliJf>D z)q*GDsE47i!Iq7>08`oLwRFbjy(kGG81I^|_NE(t05J(&{iPR$araJVj|CyJ{E zjqB7a_!oG*gRfo3`!n#B@ud`apYOF`DwCm7}4mjvf&?Fm=;EmaV@uSsqP|N&X4Va zB~77`ziXB;B4M_HH2u21*ss>fpntC;FWQ}M$aem}&QaZkAdVw6rYq~PotqcN>(&S& zpDR2i9tb~7S0;5c#R=3E_$7^0I9YXl&_}#k_dA|8==RIB>x<7`RbEr=J=vFp11^yi z5NXH2Qm(3pLH})4ovI!uL_XT_e^HMOfAcrUtG_k;jRdyPUq8Qoce5P+Mxj!B99-1T zu<)|3fV3>Dw~*wZbRaN}m@io3s2Ue>aL2wJC!{#|Z}&%Dx~`0#KlV2&Zivm9&!wJe z!y>2H*1+q;EwP@s^;r6~$&=T8=0$)0;3Iy~J7``1`i);=Uk3Y|l$RcO&fEqD^!QG@ z_9ZRpe;)PVM~TDn=13%^_Nes5kpg<8S}f5i@*EwmeKbluHOjp8mD@h~!o#2Y^WK5i zf8@wVAAg1SwO3QIy}!`RRrM#!Y0JsHCH*bZNb@{YKyi3IB+UYoGKbCS!i8Ot{qZHQ zFRt-aQ~QeuCM~BIs~)sDcp)^TFY6F5=nQt=>aX>B0--lVq^lxe?#|CJF<#1|B&VVC zcKmVhf_b#$q0Im8;0l@xzw>vi%Bjr@iqE;_;44526EXx1&(NPF#Gx`Wd==}?ruefd z>%4aSp!guyiU0l<;js#_XB`M7?-LOy#(2`}x=uXNUz_Xvb^V%~3SNJi;^H(uk9%dD z#5m5Q58L_^Jtssl&ze>rcAoNerB(bQeo#+TL$KpHO7>LphPuu_&CX9D&+n&wO=c(xu%Y?dvmkXJlvFg1823AaCWlPpkVXC+seJ_{HRDbp`BXT&_WmFBl~c%8Zn z(hhr{pN$J3kRdeK#)ZE@T_G>@iM&L25?yqV>IMHZ9|{8~dURc{$O~SNaSGo{`|Vs3 z{gS!9(agqG`rWzE#tk5FJH)-nzH&QM(x90IZimVt{IBVIf5(#F)cHI9`P?V1dHRE% zasRnphu-(mpFQR-Pfg<#B5og$-;B1>UB$s&Lwnf$=iDC=+j>Km?QsgR-ZG!fxDXRC zbVB0+#0+}nvxio8U)O_(vpV~^g?|oQL**04ZFHO!mSl@>@#%7lPo+)cfJUW9MqwC* z*pz=UUtSdJ!|UA@Ke+BHoy6`tyybdcs&kAS_f6|>>ofKS6~XW0^}AD@19hQ4$D{g$ z?8@~7c$B}U3NAhH`W}lKG|17E`8|*L+>@Vh=`(-Yd*LIlJ@84N`A&@6&Gxi7+n#ha z38l7k)DrS(nv47ii=)G%eupkvvsp@ArAZJ zj+|t_7!i~i#yyr(1Ps1Fe|xGAhu-=(>QmU!=YId?kJz{FSG|2_{L5!w_a(*;haIgo zudbhkC+uj7-biecT??5Tn|VNSmZCp5xBih;JXP}mgTswZT=ol|3Br-TG!J+|*qAA*4uAuRX zdFQQp1{34EUO8pnru3NYYH2nufV6StxXSXf*~`xWQUveyko;8UPm_9GHIAz0P4ebW zTpab-;LR=K&879JzDFFRQWcv3y5C4rK_+dUivA;A6*!o@aUnC&x#I;jL-jil(bW4E zF6McWo%}C&JmRXY!jsmo2@4V{>1f5pJMwrz>CeuC;S#~)39+&mP&x59lRO{=+K37xy z9{S_Uk=MLNe(%s(`DoZVZJl`qNluP~Wltg|@M%DR+9C5+q+Nm1v$u%XkyGR~HLo)+ z=alnq`t|+q$v)%jPdni&FC$NO{WHaRhs~6eEG@JuM1f0|Pd3%oUxK3kNRvH}*hjNn z8%!Wb{jTIM1%edG+%?rk#3K z*m>~5>u7&@y;4g3j5y6lv2%kM%LxtXdKpi;wjmWf0r2(pI$N0!I(~-21V0$|{l;1H z;b*7IC+eWW#ecRSwOYwX#uR`X#_iLOg@VH$H@Uvi;Y;eDuu0%KaTXq~fz?dNM`v_V zU5TcpPvk@X1wP1!^JDla>ImkiGA|3i_o1)9W%HqTxW4zpNBqMD-+kft9k;+Ifosof zTqtph9mV)AifD?S!rqN#tT%%*4}d=GyRI|N9o${VO7-F#cb+sG7gwEvi~K6{x%f%s zq!uR=GcSk?I2@N3-mJ#~zz5Ug&r$Rfy&0Zb-nx4k#c+j*LuRG%31vTOeMEMoK!Hvg zx&&FifzjyVDUKbuyHKL~A(`(^oPa>FF22_6MTkX@=QrK>r7f?w+#-49aY5s}Pf1Js zryB#VT$mqKf2sOyv%PoZ1Rew(e17sdbL;ZHe6^&^2hxt^=LbL6-A4O!NUTppvy=Wr zUHM>s3UVs`xURoY=Lmn?TF*zgazE+YX3Gh|U(~{t(2W-5_pq2z%$HW@75k)t3(E07 zMajeow7_vaPyHiBf7n&*)A_yLm(RG@p(oyneQd11Fj!Jp5E644Q*ZULuQ`fkNKRf-U#0zRm&Tl>@f0OooL^?yqpBgXg zaWAqsR9@z5M}hoXdQ)8@2}(HHBo(kEt^)H5U-D#F@Ku4IQ(;KeRIa)@WqJN&r%&U??)8E zutdgoMIC!-LrYE}iHvJmlFY~0@A!=89Tk3G!LC~SNf8(Gy|Aluz_oVkCVCc?TP8^U zL!6E-x_$>-QjYb<-SG*HTTs)CyaquNwQ~&X@n?13OuQcU-oh1mV94t;YKJTK2Zol$ z_AZ>@VzdPJAVu3E#0O$oo$@V<<9Ygz;`h=IU*jTv=+r?YpAY-`yv8l0{s=Y>Sm$ws zZigBhq(j(>rMrfuupbcehqiZx@t$DrmA*6sf`f$qZF!!S9AeDRX!mb*=54b69(NPC zF2L@G8=(UZYI!(;tt2zM_}yzruF}pI7n@YUCE^L8I>PV*f<X(pP zKaKaFw12JUHqHJyo$M^)3bV8{NFE0BQ%e?uHT^?fUt{*53}Ry4Lgsg$e$V%vaLj$z z%pHH_7r%7)%h>;_JudWO@%@VPl~diJWoMfaR+1O@7J8&b>nWmhqAG;?f8g~pN<2~b zo8TWi@-pA2de&EF>d|>dGh#k`(qQiQlKtDhLXT>faFE7 z!ms>L*w??Vj?0h&S9;V%jY~~Hwgy3n8tLDqf$Ay$`u(l)kHzk5ekIO%<{>BVdHVVv z_Kx3k`7ieV3*+m}V~JnCD*M`=`Y*ZI&OZK#b#d|Awm+@+#asXYP1-;DjC~RuSI9O2 zqh{&x&Un5?DGA=CBkrCD=P!1mKceW2`&pg61y@XF4hrf$xABE^)1?E$1g>{eT*mg zj`@Oq9j?GF(ixAp`CNoFNJRDpITgReYk~4)VXnwGID;QYwfeBUx1J(Se3$oeU%|fU zZ<@vzh&t@+3Xk(sKCfeJUBaU^?Qn^ZsJK0&%evy!tauE$dEMc{V>MsUE<5p<^P)6f z^Gf2Li#B`wj5wfmIPT%n$ZOkTi^qVUgriX3c`d_fZQ)9o|FzZ!Yy8hEY(RO&KdVRZJ2xPD|YXF?Om_y zJ>cE^C1=PyDzy={5?Qy2 zf!D(r@3%r6QR2eZ{MdFr`(xqS67kmruCQ~WvO#NJy7xz>mBClz_DADY=uG_!P$C8D z&kR}cdXD4vm+OQAqx_1>xS&u}~Fcp#`4i`=7B?0z$|GtQ8 z23JY9B`<5u3kp6Dz5P@?ur=1p;D%cVmdj6T+|ziTOX}zKB_pqv|I>94QOlkXA6bj@ zpA~q3e#{O(1#d?DcP+S@yiO?Li}UL33M|9}$)3i%>3H7EXuYWk%y=Ra3owj6Z6JgLVduVIP*^Z~Um$H|feS4WSFj89>J7rYRI z!+2ZIoG+WA2LPzS!(#1lb_=mmrQdUdBD8I=xG8ZUCQBUO^+Wy!!nW*Jld-Mg8G7s@J6T z*-6|7i(1eAa>nn#Q_NLYe9*!r$#6uxE|JL(ia(_Q^OZb3A3%S@;p?jL1T`-puZ|x1 z8B8JU>bJAy#Z}w5LTb@k!>+_7g5;yvmB>r=TqIO@bfkKGJN|s}ahvY5c;@eVzy8B_ zeeX5*`)TSoOnkLhypZzfU?wY!haBexE}66tcs~_KmtkM#1>`CqVQ)eR({iR>_q@!1 z2|3-^TYKV9fB!x2`r+JO>NGg4;Prjr8Km_uGm`RG%GtNvjEX>==+fL zCU(^gHf0^84v$B?5_a@^v+=+OL?FfQNk05^nunM9z`Bx_>~Kai{g)2`cUKM93OaGH0`g(#V1EJPl3pO&r!K?AssQ4Jo2dV zdQl~g>hyz6msg6XZarIG2xv;XBNhlgmsIHb77`t5cibHMBv=?u?lbc(y;I_;*0@^i z8-t3x>UPMf*&g#?)po`QIM9Uhs?p|LhtUVn7A6i3YbxwXR|+{vd3ve`&o?XjtK$Rm zz0SH(szY)^j?ZuZN$p$fLcYvn-{O#Zht@?SLJHmtv;o;QQ$B{J6HnRO@rD+kCZ-~^ zayX@!SOwFe=YJRd)pc9?!8-XB<9E2Bu=hLMBK>K;1QIL$PXPn=A40MSB`3?1Fx~T( z#_?2+&pYD>%ufq}=Z>r5k;Q;P5BX7nCURnh3@(j5VcgIW<1iI<`XCw}4BT%r$m1UC z{zBT{raOK3x&yDgviF8FE_~4=AHsOrHc#DYRa}++EGM;k&gx&{DN84f|4+~PW4l7D z!Be&V*cY-BCnz4y`OKfr!ewbpX@7_-+Mm3L^e20;y~mRTEyjsvT#J{>aA|*?e${q7 z_3&AE+}hiC-eRW}VyLU(CcMUTEVA z>k_RXCqxwcY=a>zy~KIy{cT3a42jJ7V2+33vy!*7esE_Uc<1ejuO9nJ@|o>Z_n*?0 z0RpdMO@T;{+!C;a3&_c?6bJD?xX`S$$Kzn&ykVUt2XU}&4Cl+b5cJE%y0cfMb!Wd3 z>q6vylfMF2^P0%BgkpS%N4s%ejMKJV@$tz2FfRQwuP2W88P|c}(JU`MQRGEkwlhA{ zb;iV3PoAkqA?1Q)U5Ii01$jAMQC=$Z=kR!*H1GnlXa?rdvad$%2dCLr^nV4v&skoP z$8)XLA$f)08FIt%R;=%VdR6D}oBEE`3J$f$=qX3Nyf|sV7x4n2$Hgo8Iq9)8UOV#S z;L*QcT~3A)coHg_i|xubQIOYf4@IqKMm)7Q}wsd9iO89`W!DjcQ!7rIz@jbap6jJ z1r?BltY}hp-Y^f2c>pEP>R&1JCEjc059$xh@!s>Lzr>$hpmns?d!EQ=RL*z16U2gdYRlHg(Z00UARK)vfi6jZz=Mr^O+UK?cfhWP6y7ElQg+(v;jFDQI`9c z6~r&=<}J5qiXo?X^ms#lB6wikZ*_K>9kuQHg{$J3V%KE7$P{Pj`VeP5be$JUEzT%MqM6|U&;Nq2d$2aMbS3zP7;cBz8p3Qm;A3hBFdBgw)&AL1T9#( z%yd{RIwm})FmPu*5m(& zm*@@jIE~NwQtNmA`kkPSgF6nE-x9R1U(d5fd(^R2PoTH`V4 z=YuyxZ}Z~uQWs%QJ0Fk z>i|4?e3kBXd>D`G8smAB`T+7#6e1%oc8&g}40wQdeJD~tYOrBp?03t2z)l^p-9NM_ z`J{1ZjQ1MRZ!zEh95UeM)uf!a6!|1PT$Fc+(EJxcQTX*!X-Ti-nfr~`e<*QW-OgTl za5o=DZ+t7{w2t<_c9ZT?7aL1Sc=Gx=BgSQO!OfdM;Jl@^4;ckEpx|${6eoeJdK;O) z>|-m-v3mU@k3(C$Mu=%=w|@1*F4=I=nz?^@`rlpmyW24zkah-pgdMGy|J^D3?Ba=j zej3x}C4FMMTDa@Kk>Bz2+=9QUZ}WYRPxUiNt9gS42oyW2^A-GWXWts@FZCC1P(5nL zCfoOfoU;Bby%3>3!S#^@&zwieoN4u9NluA3^_&-+bU#|rUtQ0j&eEwTQfDdhT2lQk zuczhpZ!ztdPnO0-wC71x^1`%)3Zy0@ps0V(l0tp>yw^&9r5;tsE9Ao;eB-x2)LXi# z_p`M}Uiig-yE@OO4!hc-_D38gbxg?1;~Of zSw9ePPC_CQR^|sqnffd|xVCPcX7^L= z%j;`Jdjwm=dEf}`5f3X_z~qr$zrQQx#ervnw}xH&YWF)FHq##~Z&gwAl-C!r9{uuA`D5w_flK=@Aj7oo0`~RgH@x)yh;4ay@=`@i$3-)8Z;62j6tj@#~ZF;s$fwn#=Ck zj@>|^k}X%R;w(BuxMkkg&^QHJpd7wch)Vo0!B;uXYRyB?eAtZZO_Ez0SC1lEN5rEd zrEz~`^3&mW7`KZpNnRQ!2qd7U!|(>)Cy=u&)Pl0>ymVR}R`!L!><>=F?l&&(-Yx5b zt>ZV+`Xb`$E?>#MB(tzDRz1ebgo^)J|Iz@72h|eZl=i*LJj%BUKT!9Kd7nS%t-swj z?s>QW@6zB0zGhr|)E>9Y@Q1u5A^HJ5IS%9wKrGYOU#uOv(uB`#D(6v`Rgnsddt<6I zPO~rKnp1vw>~r6G-hcKkIPUZR{hg2gnfV>)!CP-$mA95#xDq;sD1k@z)E*De>epIW z)WD@%w10fPzN!evaywae#wzs4-!;v#p`kKP)^;X*KFOyccTk!y(y3T?E58`87Z~x4 z*VifW4eheS_fc01eZJl8a;iQR!2m@6i{tY?hO#pPi4@-?T$}->@_9Ze^)gO%koRer z7I$I)o%*_1G1rYx*<Xi?qfiKrMZS%vjghb>pzJy8nCH_&C}nL=$@a2l9>Kj_sO` z!T#P_u8w&)kk`IuxAnZ{ik|(FEL-bE06>q(P|p-C2cJo9k`=8}adeE|Q^y1&LU)PJ zNZ)Yu222{q5#1zw?84-Ql2L*Z%vXv*o6`Z8JP<+&)PoG_DG8QuH9k zJ@bk)?uYYJ+OI0N+r6|b7O8NEJ z=F_vzI$YulDNK?P9)8AhlELw#ytbk7woYvGy83DUjjM5E9((0r?iIh>eDo83{M+7! z=8acBmDi^Y3(x4p`)ZAC9s>k$6kUaVMH{v?iBU^^+h<}Nig;f? z*$ndfHl6VT@*cU4e8FtJ0U+=o8}<{GJ%Om$d+@3}1wSaitw4j~w>rCq{iBs%mwd7I zkF>*S^$}6D?fD{jYqUi0U@#Bzr**c`(=Lk^39Z&1(oC_BStMiQ&z|&Nx~FCpm23K zagUPMVBme7$~crd&RMCRoN;}1bzIG8+x9xHcNQ&P5Nk-#bWu9aK}c;4etivM}#y0p&Xw|bkd+Ii;T%U??TkmmDVf_*h<9JH=6KGY6%rfv87fW(vg zb+CKjAU=&K0)hK=Rf>~+4OUoZqqDAs`6}&y^9}F}mqH6frHeZj8Q*j{aWtX~dq)<; z^<3EO9`zBmGFU_X6w;sQfxqy&UWvKzOT*zd&5J1fS+~Qv`ME>hfBO3_zU|e$yIk;Z zclb#2%~ZEZ@y$0^)n7<2M40k2Bq4iOn5;VjISS)|uT&=CK%2wCI}~>nzM5!<)8}y^ zjflIxwJNSj9wq)0IVC?R=8}vgH2Fc%L>A%}#i`;48AUT8uMKmZ_1a@Sr@(dDe&Di1 z%nt&@CG#=C?|EPQz_s!^*5nyTKJfhC{lTNvXOmrtue@!w5;3iN%Haq8#=6=`PJPDp zqFd%8nZId&PZ`|xq(=?D-+RsyJzheTecdmbP2^udkuvawyE z9kqSqQuB9<Ibw$r&$h?*CWhvob zBK}jWu!EM*)`&=awTMF8@m~4s75oo%=gv57#mzYnx_Y+UCi?BmxFRka{+hpIX^rik z>}<$9Y#6@q#KbthB6J+)#gby5v;!SL2!%KhQl>)-U?$ zY+N9chB7WcC3KRXL4Sl|MSn^xs5kQ{gu>b1(_VM6U(e%sWxqQwA^H)cJ^pMqE`YRo zKG~JY08+5Xrs+{$y07{DEx%aS*Y4E2!D`K5f-L&@?^n6%w=&p6+YuA=K z1Zy{-G{tukpykCAk(ERjANO~7IH}qvb}`5AoqBxa(Sc{pxx_KA*_0$L4dp}g%py*v zf2`n%x`_0mb{9OVzdBlcC2u$}|EBiO)I~buYTf=)-TU{>U2R@MTW`sp1S|0Yf4y3l zDKPp8WUUIhhKE-3luDk{*&&Me+~p~c z$4q|kb~AAa({dM=J<05LM?0F>Kdi2Gkkup_6=eDt<|`L8qa=xS5sq|0-0 zU0-_BE0D#y)q2kXvesQ_?MIHv^iJ*%o5l;O6Y*W!`902Mp5Rs`y;v9*^E%(!$AKZz zGLLTilRe2|WN66`DzwvYmiR?}XVB043WhyR#NRC?csq^qkqPP3vMU*s?TQopqF(!%eyh*^ z(e(J1_E*=5ruFZ@>jXRzPyOj^d4X?=yv#&lSIOQ34R$5T=|F~~En3fpK!@8x;A=0{ zdF=h^_qzK#-Zp<-@0d^i!I^J3opl$E)wfce_QB`QtsCsr%g8fQ;`lg3}<{<()pf2rS)Y;>?r>+3Lr z+4Wg2A;mVEmJSKkM!XQM3sT@$gv-qleQDe;bt|_|F}?dIivH^Q!f8|XC5NvNSm^KJ zGxfJZyZ{EI=zn4}zmz4#Ob%WyvXR4Z;b!(XUHZ_YK6b{7_x093@^}00eF^ zn0fRu!jr~t*A|v}lsvH7UjjT7W5I4EF9Vc|O9ALH+q;RiIYazFz7;%5UV}_CzvBmE zpO;qsQS;$4k3M#$9wj+xD$6NJi|zbG4wL+#!Q9Cw`p;X0E4RZ~2c^whoqXaH$t%U9 z2kZ|nZVSXJ+9;lpyy8G!Nq6=;OM{9ZDt}1-Z)d%$w%_@y{lQguOPjeSTxbA2s=Un; zKEVI8{Nefi?)tjzaa#Wm{KfB08|Rwyua+KDULkXLdlUk-M>|-b5{C$uxZ{no_sn1P zQwVUjFZwAu^WxxDJ`z0fjQx?9ubS*$nu{{lu-Tc-3$HqTlfF!5qt%_$#JCxH? zBh(@NiNExmekK%a@)}&wFXGY{z^B6<9T&#n)f*$WbMUNWill{+2XWN(RwS+?B z@mew7PI^MAF!ypl)<@C!QK{0$c-*9!3&`ibkp?+)%1?r0U%()J4c+J3OYka^{Og+GT&|)OgVD#rRs|6{$}G z5j!<5`3*1&3$P?V#nId!*hbWq!By(rHNR4y?2IRC$M@@%U$cIMep=TUALcR6OzKhM zfC!CC)L>ZxmP2u&6>6tBI4b$=@Q*bv{B}oPw98V5-!RL*kU)(q)klyBxPYYliE(Z= zEAxJ`Fksf}nf1RY=;cCEI=_n`s0sVDdHNOsCZ%}d*9Txt9HM|v9!a%4%I<9u+Mc`|Azcl z<7x8v+}3zgp%4s^iMPVu>BUe-2KKH1mOw&_gm4^D)k*60SmF83dV-M$Mcwobvad8> z#pYcEmgm>PUoHQ*7Es6w8W66;52%pa&^pQa5V18Us6VCXv5s@*ru5TUkNvRwv*FXh zmhnEgUcV2f6klxwLz_uMn-Z(rUtj(Pd>XA{y8QfpIWmHlE8Q;}EH-`-NiUv*vZ z{7v0??UGln%YROJb{cON%xM5TjP*EL+En5k>#>ZBGCmZls0Og)XRMnb)QUU@$29Fa z>SCUM*y(2_&%ii?AHJ|EKS)C%q5Oy$aov!UG)!NUES^)cat-#;mg{N#dA=U}Ue|S} z)!!U<4Wb@#vE=l+*q>s;-o>Z3uXcakPB1|NDSj}|i$;7%pYrh>KK1TYZ;tsO=B+YL zi+HfJ-XU?Se%w6&W#QTtetH5|ng>NZxZ&`kzr)=Qjfam50N~{w1;zdl_30Ekaa|WF zhP=x7&5qw`*X94us`?9*V>^#H!C-(IE!46xp7hLr-X#BA>La!O?%#C#qa&UV{e4~W z{Ek?sMAsM}x&6&I1fVUy1K+|%m)$wzN%Jl) z$DaDHoh2vY(TV*|5Dtgrq-TK#G~z9oSN}s8{C6|!lpXtuaaxg=eNX;y>v{-Gp{4c@ zX5LE7lXQE~yp@QXky{xjQtG_Yr|@{b2>ls!Ly>Ef7n|qRqXAQR9!Bxkwf})9rq$uN z@!+ptt*XyuD={<~j{ugxMwhW)FFz)I+8;@+9BPowC+mJP&39KExI&#I_~AbtKZvy@ zufe|c!@lPEP#KSQvF6rud7lc_x6bx2d2vm3un3p=Mpp}5;thEaAN)B{7Pf+4oK_c) zcs}H{=DhtFZ$NMb4VW^3nScON{Dt74d^d>Wt9d?kJkNd$op@gUI_vRvtK#bFQEm{U zN0oy-Kg8G+S8(XLUwggC65p)L>pOJx==xi#N8Ir|#aoJNWF_<~ZX{1+{3z?_x!I}J zDGuZkiN&~@k}mT^zd1D8B>@BHk(2)L=&{w#69FFe@H(%);^0)T{6X*3?W2#q^Z@oV zpzd7qo_oxelZi+4Q`x(0G4z+^gkZ3(kQ2Dj0+RB+Tbb|sUdOA{D;XEnk(cAZ6i58g zY+S&JXopKlYO!ve7Jah4gN08hT2{+cz00OyWKFEgU+ldz-k{Tujvo1yhy(xhJpA>c z)9cQ8UVPS|wCOsWlrCK88`Ue^aH5y^UW&9`y+`9~#_M?Hcx&4D2mO%w@*(FjKV@mV z=mCD1AF+hMJo&ZuiP5?NMNT~7z?bkj@q&0%RLX;*c_k>s@tVV8uj%Cj-dwf6nn$PA zx$GBHy!@#1sL!YMsV3r5wXg|XLI*DLMBV|k1SYiUVBH6)F(2oNM+?7~^~ytUt@^k7 z3sQgQW6)dPx5J`nKM2mWx`XtRcuMvpEg~oLRJ6Z9WIM;6-2P&J0M)f(KJZU_r#$oW zee*wJUuwlOxeoZGn`z%dmRlc}m*gZL<@Z(;f8YZJI{Xh_N$Ie*RwG9|w;= zbyYmlNJbKR`QmRG1v{>6$EP016#t6gX4FaAnW#J)Sc6nSaHdCymS+m`lqU_FfO zgW>MI8b_1%$ysx^IhnEZt|2R$WIc*6;|RN2wjRT-ff`Q~$P>H2U$_d7FXs8>o%l|{ zL~eI4x<&d+s1QTQiC^NB@!78+2sJqShryuk&vYJG>f6LCo%I2Tixusd$6rExFxa{_ z)sdNpvcSBnJ@7ceFn#sDj>fHIIV}kUIWg{)<;;~X$lp1zLVq+m5tW)H5%HlK$Cmji z=3NzBpOra_`KHRuKBJWZTBfY7)f5KP9&X-59AZLx^>%99|aHJ zK}3s++-Zj{`|(Wwv9CDwm=br6@;<^HdyjD#A*Xfc(GRc`@yY`60Z(`D)%wkOoq#KP z1y_5&bFUMie2RDZaN;e^U;qj?V%4HxY;16X472EOB2LKt0XL-i<*ch2_0h;*He&Z1 zHw}Eb?X|qp{41`vG~Tzz<5o0$O}IcMyP~&5z`S3f)CnXiMgxX7wfUj>qI3*zb;c`; zAF|)sv?@PL+BxRti(*8yL+vA!Y{_wYJm(W!;uPr*;1Q?Sbw0-5cGf*}{F3VKn{N@W zG!9Xska26CTEZnh*D2kxnv?#Vkm}ok%j*^tejs1&jCY87QP|fu+57IWFLC4eDE98N z@s=LN3o*~hhQ}$;VMqvZEIFVJnscjts@Gj4tkd#k*%P^td2~DRaDP+UhnDPWz1AxS zpOjSA(JFN!w9dtehr^yy{Yw5>r@^Ng9{O=uYS0`bds@NH$!9wGXnTIzYi^PLLRyN4 zv)_@OBO!^PJ-=Oi)%X6m#ShkbGWGTjKSZ1rerLCM^sv|;cS3)ueM)PQ_FD=_0A9+1Al+w~;UbiZEK@C!N zCDn0go}nC$PYhV^DEuMXM5v>@K58dEcKb_qb-d-Y;{L{54dYqbmc}I}IbqevG%g%M z0}L;fkNTPa_TQA^m}q}P@w(byr`<*WV8mB%g4dfJd3?kCg4Z0`+brXk-4574#m!5& z#{ElyYru9rs0ICv><0lu`Ak#kln-KZX`I`OCAf`}Yt3qIc=q*B}1H z8@?C&#OHCPC&LQ^7H^Q{PS|;pQ&^cK#Et7@k?pE1ck~ zJdUlkerv>6VOO7=X;+fQ6uZ)Nh2&hM<&o@E6*ScwL#Ni}sa0OMZpD1UdGj#j^l8=g z(zsh)eSD1j-zI=)O8jX&?)PHfbM%K@sat|B3ys?><9N_t zr(X$Nd_Cm!nf;KH)Fn_Em)8Ymx`6sm_-X#>zy7ew2b;lV5+3a@{7h?|)EMs8d4n&&aJ=BLTdGhcm8^|PJP z-;4>gj@H`jQE z9QS<(zG8f&u4ZdmKlFNNM1WBzRlkz<^Y*x>R@~rymI*$=1#sP`e*qnG!1D}M)Zxd& z75|}(6gNzcqkhMxtImG@fBd%hu18+;l>SRte+IenW6>VJJJZf2vnjmgZY{M(P=U)x z1SafE&wSGB1S8GBH8FpuHBY-euKUW_cr*^Nt;eXZ>vFdHn5QO7H*wJ(9ZBmY$8r4) zS|};uX|B*Y+GC6xXz9;(mHM&1r#zK)#&nxuLD{sxp&#JrZ`jsqhrW9d@h;VC*_FR4 zj42K^SAc9+v)1b)#yZm)MLAwa1$&S6K);*T1O2M&9~f5X?T54EBvsUM%Ilab#xOK} zf{)3tEV@u4kI0U3`HQ74Ip6mAmkIDxUitIbdNosa{Y}1n2b9nq*vG29HzpdkM z9492b-7p&u_ALoyo(lO47Dgi+HNsO6#d{7C%u|w*4vXoyREJ6Ny5zHByq@joH?#5R zY8^ak-UcHJ;$4hJX|i}p`)pccdg<|2MLrAP&^g-Mxlda2^anlT{&Twyz3-zxd(2&) zs{Qn691*wtPWjdJ{rzra0KND;zG)p$Af zeL;}Z;sbp;_p9wy9Cb6+1+tLL0@y~*uONA~e^4cnNdoayu)W_k_8j_h`!Df1`y6%l zp>Y3pvg^BiYSsSjreDS>1Ue+aRTZ}=uCd;*b<~#qt}KC{vsGhXDPQ0( zpx)GH-_{b})pCL-JANhd_OSCm`V`|$(s*NW%=pN4gv!sQ{#xr#!GbNywxp+doIN+l zD>XxpXAe2m{m9hSJ9S2I@wMQ~d#!F)MmyFYvQu|a7?u4UO9!gWp+6gxI+whGoa@(x zzbD4gPFWWL-Yov^-m`IeenPA6VtA7drc9 zQ8%L;5pufEOgx%*8Cpdl3wiYqnxEvOpXaogRf3nP@shK)cHY|BUtGTdq7PnJ%ypN} zy7-aDggxEwQ{!>7H1O7e9jVnPJn@zuImxBN&c&EI!|UJ!kE=Hig2&^GOC7JSqo20E z8<$h}(~@%6pOUHr25-{UW-?|Xbn;?D=q)Su+lZhrxsJVteW-V~p6$si{w zED=0_(PKRhr*41beVzUz*R4~1>LIgn=|&AE5G7n9DS;wNMV~?^3$va38QRcsvgSYY zLGwbtjN9wPD^a(OanFB_UG;bGc7N8e*}DvYT*phg%=WcBv3?SeIMBH?B)QqX>>M={ zT2v-Qa(Mn=;nBJtOaEl29_xHG`I|?+ube|N)Aq3!W{o_}UGkm12mmX{i&_+6sXQ^oH?)fJpy zIiG0;iucqWJN?VnU-CCko+&4_vS^3g_r_gZU*jo&0}-oSCW+{Ek_<@;k%EM%2|>-# ziuVd{jdJ|isUz@1d?$FlHyh7n{)t~k1$a2wQ<#)q+xy88SI3d!E9^YgW3~UM;=Rw_ zZRtKI-SM*C+!ecD_ku$%&ikYWuRl$^&f;!rOI)CJ6#MqscuS9bZn&U$7!lc^s3a?W9-O@IFI`YIX!E(oB$Gf3tZIAc(I zR8RHuoXGPI!oKVA*u*a}-lSFEw;$|B9q1s*>zEj490;<=ioCl04n&uL5VeOrDgGqh z6t81Qyeq^_-|>ssOg}l17oRrYC-Q$1E^ zbObIgi`A!NqWztg=0gOon$OW+XWUTarGabhY+TZx=TmZd$;yxD$M!C}5-xZ4$;Le{ zP8cOq_GhZ<`!z1sLFm*s!aqlRwO;;jOY}!h#8+Ha@*-v-Q%;C-9)bCc^_Zm9;VbWF zSM0rx*QeQg;EI00t@1N@eag7FWgyDiKGiU2;^Up!lZW ze^27kWbakIv+zS}zEtElA+K$pn%gkg8S&@@Kd3v+by&@d&GK53g2-nKN(99l<|&2i z*q79)z+II8TFr|s@|xh&L7Mk=Meo4tKXT-wkB@pDR}9`d6g~F0rT#YPfG)1xX*^TJ zvsd(FMo#_47ABOz1K=WFcD>m4&quR=)*a}-iS-TZIG%o+&Nx1WLwTK`qh{MbIHvHI z8bFIzMOHenf5-EFPUvu?_v1}`5$p0O|MGp~hdT4R1qnXEuS*Ra@c^l;S z8drh+STt^VV|}*QA5dK#bs;Zl5%Ec%c1spn|Bcl+ljkb>ouMdWJhTJJkV_S{ozeQ37-DWOCPhe_WIs8FF5PTFFKF;fy6V& zJ$P%+Y&=|Tir!*eDAEjnXgqoVkL_K?#6RcFE7&{ju*0YAIO`ww2Uqw*o3^}@Fian4)C zQdDQ?n9xwQT;~fsYpeB&cFoUSbNc%p_Ur?`-h1-=1>bqtu@`!L9FU{keMouXQurPE zV`HBmkKZf(T8Xbzug(1sSNBY(lybqD~3&`UOZxWxT*0y0|lAOAez(#D$J6KSR$Mj%m1zI~4SJO3t$uU-C z@G13!m;9p4V~qU%+TPrMf6>Li+5Ugs9%ZxUtB)hM(b9I7iB-(Becz(SfzjE=gFG^P zG^tO%DuH1(Fl6E@85E^<+M^2YI?!j|>yDOr8nxZ;I;0zSfk_5xT%S;#bZ5+O4g|6) z9pSIl;M@M%JPPaLulcwjnzv+XJPk}d)r_fFAE@LRUKeZ3?|J{i*8B*ht43v9XMwBP zGTu*$C9mcOtgkCi7~|#wm#!rQJ9T|+wA{E!^C>Ot^P^J zHHl9@w`zNoBqrJ;cO#)lF6J#m-~l}C!|NXu-m2q=S56t1){X<0C8r%z=j+-Js()Fl zq8OYX0cEc#ToIolI#oD@OLifym-+^EeWupmnvAQZKiXm8uZvcdSMVv^U4kh zJ%vJDf#msqN_eBR|DWpdj(HvFX?YlT7=Gt#tLkle0uOrQdg23_8n_AzOxn5g!@>tO zPpz3!AEj=~y+-_gDS1V+w9!Mt?svg^RmFjB>rDS!;Pj)3U^C7+ptJ6z{MYPuMYnrQc zl6a;wKA@dPfA<#QNm?x9jk$OW&v;%Z{Q(%?|IgW*z*$z6=iWq#Mz2ZaX3+1(UqZ|; zgI}Dkxi=xko2o>k-l&ORt{M})N~HD~s(PNArs<|-7Dbdn0i~5ejfjAX1{{b(X&lj@ z!6DjeXiyvwCBdP?_kW&ut+n?)>(nW6L!UZlpHsD;^ShRLvYvuU?Bwk3NG~RX<_wz<)8hyx3afB~o*_Qow(!7o? zj$K(_^P_qnP38A|H@|Tr$w|CmrUL}0EF~nROLISV@DzUU$1x>t z@6=~x_ZioJu8M1ducEGOImsn!JQA-P2Ytsfcn30JYNVeSK~^cMMG*!%rf)mzuD z0x-rTJhE@T28i=f^k!K#-lwJLt*qOq^ahVIPSSk+wcH}+OzTUVNN&yFN zNHQ9aVsj1(bs_|v)d}C1og0RReJ|#?c-s9M`IW%)xNG6{753fA`+>Fh>lHMvr%NV0 za*%@JVr~chk7wYZnJHJq`bL-0K|3glLt$aBSqTkWdXlY?daVMsM*~*TXXU@3VcsR?6 zPk{@;DP?ecCuzjEJFZz|KDQYY%(D_GoKKjLRf2}dthoL=e){rWonC{?^?K1lxfxijrc^6ANozDJO$ zo}TLKvM&kHcBOp+^%i=>4ElMp)+O~j$?17N2`<4&JSDqIqs6DNy7&)d?#C?p>*raA zt*htZoY$nd;Q6z0#r$AzpGR;kI$pQPcu;f@?Y!tu8NCZM=*0KoE%sjgOSLW#zLL%z z->eaT=6W85pGDQpz5p+fmdc%>zh0iKb^G!!vU90WpU5inYroLw8?b*)*Ul&6f`t|K zrA>Zsqj+K42Q{`iY&Pj3k3TZ~!dLo$M;il9bq@RE9xk($?R-eRIO5LWQS(CSr`^9$ z-04P|+l?#LKbw8jvzdSMJW}c>J1~dbgm}{Kk(-V*4s+fWr~FQNc)ReGIHA8! zI(gUB`(x+vc+zb90#`^gL>iB%D(W#j3IDA4Ny-;q%>noze~^F9@m;F#W{VDis zzEi{zXRWHou6+p?I3NQ+@IPNK;eu!#7jp*TsroUT*hiGn&OuyL`9swmvt6BgkMM*b zHAw*&@|hNouGQuD|szns3D$g?WDlB3P_kMr&kE^fUdxupD5*OnCdA z?>%Tv)Bd5wuEq!TdE`{pXVov7*A2gFHXh7t*}@44#Ur*Tec9CYuC60HYULy}gXSdL z(=hzu#C~Mg=eVJBe^S+B@D1jzi^#K@jj`^HzYNc-HtKqe)uVdoxYR?1i+2?pm``J! zHG$LD`HIFJj&FeTWh8Obv_2hHgL*s9SdN#O-V-T5K zk>VK?CXx9yPs|KM)=j{pMSoSCRpCj{TC#QKg{&?}z;wi3)S)n&HqmgVpLg0C~gor^n7M+}5zF8>RV?q1nG78DWa2Q-Its~}|~s< z7LPnk1}4-(KRCUAAHux;yRs+j9J&iX^TFBnqEF^*3PyceCVZVf=3Mlej}ZbEWg3wF zgi1JkN&^t_Xao#TQ)K~f6#lp$w;z}??(F{tkq>@RJhgM5EPy|~uvqS^=Qvq<3o8qi z>XFZ>2xWhq>WxT6Ei>BZ091tGD1y&;9RLarTuYxxa;nB1yon)&-fo$#Hvn|?7N`u~ zd>(amt`lZXotUS3P#)Oy?#I@wIhgQN^EK$L)UCfY8xQgbYj5Sl8I=<)pB#7UN*rz7 z%rCibo#Rd(CDzYzQu_!@UH696%@4P0{2#k}h5mKvYEnMZm-7aIA_zVa(%@=op4(t} zxT4n|+V^+#$5ncBT$je%_h!mT{k>dZ^LB-E98GhAaFp?%aYfuDN)WTinDp#y*>~~7 zeSZgER`DJ71P=s{--*12TM>ZlJ1%Yn$Vqcq;w7JrxAe&85)ZiEA>&dUB{c45a*C=p zmBDt+zn3~}SvU2(cU^VgXIy=+`90sg{aerb;T>_G2L6Qg_ak^SShRAAS#aiYD}{Tx353qm8#yTbrBrKb=Y^8S$Loq7p#yk@LN#_z1MZ~ zYX=*Z`3}TLor70^SA9?Wcq1S`Mt@`CO|ROqy!7iHe+Wy@d~8$SF}X$5_gsf5^*!u; z_iH}3<>#M&`26RN`L(BAdd2s=ehS5f9)B8napPq!%S2QkSJ@w}*?eqoou|efdPMC4 zAllsecyTUIn-f2{ugi!wtCt@u}J5TeaW_v*qR+BKJdP62qpN+ z&ZUe#jl&QYWi_7p{%a-f?E4wkDNTzHFx}wwpSy0gd85!S0-`vU@;+I)w7eiYEo!TH z)a&9gz-e_4^jPsJaUOpy^!Ury5fAT;zT+5qS!9-%?W^6VDg1JZ^K5)ds*)Bl135nq zJ@BvJzc;~K$JF^lcmDg=X3MLJUz{h09{Cz^Uki_JJ-}Pt!|MQweXX*OK$^cjauyy7 zjw_V@sx%)T@eA)_cv(z>BEO?EqAmXImmd@!Il^YF`7F(MS9;sni4%T(79NkTu%{RT z@hBT++*uS{9Sj653V;;{LtAmK;rYF9O409f2NO5 ztFE_#A0#QZF#%It!XNdKM9A|%Ngwpu)(`gc2Kv4#|E#zeIhn5>cAeHq;C2wui2LQz zr#c27A4vGV!~QVFr?68P(!K{gp>^JyK&UasK)cLJ|@2dcM%+Y)7&G2|NTKQGg$KOh>^JuaE2H?ftll{_xLl`EQ3_ zas6#`f3xoU?>YPtVc!Tj^!69y}YaJ zA6)4z_SK5<_RLlFrjefI6oT|P7b)4YyF4H_j0T`s5XHWwNHg@-ms8>Mj(x+Is5@}| z&8oOGvL*@p9-g1T&$(vwC&B{=6x;CV70_Y24|B_*0jgepKTv$w`V69?f^B z|IC@-k)d(uG~41JA;w#dJ0;P~m)vjhUQhkneINS$ug^X8IXh3=_kz#Q@7mxy&&KK@#0_o#NnInoV)bZAN`k)e&FW$OE%hWSTe)?I`oxw z_4W`?uMjWsS;jdZ5C4H=G_1(eg~t^;i|p72JVXP@ZoZuGOyYRU%QKF&-=Mrhdk6jSuf6E+ap3F`OQ*Q*=Ya zVlPWQd%0ob{G|Q<;~7aV>>o5uKPg^h9F=|pX^?Lo{lP6B=|rkQKa^2L(!z(mAeWLK zjqXfxIq4Pudcm5{-8uJ%@4DsWk3Q<){K21?U+5Fbb|SyvBuIAVK42-wW)l4v1;?-_ z7v>LtYhmZLM_u=&xxYI7#fQ%O71q^Ff?ymh zHp~;CuY#-T;d*qfuS4d&biWt+mzSEeV!p1m<@8KOGNpbQHVf~dDp^@bhsTzWeJbzw z8-8oChYLQQ6Av+#e5XkYvb8u@3v;-hIf#iiG!kU$V|WDMt4oJ45Vl8eLExWpS1f! z8h>ts*xz%rZa*RA^^bgilg%47J7uM#ed7<`o zKweQFH?ETR;z#cHoj-m0F?W1zZp$MUp8b!1{W`C z@;-OWedh^(^x9WEmHLJCnChAPH_k6EuG_)NT5=ukdGoAwPr~b)d?D?#I;G54A5Z>H-z6v&|P_Uq^0XU$3ne7x#@@7_8O4 zwz?_qaGmw6eQitMa9bAxpX@C2tR%=8{SZ#{8Tb?{jOf#V$%^9A#n%pNN#?|vl|Kr3g+JP`b0!|HwrnUp zJZU`2^!2W}Pa}~y27-lLrQN~cj9&ln_;!sL@KpS8miRRL$5ru68HZY3FC$_cNpg${$p_!c{l|nW)prgYJ5x^h?J07S zg(ttg9OfiN8ojc}Po4)(0xo17$ftT$1U+-g`yX`#m z_Q2z2;z0^i@JJ5PA7vi(DAYOgm54#hGRK3f#G|Fo+UEuQPWZzE$sZEmggqsHcpUzE zS6+wZ_4f;n`a8u_@-7vRBBT-*N2i-0dElW^iI7L9!OrXOI}x8-e;+sBSU7vaMD~U&`Pj~t1`aScD zeHS_vq+!;j9flJo9voYdweitEvI-YuW#t{6#bL;z2&Hf zKlu~ioBM@5cdS4ANcLgs^1|(VX3C4JPO&c!JG4xi-uLU2lqpj=H2ZWtD-hw`rSBSSPcJLv5 zJyqnz<2KD7uYeDpxZ~i@{Om>44=x-ZzWt|;;r?I26H$-4>jdn7N96BeQAMB0{uy=K zj>n31=n)Gla)S*xrA^TY1hs!i_B#UB>>n^L!4>x3+$xKNC$?_BesIxmd};3PdtcW) z@l~H-UkCHn8q4En_RZ8|6*os;rxu23K)9c>j6&f_2htog=ZN1sbxmn}8gI$23XiUW z2fHG8U!3rN8Xf#`XO;TaLcxRZC}8l*L9=VHevQ_b#JsWXz04aEH$3f#D{fu5-w)=# ze%qHn`H=Nr4?fLx#M}4Lm!9e_ipkq!Mc$Gzi5K+0`9Y5gOO?0sAEQ$J4o%rlIryPJ z4#73mKWBN}wW_?j_3|`7i#&3?pzmV&kl0Iv5j!aL7!OVzMjY?2i|Y7fkr(@+efHru z9<}+n&(HnkpTGA#H{SA*%n!ly&we4}aNCC9E!s%dYk#9ta@_%u^myL&U@Z$l8nWP# z`w~2jr462C@dlKwO2OE^FpIOKPzhp5Sm7vsU{x{qA(hqkNY56S|>ED#*U0+S0Dl^NJ3#PU+Glic?Ld}#$nc9m4AspVd=;VPom#+ z!w$J!j*gh92dDd^`E0xu>&X?ZcgJ5!y5I%X9RMPJ$E;p7*s!+sGZS{cwzhM{GkjU& z+KZe9TQ_UD00OWdTo|5ZyAmBK6mG`rkKdDVd0tyWu$=Tut~-E}Ux%+q2YH6_P=?pB z7G576ltkh6il?Fun(A67&-61~4ZD&RS%mS(0C3zcdy)-85Io@@bx1Fj)=R?DyuW(N z>u=_hijODj_)%v|c68umt>+1k!Jp9l^#XO{@ORc^7f+tg^E{)3DE`FIRkc=2r7K4o zjCwV4pD^Pt?5JwD_uH)HK3{Txtc&EK*M=te*$+2j4ZbjFK~XkUrurRUFh?;EgI0F zo1{#BSZ-V$RbwW+?`~_y>w!;ThC;8OuB#m@E5i>mO7-km*%wbjZfnq|_aC$!abLeG z&jCT<(I=mw`yIr-9B6}m8qufj2hUg(zoW5cv9nLN_KDMFu`fgyJQ4mGr_3om*Dyfk zBi}cw_`#9plQbS9uDUJ7RpbxClly{R51!nIz~vQJ-3_nL&Yxij`DGpaRK3qug&z4S zLe;}?c=E)4Jqb_vlPU89vM=WU{QgT{qICq}mo>K9!+ucu^VxVykH|?wB*r7x=Q)Qh zp!LgA-(W}T*F}qhl;_?4=&}dB@#;VSkGY4P@Wf|cb?GfR{tSP!13O&t;JP&)C`e)v zUm1<8#JY5z1rBwcA+B+ArsTw%w)194oG_4`AOGyvKl#|b-=6#FQyy~vGk*A`T#t!y z@qm{ScW#fmhpyfp;`PMuoQ$_hoFF`gB)y>{MFy&)X&!(uL_3p?#xL&81N8F;?#EJ% zyYr>Ds z&VBR!Cmp%-jrhNAeeb1b{do4oW!kE-yq)o+^$iHdf-38rkR!-^A2fI%>U&GVqxj`X zZ~pvWKL2(9HaGm{{onBOcilLDNMjv_^LV@IEUgpuw34m4V^66+p0VB{;l8}chu&_~ z!T-oZdV?197wG%ejdZw;9A$sZiu!sdZy(7YiixQp4woi`Gk?okyX(P%zhx^7bbS)2=!g?|mKb-6i8(Q9 zb~WqPFBLoL+c$Ykl{dtEYVgxTUN+O7kk2GvN@6-N4xUNI%7v8>*XvVA$@2YNDFG$@ zWgh?NAK!fc2QGed?tKq?&JVx;g?~+PUh>0_d)fT@eE(DiPUk53C?0srUgUT5fTbQA^{I(^ z%doCb$-GKEd9!n~;tF4*RUH18OKJQKN?(N_a%r+C#ve$c50~^s6W~DPwVrC3 zC=79|S6!i?8`oxSu? zMO@tB2lrbfez*zV%IihtW7{Lw*JBjKTb3Jww2V9gCn?{%z11oD46WQ87lB0KK8=@H5AA*O-zz?Qdi z+*#%CuA3!1hrgUU$EMhSMsvpPk>$i6-@GNYe&&7wE+;&I6&_4oOdvcKA()IP??1}j z7XaPQx2E+A$S-HVbJWY{*Q`tHS7YR5WQwaKxk-NDnsAYnXMU2LbRS1y*~uQ$La4ly zN=%MBBX8*U%P^m`^psb;=C9_yHTTg6?S04Yx3OQccq{jNKjY;y`F*ANKq0osmW3-H z#jfIn;{}ot^Ta^$p5o6~&%pfK(I340IeT{AId|n#essaY$H`9r!d(P1}e{u`AM%1e@d07D<@WO-7o?l$IWwZ=B{@|fz-D2dg;tTJO4`ZlW3bGzP&c$IrM6SoX=?ou+ z9y}s-X3W}ZkRiXow?^^1;+v`QJ0CMYJ^gIOTPeTcFRoRccK-mmAt#yfguFI#hA6@L zgzQXcwW>ja!pRn^S}c{A*ebMB zC(`d|u`gj3`As}=dpe)l*Xu{`=M&V4s(b?4;TuL=^U||dv-_|sB+{-IQyvp`uXvEZ zB~#)HOxXR2sh%Br>(|wo7p!neUU{D6>{W4v6uB-@v*H>a73ih$7`Uux@-L&4Dd9th z&B>Zkf=~ii>8q&bN4oR#-&hq7^ESQw20W_k%jp0^_JokA!O%^U@n}3^4<{>rFZqP! zRQjCQ52~66kNRWi?{VkM)E`$BGhxem$m{?uh!?V*GjhcX2vpDPAK8^-6!pjAcSh>> z(73Doj`GuNPq)v+Ljk16?@4d6AA%T(3Q&r4eRZ;}(j$@8W>d!+QXzFoyoN)!8Km1(kRjJ>X(q-p>2e8$?{`3Kq#XM5x1F?lSDX^Sy&k~ZQ zHXd*H{a12b&wfyHiacj9f7M0r+WhIm@0fekn}7Ap$3BJrG~0QKKewDaziw&g8ks>4 zl>wIi$E9rHnp@&O>&?lde#?P`?1}NmAL0=9(a7tuu=A)_nLo?C8~!=^#cxi1>!0q| zt=_r19*s9Z%P(sb>Czg1LIDQd2|~d#xLh&9#B^q>`qzuSyUrkaRs9OC8z;Z_-1D^0 z#NdPSGkr;A{qYB-wGf=15eXBYd;EX$y&GA^njeY z#~xLR3r`I*PgVZdap+Rm`PtxE+%tlVZ9EA}`hiAteZ2~(DW2k@A|s&2CzOUsZ`=$* zA|#7YBsx4te9kA#2Lt61z4~>P&&NDT#4VScN8GX_-JdBgo&^>M{IeDk^Fl>9L$ z`M<3*s7rJ-dZlm`d+O&muLGcO!As@C@$+S{?K@4b?`PU7OPtGr=3NnNU^(LE8kNC^E* z;nZkLmp2ECpAB41#hZ~Yhu*$%0rN)eFE7iW&v>{r9IiVQeU7m%;ePWYDW;E0dP80s z`zfA^Jci7Hx5QIp)ge(KI*$E=3QzUp;nHXPxwL+ae#eMEgRg$)Lhx;qKKO!~rxXj7 zc_i~E*t+A74G>G ziUTGNAjq0^Hr~{u?8~?Y4Rn? zb=Pm7ed@n{WA0Tq|H{6n{RMT=s56ATo_ZnvW;3&Y5`*PM!l(NOaCxtDXNa}96kq9s z)}vI#)wvpKbM?`6WZtK%LZ3RZ#|ta>4Tb)K*Ke@?!v85!Wb1!yjVu(C6DBtU}I%!7Wnr2;^-;$ilJT7(Z%HJs7%X!w`SIruSj@RMO zHDx~`=UI}1cpWU0yq-c(oBYIlX^$U%=gfLODaK>uH5bmrH8~EgN|}nZ>i?xb#-5{> zA@u}_4&h;B!!i3!xBiA!0qnil)nU#2L(l!g6TkQy-=8Y+Y&BaM<6E z(eZl8x9C%?*1>iC;gzqZk3FqJm5sEA_6JZL6aE=2t_%6TD;gA%7ul6?AuNU@M~U|| zJuzyw_u`noytK}3vQ8Vg)>@u7zIrBKaaC9vA`Hm!=vf=DlNdR_Va!R02v$zfT19xn z*q2d*L0>lF_HLcFsy9ZzTSWltBE_`~vI9Gd4rj{YPw&y(n> zs#WxPuwP3%pEJ(&|7spia?1JEqc76@Quv#`{+hIJR@fES*slAXd%l?}0(z5Nh=IVD zkD|Xgd6L!Yquli=)2b0&yUc~yvWamj??T@G{ zOyEj#k=N$`WalBNR!)Ast&yBkd^~6lBwl#r6XqUp(Od7FyWfUOpR{zpgY$jwh#q(h!gd5x@J;T0+#?MVJO@`!Qn@0iL1d?WL~O&86t z8_~a{G1TYHc79Tkw^H@CUqDi8$DN{b>CXdEOvSj<54^PaAo`eCaT~aX=+Alld3XQZ zQ~vBp-M;yn1g;-_vs{p6Xr6z542Jlgu>QL^Q%gy=XyH7UhWEuRN2-!}juhMboEImzjm z-#qst&;5n3%{}K2-+uD{+4|Wmr-)n5-H+ef5^)Rij(za8-ZbCe>%g3cm;Lgw8aabw zckmeX4%t#$zs9s3nDYzDOHHGK`EnsD@ykRX%6NLcILF2NXUa>&&>e?KUZx~KVpgj2 zx$>zHo%ngJz@4AP$@_H$7mAbKnYGlkuz*l;yG-r6} zVD0)&-LWSx_8F-9(<1H*`+wwXG#?oDuYBJ70Y}_!P38D1TbA}eDETR9ls9AO^nk(e ziWi92nHm(&kNf*3_v;L$zp%seuJfh&z{k91CVz2NX^Lxic|t)-8jp%KZ0lH*`Baih z$Jxqn06r~#pI?}-*1bhtG|h9ZimPj1fllF+^e76G_ymKW@T#nzTwmR45XOaRU#PSm zL3%9l1Nrk*T)Cg&39q5vP94VP8kezv!=F#-aq*j{bha?px(TnC)TbIN|d;`PggS&4lKP+{>ew~!~v|6X$ z)#F!Y%1c^`@rWhuEmDj8-u9*O2og~Rui-DlQupY1e1X=V!mBYJjjOGLjO%=7m08o-q{uV$HizAj=Pz?UHnhA-TnMgey+rt-z;(rI;jg^k zRE0~JCglZKs59x&aUnQ3$swNbQ$>n{f$MC1S#~Ex{l-;z6}zwW82M}P#DROHN5&%& z8EW(VfTaU+O&5sY$*&`@m(VzMrt*z49@jEo?|Mzu|Dky%9INw%0bL#@{Gu#f-yXsM zPWU71&@W%3eIu~yOT z{9BAxo=cy~H1LtK`*f&JWf=Rr@_~?Be?IfbQEm4jx3IIny_o)1??0uQOtLTkzz?OX zX#Xj&xLUbeHWm8xyTX+MMR4g2IdR4XztG<=rSBi7^+$%>qJQmq7rTGWe~b&ox~jNu zS)<*IYWqi3T$p#Te|XgLQpm+QubY(>deVH@Uw2}jDEd5d%KVdYrGDiBxE8l;&@up` z0PagP8froD_ovCtSS>f=e8#D|M1nc6GkH+{C*Yu8Iqh#4@y_s|MhxR1 z>hm|J{qsJP`&`4mPQ|_!cdnBf!~vbdan1yuoNqgh22$n=$rBXq2t{zL-A?g+;OWch z=*@Nh81DA@L~AL%>R?~8snNT zV!cer?L+3XsdCG4h3|J0`1FX}Jc_}Gkjxi8!3Yv_lyNbL`$3kxyUIVR{u;?GuRs36 zY`KABQlHizS9ks)`L+7welA&`s-#?y_NO(!dS1Bom&_kj`C80(hW+1q@%);_ZJKY^ ze^y$0DD!vJPkMc12+93z^h4;ENGh2`WRiipj((^YU4k5q*x#=c=MVCFnQFew{FUO0 z|8@y>zb)3QcG38G>1)gOmGmb=@5xEY5XZ8E4W6Q7?Ed9x|Ga7b`@k{Df8Uh$&-+lG zKM%Wq$R#uV_X_nd;{sa9R*-xY{}?aN(0+pih^>EY=k<>s&wu3pPrmT`U;EbFZ*4wl z;XN;4U8dwk#%%xmtH^7#eI36YKDd=xUbh?n9b7|C9G6J#M!CbTvcqLt!s2>d7dLH`$PnZoO9} zO>P5?oJxGt=hN#K=Fj}4b8mU~j<3&s>BL|9%)<__U!?QKLFA3+U&1^rar6{9iGG07 zru?-_Pg;I5su+UW0dBspt;<)jBnoImVA*U((YDRt?c7BcQX@}|_#2{R0v-Tm? z`UONWV;^AI`Ix>MSPBheJ5CUH%C0bdPE#)&bq6lCgReN*CQ__ zexDwfimz1X@_kRGqgXA?$*6}14(ZQA0vPN1R2I+2shS63aL0U}?Y-1(sPD#n-j~w; z1ndJBeflA6 z)GBkR6$qRa zvxUDAHHkP?|JGAu9L2gFCPa}Izcl_K56V-g^Jbdgzn*b7fH(QdQa?P!e5d+1JM*1u z`G z%+}v@KG61MvNpzmY%s*BXd?-hA7E^JKY8H^d(!?AvZvRqJM*89y7yP-PB`M!_wIQb z`)@e^OL+cmHXg1Pd@j9ZtHNAl`NCs+imL;FI9+8d!vX2b(mc;pep*xKf8BikS(mNq zXPR+ue^z~4g*GAzn%yj?7<(ZnNl1jiK6&PY%;)BV!spCeRO@`LzqGH*^DZM!NbAQ# zGTEf^{1Y~_rL!IkNhvRdemv3$du3H3OytEvF&NcJ5@zOjuhhFo2a-Ki{y5|mb_9^G`pc#<~swPid9Q&tF&YQ=24-u7cWu8KE`gM4UxP@QW>t^D9Dt%ns z|FoKKjXGcO=R0TH)x`KyUW0sy?qjg|rxd9t#CZxKctLqVxlaE+mHl-)2bwzmw4X`$ z6a3a}To~ChNb(5uQw-g_ZhQB7HMNVVgbaU5Zahk$&6S=vPklcF_W_F6AM}82%YXVy zx6HllvVXsP!}@>8eLo?m@6E;ofGKgFjL_px0zz&GNB%{4Bqkx^UvrY;15G^X3sDl% zw*rsj-otW#R41N_d@JIX`@9Z+qx&lJrz$?@BJ#I=Ir-XLU3N9{oE|2qUp7>km&{7U z_0nFPXZ;mitb?xX-T6b}g$KWmahUqexlrd&oWRv9zYH#`$M#Nc>Twuw%6*Ylvuc_g zPfg>|Y5uRvSO4$pSm%`1iH5*4w3w%u9EZetC`}Rqwd-isndIeuK$#UH_JlyrYbe73 ze(_^G$lp};m+*hV3;*MF@Bm z=48=|6FPQflv1GV3WJkDaWz6uL*|EZ zUElNkZ^|Ry|GJrR!vw!urQ#`l2ZRY)zE843aFu6%a-MJ@*c2ZNSDF8!o?ZDJ^H$o& z??(7xg>i^PY&|{ul0S6%qIZ*hF$5il%H#+e#9#_%sI!BpjT`#7*3ZUu`|IedPP{eI zPopbC0VV#UyHgM?B54@P5*0`ak{d@WFJ6whp9q%4r^3Ga>p+;ttkxl$Pm{ckd_D4F zA5!T<(rJ&(r(OS(=D&c!XXT1rzv2gi;!Du)ph66r)6ga`W?xj*MN|A2>sSlVGajq` z0J`?|$k)%bFOUY>fENpOfH#-HLE5r|t)CBw6N_O6!(S_|kqxMfOy8Y8F5BW5j8Bw(F&?9? zHoOg7s;gD&2qMl(^OvuuPGr04OUd%`JWiZ%@o>Sw!yD1h2|_S{#g-2wPUtvKcyb?l z%y+f?(5$czaN@0NR<)~TLuzs9+j7z1ErAI%0ups1J@c`51TH=qeHi`q1p61}tN!n( zBS#$g(OJ0o>(Wm5J{gWfbyW$6F_!tkKw5s_rRKdld>Z{U$SeFV^{dL>t;Zy<8)xA{ zWmDtRjEhmS+^Q|>(Gc};uIe(l@+2?nSMFP>`j=zh$neuQY5ej1WS_wRc?6oTocz@H zO*b#_aV~28@v8y=U&S+x(1yGazRGshG&9F4*R*He z!aDC`xnDd*-U~?1F$LAeSHy?Dy7)=`q+%q=$aPuI2O=_0<7l5cn5nG~<@I3IJo8zd zd9L4j!)pFzlE=|o#Cx_QE~kEA>J6aU=6FG0O`*ep@wRk#dmn{9y4@FvGSlJpAEh2z_LZpoUU%I6#XZ84>I+fd^HpU}6eM{7 z5_yC;lsELR?0*yX-LHEbSgiL&wLebtxuZ9bpYCR4bHoVC8jL!qF3w6PnGXjhuWM@Z zN_MWw4R2sYNQ$sP^#y4c1*$>$1o1fiC*g+|5Ayr+!&Q9ed68j^yKAtg;kMX61!}u{ z?RdN}-p6>8W^7Ngm@W?pxbg$plcmFh>O^2;eo|t?;;qRSslHeGh!&LxDzB;H0`Wjz zAMoKfsICz6-C@bPx(?YlxPYoxe()m~)ZuqE{i_gMceRH#b}sT{w5Z%&V%*lt8~Sk_ z@n+SBAN7uiqi%$s^8ABhIBrR}?+{@*`{PA^diZ?cOL2POOZgVk(%{qh<0p?25K@Y| zmGFzY2&<46r9jVbMchI>obunMj)&FPl;`EYKHJ{I&-C_D0Y}&sA`|V}u3`XUSE_~D z+Cg@L`bSYXkNi^K-kA@q_T}&L)xXQnOrN)DG#?>eAC&!OBsCcjaFC|tC3}aw_@9xm zld_{YUGrb~8rNx;*apzJ`u>l2YG(cT2OS>OcW)2bnNnkLm3ih=ueEmzT#OFo^B~3d zXhaIL1x7wEJ1c!)i#blH_$uP`;Ljh;)Su%7qYS9=$XJt{tS5a3HCFf_POw46E7D!? zjJcVC<>Y;_G!7s4te<<*d#?EM-2dADs3UIt?kDHdK0$%!v420y|4A$Q$2Bduc=YA0 zw^$RBE|1>wGXrLLYoD%W5Pj}zKEmG;Pwjc-m$rWF=HEv4 zx_|H$SK1rWl9_011%FC;!r+sRTP-U!vJCff?{RJ==i8YO6e>-qP8`;Zw^#A8+c>8k4;EpL@n|Dp2rP>a%g?m9ldL8GO*c4+eUy_H`L6 z{!IIIEzFdcfK9RYvTi7B4;1K)$09G%cShnFs{0rIEPclnAGp6`9Dezdzo)L}MT|~{ z`+_Qcj_vv?_54!2^Sq3tVZ?f(qu>c%I3eW?p}+n-E_`0a3(oh_JmuB1!{#2)G*C`NxR_lGc{CUl6T)>&MD;UG&3y(vO zKg9{8UUI|&hAI{3jGFVBu=f^MTW?$`KSt8#k9T12i`zDMBU?z5*q3BGzKc-Ys)@h9s!#_HqZ{=n4znIusMregAI)oLJ4hH+=k>OL@SJaIQKQMn&#ed!X>E10q zJuc#7U86lLFZpGkjkokD)yaS&ztKp<&Rmbhz7#nqMCRY9@qT`#t~Wj?CV}UxzKZDc z2zkAqahUh_)R<}y(Gi;BzwSE6eL7KiL6+U&EAhKEr-*sboGrd8c>3`RUnw)q;sL3O^Z01qslL{^q#0ka)M)xmx92S2_{qy{XJ>s>ReJEU0_KpO$wCnBTet!rh z>n}cGvx1#98g*D~o);v5j&azJL*e&o-!;d_3D;xah}~~z8k_?fLhRu3dYs%JirQEq z#N|2KxE&khiZMU0CM)#Dypl35o_d;TsQXs2pIFA_`g+Nmi9@US*yC{+an=*xI4jPY zrbjTQc_r+D{?ROB_z^KjKZA>F>h7tF+y>Q%iy2BhUHA|xpa zJkSEOZ45!|N(=7A`}AdxP8Ol8VDDw$yv{oNs4qnRwfIKmg)84*D6ZVoN(E1iaFiZ7m9{y6H6fgm%(s_~2c zu~doHT;W$gFaLqcYe@!P|3gqTE&gO3b`^hi^P6wYmKV~P!lSTuvMXT8&V-IchPnoC z$jJCN7`#yW16QigY8}1es;a-E+h=^Q%YVH10267eRbrqpa;}P2upuZ_<4$Eqp;Meb zJkk5h=eVWZub{H0sKbQb4!@i}g|tteY_&bSKQhs|B)~QOh8|lR+7d#&N(zug+cwlyWI5n(F{QcZ)TwvF^015M-)C138(C)1Bs)jI-L@cA!Z zPX3VYXNd<^d#UaZ>^NO9k$7sfrj66tvfa{P@EMwrl0IYE{O9#j7`h|Crs4h^opqgk z{>1N9yx{Sdc>R~}k-V(Zu&0oh?cKuR!9&0=L={c*_o~C7*fx%7`HFR1RUc-z&iA~_ zxo=#m^Xa>{hx&~t{hvO-NlkAliV!1kN?br(z_4LNibN$*UUEO7b!#+Vszly>m~DLl z9(~#oSKPXAzaPwf{kAWE@*(T-%crSsmFj#)&z6^Q2y2#<^FGJ`dlxkO8?l2d-gXa2 zfQch0+XD!NyN`X~d0fRWaev^O(|wD%zeCjf!~c!2tEEjlcIc0g9%}z5k9t6595gqKbtXJZ9H4DKLP6V}C7k;qxJL-!eDnGRK+UfhQr9Q*sFDH&U z4!^^nlq}jqe#f|cHp|O#j1m~zJv+PeOtu7(YC=iE5>h_U45F@<>M_1=s_V5=`vdZP z*Iwk6rooh*hPA1ODw}P76Wl! z+d~Xrljgw#*Tg*Ux|MK+-G3N<(2eP3_b5p1J`02W_KU*B^=11Rm!5Lc1R8d)G0aE& z+x{Y8(rajSuxCgo6Tkyk-!HOn%hWniUa$M{dt~>@zoZgfHh4l3)mSt^sIO3}<)tb} z#}3wY*S{$)o!UR%jo)v$oI33$)sZ!LvhMT~{fQ#^KX%;7yUB7rk(2p7>Q)+s;swWn znsSzzQCRbRtB8|BPW^amnq774wFktfr-lAt^F`m!{EVVMkP=jF?5x+7n*C34jrq&* zgoI?hayXx)>*{s;d z*Nxks`zH38-xXhdLVrn4F)9O(9wjGqWjXoh-AD&3(*6r-Sd-E72|%9cdUozl?ejU~ zubQt^+@AB*!7MxH3c}IKDbOi9MLq}+p@=6W6;Zh2W4(gZ2_M*(xGSf@9U7_dR23IH zj!FBvZ+O%ES_*^u%W*O5Cq4Moq?`mnhy*n1paKCx*}1SFA;TKF-k5olbRgl$bJw-DMZIBgP%=kO)qY4(H;(w= zTIZAVaIF9@QshKy+ zeb6F~V_i$t&lGuA@YFlS2V41G93hdc!2UiXflH5E7f~n=lndskvInXih>U$I)KI8D z#;eg8t`|?|bNHaj=VLxFaD5nDdA}xoc~e2myV;DVr!BZvvq+V3v3jY^+{DOFad48G46nQ0H-(2*V?@Pm1;EMV!Sux0jlKoxMA)9Yb zc3eE2KlkT-D!!fesbIe*kHa*Nb8uCA_h3x8LYtuBfAK=(v_dC>vcJ&_4~XGl%LxBR ziV^qgaR0h^y;^5uJgFXY`>J@l<1fVt5(Z#UUcNs~h-ac-$M?G>>I-{UoS=G4*gN~5 zRQ=*H9}#u!|9Zub7ry{xug0}T14hoF7dg%Ypbq6V@l>`I{dRLyVAa72_JdrC9%;m9{=G#jC z-j9djsj2=C2WtQLtShKj9lOT)gLKj!nb*7HPalviNeXS8CmiSzUgr(*f=HAfyHlPV z^AV0eOP>ev%hW!w(#Hp`57O7Guh?Qr&wQ$jE9LKkrNPIccNHdEPR7hzfm8Kk2Z6y0 zx(`!Zr=6d&F5UK(`18b7^%znN(D8^&6vx2p={^AthA}19>3W3(k6Q3~w&uYLFF4+7 z`A`sQ9T6BmI*Z#*U*6)f>6a_Nmn@s$tF>@W4yn7!Nq!nN{`XU z5WMvY^vK=neDKvehxgIoOka;NuZwp{JZhB^7CR+{wv>m{_2@>Qe51{lk~^+#S7A(Oi%P+Ba3xFSy;{S?ia{%@;EGVI&w`dC-o1( zG9HH?hEKWw1bi4;7sKbmu7IT9lZKr(nBNr=@;vK(wIt$Kus2EbZWh7~D zWXVhaLF5>Mj9MqqSMH}z^GJRFcXX5P%l(yfU+z!kK8moTTfxP?8Rm1uANLy7UO7V7*^fbWk}>Qnvv7{6ELquu)w z{NkH`y!fuwAKw=BVAqOY-0vYti3@B`Xb)`qH{6x$)>Ha&m^ZEVYjd2Cc>KZl2vux=S1SDb)dYRK_W`i0=}s$accqk4N6wblR9+y8)BL1K6?`E$390zKkl4#K0(<=@<^}ULdaULj!tX`A`TK8f z*KJJlx$}93LE8^1J=*Az5`)kxvwRe9%I-ZJB`aPH_h|mR^n)(lpl<+wR(u}ymypvF zXUoY3A@K`Ier)|q$F7u*A}6hx<-oj}!A0G8eX{ukb^^{>l7VwI7S}_l)a#tKtf+hP-k-)#3`fLV^+y%z@g3 z3I8`7$Nk1~y<_El6Q#e5=LNIzOxU@&9;7cUp9)+NzZ?&)JpUdNkyLb)eb*=C1P-Y!@unn( z{({HlXP{KDVozy5;}yo;w0TJDFZsWBtg1gE;S#?j{ejA45PC$BL6p)TAS1{_vyM9# zo6)p+2kgAMkEHUeJpMkuI<5(MVI4B+#8U))Sc`!1k98x$2x$Fi_G$c;yl>@tP|O=e zo#RIIw{G(enG1VtZoYf%=B0(D1#Pm`-fvU)P0=+Jj)bK2C_QSh$+Xy-no~5;Q&^zR z!9IngR^`a+7GwPN?Q8#(_)7DnP3jx^+$?!1T<`IE;!mP0^yv6F#v%M9PlFyQV!;)*9UR-b;y)a+#MD#rdZ+&YfE(t6~X%CmoOUVS#b_luRVi^?j;t5andOX-Go*<5i zK5?&WDRCeBU{?8Zrv=1NcWyay+hKJt;ygO z3i4|_ql!fk7IpvJCvN{-<^kcasy-X`AM*P5neuWT-^hf7EQ7DtgkR z5lMDva*y}-!9R=WLytvX%#&304*SDo_Yb^sW?rE`C?OTgN_`aYCML>%m=AR;p>Tc3 zazkhyv9E1NDEMHE$G)GQUth12h`LAU@t3aDKAm_tA3~6ig=W31TYU>XKP2KnEGeJY zctlua&6pMQH?ll}XgZ4qWADdaaP{M?>yN49b)xOv~Q1g~qf2bT}~f*cmp zeHwC|Plhi&W`E6Z%dp5-WoLLJkT;|ARoAAkHvDzJ-^Us|L#n? z5OZ+@UzR=&$UjQ?29b+WEt0;*lb!;XySbEB?29 zcqMJ=b$+TraJ*LTj}kAK-+TLpR{f5lw}@*VeI{qA{ z04404U`!<{@q(>ec|Cf=un-@TY`h+}#5Mi#$GVNG4&wT3>MQ)8v*Z<5HQIn2$T_Wd z95aX);BxqY0Z5$?c9*9X!!ym;iAx8~e@OG#Q+3~uZv6KL*!KV)=ev=Vv{JI(&_O?L zmwz@G9)qWn{-i$pn|NY%#y*9uJ@w|}%X;R{eHksMG#~ibS#kn`cxqhsvr5uZ8eyKo ziZ~^tw3>+55f&3S8U`df$Bw#v<9(i*Rxj%ISv^^Nu)==O8rsw46+9&scIBnl-Q%UH zz8<{ZulG?muKKLPKS%!c7vj&fucNNf9_A^|Ag@iGK6~krAP@c&=*V{zD8LQG4cdnm zk#Qbocicec67h21KO?W`7r1%u%BTG3f`yNjKJDPozq^vWa7XleOve>A9+34Yt;z8z zF9al~kP-UBrX0r;8!F8}k6stVfJk|m?5o6C#0^#acfRA&z_kP}`l@aBt*p{B1MTvb z>>dE3?W8n~Ly5=-`)(8wgEaP8k@f1dCGeHTQiuw6W%5KCc$GHdnCvA!hj zlN9k^iA$e8W#9O2oo4rJ{<4-@Jqnk!;r;l)MTK0DATI>Sm(WxGaSoKD%=2MiWuD@Z zPndhaMQ^=x?tU9CebUnX4$gD;%r@WIvnrltg9s!Ek4#I-gCF#+Uiv_P-NXAGGav#_ zpHGRes`^@2PJ36y)wTD8OEw>NWepcB1()U2xIcRZ|3jW%?Z@CeEY%rnVE@wk~ll>3e;i*erjZPj$o}cd9p!M>y_p0xsE2q;|#WO{J%1>?Q!_c1{ zp!i+pE{oTw84V(C=S3JH^(@C(RsW^;zf9{}E>PT%*5}19+Jt$~xLd&wx=aMG^S<*g zNK>lxxC^FI;5FQ%^${grw;ybIePf-cx?d;h?c&*T;wyITDX-UMy-l(wWCEZOqh9<8 zS&0(-Vl+I(eVEzb^yhW4r_kT$=AQbTou}=4!AH`4Hb^2g_#{h{Z7b?%$*Kk3MwZ=}CB{9wd0{{*kI`CY`N&FJop4JEC2i;CiY zSkhB_e=gvRx=h`+TaA4~t$#vywe|^u#4Wj<{ zS>nF6TiN$Vf11R__f6J(9C+gXhS)Iqyu=l#c&0vM$%&`-f2u2MLn75b)L5i8O^7Pb zhezLz>wYC(pze3sR5~_ z^v9Hl*4->+TwJDG{|H=~Crly(v&>BYWNLn9HHQ9*z4zlj_9Lq1p}T#Cx2!r2`@H3P z5$eL8L=o0wpy09iK@G&F*{{3;MTdXx=N0n{wI2+Ah`8@I$t(2{$X41T^L$rcVeg7Y z!6j%I61FFr(m^~LPp!>?@1Iiqb3bk%ey{v<;EMSDTa3fu=5T1l#LGQgww}JcT$i!i zOY$mubG{S!1eC#?`_)2TO(1JdI`x%XT^Irq+>oK*?5c&!{KTv+kKF|`+G&>Ta(eBI#Nj^%bJnmv0 zm&%_iIJ$1-*hcNE<3Yb~e64tM#X4G^$GP`aGwZVeP;pp)sZ$Lt_9MTddN#N)aq*@z zE{kZ`yiDuATmNz};i>G|b?g+kJaBb95=zIfSU=)%R7Mde7@X~m-1xf)xo9tt~}h}CBf5Sn0X(fsda@7b-g&^ z^x(@!Ag{reG!Kq{@xEl5=he(R-<+#X;3|I4@*?caSo}I*#p9VW$hHonyg_kZwf-mS zdl7d&ZdEyTdD767hoU5ze&Quhjv$-Z*F#cLbljXV!w)n6R@s&OUA_;JRn)_#3@N{wqEpRFT_>y zG2u@f4M65v0c5!&r-X}Q3hJ;un-7eOfDT*=>xfHZ$}y94Dh;_;XtB9E#1zij8@h=c#nRrD8b+UyQvQ&IOp7qSy9dA;9GHd-m zsXuTOyYgoSr)!-s*?n7IWN}%(kJG~ZCtm%ag?&dHnESmCJm&*Xe)yOkyIgMP2*Q_^~`ShB=J<4XY1#C)Tb(*!hQ0$gFn~K#-%z? z2UiGGqhJ0{EeqhAHV#b>C-?R{@8jA(rEjO3w{KY$7hk_~pRn+MBzo4PJa8XZ6k@b} zhU&!8SD5_Y=QUQ)W7QvkJ0<=NIc=MbhpW|cQV?J{p{gV&>C8M48H0DvXbwgHo_QJ` z$aTgW^$ox^b-t9{O8xocR>d{R3;flvD<~mwMKGm#c-)OJb3&As^W%_{`_d$*Kf3He zZ@l`?|6}f9Cp__)S6zBb>@S|}eD7>L)9p!SZk}SXbm%Q;v+yUU32wGZP7G@ERP5s| z`B)CbQx$(k{t|q3isHO2xxa(;rs6B*#r$QjlXB-^8GoSQ4YY^;WHT9;)Ms7@{RtQT zPyH}u{JCGQ)!S`zfBEO{eb0@zd_Ma8@d(Cy=2g^L(mFTtJ9h5RhvO(*oGiHDiFrvG zaoBhGV~s;})$$a8f#mz^wDEcJGeu6-{utqB!k*5Ztv?Xeb`DhGLUrONC{kX916=Tv zRH>57m~yK0*PZWf*Te5Wrrxhc^I3z$QS;}7dGu3XnpxXJh{>jU`! zD}j9fc=VWfO6&AB{;GA=@_&32+tt-qxzEIP#bx%LO82kEoHd!xNv%hQpw|8w z7r~s6Yw=*m$=UdbltNFjc7k2*^#^G?6XL=~eaetyQb+i52 z9ENEvjV2^9j{9oM1A1Ok{Yx5$ULUU^2UJDGf{OKPpi*cb;r6kw6>!nVKHU$dbxH3; zZlmo8fJ4%0k6bqk`-->pC{obJrC?c>s7d%axPJ>@t{lgwI41Fy;&t&uH4dFWBz|}o zaZHo)EX}>Nhxozu7N3o`^avCt9YcRnmqH|3N2&as^Liz#8pS?*E652Rt>n~=ul_|m zx+Ch=Vc8j3;IjVKZ|udPNq?qN{SNS5kyRWc27?nBsAKkFK|-azxaJc{PE}uk=V?-X z_>0O%ck1hL&>jS@?>iLsnPjx5m|o~uCqK2gGXr#|6}DNzML1Du9%qImeQ{zxgFho z3kO+l!JDNo`bTr0Jnf=Kz2|ML%j@#|?Xz&9lWF=?^ni3YqW|A8Wv0lBNB_tB%)_(w za?xj#?JN4fI`<_}JPOg+uD^>OkK3@1J5aJNI?N{xME6lhPM!5;`hc$JONt^G6SA+A zZF&70FkukRXq}+fzd6qtxXxel9Qr$|d68JB6uAB!T%#@f{8cdr_S1piWnU=A>!;v( zZB!7D#qS)ha$@&<7xO4k@Hf~MPA5`mxu3@S!~i_}q5Y2hq2)opRrJGrc5cff7M}f& zfBoUKt}^lI{jP4~E!l2+C@<7lL`&Ne*2N=K$cKT3U0Xi3Z-N!6P4O}B z@*jl7zg#bl{&m-_N}mwpuIl6M%IS%cQ>tSxhcJ@rjB8R(DW7nDBT-3Ys0=r1{}+WK zpCfX9X|E1rJ}Bdkb&J(Jjq-^+Z}jA=*~fcV=#L9^j*KhL##>2Vz>=SFA3diW?eP%f zj-jXbq1Jt>FO+y;VtrYszgYI2^V8>EJ!@XX{l$EAOQO_N2em!(Cv56ii8z2)&Tnkm zdNqjk8pZGR>;3yTCBN6%uPx$*;DdqqV9Of)9o9@QtX&!`>^pRp?aFp{*nv6nRM|Vn zvB<=djQCh>CMI>XxXd5WBp<3I|00%F;OBH~ING5VX2st7^%(jbt3K$E+ge|Lai-j= zamZR7ByzJ<~c zLw|PFuj;rV`N7?`Gvap>&;oY@To@zk1%iQy|K2ud{Cq!jh~vi8$D8*k)?;=Tdy~=t zWqU(@A~H@PLLQKxpJIWEd|a<7<6)HV-&fUXBF+kaeUW%9^=nVz3#1|j&GxUSTu4?F zb~fnFdvU6FnD3YJJcadH>)So$DaDTV(;|_u`%qoVFN&-# z*E;9I6MY^dPOkczqJKPaz5X8IlK#L|_&&y?Y*Tqxj7Mvi`HFGlb$X@FHd=At!tVUw z)jtUyU0cQ@IdOS=9Kne7#Bq{$wrXE*%+b8nlzEfNzTLMl4jx^eg~tZp)mz91Zqi*l z35D5Gms4U*f@Q7@y{m4dFdkwsUkR{;8vEWA`<|b&&dhO5sw0167A~$QzG`;oahLiE zB^%degiKQ-5w<&SSH(z>`L`p*eG#`$#G`BKd?LnO*wc4s$Vz$ z_%ciCcrUC?{-)Sfnde(!KgFo`J@_r;gX){)&nXD7AJqL3PztJ>A}?Q9xcFawMDh}I z@(0K#^o)avoZ;}I-hOUUvN3EFSuAA5%J%b(ms!$h5t1wUZXX6U;V`I{uZ`(2?um>2xmGpYv1JiHGmHBPSn+osqM=1&xyC5kG*r_ zV2Nf@f07q}y<0B=gigZd;6X$@Ex7os`keG1wxo>uWZ8R>*J9r9v8q4D_zNB#!wcih zsDs1$%j>`yM(EO4tM-*j@v!6qIjC+ce*-j)LP!IB$_1UKe6{$SzW&JXD_rh_PJZWv zS^6_BVM98407vxC>Ra#v($Lrt7RL%Xju9hs()&fQ0fBkJ{NB#XF&}W%Meo}D>BH|x z`*3|F&G!z1uU>0;$!__Ead9J%J;6;}8kbc1LY?PGsj@f^vXE$Eb=A4kQ~i9&3|`>A z8!P06Vec2ulvm{WZGU}|n%rIDD}5Kt$Z2%cAzibMGkFWW2~MBb{8R`cSH z`_g?gFM$_^+xB9e;cr|w;_GUC^-6v9u5%at^mmzu9u(w{~>`rEh(Wp(bmO}!TR2uF-RUP)h^;vFg1dGCmIf}MH7e!uwj zQ`QMOPfh;j>Y4hJ)pX+-Udrmh5xBhGMOjujzirMYWL(rDhpd~T!d7^p-!G26S3DZ| zY4H0$C~nx7`s?Ge+1|}p3towo$DuwTjd6&tP_{>$Pw>!*XQWKef1&7Dk6=A^>+V&Z zt((_>ME12K`ZBrDn0eoY#(kMmljNm;$Os654qTmjgVZLqVou;<`6*9SZ%|ybEA108 zt?oX*Snu;Dzmxs*$KS$!=qudsNme5J8em@rhn1y1cD+;buPm;%ej8l{yUh=IKA`M7 zUiI;G^TAK9YF8nrz>`sdAmI@&WIUR$59P+0^BrGhJpH(jeJiT^t@n{hb>*AT-{RJY zW8k39p>;0iQJ;;s^vFr1BspmuiXX6VokV|;;Am+$2m0gwnS8+hIo5fq&h0u6^CnfF zpYkvMmf!yd{&~aJ9h*cvYuMLt-56K0uA!K&(1xB|HoP=`Z3f2Q*5XweJB3@v#~IrOk%!yh(39_2`Xt9nx__>RY?- zY+OiTxuZWnm3Q&F8)&3j7aPcsA53;Z&+qi(8S>RC|B8Bd_~)Nr71tE~xdz(xJCc&@ zT|e8y{tyLEv-fHI-i`kr^H%EcX`g7?8}BAD=YD-iZvw{O}ayHP|YzR^Q(&&-b?Rvg`{C4zCqndEP?qNjbRcYtp6; zc_Qt@>Tx&?*Go67;CB)~{LL(RNf^`kL5hpLHG5G`Ae1Nj}zS4_XZ zS?+6CoQ(%S@`K@-^CMP+SVRsQZ&@^8DDgWU9Lw^4%;+`d>opG5mmGBtc=Wp;`}{wh zdBLr7kAKWDyRZJ?O=%tDAoREGt>jw z6L5w0^gq5zhn@7yu8v;#!KE z`}^a8ieQCtXp!l6Gzj@v?vL~fJ-oQjTe;t2X1)D2tLx7q3OU82#$Cjtl9c5X2GquV zydF2FDZbh;eIEwuAJzI7@o0{(E_nWgaK3L+yZyr_tX~<%Nn`(4UP+aTYd2 z96>2W`*5jXs}2!7rsuy3u8ID`;R^SEOT6%d*?I(@B$7vz?=w){57lx?^Ks94oAScYAFgI`X+#}Tal1youU6}i(|Q;F%yy+x z1mZKj2_SsK$!=mFU!Xd&bG`0%9r_g%r|>hL>Zq(p8ofL!@)_?*9zke|5EX0m!E$7 znicnlmRcroIe$P|VMmga?I;UsBF=MtwvDF_N}~ATYTvYo??O)h9Xx{tmr{w~FLzkkgv`*wWS!4<$k zQSt{N1>2Ig9P;@0W6Z~qC$HB$W%Lz!-C5}?g2$_T*?sq;s1H5<8sdZ0?=&f|xL?Dh zU1|7BJZKmHB3nd68f;#-n=(^cQdq~RnF#)SOG$s#K0m4_U8g`*(zhLv zE+8J+nB>HP_UxBcd*m7LMuW>W&&4N`oV0(9?EI#mz3>m$-~83NtMB}&uRZMdZp`x{ zkzalKC&7b{4L*o{Ph?#H;1tU8GoEwqMD1JH^1;ERw~7aXFT;+W{dVkVSMXD-v-C{j zspO*z>i>|>a*~goZQ%im3LN`9519PPV8DI`mQNKo8BZE-FMj*1@#gt%fhu(=*VBUs ztRI8ZgItT|9dzh95B+}7(x*_(8%6ym^mX=ZJYbn(KMFiTKHMrYAQ(rHk6&>g5-g|q zw|?F^zoG8?(tYQ0e0i?)mdAgyuzuZ;_~hO0OVbFSz!mj7ysYfVF^R^gP(lfOSdU_N z?q{)%9(N^445V-kxr6Rwj)V~Q@!IKdi(o(UG>zuPt?Z(&-pX) z)OO^)xZopSU#3qq>3Osc9*2~d36FSNhRD(%Kcu=H^_6>{@R{HG(_;?IJ!ALdZ+X(i ztT*lYxeMP;UXb@oML+L>oq(>C6=!A=eSAA;!WpM#>ENM3z9pADzT`j zuVnu2=LN*O)p{G*RqhMDXqFy<*TSG#*Sx%R& zDyP1^XFj)_U?s&iMK}|3a{n`No$D*H?zGIy5dT*DqJ_L7UU{SJedpBs&SiNao;(f# zftV=!!jATPawyogqXOkE5SdKN#iTl_0xLFD`oGS_fE^J6kBp|oyG0^rM&Kx z6VVRSJ{;(M%7;oBdEQDA7kHlr^Hd^er47AgYN#kSHbH;<}>9&q=WWI@vpu% zN4zDT;-eAQiQ0u%s><_x#Lzs&0-^p9>vKEv41?5%x=`)+?Dblyp7IZ~?Fb|v?BGeL z90c^^Iw70nr|tPZPX0oDKF7YR`<8Y2{My;L05T<>l2FsQTjmoWa?v+YsUhlNPg)-p zeBQ5@U%5H$GyCPa>%RI=7yRy>pUn43iTv|A`Q@GXJoI4y*U;y`!+Egto5K#wtzhTU zxA9qz!iQahPvcKW#i9Z6c+K}=SAoxREB`ac8$`%{5X>`VztiuFBW|eb364ioUFw4~abZo< z>`ZD3J3}nCvrt^|J1PYY2Hsy1ZO1;Uj{i#De)PipYu26l&qv++t8*tDaq4^bJT2Wn z9*J9zH{y2|xtTqGrpl9J-^6ZzqoigY6?^D^xfqX90|S?-E`AJm56MS`%c36UdRY}; zS$~Pw4}j+bn^K<_bVsv}4q8Z%niB7fsWWxBUE z8l-=zgQxIT@WU;07oPQ=|DUsS0l2Iz>;0Gm+vwcX6Bo3fEmUCxd{R?auL)KZ)i&76|HoR#s``g@;Vym2!tRgR}(K2=lB0V z@B8kx_S)b6fCaO^z1P01|9YP1{XduY_E-OY5d9wVGdbS7?Sbe`lcyydTCc~`ht^uW z)r^muyu~D2lI$7bKn($5=dqs=B%4=*H}N z8G2i%0VWY&6?m%b~v~T@Jq=9dcsCXYH7@-&E3{sU48kuiZ6a z3wooj;0frGBz9lw)UznC>Z>j+{k7Jou$+>AUVZu0ItTccj546cBb2B-P$8&<#co_` zXiA~I`~zA94gkH*2yxyV<)C}3dF2nnv&=f{!Q+Qc$HUc{_N{hCy1=>xitn^=tH<-B zO_>&%gq}%jKs`ZuY4I=3yp(k*T5+fP*NG6#mw$LUaUOc(hVAzjRp*f3LzR5U6f{W8 z6y6VIh2Il2kG}y?bi@$n(c}z@huD{v8%g=!jmSyE~BY5CUkM6>Hduxt=gP&USSL*HV@XOhcYhgx=!Y})>>A~?QXJj!U zA?}lQ2U77GZ2bX|XrSHzbQKTe3FV*Fd!`ElrPkowif^`~`^+Wv*> z+iK+TB@kX0!RWO^JR1<)t~0Ne(Gm90bFd5Dot>Vq-8$vnFcS&ii88T z$>1aySsM|ZR950B_=+>9XxugE-Tq>HbBTx9ccis$Kz)4diI=m_P8y#+rbnBNY(Z!P zvL1Z{Ld+XN7`TM3fA1`-Jj6dujolyXnpHW}U|E;{4+!n5hc=#j43%z5!+C+=D^4jV>mf?_uLYoLQ z_?>2=f{O*L%$|C`Ux`%ZDPvwnsdqH}&QWXI>pY83bKUA=Q{^2C` zo#%D@`+dx3CiS=5mXOqp$8&K5!4DdzWI4HAGA^&Rk9F`?;QGRJT*Xg=Wi*=%H;vvh zk4n`3Cwb{f7+bHupt!i`uQ{HWy5lnIy#}s*({V|UZF#}-GAij&nwAwAWZ0E;Dtxcd zeEs=6j?wcU)c#s|a^3ITApe~9E7Na}4zJ@s##6~ZTPgxm@RYg&@q>MiFnWFL!Us*e zB5r8$r{jh+PU$=HJDV4;R6sMrl%Dz2xSRk**ePRI9kv}YTzFD_J`DXW!690KfHc5n1 zvUjTvTH0ZgufWwBXHu`LJ@!LW^9gW_%S)|E2f;ge^Obx8>xWPg(Sk5*dK63x;@744 zUFoS(2_8zFo%o?Oem>&T@Ph|`i19d+_iLfQ%Pxg02eW5>7cOLLTvD}k=3|UUo9nkV z<;8jnt+-UTUArA(P{F4GipLr*>G91h6EgCH&3KD>87)4Icsc5P z&p=)S#^>>?8 z_oqfYAM*Nh4tlJzBj8tUt{2 zYa*U$^4IQRyDl1bA3X7r4|UfL()?G`m5j+p9uG6#9)r>a$}ULqlJ<0{F3R0mi@0=; z`=Y>%7ve*Kp8SG(5C&y4z+n*CopHnjV{gfFj~yKSnSDeeksW(%vwr}B?WNsLKu z{*xb0nzFwWe9@Z6RnPl(OvNQk1@5*A;Dhb#c{q{{egD+Y< z7W#~M;?xI%OP5c$wBb}7{KfvU2@V_<+<&_A3>q#%2fT5W@$1B2t$hwXFCx|7&sY&x zU5`nd$OGf&iv6DJxX~0F{3>+bho{6}owYa@?hO!sDExJ>_}wx21XVU(e$~g1^oO7yBan zmzub=u0ZfueV(rC$_nC*OIJ_4Dm4~A6zJZNa0O4eZc}&ydyjQ1uI+sMSN{5k-@oS5 z8CS^b0(iAYU0HXib&}wTH7p1PAz|mfYS=r#^FFq6isn^52{848DS8tw*wuz5lOGOV zDZ46h&X|A98>cw*8x!+Jb%@pN3EsPlv7=8GQ`p@ttSdPH2tm2DqU!l!ehy-EE| z)K6P>AMr%+!#nO5u8^9tXD(+~B-Dari`p%{>J@*G;VIP&RrSWt#N+! z{QBJw0GA?oaPhzLSjDRWrKU$QY(L`YY8ZC!aqP1D)_DKG6LISM@Yi|0GI>A7W$oO5 zy2sN+J3c`BCWK!cZdjKyS?o);grl~+#4pt438YgedFjUTuyhaR)#$gYBeb#aMCq7$rqENVY#<&7HH6Y))nQ{k;vog~&d4SWB}bUBs0 zKX4^}i2h88L-Mk;cpCE~gbeqsf9Iw+HTa=f2WPxyE3U_d@>^kFU#rTJ^w)Q$t=iOqUnZX!4f%H1)Tl z$1E?YPW5nJgUf+VFV>A#zMY~=kk_5ggK#!J^aJ?-50_}yPq{Ebd$dEy z3FO*LMIMPdq58?_ALBE8_muF9R24bKc#H9Dt@SJF@z#G$mDe(L!SL5ubn1_SGc~Zs z>sJ8PcnC$CE*jI1+QnHaOEB(#u6VcK(=6+XMKeAAj)V$Tt z>rA;lT945*rB~|osXglF#`br>FUI)t+Pa>O15^LqBR))imev7R+Zr9EzJ%So&25Zb zoP{gbaddTFYe0yeVqb!+r#g;J<9$MpUcanvU#)Q~YLA&uANApt>Ls$EV6OZq6Bk+O zNIc=^!ex~4s&|_EHF7*Co^Qm1Ex#yv<^KGi{P1X9hCq-dCcC%)so@e&a1x#X4;Hm=Z~MRKZJ&+#`Pz27Z?vh$Qpy# zkv>Oy$m<8@b$8~Nx8Q!CKRoQ?m%rqi?{^M=)#{wJ72$f&Jl{V zv~_lN%`CyP#L(`)6Eqa(UPO611*E*xSWVeC^C~4fctNmO_Zz(tD2AQ84qogWy|wr~ z>Vkpm7e3sbUAvKJ#)l-5k2TdgeqD8vn3?BYI>Mgl-{f+LD)A`PK^P;w=~20%59h5# zZ_PM<^@RGH>Pfl%{nB*(jrnP-GQ6Iw4HY6Z9@A0so_Os#c#+pwKYG<|jiU}+;dh>n z9(!pXQ&`YQUS#^)d)57EUy&rg4>u z*(awSH~ji^{c+WL+z{xL4stme9oM%RSv;Il?;V!Kd7xdW`cbi~ydPWiqtoviaaL{p zK=mi)IO{jC_nq72_j|qFaoH>{WWl91ZbVY@+0381aB7FVp@yh+4AlL9-sMP@(cA>`wkN%|H<`0?!Ux;LT8ODcriced(y1Lr1}xH z0bW89kpFR-_l3NI*F7&)yxtlIQP=!U!g~hYY~U>RQ+ZYyQn*h z!p=-}qmWZs|GU-Sb9RjnUNQ|2qL39!Tz+u7<9WivbulgFgBo`vJ}2DcJyqY-f6<(m z?tN^VdR2!N;H;=5-hKRn5f;LVnt zB0h+CeK1W<6LHCsbO1sDGPn%NcEmFQ^uay=y~aKO`^0a^sWsj&>^j!5*a$!MX7aug z1I&;Hrg`$N6Ny3j@!8t=Ly)Moqc7}8opSz!8X0!2Q6WBPe8bB7$CiBA(SNXfq`k`E$Z(_2^u7QTIFe8~VB2y-B8QH!)4yueN7~GiT z^TFx`OP_hg7dyZEkS}ff!WXZ|aY5+o)zkFFtzxyTQ-H_;&nryQbWc%DC8?5K=mZN-;h(=RuSdjEW`n++9T%C1}e^dXxZ*#=o`t8w?^C&o`w(diWKUTkt+F9U% z6O{z3ooQ+b@IV7*ulrE^Z8MI;j#}+M;>*DG55l!5A;~9=Q0bmLo{l$kHr~=BA5G)O zB`WC+ff4n}-&)ur2qf3*AEOYw__by~{k~y){73W)#<-&Qpud@|8y%1LtBv>0&kWZL z*?;ujp4NMnWe`%0Mt*1x1vlXS8X)%G(M9BI_!laQM2Sp1FZ^e(SK#ZlTFHpZLhHTqE00eE#;HVm{51Y}e&d|FAz5>s z{fpMIpBOq@(_b6)S@si4`HY2zm8ID*(yQYGy3-?XP?I!+Y8;fFf|=L-ynbl-l5ssz z&vw5=>Bqs|TJdr?UM1p~+B!D%IOdua?G1Tt+_WJeC%$(TR_34lq6Nr{Q9JN^&2^;u*Qv$8 zudOfPVM^?K4RKEvH5XWvEFe@6D~Ob2M%Nw@Pgizlh>zC{kZ>gI-X_hn~Q~fL`l}0 zF%~>J*JD}8wd>gUJl8qDie%*nTl?c#KB>O>oBzZ(wPR+i@37!tN&DllS_@?)pLG3@ z4`{4E59_NIiS%gyjA<3%nUh5PdH#H_m)d{T;%(PA6L0^C?0Q>T&ls=ob%SG{BE~i8 zY7P70HF%VsC;8|ee0e?8x-)`LDHl3f|bW4 z1;I2LyQX<&iu0HNzMwRn7ql-TgyBUK_r;6+a?i_K{o8bhp{C)?91F~F*OJB9q2{i7 z^foZ~EuE0bsDY_{Ni8~~!}1Yp`+a@pjcexDkJk6-vkm8{E=IrAPcMArHxH<;?fmT8 zznK5(mp|P-dIo|cgqR&JXg3PS+%-VxiF3wN;!UCA$}!$wkoX1gDCZOkuP4A$r3`SA z_n#~LGqYcqv1jui^MW4#55N6ymp*@A=T+N}zv+1=UESSshVWE9>h-anM^i!tk3eMk zRL5XBiq*iu$MN>M5u!KU5PlzG zUoM@n;j*9qdUx>x{hHdqatA-#mJis5GcymyWu^uf6XOj!hhBc*u=D-SAHDy#zwzT2-`su0eZ*rZbv%-{g;DGn zIQ$=ZfFmLdfc5Hxr|`~v!)|C-<9JS@UGc-inJVq?#eKzi#g8a^OY^E?ydrSwd?<8k zKfsDkjF4fd4L(#L89xpOh2BQ~w1JCtc0+GpOZNQP?#XWNp7f>TfB5oiyQhK+0-0II!cuYfp`_I6a-F#?C#;2hW5kQVCV)jk_zg*s z!(Hc#Y2HKF(_BMNwEGjk`S4%;_^m(aJmuOm|N5@~b4&O1#EWyiWAnNNYx?W@UZQ-3 z_9lBqdH}I}^hAOL4_3v4kLq1oAF{N!*#;i$X}rC?UU(2N`>3XUvRQI}zE53%aZOr( zDb@|4y)ESSruNUpt)0-Oc}VRY9O7;L<&YV%ziZvTXK&P7@bsSZ4tUXVPq?vj^yfRr zeQEudx^D@;bWwF5~OC6dKiiLqhsr7gy!bja{OG5G5B3V9QK%zb2FA#C|>#Wx`?$_UKzs_>r)z(<|M)x{8ik@nCvj2+q zWIN$qP;j6ko=H&rlftNLCBH5}jPuZ^G9KDf;JH1;8T-2b;P%8Az-mL-O-Ldms_ARv z+?c*(r*Uyz7n9+CLS{~>A0U)h^-t<6AFO7m0=Dt2>0W%=&PQLh=C00$pLq0BPQUE> z?q#;)inuVXn>|53@*A~0NBZG%sEf~%K1TltC&0(eZ>3v8Y%FjDYiWP?xxmx(@9^;( zU-9Uty=m7?ofn_?`l~LvdvEs&+BrWnoMXb6+m#AXEFG|>7yHLf*grxNlt8FEx}B?$ z@lSLovAEw)rzlH8*=5}Ui5yim^ws9$E2S^)g>|peKGNJUIm*ucN7ww8{b{tbS{wu} zt}7hi>Z@X_GnylWr6W3ri|G@w{#A)ro9&G83gdQkRp1)1p5f4PqSdi3UbS)mM$vup zr+3SrlK3Y-k2u7O;vsGc8R=c|VBiXmO57^(g*~ypcq9H8HsZ7HY%BiwgyKbHKhxW? zRzVm)#(bO}^74LkCH}A;dB3*qxp1jb30TC9=u_~MpEo>x!i2Z8;WuU)dZa(_PwrlI z#=kuEw$7hi_u$XXz47baPoF4U8Y8*f0hTN$F3TZ2JVxCeGf6zjuNWpOmCd>40i=r> z{WmQh824wNwHxSBdf6ho&~L7p#Z`x#(mqS8?$JKUvMYRgtqv3OO2V$BKiNC2P+f4; zk%ftYafngRUfGymKge^ce_*Ks*F{MtLFuw(BN(7hlMBiFix*~_}N>3cwOhl$N&1XFaE>NcW=eMxt;r? zFW~`E@DijTsh~d~N?(lM1uB1a@D{wiZq(m4dy7uP+gERR@b6rE&h4FZzxHd_?*78Q z?ze3>8q2rbF;OnMu3DJVm>=Anm5zIG)F#Wv`M?j#s4t4)|Kvw37J23mWaJX*cBY<8j%3*$weWNjj1s&LeD?|rEqa7p3vYm zB)0GMnwIe+PFstt{3Ju9|Vc?shzx z3Dv z=F<`i@(REElii3*?lmu95YaEQ4_w1d?ye=Gu#(clC@<(8vxzXFTHJnq*;%A5H4kVjARUytQR`Ay3UzLLE7 zPpqcD!^MSUSAYu;G=FI*?45547D7eEGJV11czq*|YuY<;!Fb$cd#8IKc!ByL3lhs} zz`CaA{b^O_0v;!&3`;RY>G%>+peFGGmMHNF7WS@w+8C-J^}$XQ4P z_^G?!^Sm26$DVo0)!#UW_3F_%w-kEpBCqOnKnPY#kFsj;$=a=5JqoPlq}%X!EGvGo z*Qk#CHGOYVJGB1NIw-rPzpW9ExACNQm}VpfDt?q|mXwDer8Kk{hxC~a z61*Y%PlBh^lV);!IZ1B_I(TYdZz_Kxk1NOIqwD8-1y?s7i;O5W!;zP%D%X>-bJ&Vo zalBC0T_E4Q=>_Lq`v+Hiuk+To|Ie4Ke)3J-{lvWpIqYdwAHAK8J#ojOA^nIB*|}6R zL2sM~52A|v4%6lgrp|sdY8x^!S^9YmJ8#)jOJ2&OvcDmp2^fxwHro5WG(5)u(0&+Jm93?$&TXg=ZeTdR}@u_|)>#6s137u5t zxDSzqy{qktNWrNnhP%Q3@H_0cT8odHJPLoe;s*0V8kfGK&-mE1j=fl5beOL=b7eIw z?J(7$%6wO>luu~%7ycNH38z2-3;%qv_^PzSlIOMX;0L*@XotI}*%cPzR^Qm)TPEUo zoyHIbz5XFT-u=514t?>~^*>Dh zFO4VJGY!u&cAoTxo^(}dlEx;Yl>g&9M#)q6myYl>>IKA~Ek0MgPS9<8+9!KDI_fO4 zp3xz_+0K17-YR~XXbz*tFN-x~KlBJ_9;v6RC@bdQkUW(Am#aaVcPm__zXE&u$c-<0 z`OHbTbiVSPyY}9B2lEL6SMq;@Y3uUwONp;|vIEHgn_H5ZC*yIVkAy@AoU*xFV#w`; z{#wr`@PxnMg)*OX-^;s?|Eun&|NH%ScMg7Y=LI)Cg#E3+#qTD&8r*-rQY$kqu#kQd zS9$E9^{O^RB7uGNdaqGEW90uDdSujsqe*R21L$G3P?dd#?vnqeHp zrif#fu`jPH!u>~o7&=3bh)n*Ovph3HAv+aIrA|H7@dmZP68BNR;~m9pe!K7% z{e3;vT|e91kH108!J|jb!J~QIG~_hfV|;kjg;V>(FW1%`@(4BT2|UE>sh>e{jiCWY zPe}>&iLpE)*YjHb&-|HrYDM{kmD#9r6vGw6zEK%(xT(qW5m%+K%6~kbAK?n5# z@Q4rce3~8e*m+w2H7v-NbYy=V(u=qBC^_Z!CmqSaKqh^mQTR!X&@kWL$hU?$FCFhc-+!Xn zH`&qJ7467S0#E86vOD48@FmS%C}cjiBM~Rhq(#PE)Z_Dh=F1iyWsNx>MSh;gD)X2u zpSm4|eB9Y$y>V$y1(<|KxYBX9`od~)flg|4^%7bPiV#r!o6*_Kj?zU9QHCgr2luUmEEO%P1>FZX8eDJ#nSD2MI@qUdJwop&m;diOJ8!<~Cq8ifuIn;?2M@6S`AmNcKf<9lG&-!7xb2OzO*#4F zs7n{(J3$O^p5i(n^S|^L>*$l{M1D1^ewyO%s1qM~{p(-6wEo`CXYV-dW3RjAwl3Z0 zDltb~w;Noui*tAg4Isgn&ofS5@k$yWu5t3-7k*eg!(rY}FmSOHEAJt<7M~LD@tv^$%Z_G! z$uxhnEidKiTyj(0&TK@&feICU6L7lI^S~Jr+Boz7XSXu217`*x$yu zk{w-r^fWn13ghika^a3Gr|fqOL#G-?jzdFEEBBu|uSxd5iv6Fe?NRp#1lhu-@Woht zPui1i5FuuTaVK=<`Qm??^*!>M@o{A-J`O*9;Kph4@;DAcpSew3wKgi*AY?%NuZHLc z%s~91S3cc)we3FZ(RqAbkCXTUq6r@BZq)vwvHss=ew}lF7gtNTWN^@g+at9y*%z}>nxKbw2^5%4Q<4Zj^c zcEm>f^;;v(k~NKvNqW>ed%`8w15Wls#D5YKcCSvja=fz{XEo#Y^~>oo>a>S!0@v2) zhogwew!o9tRSg~+<q~?%5XTqnIs4(KIgh0MiT9^S$D_& zTf8cLW*(!?#XR)z30P_BO^s%#XZGA-`OfQ${)XQZWO#mjoR0Ycqj0>j1Nrn9 z7v<1oD6#LG#xc<}vtR6u&-=z1hhM~B08!}|{in!>Hpo+6qsigmRT^KJ_ph#Ia~wZD zt}@{XUf3->$Aq6ASYzqvj{pXSu(y@2gj~Z$kpW z$ls{AZ{rSJwrjlLfML($ze>HM87Gu+9<}(>@k?5dV%6sETz`w2ihk3= zNDtn>j5E;ry6x;bt3z@M)!4{$z0t}Fy&((uU7xAwhrrI+njrCat}jGC(qp-?+ul|xpP7y6soxC#A^dQAZW2nX}Bt1K@0xpY9D)X`G@ z9C_D_>S&VJNqax@OCSI7|LUCnXZQa5^?!R~&bLzjyjlBD$_Nl$s7LDJ82MeT2p4Z@ z2c-C@NRlYRb{;0g)kb*4qAb6UB{4~LQa>R5N3FQi`b+b*k3fIDWBaMU8-F*dt0#XK zXakoX!-ho$f~K~?8U1fu{)>N+OZ0vu_?M_-+ux~<-KsNyhc5?@uis2RTN;->*6t?w z7mW)*G&UcMC-D;^F)zvPAqk^{5;V`$b&qIw&3?8?ag%W+Iqk5V)>?b~;JveXUKJHY z#RX`nw(mifQ}C35a|*Ak?<+1)94sG*H|`C*J}PlR=&zYKfGhNOTdFg#p1Jxo^LUt5 z3sZR^?2AVs%8v?>WarYK;$NxGQ!bKS>0N2$MD0_=2Q05%mHXi%o~!lKcpOa1+s~Sg zhpRRH3*E6?Ujh_?@rT!vrNo4t`-x=>)RPCaxDxl4y6mL*QlfP{w|fD5+QRr^Uu4w3 zHX47%Cyy_Z$>U5?JXh?SfCc4gA4-KYh+jPqo}W_U%VxX+KehTD&>Nx+KELdK$qAuw zNF)de3BbORQ#!;4mKP6lF=ahxf64WPdVThnKK5G=I`8d2>g?U|)k98wTB7hpK<{iw@gee0R8D-_1;Fl*OV7|XsbROekS71 zRa?|g8gVf5LfFT6;`~n#Q@1MkbOWI)%(&Q>dS_HAV%(*)%E5|eoI79mmZ>XH*KYNb zfRA4MmlW8d|z|IvN#U56g_;s^bg$6fOAz_WTf9}l1E&|4Q^sXUcRx&lv@!RBi z=*@M6qPOP!OWI-N>7)6?kvF7#ue*i(iv4V4ru4nT>x7&s-}CyFyi~r&Wi<~|C?H4W zQ%bI4TnBXOo^SO_iXBu4)xhVnuf5|J$DbvBVZLE&T!8#dwx=Ve>ks+V^=HvZD&j54 z$NYeR5F!t}j>EB4^*;GQq-wt$^`O$fjGa%6_xKg_!%{D zH$soH0UDj!qae!Q`LF7|w!vG?dJFaydFesj$V(sgT=fHRQ_&93nvP3#Z00|&6P=H6 zMIBVCGcN!ukdSZ1Qz7leJ_5)q^7q;A@^QtXt+?2BmB;gIa*|;Sm>xX8ZkafSJo!UM-TLA~ zxBjT}?YF(~B^z(LwY#5wQ|vIsF~_YWuR5;aC4|Kx#b*1)3)}U;p3bmr=40dHn(+ed zt~FkdItMotc6G?{@KhQHLjpBmYO2$5nI$o6%~4(u!M8;y+SV|-(+zqzhQnVMP{C~Wt7N;?oH{ZBt?(5KkFSG_}a zUwFOQk2J|YOAE9l`sfygyy@cj?SkP$FtmIX7s4<(^-_;W8@e3 zXZ-s1g8v#H*|)`6CSm{5ed<-`hx|HQ{_iPkHcIizUJxg+xD*i{C?-72R!Mkd;f^_ z@Iy|i{wX}0xJP~z>t&q{1f+TIX`PKVEJn`yex+XJ`9IOI5Tv&kgCtLxIm)@U@9j+svcRMWofJbcV z?w&dHjF3~PPd5;J zC0pzD?5DGwVjfW8g%XF>@(If+^+VhvzS^=*R;!kMFH<&}>lf_nLeJ!zCDz2O@)A3gJEuUQ9yA6ogU=6T{AZ13HjviG!(Qe4&u95--%#qCw89P0xD zHR5+k5n-ui(hf;*lr)N6af$BdD*Y0~4pN&pVp3cqe$WfIM9=5Kbp~(E%kPM{mYGKq{`ttA^pkAbh%j1s zR2TKtMs;lg1|)Jw`g1!JJRj0u?KoHU|6)(2zqD0{alcKDlfjewC&O~Gj69xRcmyKH z3p@u8jVthEUXY#uLjSFxN~`+k{W~%*#CWTsH})fIji(ncE|#H z=xHCl?Z~HU9*{zg-2TqmseX9ZWfas{&1R^6#zg9(Lu2A9dKV2fE)9p$D$3R>W0rj|rDtoj}1V#zo`v;;xAw z^ipbd+c?G|pbpmnLwis`P{F#4BY~yt_%%cDqZ;xt=#s##2 z_irOJ#Kbty{8QPyeGkOy_#yipN-`2<=J#%Uy-xLq7yG*81o@q1?F*4`d5(~j9)&65 z<(wZP8x5DUe@=`c@YRKlI#$!Zc28K}gFGKxDbGJ)YTPhEUf2_|fwutMw;n+$Ti1H^ z3UC0(BP;A3CtQUmn(dLeG}iaIGp+A)eOK#_aEJ5esmrJ1LOx>7y1Z~H5yyi|sh}k2 zLSpc&S=Bfz*RwLN9^+SQdOYOJc77p0lWjs zM|3=MQ^Z}O+_yCIi#vrCyKlu=;`!_s_fD4+SF5+f)NcX`@W9|)Amk*~Sf6?#tJ33z zl2g`SRr(8C@k7){gBSLl(4D;^#eKTh(UExp^keg<6e85+6JRiP=JDIkxmzUF`=H{{ z;&=KDds?0QziRavaPh^If1x+xkx70>YwC$A+w;E_yvP}

Zz;Aw=rW;fy84OXsT) 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�_x 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�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%0A+^Q;szF+!36EYvXb{FlB31yJ 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≶aiDoeEFBVGlac#QJ9HRkoy<_Ed|R#uwQ;bA8q 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 literal 0 HcmV?d00001 diff --git a/src/language/command.def b/src/language/command.def index 352f7c1078..6db5e74e2e 100644 --- a/src/language/command.def +++ b/src/language/command.def @@ -114,6 +114,7 @@ DEF_CMD (S_DATA, 0, "AUTORECODE", cmd_autorecode) DEF_CMD (S_DATA, 0, "BEGIN DATA", cmd_begin_data) DEF_CMD (S_DATA, 0, "COUNT", cmd_count) DEF_CMD (S_DATA, 0, "CROSSTABS", cmd_crosstabs) +DEF_CMD (S_DATA, 0, "CTABLES", cmd_ctables) DEF_CMD (S_DATA, 0, "CORRELATIONS", cmd_correlation) DEF_CMD (S_DATA, 0, "DELETE VARIABLES", cmd_delete_variables) DEF_CMD (S_DATA, 0, "DESCRIPTIVES", cmd_descriptives) @@ -194,7 +195,6 @@ UNIMPL_CMD ("CSLOGISTIC", "Complex samples logistic regression") UNIMPL_CMD ("CSPLAN", "Complex samples design") UNIMPL_CMD ("CSSELECT", "Select complex samples") UNIMPL_CMD ("CSTABULATE", "Tabulate complex samples") -UNIMPL_CMD ("CTABLES", "Display complex samples") UNIMPL_CMD ("CURVEFIT", "Fit curve to line plot") UNIMPL_CMD ("DATE", "Create time series data") UNIMPL_CMD ("DETECTANOMALY", "Find unusual cases") diff --git a/src/language/stats/automake.mk b/src/language/stats/automake.mk index 460e95e707..26284d9f5c 100644 --- a/src/language/stats/automake.mk +++ b/src/language/stats/automake.mk @@ -31,6 +31,8 @@ language_stats_sources = \ src/language/stats/cochran.h \ src/language/stats/correlations.c \ src/language/stats/crosstabs.c \ + src/language/stats/ctables.c \ + src/language/stats/ctables.inc \ src/language/stats/descriptives.c \ src/language/stats/examine.c \ src/language/stats/factor.c \ diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c new file mode 100644 index 0000000000..7d2f15df5a --- /dev/null +++ b/src/language/stats/ctables.c @@ -0,0 +1,6704 @@ +/* PSPP - a program for statistical analysis. + Copyright (C) 2021 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include +#include + +#include "data/casegrouper.h" +#include "data/casereader.h" +#include "data/casewriter.h" +#include "data/data-in.h" +#include "data/data-out.h" +#include "data/dataset.h" +#include "data/dictionary.h" +#include "data/mrset.h" +#include "data/subcase.h" +#include "data/value-labels.h" +#include "language/command.h" +#include "language/dictionary/split-file.h" +#include "language/lexer/format-parser.h" +#include "language/lexer/lexer.h" +#include "language/lexer/token.h" +#include "language/lexer/variable-parser.h" +#include "libpspp/array.h" +#include "libpspp/assertion.h" +#include "libpspp/hash-functions.h" +#include "libpspp/hmap.h" +#include "libpspp/i18n.h" +#include "libpspp/message.h" +#include "libpspp/string-array.h" +#include "math/mode.h" +#include "math/moments.h" +#include "math/percentiles.h" +#include "math/sort.h" +#include "output/pivot-table.h" + +#include "gl/minmax.h" +#include "gl/xalloc.h" + +#include "gettext.h" +#define _(msgid) gettext (msgid) +#define N_(msgid) (msgid) + +struct ctables; + +/* The three forms of weighting supported by CTABLES. */ +enum ctables_weighting + { + CTW_EFFECTIVE, /* Effective base weight (WEIGHT subcommand). */ + CTW_DICTIONARY, /* Dictionary weight. */ + CTW_UNWEIGHTED /* No weight. */ +#define N_CTWS 3 + }; + +/* CTABLES table areas. */ + +enum ctables_area_type + { + /* Within a section, where stacked variables divide one section from + another. + + Keep CTAT_LAYER after CTAT_LAYERROW and CTAT_LAYERCOL so that + parse_ctables_summary_function() parses correctly. */ + CTAT_TABLE, /* All layers of a whole section. */ + CTAT_LAYERROW, /* Row in one layer within a section. */ + CTAT_LAYERCOL, /* Column in one layer within a section. */ + CTAT_LAYER, /* One layer within a section. */ + + /* Within a subtable, where a subtable pairs an innermost row variable with + an innermost column variable within a single layer. */ + CTAT_SUBTABLE, /* Whole subtable. */ + CTAT_ROW, /* Row within a subtable. */ + CTAT_COL, /* Column within a subtable. */ +#define N_CTATS 7 + }; + +static const char *ctables_area_type_name[N_CTATS] = { + [CTAT_TABLE] = "TABLE", + [CTAT_LAYER] = "LAYER", + [CTAT_LAYERROW] = "LAYERROW", + [CTAT_LAYERCOL] = "LAYERCOL", + [CTAT_SUBTABLE] = "SUBTABLE", + [CTAT_ROW] = "ROW", + [CTAT_COL] = "COL", +}; + +/* Summary statistics for an area. */ +struct ctables_area + { + struct hmap_node node; + const struct ctables_cell *example; + + /* Sequence number used for CTSF_ID. */ + size_t sequence; + + /* Weights for CTSF_areaPCT_COUNT, CTSF_areaPCT_VALIDN, and + CTSF_areaPCT_TOTALN. */ + double count[N_CTWS]; + double valid[N_CTWS]; + double total[N_CTWS]; + + /* Sums for CTSF_areaPCT_SUM. */ + struct ctables_sum *sums; + }; + +struct ctables_sum + { + double sum[N_CTWS]; + }; + +/* CTABLES summary functions. */ + +enum ctables_function_type + { + /* A function that operates on data in a single cell. It operates on + effective weights. It does not have an unweighted version. */ + CTFT_CELL, + + /* A function that operates on data in a single cell. The function + operates on effective weights and has a U-prefixed unweighted + version. */ + CTFT_UCELL, + + /* A function that operates on data in a single cell. It operates on + dictionary weights, and has U-prefixed unweighted version and an + E-prefixed effective weight version. */ + CTFT_UECELL, + + /* A function that operates on an area of cells. It operates on effective + weights and has a U-prefixed unweighted version. */ + CTFT_AREA, + }; + +enum ctables_format + { + CTF_COUNT, /* F40.0. */ + CTF_PERCENT, /* PCT40.1. */ + CTF_GENERAL /* Variable's print format. */ + }; + +enum ctables_function_availability + { + CTFA_ALL, /* Any variables. */ + CTFA_SCALE, /* Only scale variables, totals, and subtotals. */ + //CTFA_MRSETS, /* Only multiple-response sets */ + }; + +enum ctables_summary_function + { +#define S(ENUM, NAME, TYPE, FORMAT, AVAILABILITY) ENUM, +#include "ctables.inc" +#undef S + }; + +enum { +#define S(ENUM, NAME, TYPE, FORMAT, AVAILABILITY) +1 + N_CTSF_FUNCTIONS = +#include "ctables.inc" +#undef S +}; + +struct ctables_function_info + { + struct substring basename; + enum ctables_function_type type; + enum ctables_format format; + enum ctables_function_availability availability; + + bool u_prefix; /* Accepts a 'U' prefix (for unweighted)? */ + bool e_prefix; /* Accepts an 'E' prefix (for effective)? */ + bool is_area; /* Needs an area prefix. */ + }; +static const struct ctables_function_info ctables_function_info[N_CTSF_FUNCTIONS] = { +#define S(ENUM, NAME, TYPE, FORMAT, AVAILABILITY) \ + [ENUM] = { \ + .basename = SS_LITERAL_INITIALIZER (NAME), \ + .type = TYPE, \ + .format = FORMAT, \ + .availability = AVAILABILITY, \ + .u_prefix = (TYPE) == CTFT_UCELL || (TYPE) == CTFT_UECELL || (TYPE) == CTFT_AREA, \ + .e_prefix = (TYPE) == CTFT_UECELL, \ + .is_area = (TYPE) == CTFT_AREA \ + }, +#include "ctables.inc" +#undef S +}; + +static struct fmt_spec +ctables_summary_default_format (enum ctables_summary_function function, + const struct variable *var) +{ + static const enum ctables_format default_formats[] = { +#define S(ENUM, NAME, TYPE, FORMAT, AVAILABILITY) [ENUM] = FORMAT, +#include "ctables.inc" +#undef S + }; + switch (default_formats[function]) + { + case CTF_COUNT: + return (struct fmt_spec) { .type = FMT_F, .w = 40 }; + + case CTF_PERCENT: + return (struct fmt_spec) { .type = FMT_PCT, .w = 40, .d = 1 }; + + case CTF_GENERAL: + return *var_get_print_format (var); + + default: + NOT_REACHED (); + } +} + +static enum ctables_function_availability +ctables_function_availability (enum ctables_summary_function f) +{ + static enum ctables_function_availability availability[] = { +#define S(ENUM, NAME, TYPE, FORMAT, AVAILABILITY) [ENUM] = AVAILABILITY, +#include "ctables.inc" +#undef S + }; + + return availability[f]; +} + +static bool +parse_ctables_summary_function (struct lexer *lexer, + enum ctables_summary_function *function, + enum ctables_weighting *weighting, + enum ctables_area_type *area) +{ + if (!lex_force_id (lexer)) + return false; + + struct substring name = lex_tokss (lexer); + if (ss_ends_with_case (name, ss_cstr (".LCL")) + || ss_ends_with_case (name, ss_cstr (".UCL")) + || ss_ends_with_case (name, ss_cstr (".SE"))) + { + lex_error (lexer, _("Support for LCL, UCL, and SE summary functions " + "is not yet implemented.")); + return false; + } + + bool u = ss_match_byte (&name, 'U') || ss_match_byte (&name, 'u'); + bool e = !u && (ss_match_byte (&name, 'E') || ss_match_byte (&name, 'e')); + + bool has_area = false; + *area = 0; + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + if (ss_match_string_case (&name, ss_cstr (ctables_area_type_name[at]))) + { + has_area = true; + *area = at; + + if (ss_equals_case (name, ss_cstr ("PCT"))) + { + /* Special case where .COUNT suffix is omitted. */ + *function = CTSF_areaPCT_COUNT; + *weighting = CTW_EFFECTIVE; + lex_get (lexer); + return true; + } + break; + } + + for (int f = 0; f < N_CTSF_FUNCTIONS; f++) + { + const struct ctables_function_info *cfi = &ctables_function_info[f]; + if (ss_equals_case (cfi->basename, name)) + { + *function = f; + if ((u && !cfi->u_prefix) || (e && !cfi->e_prefix) || (has_area != cfi->is_area)) + break; + + *weighting = (e ? CTW_EFFECTIVE + : u ? CTW_UNWEIGHTED + : cfi->e_prefix ? CTW_DICTIONARY + : CTW_EFFECTIVE); + lex_get (lexer); + return true; + } + } + + lex_error (lexer, _("Expecting summary function name.")); + return false; +} + +static const char * +ctables_summary_function_name (enum ctables_summary_function function, + enum ctables_weighting weighting, + enum ctables_area_type area, + char *buffer, size_t bufsize) +{ + const struct ctables_function_info *cfi = &ctables_function_info[function]; + snprintf (buffer, bufsize, "%s%s%s", + (weighting == CTW_UNWEIGHTED ? "U" + : weighting == CTW_DICTIONARY ? "" + : cfi->e_prefix ? "E" + : ""), + cfi->is_area ? ctables_area_type_name[area] : "", + cfi->basename.string); + return buffer; +} + +static const char * +ctables_summary_function_label__ (enum ctables_summary_function function, + enum ctables_weighting weighting, + enum ctables_area_type area) +{ + bool w = weighting != CTW_UNWEIGHTED; + bool d = weighting == CTW_DICTIONARY; + enum ctables_area_type a = area; + switch (function) + { + case CTSF_COUNT: + return d ? N_("Count") : w ? N_("Adjusted Count") : N_("Unweighted Count"); + + case CTSF_areaPCT_COUNT: + switch (a) + { + case CTAT_TABLE: return w ? N_("Table %") : N_("Unweighted Table %"); + case CTAT_LAYER: return w ? N_("Layer %") : N_("Unweighted Layer %"); + case CTAT_LAYERROW: return w ? N_("Layer Row %") : N_("Unweighted Layer Row %"); + case CTAT_LAYERCOL: return w ? N_("Layer Column %") : N_("Unweighted Layer Column %"); + case CTAT_SUBTABLE: return w ? N_("Subtable %") : N_("Unweighted Subtable %"); + case CTAT_ROW: return w ? N_("Row %") : N_("Unweighted Row %"); + case CTAT_COL: return w ? N_("Column %") : N_("Unweighted Column %"); + } + NOT_REACHED (); + + case CTSF_areaPCT_VALIDN: + switch (a) + { + case CTAT_TABLE: return w ? N_("Table Valid N %") : N_("Unweighted Table Valid N %"); + case CTAT_LAYER: return w ? N_("Layer Valid N %") : N_("Unweighted Layer Valid N %"); + case CTAT_LAYERROW: return w ? N_("Layer Row Valid N %") : N_("Unweighted Layer Row Valid N %"); + case CTAT_LAYERCOL: return w ? N_("Layer Column Valid N %") : N_("Unweighted Layer Column Valid N %"); + case CTAT_SUBTABLE: return w ? N_("Subtable Valid N %") : N_("Unweighted Subtable Valid N %"); + case CTAT_ROW: return w ? N_("Row Valid N %") : N_("Unweighted Row Valid N %"); + case CTAT_COL: return w ? N_("Column Valid N %") : N_("Unweighted Column Valid N %"); + } + NOT_REACHED (); + + case CTSF_areaPCT_TOTALN: + switch (a) + { + case CTAT_TABLE: return w ? N_("Table Total N %") : N_("Unweighted Table Total N %"); + case CTAT_LAYER: return w ? N_("Layer Total N %") : N_("Unweighted Layer Total N %"); + case CTAT_LAYERROW: return w ? N_("Layer Row Total N %") : N_("Unweighted Layer Row Total N %"); + case CTAT_LAYERCOL: return w ? N_("Layer Column Total N %") : N_("Unweighted Layer Column Total N %"); + case CTAT_SUBTABLE: return w ? N_("Subtable Total N %") : N_("Unweighted Subtable Total N %"); + case CTAT_ROW: return w ? N_("Row Total N %") : N_("Unweighted Row Total N %"); + case CTAT_COL: return w ? N_("Column Total N %") : N_("Unweighted Column Total N %"); + } + NOT_REACHED (); + + case CTSF_MAXIMUM: return N_("Maximum"); + case CTSF_MEAN: return w ? N_("Mean") : N_("Unweighted Mean"); + case CTSF_MEDIAN: return w ? N_("Median") : N_("Unweighted Median"); + case CTSF_MINIMUM: return N_("Minimum"); + case CTSF_MISSING: return w ? N_("Missing") : N_("Unweighted Missing"); + case CTSF_MODE: return w ? N_("Mode") : N_("Unweighted Mode"); + case CTSF_PTILE: NOT_REACHED (); + case CTSF_RANGE: return N_("Range"); + case CTSF_SEMEAN: return w ? N_("Std Error of Mean") : N_("Unweighted Std Error of Mean"); + case CTSF_STDDEV: return w ? N_("Std Deviation") : N_("Unweighted Std Deviation"); + case CTSF_SUM: return w ? N_("Sum") : N_("Unweighted Sum"); + case CTSF_TOTALN: return (d ? N_("Total N") + : w ? N_("Adjusted Total N") + : N_("Unweighted Total N")); + case CTSF_VALIDN: return (d ? N_("Valid N") + : w ? N_("Adjusted Valid N") + : N_("Unweighted Valid N")); + case CTSF_VARIANCE: return w ? N_("Variance") : N_("Unweighted Variance"); + case CTSF_areaPCT_SUM: + switch (a) + { + case CTAT_TABLE: return w ? N_("Table Sum %") : N_("Unweighted Table Sum %"); + case CTAT_LAYER: return w ? N_("Layer Sum %") : N_("Unweighted Layer Sum %"); + case CTAT_LAYERROW: return w ? N_("Layer Row Sum %") : N_("Unweighted Layer Row Sum %"); + case CTAT_LAYERCOL: return w ? N_("Layer Column Sum %") : N_("Unweighted Layer Column Sum %"); + case CTAT_SUBTABLE: return w ? N_("Subtable Sum %") : N_("Unweighted Subtable Sum %"); + case CTAT_ROW: return w ? N_("Row Sum %") : N_("Unweighted Row Sum %"); + case CTAT_COL: return w ? N_("Column Sum %") : N_("Unweighted Column Sum %"); + } + NOT_REACHED (); + + case CTSF_areaID: + switch (a) + { + /* Don't bother translating these: they are for developers only. */ + case CTAT_TABLE: return "Table ID"; + case CTAT_LAYER: return "Layer ID"; + case CTAT_LAYERROW: return "Layer Row ID"; + case CTAT_LAYERCOL: return "Layer Column ID"; + case CTAT_SUBTABLE: return "Subtable ID"; + case CTAT_ROW: return "Row ID"; + case CTAT_COL: return "Column ID"; + } + NOT_REACHED (); + } + + NOT_REACHED (); +} + +static struct pivot_value * +ctables_summary_function_label (enum ctables_summary_function function, + enum ctables_weighting weighting, + enum ctables_area_type area, + double percentile) +{ + if (function == CTSF_PTILE) + { + char *s = (weighting != CTW_UNWEIGHTED + ? xasprintf (_("Percentile %.2f"), percentile) + : xasprintf (_("Unweighted Percentile %.2f"), percentile)); + return pivot_value_new_user_text_nocopy (s); + } + else + return pivot_value_new_text (ctables_summary_function_label__ ( + function, weighting, area)); +} + +/* CTABLES summaries. */ + +struct ctables_summary_spec + { + /* The calculation to be performed. + + 'function' is the function to calculate. 'weighted' specifies whether + to use weighted or unweighted data (for functions that do not support a + choice, it must be true). 'calc_area' is the area over which the + calculation takes place (for functions that target only an individual + cell, it must be 0). For CTSF_PTILE only, 'percentile' is the + percentile between 0 and 100 (for other functions it must be 0). */ + enum ctables_summary_function function; + enum ctables_weighting weighting; + enum ctables_area_type calc_area; + double percentile; /* CTSF_PTILE only. */ + + /* How to display the result of the calculation. + + 'label' is a user-specified label, NULL if the user didn't specify + one. + + 'user_area' is usually the same as 'calc_area', but when category labels + are rotated from one axis to another it swaps rows and columns. + + 'format' is the format for displaying the output. If + 'is_ctables_format' is true, then 'format.type' is one of the special + CTEF_* formats instead of the standard ones. */ + char *label; + enum ctables_area_type user_area; + struct fmt_spec format; + bool is_ctables_format; /* Is 'format' one of CTEF_*? */ + + size_t axis_idx; /* Leaf index if summary dimension in use. */ + size_t sum_var_idx; /* Offset into 'sums' in ctables_area. */ + }; + +static void +ctables_summary_spec_clone (struct ctables_summary_spec *dst, + const struct ctables_summary_spec *src) +{ + *dst = *src; + dst->label = xstrdup_if_nonnull (src->label); +} + +static void +ctables_summary_spec_uninit (struct ctables_summary_spec *s) +{ + if (s) + free (s->label); +} + +/* Collections of summary functions. */ + +struct ctables_summary_spec_set + { + struct ctables_summary_spec *specs; + size_t n; + size_t allocated; + + /* The variable to which the summary specs are applied. */ + struct variable *var; + + /* Whether the variable to which the summary specs are applied is a scale + variable for the purpose of summarization. + + (VALIDN and TOTALN act differently for summarizing scale and categorical + variables.) */ + bool is_scale; + + /* If any of these optional additional scale variables are missing, then + treat 'var' as if it's missing too. This is for implementing + SMISSING=LISTWISE. */ + struct variable **listwise_vars; + size_t n_listwise_vars; + }; + +static void +ctables_summary_spec_set_clone (struct ctables_summary_spec_set *dst, + const struct ctables_summary_spec_set *src) +{ + struct ctables_summary_spec *specs + = (src->n ? xnmalloc (src->n, sizeof *specs) : NULL); + for (size_t i = 0; i < src->n; i++) + ctables_summary_spec_clone (&specs[i], &src->specs[i]); + + *dst = (struct ctables_summary_spec_set) { + .specs = specs, + .n = src->n, + .allocated = src->n, + .var = src->var, + .is_scale = src->is_scale, + }; +} + +static void +ctables_summary_spec_set_uninit (struct ctables_summary_spec_set *set) +{ + for (size_t i = 0; i < set->n; i++) + ctables_summary_spec_uninit (&set->specs[i]); + free (set->listwise_vars); + free (set->specs); +} + +static bool +is_listwise_missing (const struct ctables_summary_spec_set *specs, + const struct ccase *c) +{ + for (size_t i = 0; i < specs->n_listwise_vars; i++) + { + const struct variable *var = specs->listwise_vars[i]; + if (var_is_num_missing (var, case_num (c, var))) + return true; + } + + return false; +} + +/* CTABLES postcompute expressions. */ + +struct ctables_postcompute + { + struct hmap_node hmap_node; /* In struct ctables's 'pcompute' hmap. */ + char *name; /* Name, without leading &. */ + + struct msg_location *location; /* Location of definition. */ + struct ctables_pcexpr *expr; + char *label; + struct ctables_summary_spec_set *specs; + bool hide_source_cats; + }; + +struct ctables_pcexpr + { + /* Precedence table: + + () + ** + - + * / + - + + */ + enum ctables_pcexpr_op + { + /* Terminals. */ + CTPO_CONSTANT, /* 5 */ + CTPO_CAT_NUMBER, /* [5] */ + CTPO_CAT_STRING, /* ["STRING"] */ + CTPO_CAT_NRANGE, /* [LO THRU 5] */ + CTPO_CAT_SRANGE, /* ["A" THRU "B"] */ + CTPO_CAT_MISSING, /* MISSING */ + CTPO_CAT_OTHERNM, /* OTHERNM */ + CTPO_CAT_SUBTOTAL, /* SUBTOTAL */ + CTPO_CAT_TOTAL, /* TOTAL */ + + /* Nonterminals. */ + CTPO_ADD, + CTPO_SUB, + CTPO_MUL, + CTPO_DIV, + CTPO_POW, + CTPO_NEG, + } + op; + + union + { + /* CTPO_CAT_NUMBER. */ + double number; + + /* CTPO_CAT_STRING, in dictionary encoding. */ + struct substring string; + + /* CTPO_CAT_NRANGE. */ + double nrange[2]; + + /* CTPO_CAT_SRANGE. */ + struct substring srange[2]; + + /* CTPO_CAT_SUBTOTAL. */ + size_t subtotal_index; + + /* Two elements: CTPO_ADD, CTPO_SUB, CTPO_MUL, CTPO_DIV, CTPO_POW. + One element: CTPO_NEG. */ + struct ctables_pcexpr *subs[2]; + }; + + /* Source location. */ + struct msg_location *location; + }; + +static struct ctables_postcompute *ctables_find_postcompute (struct ctables *, + const char *name); + +static struct ctables_pcexpr *ctables_pcexpr_allocate_binary ( + enum ctables_pcexpr_op, struct ctables_pcexpr *sub0, + struct ctables_pcexpr *sub1); + +typedef struct ctables_pcexpr *parse_recursively_func (struct lexer *, + struct dictionary *); + +static void +ctables_pcexpr_destroy (struct ctables_pcexpr *e) +{ + if (e) + { + switch (e->op) + { + case CTPO_CAT_STRING: + ss_dealloc (&e->string); + break; + + case CTPO_CAT_SRANGE: + for (size_t i = 0; i < 2; i++) + ss_dealloc (&e->srange[i]); + break; + + case CTPO_ADD: + case CTPO_SUB: + case CTPO_MUL: + case CTPO_DIV: + case CTPO_POW: + case CTPO_NEG: + for (size_t i = 0; i < 2; i++) + ctables_pcexpr_destroy (e->subs[i]); + break; + + case CTPO_CONSTANT: + case CTPO_CAT_NUMBER: + case CTPO_CAT_NRANGE: + case CTPO_CAT_MISSING: + case CTPO_CAT_OTHERNM: + case CTPO_CAT_SUBTOTAL: + case CTPO_CAT_TOTAL: + break; + } + + msg_location_destroy (e->location); + free (e); + } +} + +static struct ctables_pcexpr * +ctables_pcexpr_allocate_binary (enum ctables_pcexpr_op op, + struct ctables_pcexpr *sub0, + struct ctables_pcexpr *sub1) +{ + struct ctables_pcexpr *e = xmalloc (sizeof *e); + *e = (struct ctables_pcexpr) { + .op = op, + .subs = { sub0, sub1 }, + .location = msg_location_merged (sub0->location, sub1->location), + }; + return e; +} + +/* How to parse an operator. */ +struct operator + { + enum token_type token; + enum ctables_pcexpr_op op; + }; + +static const struct operator * +ctables_pcexpr_match_operator (struct lexer *lexer, + const struct operator ops[], size_t n_ops) +{ + for (const struct operator *op = ops; op < ops + n_ops; op++) + if (lex_token (lexer) == op->token) + { + if (op->token != T_NEG_NUM) + lex_get (lexer); + + return op; + } + + return NULL; +} + +static struct ctables_pcexpr * +ctables_pcexpr_parse_binary_operators__ ( + struct lexer *lexer, struct dictionary *dict, + const struct operator ops[], size_t n_ops, + parse_recursively_func *parse_next_level, + const char *chain_warning, struct ctables_pcexpr *lhs) +{ + for (int op_count = 0; ; op_count++) + { + const struct operator *op + = ctables_pcexpr_match_operator (lexer, ops, n_ops); + if (!op) + { + if (op_count > 1 && chain_warning) + msg_at (SW, lhs->location, "%s", chain_warning); + + return lhs; + } + + struct ctables_pcexpr *rhs = parse_next_level (lexer, dict); + if (!rhs) + { + ctables_pcexpr_destroy (lhs); + return NULL; + } + + lhs = ctables_pcexpr_allocate_binary (op->op, lhs, rhs); + } +} + +static struct ctables_pcexpr * +ctables_pcexpr_parse_binary_operators ( + struct lexer *lexer, struct dictionary *dict, + const struct operator ops[], size_t n_ops, + parse_recursively_func *parse_next_level, const char *chain_warning) +{ + struct ctables_pcexpr *lhs = parse_next_level (lexer, dict); + if (!lhs) + return NULL; + + return ctables_pcexpr_parse_binary_operators__ (lexer, dict, ops, n_ops, + parse_next_level, + chain_warning, lhs); +} + +static struct ctables_pcexpr *ctables_pcexpr_parse_add (struct lexer *, + struct dictionary *); + +static struct ctables_pcexpr +ctpo_cat_nrange (double low, double high) +{ + return (struct ctables_pcexpr) { + .op = CTPO_CAT_NRANGE, + .nrange = { low, high }, + }; +} + +static struct ctables_pcexpr +ctpo_cat_srange (struct substring low, struct substring high) +{ + return (struct ctables_pcexpr) { + .op = CTPO_CAT_SRANGE, + .srange = { low, high }, + }; +} + +static struct substring +parse_substring (struct lexer *lexer, struct dictionary *dict) +{ + struct substring s = recode_substring_pool ( + dict_get_encoding (dict), "UTF-8", lex_tokss (lexer), NULL); + ss_rtrim (&s, ss_cstr (" ")); + lex_get (lexer); + return s; +} + +static struct ctables_pcexpr * +ctables_pcexpr_parse_primary (struct lexer *lexer, struct dictionary *dict) +{ + int start_ofs = lex_ofs (lexer); + struct ctables_pcexpr e; + if (lex_is_number (lexer)) + { + e = (struct ctables_pcexpr) { .op = CTPO_CONSTANT, + .number = lex_number (lexer) }; + lex_get (lexer); + } + else if (lex_match_id (lexer, "MISSING")) + e = (struct ctables_pcexpr) { .op = CTPO_CAT_MISSING }; + else if (lex_match_id (lexer, "OTHERNM")) + e = (struct ctables_pcexpr) { .op = CTPO_CAT_OTHERNM }; + else if (lex_match_id (lexer, "TOTAL")) + e = (struct ctables_pcexpr) { .op = CTPO_CAT_TOTAL }; + else if (lex_match_id (lexer, "SUBTOTAL")) + { + size_t subtotal_index = 0; + if (lex_match (lexer, T_LBRACK)) + { + if (!lex_force_int_range (lexer, "SUBTOTAL", 1, LONG_MAX)) + return NULL; + subtotal_index = lex_integer (lexer); + lex_get (lexer); + if (!lex_force_match (lexer, T_RBRACK)) + return NULL; + } + e = (struct ctables_pcexpr) { .op = CTPO_CAT_SUBTOTAL, + .subtotal_index = subtotal_index }; + } + else if (lex_match (lexer, T_LBRACK)) + { + if (lex_match_id (lexer, "LO")) + { + if (!lex_force_match_id (lexer, "THRU")) + return false; + + if (lex_is_string (lexer)) + { + struct substring low = { .string = NULL }; + struct substring high = parse_substring (lexer, dict); + e = ctpo_cat_srange (low, high); + } + else + { + if (!lex_force_num (lexer)) + return false; + e = ctpo_cat_nrange (-DBL_MAX, lex_number (lexer)); + lex_get (lexer); + } + } + else if (lex_is_number (lexer)) + { + double number = lex_number (lexer); + lex_get (lexer); + if (lex_match_id (lexer, "THRU")) + { + if (lex_match_id (lexer, "HI")) + e = ctpo_cat_nrange (number, DBL_MAX); + else + { + if (!lex_force_num (lexer)) + return false; + e = ctpo_cat_nrange (number, lex_number (lexer)); + lex_get (lexer); + } + } + else + e = (struct ctables_pcexpr) { .op = CTPO_CAT_NUMBER, + .number = number }; + } + else if (lex_is_string (lexer)) + { + struct substring s = parse_substring (lexer, dict); + + if (lex_match_id (lexer, "THRU")) + { + struct substring high; + + if (lex_match_id (lexer, "HI")) + high = (struct substring) { .string = NULL }; + else + { + if (!lex_force_string (lexer)) + { + ss_dealloc (&s); + return false; + } + high = parse_substring (lexer, dict); + } + + e = ctpo_cat_srange (s, high); + } + else + e = (struct ctables_pcexpr) { .op = CTPO_CAT_STRING, .string = s }; + } + else + { + lex_error (lexer, NULL); + return NULL; + } + + if (!lex_force_match (lexer, T_RBRACK)) + { + if (e.op == CTPO_CAT_STRING) + ss_dealloc (&e.string); + else if (e.op == CTPO_CAT_SRANGE) + { + ss_dealloc (&e.srange[0]); + ss_dealloc (&e.srange[1]); + } + return NULL; + } + } + else if (lex_match (lexer, T_LPAREN)) + { + struct ctables_pcexpr *ep = ctables_pcexpr_parse_add (lexer, dict); + if (!ep) + return NULL; + if (!lex_force_match (lexer, T_RPAREN)) + { + ctables_pcexpr_destroy (ep); + return NULL; + } + return ep; + } + else + { + lex_error (lexer, NULL); + return NULL; + } + + e.location = lex_ofs_location (lexer, start_ofs, lex_ofs (lexer) - 1); + return xmemdup (&e, sizeof e); +} + +static struct ctables_pcexpr * +ctables_pcexpr_allocate_neg (struct ctables_pcexpr *sub, + struct lexer *lexer, int start_ofs) +{ + struct ctables_pcexpr *e = xmalloc (sizeof *e); + *e = (struct ctables_pcexpr) { + .op = CTPO_NEG, + .subs = { sub }, + .location = lex_ofs_location (lexer, start_ofs, lex_ofs (lexer) - 1), + }; + return e; +} + +static struct ctables_pcexpr * +ctables_pcexpr_parse_exp (struct lexer *lexer, struct dictionary *dict) +{ + static const struct operator op = { T_EXP, CTPO_POW }; + + const char *chain_warning = + _("The exponentiation operator (`**') is left-associative: " + "`a**b**c' equals `(a**b)**c', not `a**(b**c)'. " + "To disable this warning, insert parentheses."); + + if (lex_token (lexer) != T_NEG_NUM || lex_next_token (lexer, 1) != T_EXP) + return ctables_pcexpr_parse_binary_operators (lexer, dict, &op, 1, + ctables_pcexpr_parse_primary, + chain_warning); + + /* Special case for situations like "-5**6", which must be parsed as + -(5**6). */ + + int start_ofs = lex_ofs (lexer); + struct ctables_pcexpr *lhs = xmalloc (sizeof *lhs); + *lhs = (struct ctables_pcexpr) { + .op = CTPO_CONSTANT, + .number = -lex_tokval (lexer), + .location = lex_ofs_location (lexer, start_ofs, lex_ofs (lexer)), + }; + lex_get (lexer); + + struct ctables_pcexpr *node = ctables_pcexpr_parse_binary_operators__ ( + lexer, dict, &op, 1, + ctables_pcexpr_parse_primary, chain_warning, lhs); + if (!node) + return NULL; + + return ctables_pcexpr_allocate_neg (node, lexer, start_ofs); +} + +/* Parses the unary minus level. */ +static struct ctables_pcexpr * +ctables_pcexpr_parse_neg (struct lexer *lexer, struct dictionary *dict) +{ + int start_ofs = lex_ofs (lexer); + if (!lex_match (lexer, T_DASH)) + return ctables_pcexpr_parse_exp (lexer, dict); + + struct ctables_pcexpr *inner = ctables_pcexpr_parse_neg (lexer, dict); + if (!inner) + return NULL; + + return ctables_pcexpr_allocate_neg (inner, lexer, start_ofs); +} + +/* Parses the multiplication and division level. */ +static struct ctables_pcexpr * +ctables_pcexpr_parse_mul (struct lexer *lexer, struct dictionary *dict) +{ + static const struct operator ops[] = + { + { T_ASTERISK, CTPO_MUL }, + { T_SLASH, CTPO_DIV }, + }; + + return ctables_pcexpr_parse_binary_operators (lexer, dict, ops, + sizeof ops / sizeof *ops, + ctables_pcexpr_parse_neg, NULL); +} + +/* Parses the addition and subtraction level. */ +static struct ctables_pcexpr * +ctables_pcexpr_parse_add (struct lexer *lexer, struct dictionary *dict) +{ + static const struct operator ops[] = + { + { T_PLUS, CTPO_ADD }, + { T_DASH, CTPO_SUB }, + { T_NEG_NUM, CTPO_ADD }, + }; + + return ctables_pcexpr_parse_binary_operators (lexer, dict, + ops, sizeof ops / sizeof *ops, + ctables_pcexpr_parse_mul, NULL); +} + +/* CTABLES axis expressions. */ + +/* CTABLES has a number of extra formats that we implement via custom + currency specifications on an alternate fmt_settings. */ +#define CTEF_NEGPAREN FMT_CCA +#define CTEF_NEQUAL FMT_CCB +#define CTEF_PAREN FMT_CCC +#define CTEF_PCTPAREN FMT_CCD + +enum ctables_summary_variant + { + CSV_CELL, + CSV_TOTAL +#define N_CSVS 2 + }; + +struct ctables_axis + { + enum ctables_axis_op + { + /* Terminals. */ + CTAO_VAR, + + /* Nonterminals. */ + CTAO_STACK, /* + */ + CTAO_NEST, /* > */ + } + op; + + union + { + /* Terminals. */ + struct + { + struct variable *var; + bool scale; + struct ctables_summary_spec_set specs[N_CSVS]; + }; + + /* Nonterminals. */ + struct ctables_axis *subs[2]; + }; + + struct msg_location *loc; + }; + +static void +ctables_axis_destroy (struct ctables_axis *axis) +{ + if (!axis) + return; + + switch (axis->op) + { + case CTAO_VAR: + for (size_t i = 0; i < N_CSVS; i++) + ctables_summary_spec_set_uninit (&axis->specs[i]); + break; + + case CTAO_STACK: + case CTAO_NEST: + ctables_axis_destroy (axis->subs[0]); + ctables_axis_destroy (axis->subs[1]); + break; + } + msg_location_destroy (axis->loc); + free (axis); +} + +static struct ctables_axis * +ctables_axis_new_nonterminal (enum ctables_axis_op op, + struct ctables_axis *sub0, + struct ctables_axis *sub1, + struct lexer *lexer, int start_ofs) +{ + struct ctables_axis *axis = xmalloc (sizeof *axis); + *axis = (struct ctables_axis) { + .op = op, + .subs = { sub0, sub1 }, + .loc = lex_ofs_location (lexer, start_ofs, lex_ofs (lexer) - 1), + }; + return axis; +} + +struct ctables_axis_parse_ctx + { + struct lexer *lexer; + struct dictionary *dict; + }; + +static struct pivot_value * +ctables_summary_label (const struct ctables_summary_spec *spec, double cilevel) +{ + if (!spec->label) + return ctables_summary_function_label (spec->function, spec->weighting, + spec->user_area, spec->percentile); + else + { + struct substring in = ss_cstr (spec->label); + struct substring target = ss_cstr (")CILEVEL"); + + struct string out = DS_EMPTY_INITIALIZER; + for (;;) + { + size_t chunk = ss_find_substring (in, target); + ds_put_substring (&out, ss_head (in, chunk)); + ss_advance (&in, chunk); + if (!in.length) + return pivot_value_new_user_text_nocopy (ds_steal_cstr (&out)); + + ss_advance (&in, target.length); + ds_put_format (&out, "%g", cilevel); + } + } +} + +static bool +add_summary_spec (struct ctables_axis *axis, + enum ctables_summary_function function, + enum ctables_weighting weighting, + enum ctables_area_type area, double percentile, + const char *label, const struct fmt_spec *format, + bool is_ctables_format, const struct msg_location *loc, + enum ctables_summary_variant sv) +{ + if (axis->op == CTAO_VAR) + { + char function_name[128]; + ctables_summary_function_name (function, weighting, area, + function_name, sizeof function_name); + const char *var_name = var_get_name (axis->var); + switch (ctables_function_availability (function)) + { +#if 0 + case CTFA_MRSETS: + msg_at (SE, loc, _("Summary function %s applies only to multiple " + "response sets."), function_name); + msg_at (SN, axis->loc, _("'%s' is not a multiple response set."), + var_name); + return false; +#endif + + case CTFA_SCALE: + if (!axis->scale && sv != CSV_TOTAL) + { + msg_at (SE, loc, + _("Summary function %s applies only to scale variables."), + function_name); + msg_at (SN, axis->loc, _("'%s' is not a scale variable."), + var_name); + return false; + } + break; + + case CTFA_ALL: + break; + } + + struct ctables_summary_spec_set *set = &axis->specs[sv]; + if (set->n >= set->allocated) + set->specs = x2nrealloc (set->specs, &set->allocated, + sizeof *set->specs); + + struct ctables_summary_spec *dst = &set->specs[set->n++]; + *dst = (struct ctables_summary_spec) { + .function = function, + .weighting = weighting, + .calc_area = area, + .user_area = area, + .percentile = percentile, + .label = xstrdup_if_nonnull (label), + .format = (format ? *format + : ctables_summary_default_format (function, axis->var)), + .is_ctables_format = is_ctables_format, + }; + return true; + } + else + { + for (size_t i = 0; i < 2; i++) + if (!add_summary_spec (axis->subs[i], function, weighting, area, + percentile, label, format, is_ctables_format, + loc, sv)) + return false; + return true; + } +} + +static struct ctables_axis *ctables_axis_parse_stack ( + struct ctables_axis_parse_ctx *); + +static struct ctables_axis * +ctables_axis_parse_primary (struct ctables_axis_parse_ctx *ctx) +{ + if (lex_match (ctx->lexer, T_LPAREN)) + { + struct ctables_axis *sub = ctables_axis_parse_stack (ctx); + if (!sub || !lex_force_match (ctx->lexer, T_RPAREN)) + { + ctables_axis_destroy (sub); + return NULL; + } + return sub; + } + + if (!lex_force_id (ctx->lexer)) + return NULL; + + if (lex_tokcstr (ctx->lexer)[0] == '$') + { + lex_error (ctx->lexer, + _("Multiple response set support not implemented.")); + return NULL; + } + + int start_ofs = lex_ofs (ctx->lexer); + struct variable *var = parse_variable (ctx->lexer, ctx->dict); + if (!var) + return NULL; + + struct ctables_axis *axis = xmalloc (sizeof *axis); + *axis = (struct ctables_axis) { .op = CTAO_VAR, .var = var }; + + axis->scale = (lex_match_phrase (ctx->lexer, "[S]") ? true + : lex_match_phrase (ctx->lexer, "[C]") ? false + : var_get_measure (var) == MEASURE_SCALE); + axis->loc = lex_ofs_location (ctx->lexer, start_ofs, + lex_ofs (ctx->lexer) - 1); + if (axis->scale && var_is_alpha (var)) + { + msg_at (SE, axis->loc, _("Cannot use string variable %s as a scale " + "variable."), + var_get_name (var)); + ctables_axis_destroy (axis); + return NULL; + } + + return axis; +} + +static bool +has_digit (const char *s) +{ + return s[strcspn (s, "0123456789")] != '\0'; +} + +static bool +parse_ctables_format_specifier (struct lexer *lexer, struct fmt_spec *format, + bool *is_ctables_format) +{ + char type[FMT_TYPE_LEN_MAX + 1]; + if (!parse_abstract_format_specifier__ (lexer, type, &format->w, &format->d)) + return false; + + if (!strcasecmp (type, "NEGPAREN")) + format->type = CTEF_NEGPAREN; + else if (!strcasecmp (type, "NEQUAL")) + format->type = CTEF_NEQUAL; + else if (!strcasecmp (type, "PAREN")) + format->type = CTEF_PAREN; + else if (!strcasecmp (type, "PCTPAREN")) + format->type = CTEF_PCTPAREN; + else + { + *is_ctables_format = false; + return (parse_format_specifier (lexer, format) + && fmt_check_output (format) + && fmt_check_type_compat (format, VAL_NUMERIC)); + } + + lex_get (lexer); + if (format->w < 2) + { + lex_next_error (lexer, -1, -1, + _("Output format %s requires width 2 or greater."), type); + return false; + } + else if (format->d > format->w - 1) + { + lex_next_error (lexer, -1, -1, _("Output format %s requires width " + "greater than decimals."), type); + return false; + } + else + { + *is_ctables_format = true; + return true; + } +} + +static struct ctables_axis * +ctables_axis_parse_postfix (struct ctables_axis_parse_ctx *ctx) +{ + struct ctables_axis *sub = ctables_axis_parse_primary (ctx); + if (!sub || !lex_match (ctx->lexer, T_LBRACK)) + return sub; + + enum ctables_summary_variant sv = CSV_CELL; + for (;;) + { + int start_ofs = lex_ofs (ctx->lexer); + + /* Parse function. */ + enum ctables_summary_function function; + enum ctables_weighting weighting; + enum ctables_area_type area; + if (!parse_ctables_summary_function (ctx->lexer, &function, &weighting, + &area)) + goto error; + + /* Parse percentile. */ + double percentile = 0; + if (function == CTSF_PTILE) + { + if (!lex_force_num_range_closed (ctx->lexer, "PTILE", 0, 100)) + goto error; + percentile = lex_number (ctx->lexer); + lex_get (ctx->lexer); + } + + /* Parse label. */ + char *label = NULL; + if (lex_is_string (ctx->lexer)) + { + label = ss_xstrdup (lex_tokss (ctx->lexer)); + lex_get (ctx->lexer); + } + + /* Parse format. */ + struct fmt_spec format; + const struct fmt_spec *formatp; + bool is_ctables_format = false; + if (lex_token (ctx->lexer) == T_ID + && has_digit (lex_tokcstr (ctx->lexer))) + { + if (!parse_ctables_format_specifier (ctx->lexer, &format, + &is_ctables_format)) + { + free (label); + goto error; + } + formatp = &format; + } + else + formatp = NULL; + + struct msg_location *loc = lex_ofs_location (ctx->lexer, start_ofs, + lex_ofs (ctx->lexer) - 1); + add_summary_spec (sub, function, weighting, area, percentile, label, + formatp, is_ctables_format, loc, sv); + free (label); + msg_location_destroy (loc); + + lex_match (ctx->lexer, T_COMMA); + if (sv == CSV_CELL && lex_match_id (ctx->lexer, "TOTALS")) + { + if (!lex_force_match (ctx->lexer, T_LBRACK)) + goto error; + sv = CSV_TOTAL; + } + else if (lex_match (ctx->lexer, T_RBRACK)) + { + if (sv == CSV_TOTAL && !lex_force_match (ctx->lexer, T_RBRACK)) + goto error; + return sub; + } + } + +error: + ctables_axis_destroy (sub); + return NULL; +} + +static const struct ctables_axis * +find_scale (const struct ctables_axis *axis) +{ + if (!axis) + return NULL; + else if (axis->op == CTAO_VAR) + return axis->scale ? axis : NULL; + else + { + for (size_t i = 0; i < 2; i++) + { + const struct ctables_axis *scale = find_scale (axis->subs[i]); + if (scale) + return scale; + } + return NULL; + } +} + +static const struct ctables_axis * +find_categorical_summary_spec (const struct ctables_axis *axis) +{ + if (!axis) + return NULL; + else if (axis->op == CTAO_VAR) + return !axis->scale && axis->specs[CSV_CELL].n ? axis : NULL; + else + { + for (size_t i = 0; i < 2; i++) + { + const struct ctables_axis *sum + = find_categorical_summary_spec (axis->subs[i]); + if (sum) + return sum; + } + return NULL; + } +} + +static struct ctables_axis * +ctables_axis_parse_nest (struct ctables_axis_parse_ctx *ctx) +{ + int start_ofs = lex_ofs (ctx->lexer); + struct ctables_axis *lhs = ctables_axis_parse_postfix (ctx); + if (!lhs) + return NULL; + + while (lex_match (ctx->lexer, T_GT)) + { + struct ctables_axis *rhs = ctables_axis_parse_postfix (ctx); + if (!rhs) + { + ctables_axis_destroy (lhs); + return NULL; + } + + struct ctables_axis *nest = ctables_axis_new_nonterminal ( + CTAO_NEST, lhs, rhs, ctx->lexer, start_ofs); + + const struct ctables_axis *outer_scale = find_scale (lhs); + const struct ctables_axis *inner_scale = find_scale (rhs); + if (outer_scale && inner_scale) + { + msg_at (SE, nest->loc, _("Cannot nest scale variables.")); + msg_at (SN, outer_scale->loc, _("This is an outer scale variable.")); + msg_at (SN, inner_scale->loc, _("This is an inner scale variable.")); + ctables_axis_destroy (nest); + return NULL; + } + + const struct ctables_axis *outer_sum = find_categorical_summary_spec (lhs); + if (outer_sum) + { + msg_at (SE, nest->loc, + _("Summaries may only be requested for categorical variables " + "at the innermost nesting level.")); + msg_at (SN, outer_sum->loc, + _("This outer categorical variable has a summary.")); + ctables_axis_destroy (nest); + return NULL; + } + + lhs = nest; + } + + return lhs; +} + +static struct ctables_axis * +ctables_axis_parse_stack (struct ctables_axis_parse_ctx *ctx) +{ + int start_ofs = lex_ofs (ctx->lexer); + struct ctables_axis *lhs = ctables_axis_parse_nest (ctx); + if (!lhs) + return NULL; + + while (lex_match (ctx->lexer, T_PLUS)) + { + struct ctables_axis *rhs = ctables_axis_parse_nest (ctx); + if (!rhs) + { + ctables_axis_destroy (lhs); + return NULL; + } + + lhs = ctables_axis_new_nonterminal (CTAO_STACK, lhs, rhs, + ctx->lexer, start_ofs); + } + + return lhs; +} + +static bool +ctables_axis_parse (struct lexer *lexer, struct dictionary *dict, + struct ctables_axis **axisp) +{ + *axisp = NULL; + if (lex_token (lexer) == T_BY + || lex_token (lexer) == T_SLASH + || lex_token (lexer) == T_ENDCMD) + return true; + + struct ctables_axis_parse_ctx ctx = { + .lexer = lexer, + .dict = dict, + }; + *axisp = ctables_axis_parse_stack (&ctx); + return *axisp; +} + +/* CTABLES categories. */ + +struct ctables_categories + { + size_t n_refs; + struct ctables_category *cats; + size_t n_cats; + bool show_empty; + }; + +struct ctables_category + { + enum ctables_category_type + { + /* Explicit category lists. */ + CCT_NUMBER, + CCT_STRING, + CCT_NRANGE, /* Numerical range. */ + CCT_SRANGE, /* String range. */ + CCT_MISSING, + CCT_OTHERNM, + CCT_POSTCOMPUTE, + + /* Totals and subtotals. */ + CCT_SUBTOTAL, + CCT_TOTAL, + + /* Implicit category lists. */ + CCT_VALUE, + CCT_LABEL, + CCT_FUNCTION, + + /* For contributing to TOTALN. */ + CCT_EXCLUDED_MISSING, + } + type; + + struct ctables_category *subtotal; + + bool hide; + + union + { + double number; /* CCT_NUMBER. */ + struct substring string; /* CCT_STRING, in dictionary encoding. */ + double nrange[2]; /* CCT_NRANGE. */ + struct substring srange[2]; /* CCT_SRANGE. */ + + struct + { + char *total_label; /* CCT_SUBTOTAL, CCT_TOTAL. */ + bool hide_subcategories; /* CCT_SUBTOTAL. */ + }; + + /* CCT_POSTCOMPUTE. */ + struct + { + const struct ctables_postcompute *pc; + enum fmt_type parse_format; + }; + + /* CCT_VALUE, CCT_LABEL, CCT_FUNCTION. */ + struct + { + bool include_missing; + bool sort_ascending; + + /* CCT_FUNCTION. */ + enum ctables_summary_function sort_function; + enum ctables_weighting weighting; + enum ctables_area_type area; + struct variable *sort_var; + double percentile; + }; + }; + + /* Source location. This is null for CCT_TOTAL, CCT_VALUE, CCT_LABEL, + CCT_FUNCTION, CCT_EXCLUDED_MISSING. */ + struct msg_location *location; + }; + +static void +ctables_category_uninit (struct ctables_category *cat) +{ + if (!cat) + return; + + msg_location_destroy (cat->location); + switch (cat->type) + { + case CCT_NUMBER: + case CCT_NRANGE: + case CCT_MISSING: + case CCT_OTHERNM: + case CCT_POSTCOMPUTE: + break; + + case CCT_STRING: + ss_dealloc (&cat->string); + break; + + case CCT_SRANGE: + ss_dealloc (&cat->srange[0]); + ss_dealloc (&cat->srange[1]); + break; + + case CCT_SUBTOTAL: + case CCT_TOTAL: + free (cat->total_label); + break; + + case CCT_VALUE: + case CCT_LABEL: + case CCT_FUNCTION: + break; + + case CCT_EXCLUDED_MISSING: + break; + } +} + +static bool +nullable_substring_equal (const struct substring *a, + const struct substring *b) +{ + return !a->string ? !b->string : b->string && ss_equals (*a, *b); +} + +static bool +ctables_category_equal (const struct ctables_category *a, + const struct ctables_category *b) +{ + if (a->type != b->type) + return false; + + switch (a->type) + { + case CCT_NUMBER: + return a->number == b->number; + + case CCT_STRING: + return ss_equals (a->string, b->string); + + case CCT_NRANGE: + return a->nrange[0] == b->nrange[0] && a->nrange[1] == b->nrange[1]; + + case CCT_SRANGE: + return (nullable_substring_equal (&a->srange[0], &b->srange[0]) + && nullable_substring_equal (&a->srange[1], &b->srange[1])); + + case CCT_MISSING: + case CCT_OTHERNM: + return true; + + case CCT_POSTCOMPUTE: + return a->pc == b->pc; + + case CCT_SUBTOTAL: + case CCT_TOTAL: + return !strcmp (a->total_label, b->total_label); + + case CCT_VALUE: + case CCT_LABEL: + case CCT_FUNCTION: + return (a->include_missing == b->include_missing + && a->sort_ascending == b->sort_ascending + && a->sort_function == b->sort_function + && a->sort_var == b->sort_var + && a->percentile == b->percentile); + + case CCT_EXCLUDED_MISSING: + return true; + } + + NOT_REACHED (); +} + +static void +ctables_categories_unref (struct ctables_categories *c) +{ + if (!c) + return; + + assert (c->n_refs > 0); + if (--c->n_refs) + return; + + for (size_t i = 0; i < c->n_cats; i++) + ctables_category_uninit (&c->cats[i]); + free (c->cats); + free (c); +} + +static bool +ctables_categories_equal (const struct ctables_categories *a, + const struct ctables_categories *b) +{ + if (a->n_cats != b->n_cats || a->show_empty != b->show_empty) + return false; + + for (size_t i = 0; i < a->n_cats; i++) + if (!ctables_category_equal (&a->cats[i], &b->cats[i])) + return false; + + return true; +} + +static struct ctables_category +cct_nrange (double low, double high) +{ + return (struct ctables_category) { + .type = CCT_NRANGE, + .nrange = { low, high } + }; +} + +static struct ctables_category +cct_srange (struct substring low, struct substring high) +{ + return (struct ctables_category) { + .type = CCT_SRANGE, + .srange = { low, high } + }; +} + +static bool +ctables_table_parse_subtotal (struct lexer *lexer, bool hide_subcategories, + struct ctables_category *cat) +{ + char *total_label; + if (lex_match (lexer, T_EQUALS)) + { + if (!lex_force_string (lexer)) + return false; + + total_label = ss_xstrdup (lex_tokss (lexer)); + lex_get (lexer); + } + else + total_label = xstrdup (_("Subtotal")); + + *cat = (struct ctables_category) { + .type = CCT_SUBTOTAL, + .hide_subcategories = hide_subcategories, + .total_label = total_label + }; + return true; +} + +static bool +ctables_table_parse_explicit_category (struct lexer *lexer, + struct dictionary *dict, + struct ctables *ct, + struct ctables_category *cat) +{ + if (lex_match_id (lexer, "OTHERNM")) + *cat = (struct ctables_category) { .type = CCT_OTHERNM }; + else if (lex_match_id (lexer, "MISSING")) + *cat = (struct ctables_category) { .type = CCT_MISSING }; + else if (lex_match_id (lexer, "SUBTOTAL")) + return ctables_table_parse_subtotal (lexer, false, cat); + else if (lex_match_id (lexer, "HSUBTOTAL")) + return ctables_table_parse_subtotal (lexer, true, cat); + else if (lex_match_id (lexer, "LO")) + { + if (!lex_force_match_id (lexer, "THRU")) + return false; + if (lex_is_string (lexer)) + { + struct substring sr0 = { .string = NULL }; + struct substring sr1 = parse_substring (lexer, dict); + *cat = cct_srange (sr0, sr1); + } + else if (lex_force_num (lexer)) + { + *cat = cct_nrange (-DBL_MAX, lex_number (lexer)); + lex_get (lexer); + } + else + return false; + } + else if (lex_is_number (lexer)) + { + double number = lex_number (lexer); + lex_get (lexer); + if (lex_match_id (lexer, "THRU")) + { + if (lex_match_id (lexer, "HI")) + *cat = cct_nrange (number, DBL_MAX); + else + { + if (!lex_force_num (lexer)) + return false; + *cat = cct_nrange (number, lex_number (lexer)); + lex_get (lexer); + } + } + else + *cat = (struct ctables_category) { + .type = CCT_NUMBER, + .number = number + }; + } + else if (lex_is_string (lexer)) + { + struct substring s = parse_substring (lexer, dict); + if (lex_match_id (lexer, "THRU")) + { + if (lex_match_id (lexer, "HI")) + { + struct substring sr1 = { .string = NULL }; + *cat = cct_srange (s, sr1); + } + else + { + if (!lex_force_string (lexer)) + { + ss_dealloc (&s); + return false; + } + struct substring sr1 = parse_substring (lexer, dict); + *cat = cct_srange (s, sr1); + } + } + else + *cat = (struct ctables_category) { .type = CCT_STRING, .string = s }; + } + else if (lex_match (lexer, T_AND)) + { + if (!lex_force_id (lexer)) + return false; + struct ctables_postcompute *pc = ctables_find_postcompute ( + ct, lex_tokcstr (lexer)); + if (!pc) + { + struct msg_location *loc = lex_get_location (lexer, -1, 0); + msg_at (SE, loc, _("Unknown postcompute &%s."), + lex_tokcstr (lexer)); + msg_location_destroy (loc); + return false; + } + lex_get (lexer); + + *cat = (struct ctables_category) { .type = CCT_POSTCOMPUTE, .pc = pc }; + } + else + { + lex_error (lexer, NULL); + return false; + } + + return true; +} + +static bool +parse_category_string (struct msg_location *location, + struct substring s, const struct dictionary *dict, + enum fmt_type format, double *n) +{ + union value v; + char *error = data_in (s, dict_get_encoding (dict), format, + settings_get_fmt_settings (), &v, 0, NULL); + if (error) + { + msg_at (SE, location, + _("Failed to parse category specification as format %s: %s."), + fmt_name (format), error); + free (error); + return false; + } + + *n = v.f; + return true; +} + +static struct ctables_category * +ctables_find_category_for_postcompute__ (const struct ctables_categories *cats, + const struct ctables_pcexpr *e) +{ + struct ctables_category *best = NULL; + size_t n_subtotals = 0; + for (size_t i = 0; i < cats->n_cats; i++) + { + struct ctables_category *cat = &cats->cats[i]; + switch (e->op) + { + case CTPO_CAT_NUMBER: + if (cat->type == CCT_NUMBER && cat->number == e->number) + best = cat; + break; + + case CTPO_CAT_STRING: + if (cat->type == CCT_STRING && ss_equals (cat->string, e->string)) + best = cat; + break; + + case CTPO_CAT_NRANGE: + if (cat->type == CCT_NRANGE + && cat->nrange[0] == e->nrange[0] + && cat->nrange[1] == e->nrange[1]) + best = cat; + break; + + case CTPO_CAT_SRANGE: + if (cat->type == CCT_SRANGE + && nullable_substring_equal (&cat->srange[0], &e->srange[0]) + && nullable_substring_equal (&cat->srange[1], &e->srange[1])) + best = cat; + break; + + case CTPO_CAT_MISSING: + if (cat->type == CCT_MISSING) + best = cat; + break; + + case CTPO_CAT_OTHERNM: + if (cat->type == CCT_OTHERNM) + best = cat; + break; + + case CTPO_CAT_SUBTOTAL: + if (cat->type == CCT_SUBTOTAL) + { + n_subtotals++; + if (e->subtotal_index == n_subtotals) + return cat; + else if (e->subtotal_index == 0) + best = cat; + } + break; + + case CTPO_CAT_TOTAL: + if (cat->type == CCT_TOTAL) + return cat; + break; + + case CTPO_CONSTANT: + case CTPO_ADD: + case CTPO_SUB: + case CTPO_MUL: + case CTPO_DIV: + case CTPO_POW: + case CTPO_NEG: + NOT_REACHED (); + } + } + if (e->op == CTPO_CAT_SUBTOTAL && e->subtotal_index == 0 && n_subtotals > 1) + return NULL; + return best; +} + +static struct ctables_category * +ctables_find_category_for_postcompute (const struct dictionary *dict, + const struct ctables_categories *cats, + enum fmt_type parse_format, + const struct ctables_pcexpr *e) +{ + if (parse_format != FMT_F) + { + if (e->op == CTPO_CAT_STRING) + { + double number; + if (!parse_category_string (e->location, e->string, dict, + parse_format, &number)) + return NULL; + + struct ctables_pcexpr e2 = { + .op = CTPO_CAT_NUMBER, + .number = number, + .location = e->location, + }; + return ctables_find_category_for_postcompute__ (cats, &e2); + } + else if (e->op == CTPO_CAT_SRANGE) + { + double nrange[2]; + if (!e->srange[0].string) + nrange[0] = -DBL_MAX; + else if (!parse_category_string (e->location, e->srange[0], dict, + parse_format, &nrange[0])) + return NULL; + + if (!e->srange[1].string) + nrange[1] = DBL_MAX; + else if (!parse_category_string (e->location, e->srange[1], dict, + parse_format, &nrange[1])) + return NULL; + + struct ctables_pcexpr e2 = { + .op = CTPO_CAT_NRANGE, + .nrange = { nrange[0], nrange[1] }, + .location = e->location, + }; + return ctables_find_category_for_postcompute__ (cats, &e2); + } + } + return ctables_find_category_for_postcompute__ (cats, e); +} + +static struct substring +rtrim_value (const union value *v, const struct variable *var) +{ + struct substring s = ss_buffer (CHAR_CAST (char *, v->s), + var_get_width (var)); + ss_rtrim (&s, ss_cstr (" ")); + return s; +} + +static bool +in_string_range (const union value *v, const struct variable *var, + const struct substring *srange) +{ + struct substring s = rtrim_value (v, var); + return ((!srange[0].string || ss_compare (s, srange[0]) >= 0) + && (!srange[1].string || ss_compare (s, srange[1]) <= 0)); +} + +static const struct ctables_category * +ctables_categories_match (const struct ctables_categories *c, + const union value *v, const struct variable *var) +{ + if (var_is_numeric (var) && v->f == SYSMIS) + return NULL; + + const struct ctables_category *othernm = NULL; + for (size_t i = c->n_cats; i-- > 0; ) + { + const struct ctables_category *cat = &c->cats[i]; + switch (cat->type) + { + case CCT_NUMBER: + if (cat->number == v->f) + return cat; + break; + + case CCT_STRING: + if (ss_equals (cat->string, rtrim_value (v, var))) + return cat; + break; + + case CCT_NRANGE: + if ((cat->nrange[0] == -DBL_MAX || v->f >= cat->nrange[0]) + && (cat->nrange[1] == DBL_MAX || v->f <= cat->nrange[1])) + return cat; + break; + + case CCT_SRANGE: + if (in_string_range (v, var, cat->srange)) + return cat; + break; + + case CCT_MISSING: + if (var_is_value_missing (var, v)) + return cat; + break; + + case CCT_POSTCOMPUTE: + break; + + case CCT_OTHERNM: + if (!othernm) + othernm = cat; + break; + + case CCT_SUBTOTAL: + case CCT_TOTAL: + break; + + case CCT_VALUE: + case CCT_LABEL: + case CCT_FUNCTION: + return (cat->include_missing || !var_is_value_missing (var, v) ? cat + : NULL); + + case CCT_EXCLUDED_MISSING: + break; + } + } + + return var_is_value_missing (var, v) ? NULL : othernm; +} + +static const struct ctables_category * +ctables_categories_total (const struct ctables_categories *c) +{ + const struct ctables_category *first = &c->cats[0]; + const struct ctables_category *last = &c->cats[c->n_cats - 1]; + return (first->type == CCT_TOTAL ? first + : last->type == CCT_TOTAL ? last + : NULL); +} + +static void +ctables_category_format_number (double number, const struct variable *var, + struct string *s) +{ + struct pivot_value *pv = pivot_value_new_var_value ( + var, &(union value) { .f = number }); + pivot_value_format (pv, NULL, s); + pivot_value_destroy (pv); +} + +static void +ctables_category_format_string (struct substring string, + const struct variable *var, struct string *out) +{ + int width = var_get_width (var); + char *s = xmalloc (width); + buf_copy_rpad (s, width, string.string, string.length, ' '); + struct pivot_value *pv = pivot_value_new_var_value ( + var, &(union value) { .s = CHAR_CAST (uint8_t *, s) }); + pivot_value_format (pv, NULL, out); + pivot_value_destroy (pv); + free (s); +} + +static bool +ctables_category_format_label (const struct ctables_category *cat, + const struct variable *var, + struct string *s) +{ + switch (cat->type) + { + case CCT_NUMBER: + ctables_category_format_number (cat->number, var, s); + return true; + + case CCT_STRING: + ctables_category_format_string (cat->string, var, s); + return true; + + case CCT_NRANGE: + ctables_category_format_number (cat->nrange[0], var, s); + ds_put_format (s, " THRU "); + ctables_category_format_number (cat->nrange[1], var, s); + return true; + + case CCT_SRANGE: + ctables_category_format_string (cat->srange[0], var, s); + ds_put_format (s, " THRU "); + ctables_category_format_string (cat->srange[1], var, s); + return true; + + case CCT_MISSING: + ds_put_cstr (s, "MISSING"); + return true; + + case CCT_OTHERNM: + ds_put_cstr (s, "OTHERNM"); + return true; + + case CCT_POSTCOMPUTE: + ds_put_format (s, "&%s", cat->pc->name); + return true; + + case CCT_TOTAL: + case CCT_SUBTOTAL: + ds_put_cstr (s, cat->total_label); + return true; + + case CCT_VALUE: + case CCT_LABEL: + case CCT_FUNCTION: + case CCT_EXCLUDED_MISSING: + return false; + } + + return false; +} + +static bool +ctables_recursive_check_postcompute (struct dictionary *dict, + const struct ctables_pcexpr *e, + struct ctables_category *pc_cat, + const struct ctables_categories *cats, + const struct msg_location *cats_location) +{ + switch (e->op) + { + case CTPO_CAT_NUMBER: + case CTPO_CAT_STRING: + case CTPO_CAT_NRANGE: + case CTPO_CAT_SRANGE: + case CTPO_CAT_MISSING: + case CTPO_CAT_OTHERNM: + case CTPO_CAT_SUBTOTAL: + case CTPO_CAT_TOTAL: + { + struct ctables_category *cat = ctables_find_category_for_postcompute ( + dict, cats, pc_cat->parse_format, e); + if (!cat) + { + if (e->op == CTPO_CAT_SUBTOTAL && e->subtotal_index == 0) + { + size_t n_subtotals = 0; + for (size_t i = 0; i < cats->n_cats; i++) + n_subtotals += cats->cats[i].type == CCT_SUBTOTAL; + if (n_subtotals > 1) + { + msg_at (SE, cats_location, + ngettext ("These categories include %zu instance " + "of SUBTOTAL or HSUBTOTAL, so references " + "from computed categories must refer to " + "subtotals by position, " + "e.g. SUBTOTAL[1].", + "These categories include %zu instances " + "of SUBTOTAL or HSUBTOTAL, so references " + "from computed categories must refer to " + "subtotals by position, " + "e.g. SUBTOTAL[1].", + n_subtotals), + n_subtotals); + msg_at (SN, e->location, + _("This is the reference that lacks a position.")); + return NULL; + } + } + + msg_at (SE, pc_cat->location, + _("Computed category &%s references a category not included " + "in the category list."), + pc_cat->pc->name); + msg_at (SN, e->location, _("This is the missing category.")); + if (e->op == CTPO_CAT_SUBTOTAL) + msg_at (SN, cats_location, + _("To fix the problem, add subtotals to the " + "list of categories here.")); + else if (e->op == CTPO_CAT_TOTAL) + msg (SN, _("To fix the problem, add TOTAL=YES to the variable's " + "CATEGORIES specification.")); + else + msg_at (SN, cats_location, + _("To fix the problem, add the missing category to the " + "list of categories here.")); + return false; + } + if (pc_cat->pc->hide_source_cats) + cat->hide = true; + return true; + } + + case CTPO_CONSTANT: + return true; + + case CTPO_ADD: + case CTPO_SUB: + case CTPO_MUL: + case CTPO_DIV: + case CTPO_POW: + case CTPO_NEG: + for (size_t i = 0; i < 2; i++) + if (e->subs[i] && !ctables_recursive_check_postcompute ( + dict, e->subs[i], pc_cat, cats, cats_location)) + return false; + return true; + } + + NOT_REACHED (); +} + +static struct pivot_value * +ctables_postcompute_label (const struct ctables_categories *cats, + const struct ctables_category *cat, + const struct variable *var) +{ + struct substring in = ss_cstr (cat->pc->label); + struct substring target = ss_cstr (")LABEL["); + + struct string out = DS_EMPTY_INITIALIZER; + for (;;) + { + size_t chunk = ss_find_substring (in, target); + if (chunk == SIZE_MAX) + { + if (ds_is_empty (&out)) + return pivot_value_new_user_text (in.string, in.length); + else + { + ds_put_substring (&out, in); + return pivot_value_new_user_text_nocopy (ds_steal_cstr (&out)); + } + } + + ds_put_substring (&out, ss_head (in, chunk)); + ss_advance (&in, chunk + target.length); + + struct substring idx_s; + if (!ss_get_until (&in, ']', &idx_s)) + goto error; + char *tail; + long int idx = strtol (idx_s.string, &tail, 10); + if (idx < 1 || idx > cats->n_cats || tail != ss_end (idx_s)) + goto error; + + struct ctables_category *cat2 = &cats->cats[idx - 1]; + if (!ctables_category_format_label (cat2, var, &out)) + goto error; + } + +error: + ds_destroy (&out); + return pivot_value_new_user_text (cat->pc->label, SIZE_MAX); +} + +static struct pivot_value * +ctables_category_create_value_label (const struct ctables_categories *cats, + const struct ctables_category *cat, + const struct variable *var, + const union value *value) +{ + return (cat->type == CCT_POSTCOMPUTE && cat->pc->label + ? ctables_postcompute_label (cats, cat, var) + : cat->type == CCT_TOTAL || cat->type == CCT_SUBTOTAL + ? pivot_value_new_user_text (cat->total_label, SIZE_MAX) + : pivot_value_new_var_value (var, value)); +} + +/* CTABLES variable nesting and stacking. */ + +/* A nested sequence of variables, e.g. a > b > c. */ +struct ctables_nest + { + struct variable **vars; + size_t n; + size_t scale_idx; + size_t summary_idx; + size_t *areas[N_CTATS]; + size_t n_areas[N_CTATS]; + size_t group_head; + + struct ctables_summary_spec_set specs[N_CSVS]; + }; + +/* A stack of nestings, e.g. nest1 + nest2 + ... + nestN. */ +struct ctables_stack + { + struct ctables_nest *nests; + size_t n; + }; + +static void +ctables_nest_uninit (struct ctables_nest *nest) +{ + free (nest->vars); + for (enum ctables_summary_variant sv = 0; sv < N_CSVS; sv++) + ctables_summary_spec_set_uninit (&nest->specs[sv]); + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + free (nest->areas[at]); +} + +static void +ctables_stack_uninit (struct ctables_stack *stack) +{ + if (stack) + { + for (size_t i = 0; i < stack->n; i++) + ctables_nest_uninit (&stack->nests[i]); + free (stack->nests); + } +} + +static struct ctables_stack +nest_fts (struct ctables_stack s0, struct ctables_stack s1) +{ + if (!s0.n) + return s1; + else if (!s1.n) + return s0; + + struct ctables_stack stack = { .nests = xnmalloc (s0.n, s1.n * sizeof *stack.nests) }; + for (size_t i = 0; i < s0.n; i++) + for (size_t j = 0; j < s1.n; j++) + { + const struct ctables_nest *a = &s0.nests[i]; + const struct ctables_nest *b = &s1.nests[j]; + + size_t allocate = a->n + b->n; + struct variable **vars = xnmalloc (allocate, sizeof *vars); + size_t n = 0; + for (size_t k = 0; k < a->n; k++) + vars[n++] = a->vars[k]; + for (size_t k = 0; k < b->n; k++) + vars[n++] = b->vars[k]; + assert (n == allocate); + + const struct ctables_nest *summary_src; + if (!a->specs[CSV_CELL].var) + summary_src = b; + else if (!b->specs[CSV_CELL].var) + summary_src = a; + else + NOT_REACHED (); + + struct ctables_nest *new = &stack.nests[stack.n++]; + *new = (struct ctables_nest) { + .vars = vars, + .scale_idx = (a->scale_idx != SIZE_MAX ? a->scale_idx + : b->scale_idx != SIZE_MAX ? a->n + b->scale_idx + : SIZE_MAX), + .summary_idx = (a->summary_idx != SIZE_MAX ? a->summary_idx + : b->summary_idx != SIZE_MAX ? a->n + b->summary_idx + : SIZE_MAX), + .n = n, + }; + for (enum ctables_summary_variant sv = 0; sv < N_CSVS; sv++) + ctables_summary_spec_set_clone (&new->specs[sv], &summary_src->specs[sv]); + } + ctables_stack_uninit (&s0); + ctables_stack_uninit (&s1); + return stack; +} + +static struct ctables_stack +stack_fts (struct ctables_stack s0, struct ctables_stack s1) +{ + struct ctables_stack stack = { .nests = xnmalloc (s0.n + s1.n, sizeof *stack.nests) }; + for (size_t i = 0; i < s0.n; i++) + stack.nests[stack.n++] = s0.nests[i]; + for (size_t i = 0; i < s1.n; i++) + { + stack.nests[stack.n] = s1.nests[i]; + stack.nests[stack.n].group_head += s0.n; + stack.n++; + } + assert (stack.n == s0.n + s1.n); + free (s0.nests); + free (s1.nests); + return stack; +} + +static struct ctables_stack +var_fts (const struct ctables_axis *a) +{ + struct variable **vars = xmalloc (sizeof *vars); + *vars = a->var; + + bool is_summary = a->specs[CSV_CELL].n || a->scale; + struct ctables_nest *nest = xmalloc (sizeof *nest); + *nest = (struct ctables_nest) { + .vars = vars, + .n = 1, + .scale_idx = a->scale ? 0 : SIZE_MAX, + .summary_idx = is_summary ? 0 : SIZE_MAX, + }; + if (is_summary) + for (enum ctables_summary_variant sv = 0; sv < N_CSVS; sv++) + { + ctables_summary_spec_set_clone (&nest->specs[sv], &a->specs[sv]); + nest->specs[sv].var = a->var; + nest->specs[sv].is_scale = a->scale; + } + return (struct ctables_stack) { .nests = nest, .n = 1 }; +} + +static struct ctables_stack +enumerate_fts (enum pivot_axis_type axis_type, const struct ctables_axis *a) +{ + if (!a) + return (struct ctables_stack) { .n = 0 }; + + switch (a->op) + { + case CTAO_VAR: + return var_fts (a); + + case CTAO_STACK: + return stack_fts (enumerate_fts (axis_type, a->subs[0]), + enumerate_fts (axis_type, a->subs[1])); + + case CTAO_NEST: + /* This should consider any of the scale variables found in the result to + be linked to each other listwise for SMISSING=LISTWISE. */ + return nest_fts (enumerate_fts (axis_type, a->subs[0]), + enumerate_fts (axis_type, a->subs[1])); + } + + NOT_REACHED (); +} + +/* CTABLES summary calculation. */ + +union ctables_summary + { + /* COUNT, VALIDN, TOTALN. */ + double count; + + /* MINIMUM, MAXIMUM, RANGE. */ + struct + { + double min; + double max; + }; + + /* MEAN, SEMEAN, STDDEV, SUM, VARIANCE, *.SUM. */ + struct moments1 *moments; + + /* MEDIAN, MODE, PTILE. */ + struct + { + struct casewriter *writer; + double ovalid; + double ovalue; + }; + }; + +static void +ctables_summary_init (union ctables_summary *s, + const struct ctables_summary_spec *ss) +{ + switch (ss->function) + { + case CTSF_COUNT: + case CTSF_areaPCT_COUNT: + case CTSF_areaPCT_VALIDN: + case CTSF_areaPCT_TOTALN: + case CTSF_MISSING: + case CTSF_TOTALN: + case CTSF_VALIDN: + s->count = 0; + break; + + case CTSF_areaID: + break; + + case CTSF_MAXIMUM: + case CTSF_MINIMUM: + case CTSF_RANGE: + s->min = s->max = SYSMIS; + break; + + case CTSF_MEAN: + case CTSF_SUM: + case CTSF_areaPCT_SUM: + s->moments = moments1_create (MOMENT_MEAN); + break; + + case CTSF_SEMEAN: + case CTSF_STDDEV: + case CTSF_VARIANCE: + s->moments = moments1_create (MOMENT_VARIANCE); + break; + + case CTSF_MEDIAN: + case CTSF_MODE: + case CTSF_PTILE: + { + struct caseproto *proto = caseproto_create (); + proto = caseproto_add_width (proto, 0); + proto = caseproto_add_width (proto, 0); + + struct subcase ordering; + subcase_init (&ordering, 0, 0, SC_ASCEND); + s->writer = sort_create_writer (&ordering, proto); + subcase_uninit (&ordering); + caseproto_unref (proto); + + s->ovalid = 0; + s->ovalue = SYSMIS; + } + break; + } +} + +static void +ctables_summary_uninit (union ctables_summary *s, + const struct ctables_summary_spec *ss) +{ + switch (ss->function) + { + case CTSF_COUNT: + case CTSF_areaPCT_COUNT: + case CTSF_areaPCT_VALIDN: + case CTSF_areaPCT_TOTALN: + case CTSF_MISSING: + case CTSF_TOTALN: + case CTSF_VALIDN: + break; + + case CTSF_areaID: + break; + + case CTSF_MAXIMUM: + case CTSF_MINIMUM: + case CTSF_RANGE: + break; + + case CTSF_MEAN: + case CTSF_SEMEAN: + case CTSF_STDDEV: + case CTSF_SUM: + case CTSF_VARIANCE: + case CTSF_areaPCT_SUM: + moments1_destroy (s->moments); + break; + + case CTSF_MEDIAN: + case CTSF_MODE: + case CTSF_PTILE: + casewriter_destroy (s->writer); + break; + } +} + +static void +ctables_summary_add (union ctables_summary *s, + const struct ctables_summary_spec *ss, + const union value *value, + bool is_missing, bool is_included, + double weight) +{ + /* To determine whether a case is included in a given table for a particular + kind of summary, consider the following charts for the variable being + summarized. Only if "yes" appears is the case counted. + + Categorical variables: VALIDN other TOTALN + Valid values in included categories yes yes yes + Missing values in included categories --- yes yes + Missing values in excluded categories --- --- yes + Valid values in excluded categories --- --- --- + + Scale variables: VALIDN other TOTALN + Valid value yes yes yes + Missing value --- yes yes + + Missing values include both user- and system-missing. (The system-missing + value is always in an excluded category.) + + One way to interpret the above table is that scale variables are like + categorical variables in which all values are in included categories. + */ + switch (ss->function) + { + case CTSF_TOTALN: + case CTSF_areaPCT_TOTALN: + s->count += weight; + break; + + case CTSF_COUNT: + case CTSF_areaPCT_COUNT: + if (is_included) + s->count += weight; + break; + + case CTSF_VALIDN: + case CTSF_areaPCT_VALIDN: + if (!is_missing) + s->count += weight; + break; + + case CTSF_areaID: + break; + + case CTSF_MISSING: + if (is_missing) + s->count += weight; + break; + + case CTSF_MAXIMUM: + case CTSF_MINIMUM: + case CTSF_RANGE: + if (!is_missing) + { + if (s->min == SYSMIS || value->f < s->min) + s->min = value->f; + if (s->max == SYSMIS || value->f > s->max) + s->max = value->f; + } + break; + + case CTSF_MEAN: + case CTSF_SEMEAN: + case CTSF_STDDEV: + case CTSF_SUM: + case CTSF_VARIANCE: + if (!is_missing) + moments1_add (s->moments, value->f, weight); + break; + + case CTSF_areaPCT_SUM: + if (!is_missing) + moments1_add (s->moments, value->f, weight); + break; + + case CTSF_MEDIAN: + case CTSF_MODE: + case CTSF_PTILE: + if (!is_missing) + { + s->ovalid += weight; + + struct ccase *c = case_create (casewriter_get_proto (s->writer)); + *case_num_rw_idx (c, 0) = value->f; + *case_num_rw_idx (c, 1) = weight; + casewriter_write (s->writer, c); + } + break; + } +} + +static double +ctables_summary_value (struct ctables_area *areas[N_CTATS], + union ctables_summary *s, + const struct ctables_summary_spec *ss) +{ + switch (ss->function) + { + case CTSF_COUNT: + return s->count; + + case CTSF_areaID: + return areas[ss->calc_area]->sequence; + + case CTSF_areaPCT_COUNT: + { + const struct ctables_area *a = areas[ss->calc_area]; + double a_count = a->count[ss->weighting]; + return a_count ? s->count / a_count * 100 : SYSMIS; + } + + case CTSF_areaPCT_VALIDN: + { + const struct ctables_area *a = areas[ss->calc_area]; + double a_valid = a->valid[ss->weighting]; + return a_valid ? s->count / a_valid * 100 : SYSMIS; + } + + case CTSF_areaPCT_TOTALN: + { + const struct ctables_area *a = areas[ss->calc_area]; + double a_total = a->total[ss->weighting]; + return a_total ? s->count / a_total * 100 : SYSMIS; + } + + case CTSF_MISSING: + case CTSF_TOTALN: + case CTSF_VALIDN: + return s->count; + + case CTSF_MAXIMUM: + return s->max; + + case CTSF_MINIMUM: + return s->min; + + case CTSF_RANGE: + return s->max != SYSMIS && s->min != SYSMIS ? s->max - s->min : SYSMIS; + + case CTSF_MEAN: + { + double mean; + moments1_calculate (s->moments, NULL, &mean, NULL, NULL, NULL); + return mean; + } + + case CTSF_SEMEAN: + { + double weight, variance; + moments1_calculate (s->moments, &weight, NULL, &variance, NULL, NULL); + return calc_semean (variance, weight); + } + + case CTSF_STDDEV: + { + double variance; + moments1_calculate (s->moments, NULL, NULL, &variance, NULL, NULL); + return variance != SYSMIS ? sqrt (variance) : SYSMIS; + } + + case CTSF_SUM: + { + double weight, mean; + moments1_calculate (s->moments, &weight, &mean, NULL, NULL, NULL); + return weight != SYSMIS && mean != SYSMIS ? weight * mean : SYSMIS; + } + + case CTSF_VARIANCE: + { + double variance; + moments1_calculate (s->moments, NULL, NULL, &variance, NULL, NULL); + return variance; + } + + case CTSF_areaPCT_SUM: + { + double weight, mean; + moments1_calculate (s->moments, &weight, &mean, NULL, NULL, NULL); + if (weight == SYSMIS || mean == SYSMIS) + return SYSMIS; + + const struct ctables_area *a = areas[ss->calc_area]; + const struct ctables_sum *sum = &a->sums[ss->sum_var_idx]; + double denom = sum->sum[ss->weighting]; + return denom != 0 ? weight * mean / denom * 100 : SYSMIS; + } + + case CTSF_MEDIAN: + case CTSF_PTILE: + if (s->writer) + { + struct casereader *reader = casewriter_make_reader (s->writer); + s->writer = NULL; + + struct percentile *ptile = percentile_create ( + ss->function == CTSF_PTILE ? ss->percentile : 0.5, s->ovalid); + struct order_stats *os = &ptile->parent; + order_stats_accumulate_idx (&os, 1, reader, 1, 0); + s->ovalue = percentile_calculate (ptile, PC_HAVERAGE); + statistic_destroy (&ptile->parent.parent); + } + return s->ovalue; + + case CTSF_MODE: + if (s->writer) + { + struct casereader *reader = casewriter_make_reader (s->writer); + s->writer = NULL; + + struct mode *mode = mode_create (); + struct order_stats *os = &mode->parent; + order_stats_accumulate_idx (&os, 1, reader, 1, 0); + s->ovalue = mode->mode; + statistic_destroy (&mode->parent.parent); + } + return s->ovalue; + } + + NOT_REACHED (); +} + +/* CTABLES occurrences. */ + +struct ctables_occurrence + { + struct hmap_node node; + union value value; + }; + +static void +ctables_add_occurrence (const struct variable *var, + const union value *value, + struct hmap *occurrences) +{ + int width = var_get_width (var); + unsigned int hash = value_hash (value, width, 0); + + struct ctables_occurrence *o; + HMAP_FOR_EACH_WITH_HASH (o, struct ctables_occurrence, node, hash, + occurrences) + if (value_equal (value, &o->value, width)) + return; + + o = xmalloc (sizeof *o); + value_clone (&o->value, value, width); + hmap_insert (occurrences, &o->node, hash); +} + +enum ctables_vlabel + { + CTVL_NONE = SETTINGS_VALUE_SHOW_DEFAULT, + CTVL_NAME = SETTINGS_VALUE_SHOW_VALUE, + CTVL_LABEL = SETTINGS_VALUE_SHOW_LABEL, + CTVL_BOTH = SETTINGS_VALUE_SHOW_BOTH, + }; + +struct ctables_cell + { + /* In struct ctables_section's 'cells' hmap. Indexed by all the values in + all the axes (except the scalar variable, if any). */ + struct hmap_node node; + + /* The areas that contain this cell. */ + uint32_t omit_areas; + struct ctables_area *areas[N_CTATS]; + + bool hide; + + bool postcompute; + enum ctables_summary_variant sv; + + struct ctables_cell_axis + { + struct ctables_cell_value + { + const struct ctables_category *category; + union value value; + } + *cvs; + int leaf; + } + axes[PIVOT_N_AXES]; + + union ctables_summary *summaries; + }; + +struct ctables_section + { + /* Settings. */ + struct ctables_table *table; + struct ctables_nest *nests[PIVOT_N_AXES]; + + /* Data. */ + struct hmap *occurrences[PIVOT_N_AXES]; /* "struct ctables_occurrence"s. */ + struct hmap cells; /* Contains "struct ctables_cell"s. */ + struct hmap areas[N_CTATS]; /* Contains "struct ctables_area"s. */ + }; + +static void ctables_section_uninit (struct ctables_section *); + +struct ctables_table + { + struct ctables *ctables; + struct ctables_axis *axes[PIVOT_N_AXES]; + struct ctables_stack stacks[PIVOT_N_AXES]; + struct ctables_section *sections; + size_t n_sections; + enum pivot_axis_type summary_axis; + struct ctables_summary_spec_set summary_specs; + struct variable **sum_vars; + size_t n_sum_vars; + + enum pivot_axis_type slabels_axis; + bool slabels_visible; + + /* The innermost category labels for axis 'a' appear on axis label_axis[a]. + + Most commonly, label_axis[a] == a, and in particular we always have + label_axis{PIVOT_AXIS_LAYER] == PIVOT_AXIS_LAYER. + + If ROWLABELS or COLLABELS is specified, then one of + label_axis[PIVOT_AXIS_ROW] or label_axis[PIVOT_AXIS_COLUMN] can be the + opposite axis or PIVOT_AXIS_LAYER. Only one of them will differ. + + If any category labels are moved, then 'clabels_example' is one of the + variables being moved (and it is otherwise NULL). All of the variables + being moved have the same width, value labels, and categories, so this + example variable can be used to find those out. + + The remaining members in this group are relevant only if category labels + are moved. + + 'clabels_values_map' holds a "struct ctables_value" for all the values + that appear in all of the variables in the moved categories. It is + accumulated as the data is read. Once the data is fully read, its + sorted values are put into 'clabels_values' and 'n_clabels_values'. + */ + enum pivot_axis_type label_axis[PIVOT_N_AXES]; + enum pivot_axis_type clabels_from_axis; + enum pivot_axis_type clabels_to_axis; + const struct variable *clabels_example; + struct hmap clabels_values_map; + struct ctables_value **clabels_values; + size_t n_clabels_values; + + /* Indexed by variable dictionary index. */ + struct ctables_categories **categories; + size_t n_categories; + + double cilevel; + + char *caption; + char *corner; + char *title; + + struct ctables_chisq *chisq; + struct ctables_pairwise *pairwise; + }; + +struct ctables_cell_sort_aux + { + const struct ctables_nest *nest; + enum pivot_axis_type a; + }; + +static int +ctables_cell_compare_3way (const void *a_, const void *b_, const void *aux_) +{ + const struct ctables_cell_sort_aux *aux = aux_; + struct ctables_cell *const *ap = a_; + struct ctables_cell *const *bp = b_; + const struct ctables_cell *a = *ap; + const struct ctables_cell *b = *bp; + + const struct ctables_nest *nest = aux->nest; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx) + { + const struct variable *var = nest->vars[i]; + const struct ctables_cell_value *a_cv = &a->axes[aux->a].cvs[i]; + const struct ctables_cell_value *b_cv = &b->axes[aux->a].cvs[i]; + if (a_cv->category != b_cv->category) + return a_cv->category > b_cv->category ? 1 : -1; + + const union value *a_val = &a_cv->value; + const union value *b_val = &b_cv->value; + switch (a_cv->category->type) + { + case CCT_NUMBER: + case CCT_STRING: + case CCT_SUBTOTAL: + case CCT_TOTAL: + case CCT_POSTCOMPUTE: + case CCT_EXCLUDED_MISSING: + /* Must be equal. */ + continue; + + case CCT_NRANGE: + case CCT_SRANGE: + case CCT_MISSING: + case CCT_OTHERNM: + { + int cmp = value_compare_3way (a_val, b_val, var_get_width (var)); + if (cmp) + return cmp; + } + break; + + case CCT_VALUE: + { + int cmp = value_compare_3way (a_val, b_val, var_get_width (var)); + if (cmp) + return a_cv->category->sort_ascending ? cmp : -cmp; + } + break; + + case CCT_LABEL: + { + const char *a_label = var_lookup_value_label (var, a_val); + const char *b_label = var_lookup_value_label (var, b_val); + int cmp; + if (a_label) + { + if (!b_label) + return -1; + cmp = strcmp (a_label, b_label); + } + else + { + if (b_label) + return 1; + cmp = value_compare_3way (a_val, b_val, var_get_width (var)); + } + if (cmp) + return a_cv->category->sort_ascending ? cmp : -cmp; + } + break; + + case CCT_FUNCTION: + NOT_REACHED (); + } + } + return 0; +} + +static int +ctables_cell_compare_leaf_3way (const void *a_, const void *b_, + const void *aux UNUSED) +{ + struct ctables_cell *const *ap = a_; + struct ctables_cell *const *bp = b_; + const struct ctables_cell *a = *ap; + const struct ctables_cell *b = *bp; + + for (enum pivot_axis_type axis = 0; axis < PIVOT_N_AXES; axis++) + { + int al = a->axes[axis].leaf; + int bl = b->axes[axis].leaf; + if (al != bl) + return al > bl ? 1 : -1; + } + return 0; +} + +static struct ctables_area * +ctables_area_insert (struct ctables_section *s, struct ctables_cell *cell, + enum ctables_area_type area) +{ + size_t hash = 0; + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n_areas[area]; i++) + { + size_t v_idx = nest->areas[area][i]; + struct ctables_cell_value *cv = &cell->axes[a].cvs[v_idx]; + hash = hash_pointer (cv->category, hash); + if (cv->category->type != CCT_TOTAL + && cv->category->type != CCT_SUBTOTAL + && cv->category->type != CCT_POSTCOMPUTE) + hash = value_hash (&cv->value, + var_get_width (nest->vars[v_idx]), hash); + } + } + + struct ctables_area *a; + HMAP_FOR_EACH_WITH_HASH (a, struct ctables_area, node, hash, &s->areas[area]) + { + const struct ctables_cell *df = a->example; + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n_areas[area]; i++) + { + size_t v_idx = nest->areas[area][i]; + struct ctables_cell_value *cv1 = &df->axes[a].cvs[v_idx]; + struct ctables_cell_value *cv2 = &cell->axes[a].cvs[v_idx]; + if (cv1->category != cv2->category + || (cv1->category->type != CCT_TOTAL + && cv1->category->type != CCT_SUBTOTAL + && cv1->category->type != CCT_POSTCOMPUTE + && !value_equal (&cv1->value, &cv2->value, + var_get_width (nest->vars[v_idx])))) + goto not_equal; + } + } + return a; + + not_equal: ; + } + + struct ctables_sum *sums = (s->table->n_sum_vars + ? xzalloc (s->table->n_sum_vars * sizeof *sums) + : NULL); + + a = xmalloc (sizeof *a); + *a = (struct ctables_area) { .example = cell, .sums = sums }; + hmap_insert (&s->areas[area], &a->node, hash); + return a; +} + +static struct ctables_cell * +ctables_cell_insert__ (struct ctables_section *s, const struct ccase *c, + const struct ctables_category **cats[PIVOT_N_AXES]) +{ + size_t hash = 0; + enum ctables_summary_variant sv = CSV_CELL; + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx) + { + hash = hash_pointer (cats[a][i], hash); + if (cats[a][i]->type != CCT_TOTAL + && cats[a][i]->type != CCT_SUBTOTAL + && cats[a][i]->type != CCT_POSTCOMPUTE) + hash = value_hash (case_data (c, nest->vars[i]), + var_get_width (nest->vars[i]), hash); + else + sv = CSV_TOTAL; + } + } + + struct ctables_cell *cell; + HMAP_FOR_EACH_WITH_HASH (cell, struct ctables_cell, node, hash, &s->cells) + { + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx + && (cats[a][i] != cell->axes[a].cvs[i].category + || (cats[a][i]->type != CCT_TOTAL + && cats[a][i]->type != CCT_SUBTOTAL + && cats[a][i]->type != CCT_POSTCOMPUTE + && !value_equal (case_data (c, nest->vars[i]), + &cell->axes[a].cvs[i].value, + var_get_width (nest->vars[i]))))) + goto not_equal; + } + + return cell; + + not_equal: ; + } + + cell = xmalloc (sizeof *cell); + cell->hide = false; + cell->sv = sv; + cell->omit_areas = 0; + cell->postcompute = false; + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + cell->axes[a].cvs = (nest->n + ? xnmalloc (nest->n, sizeof *cell->axes[a].cvs) + : NULL); + for (size_t i = 0; i < nest->n; i++) + { + const struct ctables_category *cat = cats[a][i]; + const struct variable *var = nest->vars[i]; + const union value *value = case_data (c, var); + if (i != nest->scale_idx) + { + const struct ctables_category *subtotal = cat->subtotal; + if (cat->hide || (subtotal && subtotal->hide_subcategories)) + cell->hide = true; + + if (cat->type == CCT_TOTAL + || cat->type == CCT_SUBTOTAL + || cat->type == CCT_POSTCOMPUTE) + { + switch (a) + { + case PIVOT_AXIS_COLUMN: + cell->omit_areas |= ((1u << CTAT_TABLE) | + (1u << CTAT_LAYER) | + (1u << CTAT_LAYERCOL) | + (1u << CTAT_SUBTABLE) | + (1u << CTAT_COL)); + break; + case PIVOT_AXIS_ROW: + cell->omit_areas |= ((1u << CTAT_TABLE) | + (1u << CTAT_LAYER) | + (1u << CTAT_LAYERROW) | + (1u << CTAT_SUBTABLE) | + (1u << CTAT_ROW)); + break; + case PIVOT_AXIS_LAYER: + cell->omit_areas |= ((1u << CTAT_TABLE) | + (1u << CTAT_LAYER)); + break; + } + } + if (cat->type == CCT_POSTCOMPUTE) + cell->postcompute = true; + } + + cell->axes[a].cvs[i].category = cat; + value_clone (&cell->axes[a].cvs[i].value, value, var_get_width (var)); + } + } + + const struct ctables_nest *ss = s->nests[s->table->summary_axis]; + const struct ctables_summary_spec_set *specs = &ss->specs[cell->sv]; + cell->summaries = xmalloc (specs->n * sizeof *cell->summaries); + for (size_t i = 0; i < specs->n; i++) + ctables_summary_init (&cell->summaries[i], &specs->specs[i]); + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + cell->areas[at] = ctables_area_insert (s, cell, at); + hmap_insert (&s->cells, &cell->node, hash); + return cell; +} + +static void +add_weight (double dst[N_CTWS], const double src[N_CTWS]) +{ + for (enum ctables_weighting wt = 0; wt < N_CTWS; wt++) + dst[wt] += src[wt]; +} + +static void +ctables_cell_add__ (struct ctables_section *s, const struct ccase *c, + const struct ctables_category **cats[PIVOT_N_AXES], + bool is_included, double weight[N_CTWS]) +{ + struct ctables_cell *cell = ctables_cell_insert__ (s, c, cats); + const struct ctables_nest *ss = s->nests[s->table->summary_axis]; + + const struct ctables_summary_spec_set *specs = &ss->specs[cell->sv]; + const union value *value = case_data (c, specs->var); + bool is_missing = var_is_value_missing (specs->var, value); + bool is_scale_missing + = is_missing || (specs->is_scale && is_listwise_missing (specs, c)); + + for (size_t i = 0; i < specs->n; i++) + ctables_summary_add (&cell->summaries[i], &specs->specs[i], value, + is_scale_missing, is_included, + weight[specs->specs[i].weighting]); + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + if (!(cell->omit_areas && (1u << at))) + { + struct ctables_area *a = cell->areas[at]; + + add_weight (a->total, weight); + if (is_included) + add_weight (a->count, weight); + if (!is_missing) + { + add_weight (a->valid, weight); + + if (!is_scale_missing) + for (size_t i = 0; i < s->table->n_sum_vars; i++) + { + const struct variable *var = s->table->sum_vars[i]; + double addend = case_num (c, var); + if (!var_is_num_missing (var, addend)) + for (enum ctables_weighting wt = 0; wt < N_CTWS; wt++) + a->sums[i].sum[wt] += addend * weight[wt]; + } + } + } +} + +static void +recurse_totals (struct ctables_section *s, const struct ccase *c, + const struct ctables_category **cats[PIVOT_N_AXES], + bool is_included, double weight[N_CTWS], + enum pivot_axis_type start_axis, size_t start_nest) +{ + for (enum pivot_axis_type a = start_axis; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = start_nest; i < nest->n; i++) + { + if (i == nest->scale_idx) + continue; + + const struct variable *var = nest->vars[i]; + + const struct ctables_category *total = ctables_categories_total ( + s->table->categories[var_get_dict_index (var)]); + if (total) + { + const struct ctables_category *save = cats[a][i]; + cats[a][i] = total; + ctables_cell_add__ (s, c, cats, is_included, weight); + recurse_totals (s, c, cats, is_included, weight, a, i + 1); + cats[a][i] = save; + } + } + start_nest = 0; + } +} + +static void +recurse_subtotals (struct ctables_section *s, const struct ccase *c, + const struct ctables_category **cats[PIVOT_N_AXES], + bool is_included, double weight[N_CTWS], + enum pivot_axis_type start_axis, size_t start_nest) +{ + for (enum pivot_axis_type a = start_axis; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = start_nest; i < nest->n; i++) + { + if (i == nest->scale_idx) + continue; + + const struct ctables_category *save = cats[a][i]; + if (save->subtotal) + { + cats[a][i] = save->subtotal; + ctables_cell_add__ (s, c, cats, is_included, weight); + recurse_subtotals (s, c, cats, is_included, weight, a, i + 1); + cats[a][i] = save; + } + } + start_nest = 0; + } +} + +static void +ctables_cell_insert (struct ctables_section *s, const struct ccase *c, + double weight[N_CTWS]) +{ + const struct ctables_category *layer_cats[s->nests[PIVOT_AXIS_LAYER]->n]; + const struct ctables_category *row_cats[s->nests[PIVOT_AXIS_ROW]->n]; + const struct ctables_category *column_cats[s->nests[PIVOT_AXIS_COLUMN]->n]; + const struct ctables_category **cats[PIVOT_N_AXES] = + { + [PIVOT_AXIS_LAYER] = layer_cats, + [PIVOT_AXIS_ROW] = row_cats, + [PIVOT_AXIS_COLUMN] = column_cats, + }; + + bool is_included = true; + + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx) + { + const struct variable *var = nest->vars[i]; + const union value *value = case_data (c, var); + + cats[a][i] = ctables_categories_match ( + s->table->categories[var_get_dict_index (var)], value, var); + if (!cats[a][i]) + { + if (i != nest->summary_idx) + return; + + if (!var_is_value_missing (var, value)) + return; + + static const struct ctables_category cct_excluded_missing = { + .type = CCT_EXCLUDED_MISSING, + .hide = true, + }; + cats[a][i] = &cct_excluded_missing; + is_included = false; + } + } + } + + if (is_included) + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx) + { + const struct variable *var = nest->vars[i]; + const union value *value = case_data (c, var); + ctables_add_occurrence (var, value, &s->occurrences[a][i]); + } + } + + ctables_cell_add__ (s, c, cats, is_included, weight); + recurse_totals (s, c, cats, is_included, weight, 0, 0); + recurse_subtotals (s, c, cats, is_included, weight, 0, 0); +} + +struct ctables_value + { + struct hmap_node node; + union value value; + int leaf; + }; + +static struct ctables_value * +ctables_value_find__ (struct ctables_table *t, const union value *value, + int width, unsigned int hash) +{ + struct ctables_value *clv; + HMAP_FOR_EACH_WITH_HASH (clv, struct ctables_value, node, + hash, &t->clabels_values_map) + if (value_equal (value, &clv->value, width)) + return clv; + return NULL; +} + +static void +ctables_value_insert (struct ctables_table *t, const union value *value, + int width) +{ + unsigned int hash = value_hash (value, width, 0); + struct ctables_value *clv = ctables_value_find__ (t, value, width, hash); + if (!clv) + { + clv = xmalloc (sizeof *clv); + value_clone (&clv->value, value, width); + hmap_insert (&t->clabels_values_map, &clv->node, hash); + } +} + +static struct ctables_value * +ctables_value_find (struct ctables_table *t, + const union value *value, int width) +{ + return ctables_value_find__ (t, value, width, + value_hash (value, width, 0)); +} + +static int +compare_ctables_values_3way (const void *a_, const void *b_, const void *width_) +{ + const struct ctables_value *const *ap = a_; + const struct ctables_value *const *bp = b_; + const struct ctables_value *a = *ap; + const struct ctables_value *b = *bp; + const int *width = width_; + return value_compare_3way (&a->value, &b->value, *width); +} + +static void +ctables_sort_clabels_values (struct ctables_table *t) +{ + const struct variable *v0 = t->clabels_example; + int width = var_get_width (v0); + + struct ctables_categories *c0 = t->categories[var_get_dict_index (v0)]; + if (c0->show_empty) + { + const struct val_labs *val_labs = var_get_value_labels (v0); + for (const struct val_lab *vl = val_labs_first (val_labs); vl; + vl = val_labs_next (val_labs, vl)) + if (ctables_categories_match (c0, &vl->value, v0)) + ctables_value_insert (t, &vl->value, width); + } + + size_t n = hmap_count (&t->clabels_values_map); + t->clabels_values = xnmalloc (n, sizeof *t->clabels_values); + + struct ctables_value *clv; + size_t i = 0; + HMAP_FOR_EACH (clv, struct ctables_value, node, &t->clabels_values_map) + t->clabels_values[i++] = clv; + t->n_clabels_values = n; + assert (i == n); + + sort (t->clabels_values, n, sizeof *t->clabels_values, + compare_ctables_values_3way, &width); + + for (size_t i = 0; i < n; i++) + t->clabels_values[i]->leaf = i; +} + +struct ctables + { + const struct dictionary *dict; + struct pivot_table_look *look; + + /* For CTEF_* formats. */ + struct fmt_settings ctables_formats; + + /* If this is NULL, zeros are displayed using the normal print format. + Otherwise, this string is displayed. */ + char *zero; + + /* If this is NULL, missing values are displayed using the normal print + format. Otherwise, this string is displayed. */ + char *missing; + + /* Indexed by variable dictionary index. */ + enum ctables_vlabel *vlabels; + + struct hmap postcomputes; /* Contains "struct ctables_postcompute"s. */ + + bool mrsets_count_duplicates; /* MRSETS. */ + bool smissing_listwise; /* SMISSING. */ + struct variable *e_weight; /* WEIGHT. */ + int hide_threshold; /* HIDESMALLCOUNTS. */ + + struct ctables_table **tables; + size_t n_tables; + }; + +static double +ctpo_add (double a, double b) +{ + return a + b; +} + +static double +ctpo_sub (double a, double b) +{ + return a - b; +} + +static double +ctpo_mul (double a, double b) +{ + return a * b; +} + +static double +ctpo_div (double a, double b) +{ + return b ? a / b : SYSMIS; +} + +static double +ctpo_pow (double a, double b) +{ + int save_errno = errno; + errno = 0; + double result = pow (a, b); + if (errno) + result = SYSMIS; + errno = save_errno; + return result; +} + +static double +ctpo_neg (double a, double b UNUSED) +{ + return -a; +} + +struct ctables_pcexpr_evaluate_ctx + { + const struct ctables_cell *cell; + const struct ctables_section *section; + const struct ctables_categories *cats; + enum pivot_axis_type pc_a; + size_t pc_a_idx; + size_t summary_idx; + enum fmt_type parse_format; + }; + +static double ctables_pcexpr_evaluate ( + const struct ctables_pcexpr_evaluate_ctx *, const struct ctables_pcexpr *); + +static double +ctables_pcexpr_evaluate_nonterminal ( + const struct ctables_pcexpr_evaluate_ctx *ctx, + const struct ctables_pcexpr *e, size_t n_args, + double evaluate (double, double)) +{ + double args[2] = { 0, 0 }; + for (size_t i = 0; i < n_args; i++) + { + args[i] = ctables_pcexpr_evaluate (ctx, e->subs[i]); + if (!isfinite (args[i]) || args[i] == SYSMIS) + return SYSMIS; + } + return evaluate (args[0], args[1]); +} + +static double +ctables_pcexpr_evaluate_category (const struct ctables_pcexpr_evaluate_ctx *ctx, + const struct ctables_cell_value *pc_cv) +{ + const struct ctables_section *s = ctx->section; + + size_t hash = 0; + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx) + { + const struct ctables_cell_value *cv + = (a == ctx->pc_a && i == ctx->pc_a_idx ? pc_cv + : &ctx->cell->axes[a].cvs[i]); + hash = hash_pointer (cv->category, hash); + if (cv->category->type != CCT_TOTAL + && cv->category->type != CCT_SUBTOTAL + && cv->category->type != CCT_POSTCOMPUTE) + hash = value_hash (&cv->value, + var_get_width (nest->vars[i]), hash); + } + } + + struct ctables_cell *tc; + HMAP_FOR_EACH_WITH_HASH (tc, struct ctables_cell, node, hash, &s->cells) + { + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx) + { + const struct ctables_cell_value *p_cv + = (a == ctx->pc_a && i == ctx->pc_a_idx ? pc_cv + : &ctx->cell->axes[a].cvs[i]); + const struct ctables_cell_value *t_cv = &tc->axes[a].cvs[i]; + if (p_cv->category != t_cv->category + || (p_cv->category->type != CCT_TOTAL + && p_cv->category->type != CCT_SUBTOTAL + && p_cv->category->type != CCT_POSTCOMPUTE + && !value_equal (&p_cv->value, + &t_cv->value, + var_get_width (nest->vars[i])))) + goto not_equal; + } + } + + goto found; + + not_equal: ; + } + return 0; + +found: ; + const struct ctables_table *t = s->table; + const struct ctables_nest *specs_nest = s->nests[t->summary_axis]; + const struct ctables_summary_spec_set *specs = &specs_nest->specs[tc->sv]; + return ctables_summary_value (tc->areas, &tc->summaries[ctx->summary_idx], + &specs->specs[ctx->summary_idx]); +} + +static double +ctables_pcexpr_evaluate (const struct ctables_pcexpr_evaluate_ctx *ctx, + const struct ctables_pcexpr *e) +{ + switch (e->op) + { + case CTPO_CONSTANT: + return e->number; + + case CTPO_CAT_NRANGE: + case CTPO_CAT_SRANGE: + case CTPO_CAT_MISSING: + case CTPO_CAT_OTHERNM: + { + struct ctables_cell_value cv = { + .category = ctables_find_category_for_postcompute (ctx->section->table->ctables->dict, ctx->cats, ctx->parse_format, e) + }; + assert (cv.category != NULL); + + struct hmap *occurrences = &ctx->section->occurrences[ctx->pc_a][ctx->pc_a_idx]; + const struct ctables_occurrence *o; + + double sum = 0.0; + const struct variable *var = ctx->section->nests[ctx->pc_a]->vars[ctx->pc_a_idx]; + HMAP_FOR_EACH (o, struct ctables_occurrence, node, occurrences) + if (ctables_categories_match (ctx->cats, &o->value, var) == cv.category) + { + cv.value = o->value; + sum += ctables_pcexpr_evaluate_category (ctx, &cv); + } + return sum; + } + + case CTPO_CAT_NUMBER: + case CTPO_CAT_SUBTOTAL: + case CTPO_CAT_TOTAL: + { + struct ctables_cell_value cv = { + .category = ctables_find_category_for_postcompute (ctx->section->table->ctables->dict, ctx->cats, ctx->parse_format, e), + .value = { .f = e->number }, + }; + assert (cv.category != NULL); + return ctables_pcexpr_evaluate_category (ctx, &cv); + } + + case CTPO_CAT_STRING: + { + int width = var_get_width (ctx->section->nests[ctx->pc_a]->vars[ctx->pc_a_idx]); + char *s = NULL; + if (width > e->string.length) + { + s = xmalloc (width); + buf_copy_rpad (s, width, e->string.string, e->string.length, ' '); + } + + const struct ctables_category *category + = ctables_find_category_for_postcompute ( + ctx->section->table->ctables->dict, + ctx->cats, ctx->parse_format, e); + assert (category != NULL); + + struct ctables_cell_value cv = { .category = category }; + if (category->type == CCT_NUMBER) + cv.value.f = category->number; + else if (category->type == CCT_STRING) + cv.value.s = CHAR_CAST (uint8_t *, s ? s : e->string.string); + else + NOT_REACHED (); + + double retval = ctables_pcexpr_evaluate_category (ctx, &cv); + free (s); + return retval; + } + + case CTPO_ADD: + return ctables_pcexpr_evaluate_nonterminal (ctx, e, 2, ctpo_add); + + case CTPO_SUB: + return ctables_pcexpr_evaluate_nonterminal (ctx, e, 2, ctpo_sub); + + case CTPO_MUL: + return ctables_pcexpr_evaluate_nonterminal (ctx, e, 2, ctpo_mul); + + case CTPO_DIV: + return ctables_pcexpr_evaluate_nonterminal (ctx, e, 2, ctpo_div); + + case CTPO_POW: + return ctables_pcexpr_evaluate_nonterminal (ctx, e, 2, ctpo_pow); + + case CTPO_NEG: + return ctables_pcexpr_evaluate_nonterminal (ctx, e, 1, ctpo_neg); + } + + NOT_REACHED (); +} + +static const struct ctables_category * +ctables_cell_postcompute (const struct ctables_section *s, + const struct ctables_cell *cell, + enum pivot_axis_type *pc_a_p, + size_t *pc_a_idx_p) +{ + assert (cell->postcompute); + const struct ctables_category *pc_cat = NULL; + for (enum pivot_axis_type pc_a = 0; pc_a < PIVOT_N_AXES; pc_a++) + for (size_t pc_a_idx = 0; pc_a_idx < s->nests[pc_a]->n; pc_a_idx++) + { + const struct ctables_cell_value *cv = &cell->axes[pc_a].cvs[pc_a_idx]; + if (cv->category->type == CCT_POSTCOMPUTE) + { + if (pc_cat) + { + /* Multiple postcomputes cross each other. The value is + undefined. */ + return NULL; + } + + pc_cat = cv->category; + if (pc_a_p) + *pc_a_p = pc_a; + if (pc_a_idx_p) + *pc_a_idx_p = pc_a_idx; + } + } + + assert (pc_cat != NULL); + return pc_cat; +} + +static double +ctables_cell_calculate_postcompute (const struct ctables_section *s, + const struct ctables_cell *cell, + const struct ctables_summary_spec *ss, + struct fmt_spec *format, + bool *is_ctables_format, + size_t summary_idx) +{ + enum pivot_axis_type pc_a = 0; + size_t pc_a_idx = 0; + const struct ctables_category *pc_cat = ctables_cell_postcompute ( + s, cell, &pc_a, &pc_a_idx); + if (!pc_cat) + return SYSMIS; + + const struct ctables_postcompute *pc = pc_cat->pc; + if (pc->specs) + { + for (size_t i = 0; i < pc->specs->n; i++) + { + const struct ctables_summary_spec *ss2 = &pc->specs->specs[i]; + if (ss->function == ss2->function + && ss->weighting == ss2->weighting + && ss->calc_area == ss2->calc_area + && ss->percentile == ss2->percentile) + { + *format = ss2->format; + *is_ctables_format = ss2->is_ctables_format; + break; + } + } + } + + const struct variable *var = s->nests[pc_a]->vars[pc_a_idx]; + const struct ctables_categories *cats = s->table->categories[ + var_get_dict_index (var)]; + struct ctables_pcexpr_evaluate_ctx ctx = { + .cell = cell, + .section = s, + .cats = cats, + .pc_a = pc_a, + .pc_a_idx = pc_a_idx, + .summary_idx = summary_idx, + .parse_format = pc_cat->parse_format, + }; + return ctables_pcexpr_evaluate (&ctx, pc->expr); +} + +/* Chi-square test (SIGTEST). */ +struct ctables_chisq + { + double alpha; + bool include_mrsets; + bool all_visible; + }; + +/* Pairwise comparison test (COMPARETEST). */ +struct ctables_pairwise + { + enum { PROP, MEAN } type; + double alpha[2]; + bool include_mrsets; + bool meansvariance_allcats; + bool all_visible; + enum { BONFERRONI = 1, BH } adjust; + bool merge; + bool apa_style; + bool show_sig; + }; + + + +static bool +parse_col_width (struct lexer *lexer, const char *name, double *width) +{ + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "DEFAULT")) + *width = SYSMIS; + else if (lex_force_num_range_closed (lexer, name, 0, DBL_MAX)) + { + *width = lex_number (lexer); + lex_get (lexer); + } + else + return false; + + return true; +} + +static bool +parse_bool (struct lexer *lexer, bool *b) +{ + if (lex_match_id (lexer, "NO")) + *b = false; + else if (lex_match_id (lexer, "YES")) + *b = true; + else + { + lex_error_expecting (lexer, "YES", "NO"); + return false; + } + return true; +} + +static void +ctables_chisq_destroy (struct ctables_chisq *chisq) +{ + free (chisq); +} + +static void +ctables_pairwise_destroy (struct ctables_pairwise *pairwise) +{ + free (pairwise); +} + +static void +ctables_table_destroy (struct ctables_table *t) +{ + if (!t) + return; + + for (size_t i = 0; i < t->n_sections; i++) + ctables_section_uninit (&t->sections[i]); + free (t->sections); + + for (size_t i = 0; i < t->n_categories; i++) + ctables_categories_unref (t->categories[i]); + free (t->categories); + + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + ctables_axis_destroy (t->axes[a]); + ctables_stack_uninit (&t->stacks[a]); + } + free (t->summary_specs.specs); + + struct ctables_value *ctv, *next_ctv; + HMAP_FOR_EACH_SAFE (ctv, next_ctv, struct ctables_value, node, + &t->clabels_values_map) + { + value_destroy (&ctv->value, var_get_width (t->clabels_example)); + hmap_delete (&t->clabels_values_map, &ctv->node); + free (ctv); + } + hmap_destroy (&t->clabels_values_map); + free (t->clabels_values); + + free (t->sum_vars); + free (t->caption); + free (t->corner); + free (t->title); + ctables_chisq_destroy (t->chisq); + ctables_pairwise_destroy (t->pairwise); + free (t); +} + +static void +ctables_destroy (struct ctables *ct) +{ + if (!ct) + return; + + struct ctables_postcompute *pc, *next_pc; + HMAP_FOR_EACH_SAFE (pc, next_pc, struct ctables_postcompute, hmap_node, + &ct->postcomputes) + { + free (pc->name); + msg_location_destroy (pc->location); + ctables_pcexpr_destroy (pc->expr); + free (pc->label); + if (pc->specs) + { + ctables_summary_spec_set_uninit (pc->specs); + free (pc->specs); + } + hmap_delete (&ct->postcomputes, &pc->hmap_node); + free (pc); + } + hmap_destroy (&ct->postcomputes); + + fmt_settings_uninit (&ct->ctables_formats); + pivot_table_look_unref (ct->look); + free (ct->zero); + free (ct->missing); + free (ct->vlabels); + for (size_t i = 0; i < ct->n_tables; i++) + ctables_table_destroy (ct->tables[i]); + free (ct->tables); + free (ct); +} + +static bool +all_strings (struct variable **vars, size_t n_vars, + const struct ctables_category *cat) +{ + for (size_t j = 0; j < n_vars; j++) + if (var_is_numeric (vars[j])) + { + msg_at (SE, cat->location, + _("This category specification may be applied only to string " + "variables, but this subcommand tries to apply it to " + "numeric variable %s."), + var_get_name (vars[j])); + return false; + } + return true; +} + +static bool +ctables_table_parse_categories (struct lexer *lexer, struct dictionary *dict, + struct ctables *ct, struct ctables_table *t) +{ + if (!lex_force_match_id (lexer, "VARIABLES")) + return false; + lex_match (lexer, T_EQUALS); + + struct variable **vars; + size_t n_vars; + if (!parse_variables (lexer, dict, &vars, &n_vars, PV_NO_SCRATCH)) + return false; + + const struct fmt_spec *common_format = var_get_print_format (vars[0]); + for (size_t i = 1; i < n_vars; i++) + { + const struct fmt_spec *f = var_get_print_format (vars[i]); + if (f->type != common_format->type) + { + common_format = NULL; + break; + } + } + bool parse_strings + = (common_format + && (fmt_get_category (common_format->type) + & (FMT_CAT_DATE | FMT_CAT_TIME | FMT_CAT_DATE_COMPONENT))); + + struct ctables_categories *c = xmalloc (sizeof *c); + *c = (struct ctables_categories) { .n_refs = n_vars, .show_empty = true }; + for (size_t i = 0; i < n_vars; i++) + { + struct ctables_categories **cp + = &t->categories[var_get_dict_index (vars[i])]; + ctables_categories_unref (*cp); + *cp = c; + } + + size_t allocated_cats = 0; + int cats_start_ofs = -1; + int cats_end_ofs = -1; + if (lex_match (lexer, T_LBRACK)) + { + cats_start_ofs = lex_ofs (lexer); + do + { + if (c->n_cats >= allocated_cats) + c->cats = x2nrealloc (c->cats, &allocated_cats, sizeof *c->cats); + + int start_ofs = lex_ofs (lexer); + struct ctables_category *cat = &c->cats[c->n_cats]; + if (!ctables_table_parse_explicit_category (lexer, dict, ct, cat)) + goto error; + cat->location = lex_ofs_location (lexer, start_ofs, lex_ofs (lexer) - 1); + c->n_cats++; + + lex_match (lexer, T_COMMA); + } + while (!lex_match (lexer, T_RBRACK)); + cats_end_ofs = lex_ofs (lexer) - 1; + } + + struct ctables_category cat = { + .type = CCT_VALUE, + .include_missing = false, + .sort_ascending = true, + }; + bool show_totals = false; + char *total_label = NULL; + bool totals_before = false; + while (lex_token (lexer) != T_SLASH && lex_token (lexer) != T_ENDCMD) + { + if (!c->n_cats && lex_match_id (lexer, "ORDER")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "A")) + cat.sort_ascending = true; + else if (lex_match_id (lexer, "D")) + cat.sort_ascending = false; + else + { + lex_error_expecting (lexer, "A", "D"); + goto error; + } + } + else if (!c->n_cats && lex_match_id (lexer, "KEY")) + { + int start_ofs = lex_ofs (lexer) - 1; + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "VALUE")) + cat.type = CCT_VALUE; + else if (lex_match_id (lexer, "LABEL")) + cat.type = CCT_LABEL; + else + { + cat.type = CCT_FUNCTION; + if (!parse_ctables_summary_function (lexer, &cat.sort_function, + &cat.weighting, &cat.area)) + goto error; + + if (lex_match (lexer, T_LPAREN)) + { + cat.sort_var = parse_variable (lexer, dict); + if (!cat.sort_var) + goto error; + + if (cat.sort_function == CTSF_PTILE) + { + lex_match (lexer, T_COMMA); + if (!lex_force_num_range_closed (lexer, "PTILE", 0, 100)) + goto error; + cat.percentile = lex_number (lexer); + lex_get (lexer); + } + + if (!lex_force_match (lexer, T_RPAREN)) + goto error; + } + else if (ctables_function_availability (cat.sort_function) + == CTFA_SCALE) + { + bool UNUSED b = lex_force_match (lexer, T_LPAREN); + goto error; + } + + lex_ofs_error (lexer, start_ofs, lex_ofs (lexer) - 1, + _("Data-dependent sorting is not implemented.")); + goto error; + } + } + else if (!c->n_cats && lex_match_id (lexer, "MISSING")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "INCLUDE")) + cat.include_missing = true; + else if (lex_match_id (lexer, "EXCLUDE")) + cat.include_missing = false; + else + { + lex_error_expecting (lexer, "INCLUDE", "EXCLUDE"); + goto error; + } + } + else if (lex_match_id (lexer, "TOTAL")) + { + lex_match (lexer, T_EQUALS); + if (!parse_bool (lexer, &show_totals)) + goto error; + } + else if (lex_match_id (lexer, "LABEL")) + { + lex_match (lexer, T_EQUALS); + if (!lex_force_string (lexer)) + goto error; + free (total_label); + total_label = ss_xstrdup (lex_tokss (lexer)); + lex_get (lexer); + } + else if (lex_match_id (lexer, "POSITION")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "BEFORE")) + totals_before = true; + else if (lex_match_id (lexer, "AFTER")) + totals_before = false; + else + { + lex_error_expecting (lexer, "BEFORE", "AFTER"); + goto error; + } + } + else if (lex_match_id (lexer, "EMPTY")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "INCLUDE")) + c->show_empty = true; + else if (lex_match_id (lexer, "EXCLUDE")) + c->show_empty = false; + else + { + lex_error_expecting (lexer, "INCLUDE", "EXCLUDE"); + goto error; + } + } + else + { + if (!c->n_cats) + lex_error_expecting (lexer, "ORDER", "KEY", "MISSING", + "TOTAL", "LABEL", "POSITION", "EMPTY"); + else + lex_error_expecting (lexer, "TOTAL", "LABEL", "POSITION", "EMPTY"); + goto error; + } + } + + if (!c->n_cats) + { + if (c->n_cats >= allocated_cats) + c->cats = x2nrealloc (c->cats, &allocated_cats, sizeof *c->cats); + c->cats[c->n_cats++] = cat; + } + + if (show_totals) + { + if (c->n_cats >= allocated_cats) + c->cats = x2nrealloc (c->cats, &allocated_cats, sizeof *c->cats); + + struct ctables_category *totals; + if (totals_before) + { + insert_element (c->cats, c->n_cats, sizeof *c->cats, 0); + totals = &c->cats[0]; + } + else + totals = &c->cats[c->n_cats]; + c->n_cats++; + + *totals = (struct ctables_category) { + .type = CCT_TOTAL, + .total_label = total_label ? total_label : xstrdup (_("Total")), + }; + } + + struct ctables_category *subtotal = NULL; + for (size_t i = totals_before ? 0 : c->n_cats; + totals_before ? i < c->n_cats : i-- > 0; + totals_before ? i++ : 0) + { + struct ctables_category *cat = &c->cats[i]; + switch (cat->type) + { + case CCT_NUMBER: + case CCT_STRING: + case CCT_NRANGE: + case CCT_SRANGE: + case CCT_MISSING: + case CCT_OTHERNM: + cat->subtotal = subtotal; + break; + + case CCT_POSTCOMPUTE: + break; + + case CCT_SUBTOTAL: + subtotal = cat; + break; + + case CCT_TOTAL: + case CCT_VALUE: + case CCT_LABEL: + case CCT_FUNCTION: + case CCT_EXCLUDED_MISSING: + break; + } + } + + if (cats_start_ofs != -1) + { + for (size_t i = 0; i < c->n_cats; i++) + { + struct ctables_category *cat = &c->cats[i]; + switch (cat->type) + { + case CCT_POSTCOMPUTE: + cat->parse_format = parse_strings ? common_format->type : FMT_F; + struct msg_location *cats_location + = lex_ofs_location (lexer, cats_start_ofs, cats_end_ofs); + bool ok = ctables_recursive_check_postcompute ( + dict, cat->pc->expr, cat, c, cats_location); + msg_location_destroy (cats_location); + if (!ok) + goto error; + break; + + case CCT_NUMBER: + case CCT_NRANGE: + for (size_t j = 0; j < n_vars; j++) + if (var_is_alpha (vars[j])) + { + msg_at (SE, cat->location, + _("This category specification may be applied " + "only to numeric variables, but this " + "subcommand tries to apply it to string " + "variable %s."), + var_get_name (vars[j])); + goto error; + } + break; + + case CCT_STRING: + if (parse_strings) + { + double n; + if (!parse_category_string (cat->location, cat->string, dict, + common_format->type, &n)) + goto error; + + ss_dealloc (&cat->string); + + cat->type = CCT_NUMBER; + cat->number = n; + } + else if (!all_strings (vars, n_vars, cat)) + goto error; + break; + + case CCT_SRANGE: + if (parse_strings) + { + double n[2]; + + if (!cat->srange[0].string) + n[0] = -DBL_MAX; + else if (!parse_category_string (cat->location, + cat->srange[0], dict, + common_format->type, &n[0])) + goto error; + + if (!cat->srange[1].string) + n[1] = DBL_MAX; + else if (!parse_category_string (cat->location, + cat->srange[1], dict, + common_format->type, &n[1])) + goto error; + + ss_dealloc (&cat->srange[0]); + ss_dealloc (&cat->srange[1]); + + cat->type = CCT_NRANGE; + cat->nrange[0] = n[0]; + cat->nrange[1] = n[1]; + } + else if (!all_strings (vars, n_vars, cat)) + goto error; + break; + + case CCT_MISSING: + case CCT_OTHERNM: + case CCT_SUBTOTAL: + case CCT_TOTAL: + case CCT_VALUE: + case CCT_LABEL: + case CCT_FUNCTION: + case CCT_EXCLUDED_MISSING: + break; + } + } + } + + free (vars); + return true; + +error: + free (vars); + return false; +} + + +struct merge_item + { + const struct ctables_summary_spec_set *set; + size_t ofs; + }; + +static int +merge_item_compare_3way (const struct merge_item *a, const struct merge_item *b) +{ + const struct ctables_summary_spec *as = &a->set->specs[a->ofs]; + const struct ctables_summary_spec *bs = &b->set->specs[b->ofs]; + if (as->function != bs->function) + return as->function > bs->function ? 1 : -1; + else if (as->weighting != bs->weighting) + return as->weighting > bs->weighting ? 1 : -1; + else if (as->calc_area != bs->calc_area) + return as->calc_area > bs->calc_area ? 1 : -1; + else if (as->percentile != bs->percentile) + return as->percentile < bs->percentile ? 1 : -1; + + const char *as_label = as->label ? as->label : ""; + const char *bs_label = bs->label ? bs->label : ""; + return strcmp (as_label, bs_label); +} + +static void +ctables_table_add_section (struct ctables_table *t, enum pivot_axis_type a, + size_t ix[PIVOT_N_AXES]) +{ + if (a < PIVOT_N_AXES) + { + size_t limit = MAX (t->stacks[a].n, 1); + for (ix[a] = 0; ix[a] < limit; ix[a]++) + ctables_table_add_section (t, a + 1, ix); + } + else + { + struct ctables_section *s = &t->sections[t->n_sections++]; + *s = (struct ctables_section) { + .table = t, + .cells = HMAP_INITIALIZER (s->cells), + }; + for (a = 0; a < PIVOT_N_AXES; a++) + if (t->stacks[a].n) + { + struct ctables_nest *nest = &t->stacks[a].nests[ix[a]]; + s->nests[a] = nest; + s->occurrences[a] = xnmalloc (nest->n, sizeof *s->occurrences[a]); + for (size_t i = 0; i < nest->n; i++) + hmap_init (&s->occurrences[a][i]); + } + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + hmap_init (&s->areas[at]); + } +} + +static char * +ctables_format (double d, const struct fmt_spec *format, + const struct fmt_settings *settings) +{ + const union value v = { .f = d }; + char *s = data_out_stretchy (&v, "UTF-8", format, settings, NULL); + + /* The custom-currency specifications for NEQUAL, PAREN, and PCTPAREN don't + produce the results we want for negative numbers, putting the negative + sign in the wrong spot, before the prefix instead of after it. We can't, + in fact, produce the desired results using a custom-currency + specification. Instead, we postprocess the output, moving the negative + sign into place: + + NEQUAL: "-N=3" => "N=-3" + PAREN: "-(3)" => "(-3)" + PCTPAREN: "-(3%)" => "(-3%)" + + This transformation doesn't affect NEGPAREN. */ + char *minus_src = strchr (s, '-'); + if (minus_src && (minus_src == s || minus_src[-1] != 'E')) + { + char *n_equals = strstr (s, "N="); + char *lparen = strchr (s, '('); + char *minus_dst = n_equals ? n_equals + 1 : lparen; + if (minus_dst) + move_element (s, minus_dst - s + 1, 1, minus_src - s, minus_dst - s); + } + return s; +} + +static bool +all_hidden_vlabels (const struct ctables_table *t, enum pivot_axis_type a) +{ + for (size_t i = 0; i < t->stacks[a].n; i++) + { + struct ctables_nest *nest = &t->stacks[a].nests[i]; + if (nest->n != 1 || nest->scale_idx != 0) + return false; + + enum ctables_vlabel vlabel + = t->ctables->vlabels[var_get_dict_index (nest->vars[0])]; + if (vlabel != CTVL_NONE) + return false; + } + return true; +} + +static void +ctables_table_output (struct ctables *ct, struct ctables_table *t) +{ + struct pivot_table *pt = pivot_table_create__ ( + (t->title + ? pivot_value_new_user_text (t->title, SIZE_MAX) + : pivot_value_new_text (N_("Custom Tables"))), + "Custom Tables"); + if (t->caption) + pivot_table_set_caption ( + pt, pivot_value_new_user_text (t->caption, SIZE_MAX)); + if (t->corner) + pivot_table_set_corner_text ( + pt, pivot_value_new_user_text (t->corner, SIZE_MAX)); + + bool summary_dimension = (t->summary_axis != t->slabels_axis + || (!t->slabels_visible + && t->summary_specs.n > 1)); + if (summary_dimension) + { + struct pivot_dimension *d = pivot_dimension_create ( + pt, t->slabels_axis, N_("Statistics")); + const struct ctables_summary_spec_set *specs = &t->summary_specs; + if (!t->slabels_visible) + d->hide_all_labels = true; + for (size_t i = 0; i < specs->n; i++) + pivot_category_create_leaf ( + d->root, ctables_summary_label (&specs->specs[i], t->cilevel)); + } + + bool categories_dimension = t->clabels_example != NULL; + if (categories_dimension) + { + struct pivot_dimension *d = pivot_dimension_create ( + pt, t->label_axis[t->clabels_from_axis], + t->clabels_from_axis == PIVOT_AXIS_ROW + ? N_("Row Categories") + : N_("Column Categories")); + const struct variable *var = t->clabels_example; + const struct ctables_categories *c = t->categories[var_get_dict_index (var)]; + for (size_t i = 0; i < t->n_clabels_values; i++) + { + const struct ctables_value *value = t->clabels_values[i]; + const struct ctables_category *cat = ctables_categories_match (c, &value->value, var); + assert (cat != NULL); + pivot_category_create_leaf ( + d->root, ctables_category_create_value_label (c, cat, + t->clabels_example, + &value->value)); + } + } + + pivot_table_set_look (pt, ct->look); + struct pivot_dimension *d[PIVOT_N_AXES]; + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + static const char *names[] = { + [PIVOT_AXIS_ROW] = N_("Rows"), + [PIVOT_AXIS_COLUMN] = N_("Columns"), + [PIVOT_AXIS_LAYER] = N_("Layers"), + }; + d[a] = (t->axes[a] || a == t->summary_axis + ? pivot_dimension_create (pt, a, names[a]) + : NULL); + if (!d[a]) + continue; + + assert (t->axes[a]); + + for (size_t i = 0; i < t->stacks[a].n; i++) + { + struct ctables_nest *nest = &t->stacks[a].nests[i]; + struct ctables_section **sections = xnmalloc (t->n_sections, + sizeof *sections); + size_t n_sections = 0; + + size_t n_total_cells = 0; + size_t max_depth = 0; + for (size_t j = 0; j < t->n_sections; j++) + if (t->sections[j].nests[a] == nest) + { + struct ctables_section *s = &t->sections[j]; + sections[n_sections++] = s; + n_total_cells += hmap_count (&s->cells); + + size_t depth = s->nests[a]->n; + max_depth = MAX (depth, max_depth); + } + + struct ctables_cell **sorted = xnmalloc (n_total_cells, + sizeof *sorted); + size_t n_sorted = 0; + + for (size_t j = 0; j < n_sections; j++) + { + struct ctables_section *s = sections[j]; + + struct ctables_cell *cell; + HMAP_FOR_EACH (cell, struct ctables_cell, node, &s->cells) + if (!cell->hide) + sorted[n_sorted++] = cell; + assert (n_sorted <= n_total_cells); + } + + struct ctables_cell_sort_aux aux = { .nest = nest, .a = a }; + sort (sorted, n_sorted, sizeof *sorted, ctables_cell_compare_3way, &aux); + + struct ctables_level + { + enum ctables_level_type + { + CTL_VAR, /* Variable label for nest->vars[var_idx]. */ + CTL_CATEGORY, /* Category for nest->vars[var_idx]. */ + CTL_SUMMARY, /* Summary functions. */ + } + type; + + enum settings_value_show vlabel; /* CTL_VAR only. */ + size_t var_idx; + }; + struct ctables_level *levels = xnmalloc (1 + 2 * max_depth, sizeof *levels); + size_t n_levels = 0; + for (size_t k = 0; k < nest->n; k++) + { + enum ctables_vlabel vlabel = ct->vlabels[var_get_dict_index (nest->vars[k])]; + if (vlabel == CTVL_NONE && nest->scale_idx == k) + vlabel = CTVL_NAME; + if (vlabel != CTVL_NONE) + { + levels[n_levels++] = (struct ctables_level) { + .type = CTL_VAR, + .vlabel = (enum settings_value_show) vlabel, + .var_idx = k, + }; + } + + if (nest->scale_idx != k + && (k != nest->n - 1 || t->label_axis[a] == a)) + { + levels[n_levels++] = (struct ctables_level) { + .type = CTL_CATEGORY, + .var_idx = k, + }; + } + } + + if (!summary_dimension && a == t->slabels_axis) + { + levels[n_levels++] = (struct ctables_level) { + .type = CTL_SUMMARY, + .var_idx = SIZE_MAX, + }; + } + + /* Pivot categories: + + - variable label for nest->vars[0], if vlabel != CTVL_NONE + - category for nest->vars[0], if nest->scale_idx != 0 + - variable label for nest->vars[1], if vlabel != CTVL_NONE + - category for nest->vars[1], if nest->scale_idx != 1 + ... + - variable label for nest->vars[n - 1], if vlabel != CTVL_NONE + - category for nest->vars[n - 1], if t->label_axis[a] == a && nest->scale_idx != n - 1. + - summary function, if 'a == t->slabels_axis && a == + t->summary_axis'. + + Additional dimensions: + + - If 'a == t->slabels_axis && a != t->summary_axis', add a summary + dimension. + - If 't->label_axis[b] == a' for some 'b != a', add a category + dimension to 'a'. + */ + + + struct pivot_category **groups = xnmalloc (1 + 2 * max_depth, sizeof *groups); + int prev_leaf = 0; + for (size_t j = 0; j < n_sorted; j++) + { + struct ctables_cell *cell = sorted[j]; + struct ctables_cell *prev = j > 0 ? sorted[j - 1] : NULL; + + size_t n_common = 0; + if (j > 0) + { + for (; n_common < n_levels; n_common++) + { + const struct ctables_level *level = &levels[n_common]; + if (level->type == CTL_CATEGORY) + { + size_t var_idx = level->var_idx; + const struct ctables_category *c = cell->axes[a].cvs[var_idx].category; + if (prev->axes[a].cvs[var_idx].category != c) + break; + else if (c->type != CCT_SUBTOTAL + && c->type != CCT_TOTAL + && c->type != CCT_POSTCOMPUTE + && !value_equal (&prev->axes[a].cvs[var_idx].value, + &cell->axes[a].cvs[var_idx].value, + var_get_type (nest->vars[var_idx]))) + break; + } + } + } + + for (size_t k = n_common; k < n_levels; k++) + { + const struct ctables_level *level = &levels[k]; + struct pivot_category *parent = k ? groups[k - 1] : d[a]->root; + if (level->type == CTL_SUMMARY) + { + assert (k == n_levels - 1); + + const struct ctables_summary_spec_set *specs = &t->summary_specs; + for (size_t m = 0; m < specs->n; m++) + { + int leaf = pivot_category_create_leaf ( + parent, ctables_summary_label (&specs->specs[m], + t->cilevel)); + if (!m) + prev_leaf = leaf; + } + } + else + { + const struct variable *var = nest->vars[level->var_idx]; + struct pivot_value *label; + if (level->type == CTL_VAR) + { + label = pivot_value_new_variable (var); + label->variable.show = level->vlabel; + } + else if (level->type == CTL_CATEGORY) + { + const struct ctables_cell_value *cv = &cell->axes[a].cvs[level->var_idx]; + label = ctables_category_create_value_label ( + t->categories[var_get_dict_index (var)], + cv->category, var, &cv->value); + } + else + NOT_REACHED (); + + if (k == n_levels - 1) + prev_leaf = pivot_category_create_leaf (parent, label); + else + groups[k] = pivot_category_create_group__ (parent, label); + } + } + + cell->axes[a].leaf = prev_leaf; + } + free (sorted); + free (groups); + free (levels); + free (sections); + + } + + d[a]->hide_all_labels = all_hidden_vlabels (t, a); + } + + { + size_t n_total_cells = 0; + for (size_t j = 0; j < t->n_sections; j++) + n_total_cells += hmap_count (&t->sections[j].cells); + + struct ctables_cell **sorted = xnmalloc (n_total_cells, sizeof *sorted); + size_t n_sorted = 0; + for (size_t j = 0; j < t->n_sections; j++) + { + const struct ctables_section *s = &t->sections[j]; + struct ctables_cell *cell; + HMAP_FOR_EACH (cell, struct ctables_cell, node, &s->cells) + if (!cell->hide) + sorted[n_sorted++] = cell; + } + assert (n_sorted <= n_total_cells); + sort (sorted, n_sorted, sizeof *sorted, ctables_cell_compare_leaf_3way, + NULL); + size_t ids[N_CTATS]; + memset (ids, 0, sizeof ids); + for (size_t j = 0; j < n_sorted; j++) + { + struct ctables_cell *cell = sorted[j]; + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + { + struct ctables_area *area = cell->areas[at]; + if (!area->sequence) + area->sequence = ++ids[at]; + } + } + + free (sorted); + } + + for (size_t i = 0; i < t->n_sections; i++) + { + struct ctables_section *s = &t->sections[i]; + + struct ctables_cell *cell; + HMAP_FOR_EACH (cell, struct ctables_cell, node, &s->cells) + { + if (cell->hide) + continue; + + const struct ctables_nest *specs_nest = s->nests[t->summary_axis]; + const struct ctables_summary_spec_set *specs = &specs_nest->specs[cell->sv]; + for (size_t j = 0; j < specs->n; j++) + { + size_t dindexes[5]; + size_t n_dindexes = 0; + + if (summary_dimension) + dindexes[n_dindexes++] = specs->specs[j].axis_idx; + + if (categories_dimension) + { + const struct ctables_nest *clabels_nest = s->nests[t->clabels_from_axis]; + const struct variable *var = clabels_nest->vars[clabels_nest->n - 1]; + const union value *value = &cell->axes[t->clabels_from_axis].cvs[clabels_nest->n - 1].value; + const struct ctables_value *ctv = ctables_value_find (t, value, var_get_width (var)); + if (!ctv) + continue; + dindexes[n_dindexes++] = ctv->leaf; + } + + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + if (d[a]) + { + int leaf = cell->axes[a].leaf; + if (a == t->summary_axis && !summary_dimension) + leaf += j; + dindexes[n_dindexes++] = leaf; + } + + const struct ctables_summary_spec *ss = &specs->specs[j]; + + struct fmt_spec format = specs->specs[j].format; + bool is_ctables_format = ss->is_ctables_format; + double d = (cell->postcompute + ? ctables_cell_calculate_postcompute ( + s, cell, ss, &format, &is_ctables_format, j) + : ctables_summary_value (cell->areas, + &cell->summaries[j], ss)); + + struct pivot_value *value; + if (ct->hide_threshold != 0 + && d < ct->hide_threshold + && ss->function == CTSF_COUNT) + { + value = pivot_value_new_user_text_nocopy ( + xasprintf ("<%d", ct->hide_threshold)); + } + else if (d == 0 && ct->zero) + value = pivot_value_new_user_text (ct->zero, SIZE_MAX); + else if (d == SYSMIS && ct->missing) + value = pivot_value_new_user_text (ct->missing, SIZE_MAX); + else if (is_ctables_format) + value = pivot_value_new_user_text_nocopy ( + ctables_format (d, &format, &ct->ctables_formats)); + else + { + value = pivot_value_new_number (d); + value->numeric.format = format; + } + /* XXX should text values be right-justified? */ + pivot_table_put (pt, dindexes, n_dindexes, value); + } + } + } + + pivot_table_submit (pt); +} + +static bool +ctables_check_label_position (struct ctables_table *t, enum pivot_axis_type a) +{ + enum pivot_axis_type label_pos = t->label_axis[a]; + if (label_pos == a) + return true; + + const char *subcommand_name = a == PIVOT_AXIS_ROW ? "ROWLABELS" : "COLLABELS"; + const char *pos_name = label_pos == PIVOT_AXIS_LAYER ? "LAYER" : "OPPOSITE"; + + const struct ctables_stack *stack = &t->stacks[a]; + if (!stack->n) + return true; + + const struct ctables_nest *n0 = &stack->nests[0]; + if (n0->n == 0) + { + assert (stack->n == 1); + return true; + } + + const struct variable *v0 = n0->vars[n0->n - 1]; + struct ctables_categories *c0 = t->categories[var_get_dict_index (v0)]; + t->clabels_example = v0; + + for (size_t i = 0; i < c0->n_cats; i++) + if (c0->cats[i].type == CCT_FUNCTION) + { + msg (SE, _("%s=%s is not allowed with sorting based " + "on a summary function."), + subcommand_name, pos_name); + return false; + } + if (n0->n - 1 == n0->scale_idx) + { + msg (SE, _("%s=%s requires the variables to be moved to be categorical, " + "but %s is a scale variable."), + subcommand_name, pos_name, var_get_name (v0)); + return false; + } + + for (size_t i = 1; i < stack->n; i++) + { + const struct ctables_nest *ni = &stack->nests[i]; + assert (ni->n > 0); + const struct variable *vi = ni->vars[ni->n - 1]; + struct ctables_categories *ci = t->categories[var_get_dict_index (vi)]; + + if (ni->n - 1 == ni->scale_idx) + { + msg (SE, _("%s=%s requires the variables to be moved to be " + "categorical, but %s is a scale variable."), + subcommand_name, pos_name, var_get_name (vi)); + return false; + } + if (var_get_width (v0) != var_get_width (vi)) + { + msg (SE, _("%s=%s requires the variables to be " + "moved to have the same width, but %s has " + "width %d and %s has width %d."), + subcommand_name, pos_name, + var_get_name (v0), var_get_width (v0), + var_get_name (vi), var_get_width (vi)); + return false; + } + if (!val_labs_equal (var_get_value_labels (v0), + var_get_value_labels (vi))) + { + msg (SE, _("%s=%s requires the variables to be " + "moved to have the same value labels, but %s " + "and %s have different value labels."), + subcommand_name, pos_name, + var_get_name (v0), var_get_name (vi)); + return false; + } + if (!ctables_categories_equal (c0, ci)) + { + msg (SE, _("%s=%s requires the variables to be " + "moved to have the same category " + "specifications, but %s and %s have different " + "category specifications."), + subcommand_name, pos_name, + var_get_name (v0), var_get_name (vi)); + return false; + } + } + + return true; +} + +static size_t +add_sum_var (struct variable *var, + struct variable ***sum_vars, size_t *n, size_t *allocated) +{ + for (size_t i = 0; i < *n; i++) + if (var == (*sum_vars)[i]) + return i; + + if (*n >= *allocated) + *sum_vars = x2nrealloc (*sum_vars, allocated, sizeof **sum_vars); + (*sum_vars)[*n] = var; + return (*n)++; +} + +static enum ctables_area_type +rotate_area (enum ctables_area_type area) +{ + return area; + switch (area) + { + case CTAT_TABLE: + case CTAT_LAYER: + case CTAT_SUBTABLE: + return area; + + case CTAT_LAYERROW: + return CTAT_LAYERCOL; + + case CTAT_LAYERCOL: + return CTAT_LAYERROW; + + case CTAT_ROW: + return CTAT_COL; + + case CTAT_COL: + return CTAT_ROW; + } + + NOT_REACHED (); +} + +static void +enumerate_sum_vars (const struct ctables_axis *a, + struct variable ***sum_vars, size_t *n, size_t *allocated) +{ + if (!a) + return; + + switch (a->op) + { + case CTAO_VAR: + for (size_t i = 0; i < N_CSVS; i++) + for (size_t j = 0; j < a->specs[i].n; j++) + { + struct ctables_summary_spec *spec = &a->specs[i].specs[j]; + if (spec->function == CTSF_areaPCT_SUM) + spec->sum_var_idx = add_sum_var (a->var, sum_vars, n, allocated); + } + break; + + case CTAO_STACK: + case CTAO_NEST: + for (size_t i = 0; i < 2; i++) + enumerate_sum_vars (a->subs[i], sum_vars, n, allocated); + break; + } +} + +static bool +ctables_prepare_table (struct ctables_table *t) +{ + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + if (t->axes[a]) + { + t->stacks[a] = enumerate_fts (a, t->axes[a]); + + for (size_t j = 0; j < t->stacks[a].n; j++) + { + struct ctables_nest *nest = &t->stacks[a].nests[j]; + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + { + nest->areas[at] = xmalloc (nest->n * sizeof *nest->areas[at]); + nest->n_areas[at] = 0; + + enum pivot_axis_type ata, atb; + if (at == CTAT_ROW || at == CTAT_LAYERROW) + { + ata = PIVOT_AXIS_ROW; + atb = PIVOT_AXIS_COLUMN; + } + else if (at == CTAT_COL || at == CTAT_LAYERCOL) + { + ata = PIVOT_AXIS_COLUMN; + atb = PIVOT_AXIS_ROW; + } + + if (at == CTAT_LAYER + ? a != PIVOT_AXIS_LAYER && t->label_axis[a] == PIVOT_AXIS_LAYER + : at == CTAT_LAYERCOL || at == CTAT_LAYERROW + ? a == atb && t->label_axis[a] != a + : false) + { + for (size_t k = nest->n - 1; k < nest->n; k--) + if (k != nest->scale_idx) + { + nest->areas[at][nest->n_areas[at]++] = k; + break; + } + continue; + } + + if (at == CTAT_LAYER ? a != PIVOT_AXIS_LAYER + : at == CTAT_LAYERROW || at == CTAT_LAYERCOL ? a == atb + : at == CTAT_TABLE ? true + : false) + continue; + + for (size_t k = 0; k < nest->n; k++) + if (k != nest->scale_idx) + nest->areas[at][nest->n_areas[at]++] = k; + + int n_drop; + switch (at) + { + case CTAT_SUBTABLE: +#define L PIVOT_AXIS_LAYER + n_drop = (t->clabels_from_axis == L ? a != L + : t->clabels_to_axis == L ? (t->clabels_from_axis == a ? -1 : a != L) + : t->clabels_from_axis == a ? 2 + : 0); +#undef L + break; + + case CTAT_LAYERROW: + case CTAT_LAYERCOL: + n_drop = a == ata && t->label_axis[ata] == atb; + break; + + case CTAT_ROW: + case CTAT_COL: + n_drop = (a == ata ? t->label_axis[ata] == atb + : a != atb ? 0 + : t->clabels_from_axis == atb ? -1 + : t->clabels_to_axis != atb ? 1 + : 0); + break; + + case CTAT_LAYER: + case CTAT_TABLE: + n_drop = 0; + break; + } + + if (n_drop < 0) + { + size_t n = nest->n_areas[at]; + if (n > 1) + { + nest->areas[at][n - 2] = nest->areas[at][n - 1]; + nest->n_areas[at]--; + } + } + else + { + for (int i = 0; i < n_drop; i++) + if (nest->n_areas[at] > 0) + nest->n_areas[at]--; + } + } + } + } + else + { + struct ctables_nest *nest = xmalloc (sizeof *nest); + *nest = (struct ctables_nest) { + .n = 0, + .scale_idx = SIZE_MAX, + .summary_idx = SIZE_MAX + }; + t->stacks[a] = (struct ctables_stack) { .nests = nest, .n = 1 }; + + /* There's no point in moving labels away from an axis that has no + labels, so avoid dealing with the special cases around that. */ + t->label_axis[a] = a; + } + + struct ctables_stack *stack = &t->stacks[t->summary_axis]; + for (size_t i = 0; i < stack->n; i++) + { + struct ctables_nest *nest = &stack->nests[i]; + if (!nest->specs[CSV_CELL].n) + { + struct ctables_summary_spec_set *ss = &nest->specs[CSV_CELL]; + ss->specs = xmalloc (sizeof *ss->specs); + ss->n = 1; + + enum ctables_summary_function function + = ss->is_scale ? CTSF_MEAN : CTSF_COUNT; + + if (!ss->var) + { + nest->summary_idx = nest->n - 1; + ss->var = nest->vars[nest->summary_idx]; + } + *ss->specs = (struct ctables_summary_spec) { + .function = function, + .weighting = ss->is_scale ? CTW_EFFECTIVE : CTW_DICTIONARY, + .format = ctables_summary_default_format (function, ss->var), + }; + + ctables_summary_spec_set_clone (&nest->specs[CSV_TOTAL], + &nest->specs[CSV_CELL]); + } + else if (!nest->specs[CSV_TOTAL].n) + ctables_summary_spec_set_clone (&nest->specs[CSV_TOTAL], + &nest->specs[CSV_CELL]); + + if (t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN + || t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) + { + for (enum ctables_summary_variant sv = 0; sv < N_CSVS; sv++) + for (size_t i = 0; i < nest->specs[sv].n; i++) + { + struct ctables_summary_spec *ss = &nest->specs[sv].specs[i]; + const struct ctables_function_info *cfi = + &ctables_function_info[ss->function]; + if (cfi->is_area) + ss->calc_area = rotate_area (ss->calc_area); + } + } + + if (t->ctables->smissing_listwise) + { + struct variable **listwise_vars = NULL; + size_t n = 0; + size_t allocated = 0; + + for (size_t j = nest->group_head; j < stack->n; j++) + { + const struct ctables_nest *other_nest = &stack->nests[j]; + if (other_nest->group_head != nest->group_head) + break; + + if (nest != other_nest && other_nest->scale_idx < other_nest->n) + { + if (n >= allocated) + listwise_vars = x2nrealloc (listwise_vars, &allocated, + sizeof *listwise_vars); + listwise_vars[n++] = other_nest->vars[other_nest->scale_idx]; + } + } + for (enum ctables_summary_variant sv = 0; sv < N_CSVS; sv++) + { + if (sv > 0) + listwise_vars = xmemdup (listwise_vars, + n * sizeof *listwise_vars); + nest->specs[sv].listwise_vars = listwise_vars; + nest->specs[sv].n_listwise_vars = n; + } + } + } + + struct ctables_summary_spec_set *merged = &t->summary_specs; + struct merge_item *items = xnmalloc (N_CSVS * stack->n, sizeof *items); + size_t n_left = 0; + for (size_t j = 0; j < stack->n; j++) + { + const struct ctables_nest *nest = &stack->nests[j]; + if (nest->n) + for (enum ctables_summary_variant sv = 0; sv < N_CSVS; sv++) + items[n_left++] = (struct merge_item) { .set = &nest->specs[sv] }; + } + + while (n_left > 0) + { + struct merge_item min = items[0]; + for (size_t j = 1; j < n_left; j++) + if (merge_item_compare_3way (&items[j], &min) < 0) + min = items[j]; + + if (merged->n >= merged->allocated) + merged->specs = x2nrealloc (merged->specs, &merged->allocated, + sizeof *merged->specs); + merged->specs[merged->n++] = min.set->specs[min.ofs]; + + for (size_t j = 0; j < n_left; ) + { + if (merge_item_compare_3way (&items[j], &min) == 0) + { + struct merge_item *item = &items[j]; + item->set->specs[item->ofs++].axis_idx = merged->n - 1; + if (item->ofs >= item->set->n) + { + items[j] = items[--n_left]; + continue; + } + } + j++; + } + } + free (items); + + size_t allocated_sum_vars = 0; + enumerate_sum_vars (t->axes[t->summary_axis], + &t->sum_vars, &t->n_sum_vars, &allocated_sum_vars); + + return (ctables_check_label_position (t, PIVOT_AXIS_ROW) + && ctables_check_label_position (t, PIVOT_AXIS_COLUMN)); +} + +static void +ctables_insert_clabels_values (struct ctables_table *t, const struct ccase *c, + enum pivot_axis_type a) +{ + struct ctables_stack *stack = &t->stacks[a]; + for (size_t i = 0; i < stack->n; i++) + { + const struct ctables_nest *nest = &stack->nests[i]; + const struct variable *var = nest->vars[nest->n - 1]; + const union value *value = case_data (c, var); + + if (var_is_numeric (var) && value->f == SYSMIS) + continue; + + if (ctables_categories_match (t->categories [var_get_dict_index (var)], + value, var)) + ctables_value_insert (t, value, var_get_width (var)); + } +} + +static void +ctables_add_category_occurrences (const struct variable *var, + struct hmap *occurrences, + const struct ctables_categories *cats) +{ + const struct val_labs *val_labs = var_get_value_labels (var); + + for (size_t i = 0; i < cats->n_cats; i++) + { + const struct ctables_category *c = &cats->cats[i]; + switch (c->type) + { + case CCT_NUMBER: + ctables_add_occurrence (var, &(const union value) { .f = c->number }, + occurrences); + break; + + case CCT_STRING: + { + int width = var_get_width (var); + union value value; + value_init (&value, width); + value_copy_buf_rpad (&value, width, + CHAR_CAST (uint8_t *, c->string.string), + c->string.length, ' '); + ctables_add_occurrence (var, &value, occurrences); + value_destroy (&value, width); + } + break; + + case CCT_NRANGE: + assert (var_is_numeric (var)); + for (const struct val_lab *vl = val_labs_first (val_labs); vl; + vl = val_labs_next (val_labs, vl)) + if (vl->value.f >= c->nrange[0] && vl->value.f <= c->nrange[1]) + ctables_add_occurrence (var, &vl->value, occurrences); + break; + + case CCT_SRANGE: + assert (var_is_alpha (var)); + for (const struct val_lab *vl = val_labs_first (val_labs); vl; + vl = val_labs_next (val_labs, vl)) + if (in_string_range (&vl->value, var, c->srange)) + ctables_add_occurrence (var, &vl->value, occurrences); + break; + + case CCT_MISSING: + for (const struct val_lab *vl = val_labs_first (val_labs); vl; + vl = val_labs_next (val_labs, vl)) + if (var_is_value_missing (var, &vl->value)) + ctables_add_occurrence (var, &vl->value, occurrences); + break; + + case CCT_OTHERNM: + for (const struct val_lab *vl = val_labs_first (val_labs); vl; + vl = val_labs_next (val_labs, vl)) + ctables_add_occurrence (var, &vl->value, occurrences); + break; + + case CCT_POSTCOMPUTE: + break; + + case CCT_SUBTOTAL: + case CCT_TOTAL: + break; + + case CCT_VALUE: + case CCT_LABEL: + case CCT_FUNCTION: + for (const struct val_lab *vl = val_labs_first (val_labs); vl; + vl = val_labs_next (val_labs, vl)) + if (c->include_missing || !var_is_value_missing (var, &vl->value)) + ctables_add_occurrence (var, &vl->value, occurrences); + break; + + case CCT_EXCLUDED_MISSING: + break; + } + } +} + +static void +ctables_section_recurse_add_empty_categories ( + struct ctables_section *s, + const struct ctables_category **cats[PIVOT_N_AXES], struct ccase *c, + enum pivot_axis_type a, size_t a_idx) +{ + if (a >= PIVOT_N_AXES) + ctables_cell_insert__ (s, c, cats); + else if (!s->nests[a] || a_idx >= s->nests[a]->n) + ctables_section_recurse_add_empty_categories (s, cats, c, a + 1, 0); + else + { + const struct variable *var = s->nests[a]->vars[a_idx]; + const struct ctables_categories *categories = s->table->categories[ + var_get_dict_index (var)]; + int width = var_get_width (var); + const struct hmap *occurrences = &s->occurrences[a][a_idx]; + const struct ctables_occurrence *o; + HMAP_FOR_EACH (o, struct ctables_occurrence, node, occurrences) + { + union value *value = case_data_rw (c, var); + value_destroy (value, width); + value_clone (value, &o->value, width); + cats[a][a_idx] = ctables_categories_match (categories, value, var); + assert (cats[a][a_idx] != NULL); + ctables_section_recurse_add_empty_categories (s, cats, c, a, a_idx + 1); + } + + for (size_t i = 0; i < categories->n_cats; i++) + { + const struct ctables_category *cat = &categories->cats[i]; + if (cat->type == CCT_POSTCOMPUTE) + { + cats[a][a_idx] = cat; + ctables_section_recurse_add_empty_categories (s, cats, c, a, a_idx + 1); + } + } + } +} + +static void +ctables_section_add_empty_categories (struct ctables_section *s) +{ + bool show_empty = false; + for (size_t a = 0; a < PIVOT_N_AXES; a++) + if (s->nests[a]) + for (size_t k = 0; k < s->nests[a]->n; k++) + if (k != s->nests[a]->scale_idx) + { + const struct variable *var = s->nests[a]->vars[k]; + const struct ctables_categories *cats = s->table->categories[ + var_get_dict_index (var)]; + if (cats->show_empty) + { + show_empty = true; + ctables_add_category_occurrences (var, &s->occurrences[a][k], cats); + } + } + if (!show_empty) + return; + + const struct ctables_category *layer_cats[s->nests[PIVOT_AXIS_LAYER]->n]; + const struct ctables_category *row_cats[s->nests[PIVOT_AXIS_ROW]->n]; + const struct ctables_category *column_cats[s->nests[PIVOT_AXIS_COLUMN]->n]; + const struct ctables_category **cats[PIVOT_N_AXES] = + { + [PIVOT_AXIS_LAYER] = layer_cats, + [PIVOT_AXIS_ROW] = row_cats, + [PIVOT_AXIS_COLUMN] = column_cats, + }; + struct ccase *c = case_create (dict_get_proto (s->table->ctables->dict)); + ctables_section_recurse_add_empty_categories (s, cats, c, 0, 0); + case_unref (c); +} + +static void +ctables_section_clear (struct ctables_section *s) +{ + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx) + { + const struct variable *var = nest->vars[i]; + int width = var_get_width (var); + struct ctables_occurrence *o, *next; + struct hmap *map = &s->occurrences[a][i]; + HMAP_FOR_EACH_SAFE (o, next, struct ctables_occurrence, node, map) + { + value_destroy (&o->value, width); + hmap_delete (map, &o->node); + free (o); + } + hmap_shrink (map); + } + } + + struct ctables_cell *cell, *next_cell; + HMAP_FOR_EACH_SAFE (cell, next_cell, struct ctables_cell, node, &s->cells) + { + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + const struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + if (i != nest->scale_idx) + value_destroy (&cell->axes[a].cvs[i].value, + var_get_width (nest->vars[i])); + free (cell->axes[a].cvs); + } + + const struct ctables_nest *ss = s->nests[s->table->summary_axis]; + const struct ctables_summary_spec_set *specs = &ss->specs[cell->sv]; + for (size_t i = 0; i < specs->n; i++) + ctables_summary_uninit (&cell->summaries[i], &specs->specs[i]); + free (cell->summaries); + + hmap_delete (&s->cells, &cell->node); + free (cell); + } + hmap_shrink (&s->cells); + + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + { + struct ctables_area *area, *next_area; + HMAP_FOR_EACH_SAFE (area, next_area, struct ctables_area, node, + &s->areas[at]) + { + free (area->sums); + hmap_delete (&s->areas[at], &area->node); + free (area); + } + hmap_shrink (&s->areas[at]); + } +} + +static void +ctables_section_uninit (struct ctables_section *s) +{ + ctables_section_clear (s); + + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + struct ctables_nest *nest = s->nests[a]; + for (size_t i = 0; i < nest->n; i++) + hmap_destroy (&s->occurrences[a][i]); + free (s->occurrences[a]); + } + + hmap_destroy (&s->cells); + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + hmap_destroy (&s->areas[at]); +} + +static void +ctables_table_clear (struct ctables_table *t) +{ + for (size_t i = 0; i < t->n_sections; i++) + ctables_section_clear (&t->sections[i]); + + if (t->clabels_example) + { + int width = var_get_width (t->clabels_example); + struct ctables_value *value, *next_value; + HMAP_FOR_EACH_SAFE (value, next_value, struct ctables_value, node, + &t->clabels_values_map) + { + value_destroy (&value->value, width); + hmap_delete (&t->clabels_values_map, &value->node); + free (value); + } + hmap_shrink (&t->clabels_values_map); + + free (t->clabels_values); + t->clabels_values = NULL; + t->n_clabels_values = 0; + } +} + +static bool +ctables_execute (struct dataset *ds, struct casereader *input, + struct ctables *ct) +{ + for (size_t i = 0; i < ct->n_tables; i++) + { + struct ctables_table *t = ct->tables[i]; + t->sections = xnmalloc (MAX (1, t->stacks[PIVOT_AXIS_ROW].n) * + MAX (1, t->stacks[PIVOT_AXIS_COLUMN].n) * + MAX (1, t->stacks[PIVOT_AXIS_LAYER].n), + sizeof *t->sections); + size_t ix[PIVOT_N_AXES]; + ctables_table_add_section (t, 0, ix); + } + + struct dictionary *dict = dataset_dict (ds); + + bool splitting = dict_get_split_type (dict) == SPLIT_SEPARATE; + struct casegrouper *grouper + = (splitting + ? casegrouper_create_splits (input, dict) + : casegrouper_create_vars (input, NULL, 0)); + struct casereader *group; + while (casegrouper_get_next_group (grouper, &group)) + { + if (splitting) + { + struct ccase *c = casereader_peek (group, 0); + if (c != NULL) + { + output_split_file_values (ds, c); + case_unref (c); + } + } + + bool warn_on_invalid = true; + for (struct ccase *c = casereader_read (group); c; + case_unref (c), c = casereader_read (group)) + { + double d_weight = dict_get_rounded_case_weight (dict, c, &warn_on_invalid); + double e_weight = (ct->e_weight + ? var_force_valid_weight (ct->e_weight, + case_num (c, ct->e_weight), + &warn_on_invalid) + : d_weight); + double weight[] = { + [CTW_DICTIONARY] = d_weight, + [CTW_EFFECTIVE] = e_weight, + [CTW_UNWEIGHTED] = 1.0, + }; + + for (size_t i = 0; i < ct->n_tables; i++) + { + struct ctables_table *t = ct->tables[i]; + + for (size_t j = 0; j < t->n_sections; j++) + ctables_cell_insert (&t->sections[j], c, weight); + + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + if (t->label_axis[a] != a) + ctables_insert_clabels_values (t, c, a); + } + } + casereader_destroy (group); + + for (size_t i = 0; i < ct->n_tables; i++) + { + struct ctables_table *t = ct->tables[i]; + + if (t->clabels_example) + ctables_sort_clabels_values (t); + + for (size_t j = 0; j < t->n_sections; j++) + ctables_section_add_empty_categories (&t->sections[j]); + + ctables_table_output (ct, t); + ctables_table_clear (t); + } + } + return casegrouper_destroy (grouper); +} + +static struct ctables_postcompute * +ctables_find_postcompute (struct ctables *ct, const char *name) +{ + struct ctables_postcompute *pc; + HMAP_FOR_EACH_WITH_HASH (pc, struct ctables_postcompute, hmap_node, + utf8_hash_case_string (name, 0), &ct->postcomputes) + if (!utf8_strcasecmp (pc->name, name)) + return pc; + return NULL; +} + +static bool +ctables_parse_pcompute (struct lexer *lexer, struct dictionary *dict, + struct ctables *ct) +{ + int pcompute_start = lex_ofs (lexer) - 1; + + if (!lex_match (lexer, T_AND)) + { + lex_error_expecting (lexer, "&"); + return false; + } + if (!lex_force_id (lexer)) + return false; + + char *name = ss_xstrdup (lex_tokss (lexer)); + + lex_get (lexer); + if (!lex_force_match (lexer, T_EQUALS) + || !lex_force_match_id (lexer, "EXPR") + || !lex_force_match (lexer, T_LPAREN)) + { + free (name); + return false; + } + + int expr_start = lex_ofs (lexer); + struct ctables_pcexpr *expr = ctables_pcexpr_parse_add (lexer, dict); + int expr_end = lex_ofs (lexer) - 1; + if (!expr || !lex_force_match (lexer, T_RPAREN)) + { + ctables_pcexpr_destroy (expr); + free (name); + return false; + } + int pcompute_end = lex_ofs (lexer) - 1; + + struct msg_location *location = lex_ofs_location (lexer, pcompute_start, + pcompute_end); + + struct ctables_postcompute *pc = ctables_find_postcompute (ct, name); + if (pc) + { + msg_at (SW, location, _("New definition of &%s will override the " + "previous definition."), + pc->name); + msg_at (SN, pc->location, _("This is the previous definition.")); + + ctables_pcexpr_destroy (pc->expr); + msg_location_destroy (pc->location); + free (name); + } + else + { + pc = xmalloc (sizeof *pc); + *pc = (struct ctables_postcompute) { .name = name }; + hmap_insert (&ct->postcomputes, &pc->hmap_node, + utf8_hash_case_string (pc->name, 0)); + } + pc->expr = expr; + pc->location = location; + if (!pc->label) + pc->label = lex_ofs_representation (lexer, expr_start, expr_end); + return true; +} + +static bool +ctables_parse_pproperties_format (struct lexer *lexer, + struct ctables_summary_spec_set *sss) +{ + *sss = (struct ctables_summary_spec_set) { .n = 0 }; + + while (lex_token (lexer) != T_ENDCMD && lex_token (lexer) != T_SLASH + && !(lex_token (lexer) == T_ID + && (lex_id_match (ss_cstr ("LABEL"), lex_tokss (lexer)) + || lex_id_match (ss_cstr ("HIDESOURCECATS"), + lex_tokss (lexer))))) + { + /* Parse function. */ + enum ctables_summary_function function; + enum ctables_weighting weighting; + enum ctables_area_type area; + if (!parse_ctables_summary_function (lexer, &function, &weighting, &area)) + goto error; + + /* Parse percentile. */ + double percentile = 0; + if (function == CTSF_PTILE) + { + if (!lex_force_num_range_closed (lexer, "PTILE", 0, 100)) + goto error; + percentile = lex_number (lexer); + lex_get (lexer); + } + + /* Parse format. */ + struct fmt_spec format; + bool is_ctables_format; + if (!parse_ctables_format_specifier (lexer, &format, &is_ctables_format)) + goto error; + + if (sss->n >= sss->allocated) + sss->specs = x2nrealloc (sss->specs, &sss->allocated, + sizeof *sss->specs); + sss->specs[sss->n++] = (struct ctables_summary_spec) { + .function = function, + .weighting = weighting, + .calc_area = area, + .user_area = area, + .percentile = percentile, + .format = format, + .is_ctables_format = is_ctables_format, + }; + } + return true; + +error: + ctables_summary_spec_set_uninit (sss); + return false; +} + +static bool +ctables_parse_pproperties (struct lexer *lexer, struct ctables *ct) +{ + struct ctables_postcompute **pcs = NULL; + size_t n_pcs = 0; + size_t allocated_pcs = 0; + + while (lex_match (lexer, T_AND)) + { + if (!lex_force_id (lexer)) + goto error; + struct ctables_postcompute *pc + = ctables_find_postcompute (ct, lex_tokcstr (lexer)); + if (!pc) + { + msg (SE, _("Unknown computed category &%s."), lex_tokcstr (lexer)); + goto error; + } + lex_get (lexer); + + if (n_pcs >= allocated_pcs) + pcs = x2nrealloc (pcs, &allocated_pcs, sizeof *pcs); + pcs[n_pcs++] = pc; + } + + while (lex_token (lexer) != T_SLASH && lex_token (lexer) != T_ENDCMD) + { + if (lex_match_id (lexer, "LABEL")) + { + lex_match (lexer, T_EQUALS); + if (!lex_force_string (lexer)) + goto error; + + for (size_t i = 0; i < n_pcs; i++) + { + free (pcs[i]->label); + pcs[i]->label = ss_xstrdup (lex_tokss (lexer)); + } + + lex_get (lexer); + } + else if (lex_match_id (lexer, "FORMAT")) + { + lex_match (lexer, T_EQUALS); + + struct ctables_summary_spec_set sss; + if (!ctables_parse_pproperties_format (lexer, &sss)) + goto error; + + for (size_t i = 0; i < n_pcs; i++) + { + if (pcs[i]->specs) + ctables_summary_spec_set_uninit (pcs[i]->specs); + else + pcs[i]->specs = xmalloc (sizeof *pcs[i]->specs); + ctables_summary_spec_set_clone (pcs[i]->specs, &sss); + } + ctables_summary_spec_set_uninit (&sss); + } + else if (lex_match_id (lexer, "HIDESOURCECATS")) + { + lex_match (lexer, T_EQUALS); + bool hide_source_cats; + if (!parse_bool (lexer, &hide_source_cats)) + goto error; + for (size_t i = 0; i < n_pcs; i++) + pcs[i]->hide_source_cats = hide_source_cats; + } + else + { + lex_error_expecting (lexer, "LABEL", "FORMAT", "HIDESOURCECATS"); + goto error; + } + } + free (pcs); + return true; + +error: + free (pcs); + return false; +} + +static void +put_strftime (struct string *out, time_t now, const char *format) +{ + const struct tm *tm = localtime (&now); + char value[128]; + strftime (value, sizeof value, format, tm); + ds_put_cstr (out, value); +} + +static bool +skip_prefix (struct substring *s, struct substring prefix) +{ + if (ss_starts_with (*s, prefix)) + { + ss_advance (s, prefix.length); + return true; + } + else + return false; +} + +static void +put_table_expression (struct string *out, struct lexer *lexer, + struct dictionary *dict, int expr_start, int expr_end) +{ + size_t nest = 0; + for (int ofs = expr_start; ofs < expr_end; ofs++) + { + const struct token *t = lex_ofs_token (lexer, ofs); + if (t->type == T_LBRACK) + nest++; + else if (t->type == T_RBRACK && nest > 0) + nest--; + else if (nest > 0) + { + /* Nothing. */ + } + else if (t->type == T_ID) + { + const struct variable *var + = dict_lookup_var (dict, t->string.string); + const char *label = var ? var_get_label (var) : NULL; + ds_put_cstr (out, label ? label : t->string.string); + } + else + { + if (ofs != expr_start && t->type != T_RPAREN && ds_last (out) != ' ') + ds_put_byte (out, ' '); + + char *repr = lex_ofs_representation (lexer, ofs, ofs); + ds_put_cstr (out, repr); + free (repr); + + if (ofs + 1 != expr_end && t->type != T_LPAREN) + ds_put_byte (out, ' '); + } + } +} + +static void +put_title_text (struct string *out, struct substring in, time_t now, + struct lexer *lexer, struct dictionary *dict, + int expr_start, int expr_end) +{ + for (;;) + { + size_t chunk = ss_find_byte (in, ')'); + ds_put_substring (out, ss_head (in, chunk)); + ss_advance (&in, chunk); + if (ss_is_empty (in)) + return; + + if (skip_prefix (&in, ss_cstr (")DATE"))) + put_strftime (out, now, "%x"); + else if (skip_prefix (&in, ss_cstr (")TIME"))) + put_strftime (out, now, "%X"); + else if (skip_prefix (&in, ss_cstr (")TABLE"))) + put_table_expression (out, lexer, dict, expr_start, expr_end); + else + { + ds_put_byte (out, ')'); + ss_advance (&in, 1); + } + } +} + +int +cmd_ctables (struct lexer *lexer, struct dataset *ds) +{ + struct casereader *input = NULL; + + struct measure_guesser *mg = measure_guesser_create (ds); + if (mg) + { + input = proc_open (ds); + measure_guesser_run (mg, input); + measure_guesser_destroy (mg); + } + + size_t n_vars = dict_get_n_vars (dataset_dict (ds)); + enum ctables_vlabel *vlabels = xnmalloc (n_vars, sizeof *vlabels); + enum settings_value_show tvars = settings_get_show_variables (); + for (size_t i = 0; i < n_vars; i++) + vlabels[i] = (enum ctables_vlabel) tvars; + + struct pivot_table_look *look = pivot_table_look_unshare ( + pivot_table_look_ref (pivot_table_look_get_default ())); + look->omit_empty = false; + + struct ctables *ct = xmalloc (sizeof *ct); + *ct = (struct ctables) { + .dict = dataset_dict (ds), + .look = look, + .ctables_formats = FMT_SETTINGS_INIT, + .vlabels = vlabels, + .postcomputes = HMAP_INITIALIZER (ct->postcomputes), + }; + + time_t now = time (NULL); + + struct ctf + { + enum fmt_type type; + const char *dot_string; + const char *comma_string; + }; + static const struct ctf ctfs[4] = { + { CTEF_NEGPAREN, "(,,,)", "(...)" }, + { CTEF_NEQUAL, "-,N=,,", "-.N=.." }, + { CTEF_PAREN, "-,(,),", "-.(.)." }, + { CTEF_PCTPAREN, "-,(,%),", "-.(.%)." }, + }; + bool is_dot = settings_get_fmt_settings ()->decimal == '.'; + for (size_t i = 0; i < 4; i++) + { + const char *s = is_dot ? ctfs[i].dot_string : ctfs[i].comma_string; + fmt_settings_set_cc (&ct->ctables_formats, ctfs[i].type, + fmt_number_style_from_string (s)); + } + + if (!lex_force_match (lexer, T_SLASH)) + goto error; + + while (!lex_match_id (lexer, "TABLE")) + { + if (lex_match_id (lexer, "FORMAT")) + { + double widths[2] = { SYSMIS, SYSMIS }; + double units_per_inch = 72.0; + + while (lex_token (lexer) != T_SLASH) + { + if (lex_match_id (lexer, "MINCOLWIDTH")) + { + if (!parse_col_width (lexer, "MINCOLWIDTH", &widths[0])) + goto error; + } + else if (lex_match_id (lexer, "MAXCOLWIDTH")) + { + if (!parse_col_width (lexer, "MAXCOLWIDTH", &widths[1])) + goto error; + } + else if (lex_match_id (lexer, "UNITS")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "POINTS")) + units_per_inch = 72.0; + else if (lex_match_id (lexer, "INCHES")) + units_per_inch = 1.0; + else if (lex_match_id (lexer, "CM")) + units_per_inch = 2.54; + else + { + lex_error_expecting (lexer, "POINTS", "INCHES", "CM"); + goto error; + } + } + else if (lex_match_id (lexer, "EMPTY")) + { + free (ct->zero); + ct->zero = NULL; + + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "ZERO")) + { + /* Nothing to do. */ + } + else if (lex_match_id (lexer, "BLANK")) + ct->zero = xstrdup (""); + else if (lex_force_string (lexer)) + { + ct->zero = ss_xstrdup (lex_tokss (lexer)); + lex_get (lexer); + } + else + goto error; + } + else if (lex_match_id (lexer, "MISSING")) + { + lex_match (lexer, T_EQUALS); + if (!lex_force_string (lexer)) + goto error; + + free (ct->missing); + ct->missing = (strcmp (lex_tokcstr (lexer), ".") + ? ss_xstrdup (lex_tokss (lexer)) + : NULL); + lex_get (lexer); + } + else + { + lex_error_expecting (lexer, "MINCOLWIDTH", "MAXCOLWIDTH", + "UNITS", "EMPTY", "MISSING"); + goto error; + } + } + + if (widths[0] != SYSMIS && widths[1] != SYSMIS + && widths[0] > widths[1]) + { + msg (SE, _("MINCOLWIDTH must not be greater than MAXCOLWIDTH.")); + goto error; + } + + for (size_t i = 0; i < 2; i++) + if (widths[i] != SYSMIS) + { + int *wr = ct->look->width_ranges[TABLE_HORZ]; + wr[i] = widths[i] / units_per_inch * 96.0; + if (wr[0] > wr[1]) + wr[!i] = wr[i]; + } + } + else if (lex_match_id (lexer, "VLABELS")) + { + if (!lex_force_match_id (lexer, "VARIABLES")) + goto error; + lex_match (lexer, T_EQUALS); + + struct variable **vars; + size_t n_vars; + if (!parse_variables (lexer, dataset_dict (ds), &vars, &n_vars, + PV_NO_SCRATCH)) + goto error; + + if (!lex_force_match_id (lexer, "DISPLAY")) + { + free (vars); + goto error; + } + lex_match (lexer, T_EQUALS); + + enum ctables_vlabel vlabel; + if (lex_match_id (lexer, "DEFAULT")) + vlabel = (enum ctables_vlabel) settings_get_show_variables (); + else if (lex_match_id (lexer, "NAME")) + vlabel = CTVL_NAME; + else if (lex_match_id (lexer, "LABEL")) + vlabel = CTVL_LABEL; + else if (lex_match_id (lexer, "BOTH")) + vlabel = CTVL_BOTH; + else if (lex_match_id (lexer, "NONE")) + vlabel = CTVL_NONE; + else + { + lex_error_expecting (lexer, "DEFAULT", "NAME", "LABEL", + "BOTH", "NONE"); + free (vars); + goto error; + } + + for (size_t i = 0; i < n_vars; i++) + ct->vlabels[var_get_dict_index (vars[i])] = vlabel; + free (vars); + } + else if (lex_match_id (lexer, "MRSETS")) + { + if (!lex_force_match_id (lexer, "COUNTDUPLICATES")) + goto error; + lex_match (lexer, T_EQUALS); + if (!parse_bool (lexer, &ct->mrsets_count_duplicates)) + goto error; + } + else if (lex_match_id (lexer, "SMISSING")) + { + if (lex_match_id (lexer, "VARIABLE")) + ct->smissing_listwise = false; + else if (lex_match_id (lexer, "LISTWISE")) + ct->smissing_listwise = true; + else + { + lex_error_expecting (lexer, "VARIABLE", "LISTWISE"); + goto error; + } + } + else if (lex_match_id (lexer, "PCOMPUTE")) + { + if (!ctables_parse_pcompute (lexer, dataset_dict (ds), ct)) + goto error; + } + else if (lex_match_id (lexer, "PPROPERTIES")) + { + if (!ctables_parse_pproperties (lexer, ct)) + goto error; + } + else if (lex_match_id (lexer, "WEIGHT")) + { + if (!lex_force_match_id (lexer, "VARIABLE")) + goto error; + lex_match (lexer, T_EQUALS); + ct->e_weight = parse_variable (lexer, dataset_dict (ds)); + if (!ct->e_weight) + goto error; + } + else if (lex_match_id (lexer, "HIDESMALLCOUNTS")) + { + if (lex_match_id (lexer, "COUNT")) + { + lex_match (lexer, T_EQUALS); + if (!lex_force_int_range (lexer, "HIDESMALLCOUNTS COUNT", + 2, INT_MAX)) + goto error; + ct->hide_threshold = lex_integer (lexer); + lex_get (lexer); + } + else if (ct->hide_threshold == 0) + ct->hide_threshold = 5; + } + else + { + lex_error_expecting (lexer, "FORMAT", "VLABELS", "MRSETS", + "SMISSING", "PCOMPUTE", "PPROPERTIES", + "WEIGHT", "HIDESMALLCOUNTS", "TABLE"); + goto error; + } + + if (!lex_force_match (lexer, T_SLASH)) + goto error; + } + + size_t allocated_tables = 0; + do + { + if (ct->n_tables >= allocated_tables) + ct->tables = x2nrealloc (ct->tables, &allocated_tables, + sizeof *ct->tables); + + struct ctables_category *cat = xmalloc (sizeof *cat); + *cat = (struct ctables_category) { + .type = CCT_VALUE, + .include_missing = false, + .sort_ascending = true, + }; + + struct ctables_categories *c = xmalloc (sizeof *c); + size_t n_vars = dict_get_n_vars (dataset_dict (ds)); + *c = (struct ctables_categories) { + .n_refs = n_vars, + .cats = cat, + .n_cats = 1, + .show_empty = true, + }; + + struct ctables_categories **categories = xnmalloc (n_vars, + sizeof *categories); + for (size_t i = 0; i < n_vars; i++) + categories[i] = c; + + struct ctables_table *t = xmalloc (sizeof *t); + *t = (struct ctables_table) { + .ctables = ct, + .slabels_axis = PIVOT_AXIS_COLUMN, + .slabels_visible = true, + .clabels_values_map = HMAP_INITIALIZER (t->clabels_values_map), + .label_axis = { + [PIVOT_AXIS_ROW] = PIVOT_AXIS_ROW, + [PIVOT_AXIS_COLUMN] = PIVOT_AXIS_COLUMN, + [PIVOT_AXIS_LAYER] = PIVOT_AXIS_LAYER, + }, + .clabels_from_axis = PIVOT_AXIS_LAYER, + .clabels_to_axis = PIVOT_AXIS_LAYER, + .categories = categories, + .n_categories = n_vars, + .cilevel = 95, + }; + ct->tables[ct->n_tables++] = t; + + lex_match (lexer, T_EQUALS); + int expr_start = lex_ofs (lexer); + if (!ctables_axis_parse (lexer, dataset_dict (ds), + &t->axes[PIVOT_AXIS_ROW])) + goto error; + if (lex_match (lexer, T_BY)) + { + if (!ctables_axis_parse (lexer, dataset_dict (ds), + &t->axes[PIVOT_AXIS_COLUMN])) + goto error; + + if (lex_match (lexer, T_BY)) + { + if (!ctables_axis_parse (lexer, dataset_dict (ds), + &t->axes[PIVOT_AXIS_LAYER])) + goto error; + } + } + int expr_end = lex_ofs (lexer); + + if (!t->axes[PIVOT_AXIS_ROW] && !t->axes[PIVOT_AXIS_COLUMN] + && !t->axes[PIVOT_AXIS_LAYER]) + { + lex_error (lexer, _("At least one variable must be specified.")); + goto error; + } + + const struct ctables_axis *scales[PIVOT_N_AXES]; + size_t n_scales = 0; + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + scales[a] = find_scale (t->axes[a]); + if (scales[a]) + n_scales++; + } + if (n_scales > 1) + { + msg (SE, _("Scale variables may appear only on one axis.")); + if (scales[PIVOT_AXIS_ROW]) + msg_at (SN, scales[PIVOT_AXIS_ROW]->loc, + _("This scale variable appears on the rows axis.")); + if (scales[PIVOT_AXIS_COLUMN]) + msg_at (SN, scales[PIVOT_AXIS_COLUMN]->loc, + _("This scale variable appears on the columns axis.")); + if (scales[PIVOT_AXIS_LAYER]) + msg_at (SN, scales[PIVOT_AXIS_LAYER]->loc, + _("This scale variable appears on the layer axis.")); + goto error; + } + + const struct ctables_axis *summaries[PIVOT_N_AXES]; + size_t n_summaries = 0; + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + { + summaries[a] = (scales[a] + ? scales[a] + : find_categorical_summary_spec (t->axes[a])); + if (summaries[a]) + n_summaries++; + } + if (n_summaries > 1) + { + msg (SE, _("Summaries may appear only on one axis.")); + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + if (summaries[a]) + { + msg_at (SN, summaries[a]->loc, + a == PIVOT_AXIS_ROW + ? _("This variable on the rows axis has a summary.") + : a == PIVOT_AXIS_COLUMN + ? _("This variable on the columns axis has a summary.") + : _("This variable on the layers axis has a summary.")); + if (scales[a]) + msg_at (SN, summaries[a]->loc, + _("This is a scale variable, so it always has a " + "summary even if the syntax does not explicitly " + "specify one.")); + } + goto error; + } + for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) + if (n_summaries ? summaries[a] : t->axes[a]) + { + t->summary_axis = a; + break; + } + + if (lex_token (lexer) == T_ENDCMD) + { + if (!ctables_prepare_table (t)) + goto error; + break; + } + if (!lex_force_match (lexer, T_SLASH)) + goto error; + + while (!lex_match_id (lexer, "TABLE") && lex_token (lexer) != T_ENDCMD) + { + if (lex_match_id (lexer, "SLABELS")) + { + while (lex_token (lexer) != T_SLASH && lex_token (lexer) != T_ENDCMD) + { + if (lex_match_id (lexer, "POSITION")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "COLUMN")) + t->slabels_axis = PIVOT_AXIS_COLUMN; + else if (lex_match_id (lexer, "ROW")) + t->slabels_axis = PIVOT_AXIS_ROW; + else if (lex_match_id (lexer, "LAYER")) + t->slabels_axis = PIVOT_AXIS_LAYER; + else + { + lex_error_expecting (lexer, "COLUMN", "ROW", "LAYER"); + goto error; + } + } + else if (lex_match_id (lexer, "VISIBLE")) + { + lex_match (lexer, T_EQUALS); + if (!parse_bool (lexer, &t->slabels_visible)) + goto error; + } + else + { + lex_error_expecting (lexer, "POSITION", "VISIBLE"); + goto error; + } + } + } + else if (lex_match_id (lexer, "CLABELS")) + { + if (lex_match_id (lexer, "AUTO")) + { + t->label_axis[PIVOT_AXIS_ROW] = PIVOT_AXIS_ROW; + t->label_axis[PIVOT_AXIS_COLUMN] = PIVOT_AXIS_COLUMN; + } + else if (lex_match_id (lexer, "ROWLABELS")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "OPPOSITE")) + t->label_axis[PIVOT_AXIS_ROW] = PIVOT_AXIS_COLUMN; + else if (lex_match_id (lexer, "LAYER")) + t->label_axis[PIVOT_AXIS_ROW] = PIVOT_AXIS_LAYER; + else + { + lex_error_expecting (lexer, "OPPOSITE", "LAYER"); + goto error; + } + } + else if (lex_match_id (lexer, "COLLABELS")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "OPPOSITE")) + t->label_axis[PIVOT_AXIS_COLUMN] = PIVOT_AXIS_ROW; + else if (lex_match_id (lexer, "LAYER")) + t->label_axis[PIVOT_AXIS_COLUMN] = PIVOT_AXIS_LAYER; + else + { + lex_error_expecting (lexer, "OPPOSITE", "LAYER"); + goto error; + } + } + else + { + lex_error_expecting (lexer, "AUTO", "ROWLABELS", + "COLLABELS"); + goto error; + } + } + else if (lex_match_id (lexer, "CRITERIA")) + { + if (!lex_force_match_id (lexer, "CILEVEL")) + goto error; + lex_match (lexer, T_EQUALS); + + if (!lex_force_num_range_halfopen (lexer, "CILEVEL", 0, 100)) + goto error; + t->cilevel = lex_number (lexer); + lex_get (lexer); + } + else if (lex_match_id (lexer, "CATEGORIES")) + { + if (!ctables_table_parse_categories (lexer, dataset_dict (ds), + ct, t)) + goto error; + } + else if (lex_match_id (lexer, "TITLES")) + { + do + { + char **textp; + if (lex_match_id (lexer, "CAPTION")) + textp = &t->caption; + else if (lex_match_id (lexer, "CORNER")) + textp = &t->corner; + else if (lex_match_id (lexer, "TITLE")) + textp = &t->title; + else + { + lex_error_expecting (lexer, "CAPTION", "CORNER", "TITLE"); + goto error; + } + lex_match (lexer, T_EQUALS); + + struct string s = DS_EMPTY_INITIALIZER; + while (lex_is_string (lexer)) + { + if (!ds_is_empty (&s)) + ds_put_byte (&s, ' '); + put_title_text (&s, lex_tokss (lexer), now, + lexer, dataset_dict (ds), + expr_start, expr_end); + lex_get (lexer); + } + free (*textp); + *textp = ds_steal_cstr (&s); + } + while (lex_token (lexer) != T_SLASH + && lex_token (lexer) != T_ENDCMD); + } + else if (lex_match_id (lexer, "SIGTEST")) + { + int start_ofs = lex_ofs (lexer) - 1; + if (!t->chisq) + { + t->chisq = xmalloc (sizeof *t->chisq); + *t->chisq = (struct ctables_chisq) { + .alpha = .05, + .include_mrsets = true, + .all_visible = true, + }; + } + + do + { + if (lex_match_id (lexer, "TYPE")) + { + lex_match (lexer, T_EQUALS); + if (!lex_force_match_id (lexer, "CHISQUARE")) + goto error; + } + else if (lex_match_id (lexer, "ALPHA")) + { + lex_match (lexer, T_EQUALS); + if (!lex_force_num_range_halfopen (lexer, "ALPHA", 0, 1)) + goto error; + t->chisq->alpha = lex_number (lexer); + lex_get (lexer); + } + else if (lex_match_id (lexer, "INCLUDEMRSETS")) + { + lex_match (lexer, T_EQUALS); + if (!parse_bool (lexer, &t->chisq->include_mrsets)) + goto error; + } + else if (lex_match_id (lexer, "CATEGORIES")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "ALLVISIBLE")) + t->chisq->all_visible = true; + else if (lex_match_id (lexer, "SUBTOTALS")) + t->chisq->all_visible = false; + else + { + lex_error_expecting (lexer, + "ALLVISIBLE", "SUBTOTALS"); + goto error; + } + } + else + { + lex_error_expecting (lexer, "TYPE", "ALPHA", + "INCLUDEMRSETS", "CATEGORIES"); + goto error; + } + } + while (lex_token (lexer) != T_SLASH + && lex_token (lexer) != T_ENDCMD); + + lex_ofs_error (lexer, start_ofs, lex_ofs (lexer) - 1, + _("Support for SIGTEST not yet implemented.")); + goto error; + } + else if (lex_match_id (lexer, "COMPARETEST")) + { + int start_ofs = lex_ofs (lexer); + if (!t->pairwise) + { + t->pairwise = xmalloc (sizeof *t->pairwise); + *t->pairwise = (struct ctables_pairwise) { + .type = PROP, + .alpha = { .05, .05 }, + .adjust = BONFERRONI, + .include_mrsets = true, + .meansvariance_allcats = true, + .all_visible = true, + .merge = false, + .apa_style = true, + .show_sig = false, + }; + } + + do + { + if (lex_match_id (lexer, "TYPE")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "PROP")) + t->pairwise->type = PROP; + else if (lex_match_id (lexer, "MEAN")) + t->pairwise->type = MEAN; + else + { + lex_error_expecting (lexer, "PROP", "MEAN"); + goto error; + } + } + else if (lex_match_id (lexer, "ALPHA")) + { + lex_match (lexer, T_EQUALS); + + if (!lex_force_num_range_open (lexer, "ALPHA", 0, 1)) + goto error; + double a0 = lex_number (lexer); + lex_get (lexer); + + lex_match (lexer, T_COMMA); + if (lex_is_number (lexer)) + { + if (!lex_force_num_range_open (lexer, "ALPHA", 0, 1)) + goto error; + double a1 = lex_number (lexer); + lex_get (lexer); + + t->pairwise->alpha[0] = MIN (a0, a1); + t->pairwise->alpha[1] = MAX (a0, a1); + } + else + t->pairwise->alpha[0] = t->pairwise->alpha[1] = a0; + } + else if (lex_match_id (lexer, "ADJUST")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "BONFERRONI")) + t->pairwise->adjust = BONFERRONI; + else if (lex_match_id (lexer, "BH")) + t->pairwise->adjust = BH; + else if (lex_match_id (lexer, "NONE")) + t->pairwise->adjust = 0; + else + { + lex_error_expecting (lexer, "BONFERRONI", "BH", + "NONE"); + goto error; + } + } + else if (lex_match_id (lexer, "INCLUDEMRSETS")) + { + lex_match (lexer, T_EQUALS); + if (!parse_bool (lexer, &t->pairwise->include_mrsets)) + goto error; + } + else if (lex_match_id (lexer, "MEANSVARIANCE")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "ALLCATS")) + t->pairwise->meansvariance_allcats = true; + else if (lex_match_id (lexer, "TESTEDCATS")) + t->pairwise->meansvariance_allcats = false; + else + { + lex_error_expecting (lexer, "ALLCATS", "TESTEDCATS"); + goto error; + } + } + else if (lex_match_id (lexer, "CATEGORIES")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "ALLVISIBLE")) + t->pairwise->all_visible = true; + else if (lex_match_id (lexer, "SUBTOTALS")) + t->pairwise->all_visible = false; + else + { + lex_error_expecting (lexer, "ALLVISIBLE", + "SUBTOTALS"); + goto error; + } + } + else if (lex_match_id (lexer, "MERGE")) + { + lex_match (lexer, T_EQUALS); + if (!parse_bool (lexer, &t->pairwise->merge)) + goto error; + } + else if (lex_match_id (lexer, "STYLE")) + { + lex_match (lexer, T_EQUALS); + if (lex_match_id (lexer, "APA")) + t->pairwise->apa_style = true; + else if (lex_match_id (lexer, "SIMPLE")) + t->pairwise->apa_style = false; + else + { + lex_error_expecting (lexer, "APA", "SIMPLE"); + goto error; + } + } + else if (lex_match_id (lexer, "SHOWSIG")) + { + lex_match (lexer, T_EQUALS); + if (!parse_bool (lexer, &t->pairwise->show_sig)) + goto error; + } + else + { + lex_error_expecting (lexer, "TYPE", "ALPHA", "ADJUST", + "INCLUDEMRSETS", "MEANSVARIANCE", + "CATEGORIES", "MERGE", "STYLE", + "SHOWSIG"); + goto error; + } + } + while (lex_token (lexer) != T_SLASH + && lex_token (lexer) != T_ENDCMD); + + lex_ofs_error (lexer, start_ofs, lex_ofs (lexer) - 1, + _("Support for COMPARETEST not yet implemented.")); + goto error; + } + else + { + lex_error_expecting (lexer, "TABLE", "SLABELS", "CLABELS", + "CRITERIA", "CATEGORIES", "TITLES", + "SIGTEST", "COMPARETEST"); + goto error; + } + + if (!lex_match (lexer, T_SLASH)) + break; + } + + if (t->label_axis[PIVOT_AXIS_ROW] != PIVOT_AXIS_ROW) + { + t->clabels_from_axis = PIVOT_AXIS_ROW; + if (t->label_axis[PIVOT_AXIS_COLUMN] != PIVOT_AXIS_COLUMN) + { + msg (SE, _("ROWLABELS and COLLABELS may not both be specified.")); + goto error; + } + } + else if (t->label_axis[PIVOT_AXIS_COLUMN] != PIVOT_AXIS_COLUMN) + t->clabels_from_axis = PIVOT_AXIS_COLUMN; + t->clabels_to_axis = t->label_axis[t->clabels_from_axis]; + + if (!ctables_prepare_table (t)) + goto error; + } + while (lex_token (lexer) != T_ENDCMD); + + if (!input) + input = proc_open (ds); + bool ok = ctables_execute (ds, input, ct); + ok = proc_commit (ds) && ok; + + ctables_destroy (ct); + return ok ? CMD_SUCCESS : CMD_FAILURE; + +error: + if (input) + proc_commit (ds); + ctables_destroy (ct); + return CMD_FAILURE; +} + diff --git a/src/language/stats/ctables.inc b/src/language/stats/ctables.inc new file mode 100644 index 0000000000..27160997e0 --- /dev/null +++ b/src/language/stats/ctables.inc @@ -0,0 +1,27 @@ +/* -*- c -*- */ + +/* Summary functions for all variables. */ +S(CTSF_COUNT, "COUNT", CTFT_UECELL, CTF_COUNT, CTFA_ALL) +S(CTSF_areaPCT_COUNT, "PCT.COUNT", CTFT_AREA, CTF_PERCENT, CTFA_ALL) +S(CTSF_areaPCT_VALIDN, "PCT.VALIDN", CTFT_AREA, CTF_PERCENT, CTFA_ALL) +S(CTSF_areaPCT_TOTALN, "PCT.TOTALN", CTFT_AREA, CTF_PERCENT, CTFA_ALL) + +/* Scale variables, totals, and subtotals. */ +S(CTSF_MAXIMUM, "MAXIMUM", CTFT_CELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_MEAN, "MEAN", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_MEDIAN, "MEDIAN", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_MINIMUM, "MINIMUM", CTFT_CELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_MISSING, "MISSING", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_MODE, "MODE", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_PTILE, "PTILE", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_RANGE, "RANGE", CTFT_CELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_SEMEAN, "SEMEAN", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_STDDEV, "STDDEV", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_SUM, "SUM", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_TOTALN, "TOTALN", CTFT_UECELL, CTF_COUNT, CTFA_SCALE) +S(CTSF_VALIDN, "VALIDN", CTFT_UECELL, CTF_COUNT, CTFA_SCALE) +S(CTSF_VARIANCE, "VARIANCE", CTFT_UCELL, CTF_GENERAL, CTFA_SCALE) +S(CTSF_areaPCT_SUM, "PCT.SUM", CTFT_AREA, CTF_PERCENT, CTFA_SCALE) + +/* Debugging and troubleshooting. */ +S(CTSF_areaID, "ID", CTFT_AREA, CTF_COUNT, CTFA_ALL) diff --git a/tests/automake.mk b/tests/automake.mk index f9bea8fa51..095ed03579 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -398,6 +398,7 @@ TESTSUITE_AT = \ tests/language/stats/autorecode.at \ tests/language/stats/correlations.at \ tests/language/stats/crosstabs.at \ + tests/language/stats/ctables.at \ tests/language/stats/descriptives.at \ tests/language/stats/examine.at \ tests/language/stats/graph.at \ @@ -487,8 +488,16 @@ $(srcdir)/tests/testsuite.at: tests/testsuite.in tests/automake.mk EXTRA_DIST += tests/testsuite.at +# Generate a TableLook that prints all layers of pivot tables. +check_DATA = tests/all-layers.stt +tests/all-layers.stt: utilities/pspp-output + $(AM_V_GEN)$< get-table-look - $@.tmp + $(AM_V_at)if grep 'printAllLayers="false"' $@.tmp >/dev/null; then :; else \ + echo >&2 "$<: expected printAllLayers=\"false\""; exit 1; fi + $(AM_v_at)sed 's/printAllLayers="false"/printAllLayers="true"/' < $@.tmp > $@ + CHECK_LOCAL += tests_check -tests_check: tests/atconfig tests/atlocal $(TESTSUITE) $(check_PROGRAMS) +tests_check: tests/atconfig tests/atlocal $(TESTSUITE) $(check_PROGRAMS) $(check_DATA) XTERM_LOCALE='' $(SHELL) '$(TESTSUITE)' -C tests AUTOTEST_PATH=$(AUTOTEST_PATH) RUNNER='$(RUNNER)' $(TESTSUITEFLAGS) CLEAN_LOCAL += tests_clean diff --git a/tests/language/stats/ctables.at b/tests/language/stats/ctables.at new file mode 100644 index 0000000000..6f6e182bda --- /dev/null +++ b/tests/language/stats/ctables.at @@ -0,0 +1,5495 @@ +AT_BANNER([CTABLES]) + +dnl Known bugs: +dnl TOTAL interaction with PCOMPUTE, e.g. the following +dnl CTABLES +dnl /PCOMPUTE &all_drivers=EXPR([1 THRU 2] + [3 THRU 4]) +dnl /PPROPERTIES &all_drivers LABEL='All Drivers' +dnl /PCOMPUTE &pct_not_drivers=EXPR([5] / ([1 THRU 2] + [3 THRU 4] + [5]) * 100) +dnl /PPROPERTIES &pct_not_drivers LABEL='% Not Drivers' FORMAT=COUNT PCT40.1 +dnl /TABLE=qn1 BY qns3a +dnl /CATEGORIES VARIABLES=qns3a TOTAL=YES +dnl /CATEGORIES VARIABLES=qn1 [1 THRU 2, SUBTOTAL='Frequent Drivers', +dnl 3 THRU 4, SUBTOTAL='Infrequent Drivers', +dnl &all_drivers, 5, &pct_not_drivers, +dnl MISSING, SUBTOTAL='Not Drivers or Missing']. +dnl yields gaps in the Total column: +dnl ╭─────────────────────────────────────────────────────────────────────────┬──────────────────╮ +dnl │ │ S3a. GENDER: │ +dnl │ ├─────┬──────┬─────┤ +dnl │ │ Male│Female│Total│ +dnl │ ├─────┼──────┼─────┤ +dnl │ │Count│ Count│Count│ +dnl ├─────────────────────────────────────────────────────────────────────────┼─────┼──────┼─────┤ +dnl │ 1. How often do you usually drive a car or other Every day │ 2305│ 2362│ 4667│ +dnl │motor vehicle? Several days a week │ 440│ 834│ 1274│ +dnl │ Frequent Drivers │ 2745│ 3196│ │ +dnl │ Once a week or less │ 125│ 236│ 361│ +dnl │ Only certain times a │ 58│ 72│ 130│ +dnl │ year │ │ │ │ +dnl │ Infrequent Drivers │ 183│ 308│ │ +dnl │ All Drivers │ 2928│ 3504│ │ +dnl │ Never │ 192│ 348│ 540│ +dnl │ % Not Drivers │ 6.2%│ 9.0%│ │ +dnl │ Don't know │ 3│ 5│ 8│ +dnl │ Refused │ 9│ 10│ 19│ +dnl │ Not Drivers or │ 204│ 363│ │ +dnl │ Missing │ │ │ │ +dnl ╰─────────────────────────────────────────────────────────────────────────┴─────┴──────┴─────╯ +dnl Features not yet implemented: +dnl - Multiple response sets +dnl - MRSETS subcommand. +dnl - CATEGORIES: Special case for explicit category specifications and multiple dichotomy sets. +dnl - SIGTEST +dnl - COMPARETEST +dnl - Summary functions: +dnl * .LCL and .UCL suffixes. +dnl * .SE suffixes. +dnl - CATEGORIES: +dnl * Data-dependent sorting. + +AT_SETUP([CTABLES parsing]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES + /FORMAT MINCOLWIDTH=10 MAXCOLWIDTH=20 UNITS=POINTS EMPTY=ZERO MISSING="x" + /FORMAT MINCOLWIDTH=DEFAULT MAXCOLWIDTH=DEFAULT UNITS=INCHES EMPTY=BLANK MISSING="." + /FORMAT UNITS=CM EMPTY="(-)" + /VLABELS VARIABLES=qn1 DISPLAY=DEFAULT + /VLABELS VARIABLES=qn17 DISPLAY=NAME + /VLABELS VARIABLES=qns3a DISPLAY=LABEL + /VLABELS VARIABLES=qnd1 DISPLAY=BOTH + /VLABELS VARIABLES=qn20 DISPLAY=NONE + /MRSETS COUNTDUPLICATES=NO + /MRSETS COUNTDUPLICATES=YES + /SMISSING VARIABLE + /SMISSING LISTWISE + /WEIGHT VARIABLE=qns3a + /HIDESMALLCOUNTS + /HIDESMALLCOUNTS COUNT=10 + /TABLE qnsa1 + /SLABELS POSITION=COLUMN VISIBLE=YES + /SLABELS VISIBLE=NO POSITION=ROW + /SLABELS POSITION=LAYER + /CLABELS AUTO + /CLABELS ROWLABELS=OPPOSITE + /CRITERIA CILEVEL=50 + /CATEGORIES VARIABLES=qn1 qn17 + ORDER=A KEY=VALUE MISSING=INCLUDE TOTAL=YES LABEL="xyzzy" + POSITION=BEFORE EMPTY=INCLUDE. +CTABLES /TABLE qnsa1 /CLABELS ROWLABELS=LAYER. +CTABLES /TABLE qnsa1 /CLABELS COLLABELS=OPPOSITE. +CTABLES /TABLE qnsa1 /CLABELS COLLABELS=LAYER. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +Count +╭───────────────────┬────┬────╮ +│ │ RDD│CELL│ +├───────────────────┼────┼────┤ +│Sa1. SAMPLE SOURCE:│5392│1607│ +╰───────────────────┴────┴────╯ + + Custom Tables +RDD +╭───────────────────┬─────╮ +│ │Count│ +├───────────────────┼─────┤ +│Sa1. SAMPLE SOURCE:│ 5392│ +╰───────────────────┴─────╯ + + Custom Tables +╭────────────────────────┬─────╮ +│ │Count│ +├────────────────────────┼─────┤ +│Sa1. SAMPLE SOURCE: RDD │ 5392│ +│ CELL│ 1607│ +╰────────────────────────┴─────╯ + + Custom Tables +╭────────────────────────┬─────╮ +│ │Count│ +├────────────────────────┼─────┤ +│Sa1. SAMPLE SOURCE: RDD │ 5392│ +│ CELL│ 1607│ +╰────────────────────────┴─────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES parsing - negative]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES. +CTABLES /FORMAT MINCOLWIDTH='foo'. +CTABLES /TABLE qn1 [**]. +CTABLES /TABLE qn1 [NOTAFUNCTION]. +CTABLES /TABLE (qn1. +CTABLES /TABLE **. +CTABLES /TABLE NOTAVAR. +STRING string(A8). +CTABLES /TABLE string[S]. +CTABLES /TABLE qn1 [PTILE 101]. +CTABLES /TABLE qn1 [MEAN F0.1]. +CTABLES /TABLE qn1 [MEAN NEGPAREN1.2]. +CTABLES /TABLE qn1 [MEAN NEGPAREN3.4]. +CTABLES /TABLE qn1 [MEAN TOTALS]. +CTABLES /TABLE qn1 [MEAN TOTALS[STDDEV]%]. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [SUBTOTAL=x]. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [LO **]. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [LO THRU x]. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [1 THRU **]. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 ['x' THRU **]. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&**]. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&x]. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=PTILE(qn1, 101). +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=MEAN(qn1. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=MEAN. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 MISSING=**. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 TOTAL=**. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 LABEL=**. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 POSITION=**. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 EMPTY=**. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 **. +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [1,2,3] **. +CTABLES /PCOMPUTE &k=EXPR(SUBTOTAL[0]). +CTABLES /PCOMPUTE &k=EXPR(SUBTOTAL[1**]). +CTABLES /PCOMPUTE &k=EXPR([LO **]). +CTABLES /PCOMPUTE &k=EXPR([LO THRU **]). +CTABLES /PCOMPUTE &k=EXPR([1 THRU **]). +CTABLES /PCOMPUTE &k=EXPR([1**]). +CTABLES /PCOMPUTE &k=EXPR((1x)). +CTABLES /PCOMPUTE **k. +CTABLES /PCOMPUTE &1. +CTABLES /PCOMPUTE &k**. +CTABLES /PCOMPUTE &k=**. +CTABLES /PCOMPUTE &k=EXPR**. +CTABLES /PCOMPUTE &k=EXPR(1x). +CTABLES /PCOMPUTE &k=EXPR(1) /PCOMPUTE &k=EXPR(2). +CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k FORMAT=NOTAFUNCTION. +CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k FORMAT=PTILE **. +CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k LABEL=**. +CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k HIDESOURCECATS=**. +CTABLES /PCOMPUTE &k=EXPR(1) /PPROPERTIES &k **. +CTABLES /FORMAT EMPTY=**. +CTABLES /FORMAT MISSING=**. +CTABLES /FORMAT **. +CTABLES /FORMAT MINCOLWIDTH=20 MAXCOLWIDTH=10/. +CTABLES /VLABELS **. +CTABLES /VLABELS VARIABLES=NOTAVAR. +CTABLES /VLABELS VARIABLES=qn1 **. +CTABLES /VLABELS VARIABLES=qn1 DISPLAY=**. +CTABLES /MRSETS **. +CTABLES /MRSETS COUNTDUPLICATES=**. +CTABLES /SMISSING **. +CTABLES /WEIGHT **. +CTABLES /WEIGHT VARIABLE=NOTAVAR. +CTABLES /HIDESMALLCOUNTS COUNT=1. +CTABLES /QUUX. +CTABLES /HIDESMALLCOUNTS COUNT=2. +CTABLES /TABLE qn1**. +CTABLES /TABLE qn1 /SLABELS POSITION=**. +CTABLES /TABLE qn1 /SLABELS VISIBLE=**. +CTABLES /TABLE qn1 /SLABELS **. +CTABLES /TABLE qn1 /CLABELS ROWLABELS=**. +CTABLES /TABLE qn1 /CLABELS COLLABELS=**. +CTABLES /TABLE qn1 /CLABELS **. +CTABLES /TABLE qn1 /CRITERIA **. +CTABLES /TABLE qn1 /CRITERIA CILEVEL=101. +CTABLES /TABLE qn1 /TITLES **. +CTABLES /TABLE qn1 /SIGTEST TYPE=**. +CTABLES /TABLE qn1 /SIGTEST ALPHA=**. +CTABLES /TABLE qn1 /SIGTEST INCLUDEMRSETS=**. +CTABLES /TABLE qn1 /SIGTEST CATEGORIES=**. +CTABLES /TABLE qn1 /SIGTEST **. +CTABLES /TABLE qn1 /COMPARETEST TYPE=**. +CTABLES /TABLE qn1 /COMPARETEST ALPHA=**. +CTABLES /TABLE qn1 /COMPARETEST ALPHA=0,5. +CTABLES /TABLE qn1 /COMPARETEST ADJUST=**. +CTABLES /TABLE qn1 /COMPARETEST INCLUDEMRSETS=**. +CTABLES /TABLE qn1 /COMPARETEST MEANSVARIANCE=**. +CTABLES /TABLE qn1 /COMPARETEST CATEGORIES=**. +CTABLES /TABLE qn1 /COMPARETEST MERGE=**. +CTABLES /TABLE qn1 /COMPARETEST STYLE=**. +CTABLES /TABLE qn1 /COMPARETEST SHOWSIG=**. +CTABLES /TABLE qn1 /COMPARETEST **. +CTABLES /TABLE qn1 / **. +CTABLES /TABLE qn1 /CLABELS ROWLABELS=OPPOSITE /CLABELS COLLABELS=OPPOSITE. +CTABLES /TABLE qn20 > qnd1. +CTABLES /TABLE qn1 [ROWPCT] > qnsa1. +NUMERIC datetime (DATETIME17.0). +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=datetime ['123']. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [1], +[[ctables.sps:2.8: error: CTABLES: Syntax error at end of command: expecting `/'. + +ctables.sps:3.29-3.33: error: CTABLES: Syntax error at `'foo'': Expected non- +negative number for MINCOLWIDTH. + +ctables.sps:4.21-4.22: error: CTABLES: Syntax error at `**': expecting +identifier. + +ctables.sps:5.21-5.32: error: CTABLES: Syntax error at `NOTAFUNCTION': Expecting +summary function name. + +ctables.sps:6.20: error: CTABLES: Syntax error at end of command: expecting `@:}@'. + +ctables.sps:7.16-7.17: error: CTABLES: Syntax error at `**': expecting +identifier. + +ctables.sps:8: error: CTABLES: NOTAVAR is not a variable name. + +ctables.sps:10.16-10.24: error: CTABLES: Cannot use string variable string as a +scale variable. + 10 | CTABLES /TABLE string[S]. + | ^~~~~~~~~ + +ctables.sps:11.27-11.29: error: CTABLES: Syntax error at `101': Expected number +between 0 and 100 for PTILE. + +ctables.sps:12: error: CTABLES: Output format F0.1 specifies width 0, but F +requires a width between 1 and 40. + +ctables.sps:13.26-13.36: error: CTABLES: Syntax error at `NEGPAREN1.2': Output +format NEGPAREN requires width 2 or greater. + +ctables.sps:14.26-14.36: error: CTABLES: Syntax error at `NEGPAREN3.4': Output +format NEGPAREN requires width greater than decimals. + +ctables.sps:15.21-15.24: error: CTABLES: Summary function MEAN applies only to +scale variables. + 15 | CTABLES /TABLE qn1 [MEAN TOTALS]. + | ^~~~ + +ctables.sps:15.16-15.18: note: CTABLES: 'QN1' is not a scale variable. + 15 | CTABLES /TABLE qn1 [MEAN TOTALS]. + | ^~~ + +ctables.sps:15.32: error: CTABLES: Syntax error at `@:>@': expecting `@<:@'. + +ctables.sps:16.21-16.24: error: CTABLES: Summary function MEAN applies only to +scale variables. + 16 | CTABLES /TABLE qn1 [MEAN TOTALS[STDDEV]%]. + | ^~~~ + +ctables.sps:16.16-16.18: note: CTABLES: 'QN1' is not a scale variable. + 16 | CTABLES /TABLE qn1 [MEAN TOTALS[STDDEV]%]. + | ^~~ + +ctables.sps:16.40: error: CTABLES: Syntax error at `%': expecting `@:>@'. + +ctables.sps:17.56: error: CTABLES: Syntax error at `x': expecting string. + +ctables.sps:18.50-18.51: error: CTABLES: Syntax error at `**': expecting THRU. + +ctables.sps:19.55: error: CTABLES: Syntax error at `x': expecting number. + +ctables.sps:20.54-20.55: error: CTABLES: Syntax error at `**': expecting number. + +ctables.sps:21.56-21.57: error: CTABLES: Syntax error at `**': expecting string. + +ctables.sps:22.48-22.49: error: CTABLES: Syntax error at `**': expecting +identifier. + +ctables.sps:23.47-23.48: error: CTABLES: Unknown postcompute &x. + 23 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&x]. + | ^~ + +ctables.sps:24.61-24.63: error: CTABLES: Syntax error at `101': Expected number +between 0 and 100 for PTILE. + +ctables.sps:25.58: error: CTABLES: Syntax error at end of command: expecting +`@:}@'. + +ctables.sps:26.54: error: CTABLES: Syntax error at end of command: expecting +`@{:@'. + +ctables.sps:27.54-27.55: error: CTABLES: Syntax error at `**': expecting INCLUDE +or EXCLUDE. + +ctables.sps:28.52-28.53: error: CTABLES: Syntax error at `**': expecting YES or +NO. + +ctables.sps:29.52-29.53: error: CTABLES: Syntax error at `**': expecting string. + +ctables.sps:30.55-30.56: error: CTABLES: Syntax error at `**': expecting BEFORE +or AFTER. + +ctables.sps:31.52-31.53: error: CTABLES: Syntax error at `**': expecting INCLUDE +or EXCLUDE. + +ctables.sps:32.46-32.47: error: CTABLES: Syntax error at `**': expecting ORDER, +KEY, MISSING, TOTAL, LABEL, POSITION, or EMPTY. + +ctables.sps:33.54-33.55: error: CTABLES: Syntax error at `**': expecting TOTAL, +LABEL, POSITION, or EMPTY. + +ctables.sps:34.36: error: CTABLES: Syntax error at `0': Expected positive +integer for SUBTOTAL. + +ctables.sps:35.37-35.38: error: CTABLES: Syntax error at `**': expecting `@:>@'. + +ctables.sps:36.31-36.32: error: CTABLES: Syntax error at `**': expecting THRU. + +ctables.sps:37.36-37.37: error: CTABLES: Syntax error at `**': expecting number. + +ctables.sps:38.35-38.36: error: CTABLES: Syntax error at `**': expecting number. + +ctables.sps:39.29-39.30: error: CTABLES: Syntax error at `**': expecting `@:>@'. + +ctables.sps:40.29: error: CTABLES: Syntax error at `x': expecting `@:}@'. + +ctables.sps:41.19-41.20: error: CTABLES: Syntax error at `**': expecting &. + +ctables.sps:42.20: error: CTABLES: Syntax error at `1': expecting identifier. + +ctables.sps:43.21-43.22: error: CTABLES: Syntax error at `**': expecting `='. + +ctables.sps:44.22-44.23: error: CTABLES: Syntax error at `**': expecting EXPR. + +ctables.sps:45.26-45.27: error: CTABLES: Syntax error at `**': expecting `('. + +ctables.sps:46.28: error: CTABLES: Syntax error at `x': expecting `)'. + +ctables.sps:47.31-47.49: warning: CTABLES: New definition of &k will override +the previous definition. + 47 | CTABLES /PCOMPUTE &k=EXPR(1) /PCOMPUTE &k=EXPR(2). + | ^~~~~~~~~~~~~~~~~~~ + +ctables.sps:47.10-47.28: note: CTABLES: This is the previous definition. + 47 | CTABLES /PCOMPUTE &k=EXPR(1) /PCOMPUTE &k=EXPR(2). + | ^~~~~~~~~~~~~~~~~~~ + +ctables.sps:47.50: error: CTABLES: Syntax error at end of command: expecting +`/'. + +ctables.sps:48.53-48.64: error: CTABLES: Syntax error at `NOTAFUNCTION': +Expecting summary function name. + +ctables.sps:49.59-49.60: error: CTABLES: Syntax error at `**': Expected number +between 0 and 100 for PTILE. + +ctables.sps:50.52-50.53: error: CTABLES: Syntax error at `**': expecting string. + +ctables.sps:51.61-51.62: error: CTABLES: Syntax error at `**': expecting YES or +NO. + +ctables.sps:52.46-52.47: error: CTABLES: Syntax error at `**': expecting LABEL, +FORMAT, or HIDESOURCECATS. + +ctables.sps:53.23-53.24: error: CTABLES: Syntax error at `**': expecting string. + +ctables.sps:54.25-54.26: error: CTABLES: Syntax error at `**': expecting string. + +ctables.sps:55.17-55.18: error: CTABLES: Syntax error at `**': expecting +MINCOLWIDTH, MAXCOLWIDTH, UNITS, EMPTY, or MISSING. + +ctables.sps:56: error: CTABLES: MINCOLWIDTH must not be greater than +MAXCOLWIDTH. + +ctables.sps:57.18-57.19: error: CTABLES: Syntax error at `**': expecting +VARIABLES. + +ctables.sps:58: error: CTABLES: NOTAVAR is not a variable name. + +ctables.sps:59.32-59.33: error: CTABLES: Syntax error at `**': expecting +DISPLAY. + +ctables.sps:60.40-60.41: error: CTABLES: Syntax error at `**': expecting +DEFAULT, NAME, LABEL, BOTH, or NONE. + +ctables.sps:61.17-61.18: error: CTABLES: Syntax error at `**': expecting +COUNTDUPLICATES. + +ctables.sps:62.33-62.34: error: CTABLES: Syntax error at `**': expecting YES or +NO. + +ctables.sps:63.19-63.20: error: CTABLES: Syntax error at `**': expecting +VARIABLE or LISTWISE. + +ctables.sps:64.17-64.18: error: CTABLES: Syntax error at `**': expecting +VARIABLE. + +ctables.sps:65: error: CTABLES: NOTAVAR is not a variable name. + +ctables.sps:66.32: error: CTABLES: Syntax error at `1': Expected integer 2 or +greater for HIDESMALLCOUNTS COUNT. + +ctables.sps:67.10-67.13: error: CTABLES: Syntax error at `QUUX': expecting one +of the following: FORMAT, VLABELS, MRSETS, SMISSING, PCOMPUTE, PPROPERTIES, +WEIGHT, HIDESMALLCOUNTS, TABLE. + +ctables.sps:68.33: error: CTABLES: Syntax error at end of command: expecting +`/'. + +ctables.sps:69.19-69.20: error: CTABLES: Syntax error at `**': expecting `/'. + +ctables.sps:70.38-70.39: error: CTABLES: Syntax error at `**': expecting COLUMN, +ROW, or LAYER. + +ctables.sps:71.37-71.38: error: CTABLES: Syntax error at `**': expecting YES or +NO. + +ctables.sps:72.29-72.30: error: CTABLES: Syntax error at `**': expecting +POSITION or VISIBLE. + +ctables.sps:73.39-73.40: error: CTABLES: Syntax error at `**': expecting +OPPOSITE or LAYER. + +ctables.sps:74.39-74.40: error: CTABLES: Syntax error at `**': expecting +OPPOSITE or LAYER. + +ctables.sps:75.29-75.30: error: CTABLES: Syntax error at `**': expecting AUTO, +ROWLABELS, or COLLABELS. + +ctables.sps:76.30-76.31: error: CTABLES: Syntax error at `**': expecting +CILEVEL. + +ctables.sps:77.38-77.40: error: CTABLES: Syntax error at `101': Expected number +in @<:@0,100@:}@ for CILEVEL. + +ctables.sps:78.28-78.29: error: CTABLES: Syntax error at `**': expecting +CAPTION, CORNER, or TITLE. + +ctables.sps:79.34-79.35: error: CTABLES: Syntax error at `**': expecting +CHISQUARE. + +ctables.sps:80.35-80.36: error: CTABLES: Syntax error at `**': Expected number +in @<:@0,1@:}@ for ALPHA. + +ctables.sps:81.43-81.44: error: CTABLES: Syntax error at `**': expecting YES or +NO. + +ctables.sps:82.40-82.41: error: CTABLES: Syntax error at `**': expecting +ALLVISIBLE or SUBTOTALS. + +ctables.sps:83.29-83.30: error: CTABLES: Syntax error at `**': expecting TYPE, +ALPHA, INCLUDEMRSETS, or CATEGORIES. + +ctables.sps:84.38-84.39: error: CTABLES: Syntax error at `**': expecting PROP or +MEAN. + +ctables.sps:85.39-85.40: error: CTABLES: Syntax error at `**': Expected number +in (0,1) for ALPHA. + +ctables.sps:86.39: error: CTABLES: Syntax error at `0': Expected number in (0,1) +for ALPHA. + +ctables.sps:87.40-87.41: error: CTABLES: Syntax error at `**': expecting +BONFERRONI, BH, or NONE. + +ctables.sps:88.47-88.48: error: CTABLES: Syntax error at `**': expecting YES or +NO. + +ctables.sps:89.47-89.48: error: CTABLES: Syntax error at `**': expecting ALLCATS +or TESTEDCATS. + +ctables.sps:90.44-90.45: error: CTABLES: Syntax error at `**': expecting +ALLVISIBLE or SUBTOTALS. + +ctables.sps:91.39-91.40: error: CTABLES: Syntax error at `**': expecting YES or +NO. + +ctables.sps:92.39-92.40: error: CTABLES: Syntax error at `**': expecting APA or +SIMPLE. + +ctables.sps:93.41-93.42: error: CTABLES: Syntax error at `**': expecting YES or +NO. + +ctables.sps:94.33-94.34: error: CTABLES: Syntax error at `**': expecting one of +the following: TYPE, ALPHA, ADJUST, INCLUDEMRSETS, MEANSVARIANCE, CATEGORIES, +MERGE, STYLE, SHOWSIG. + +ctables.sps:95.22-95.23: error: CTABLES: Syntax error at `**': expecting TABLE, +SLABELS, CLABELS, CRITERIA, CATEGORIES, TITLES, SIGTEST, or COMPARETEST. + +ctables.sps:96: error: CTABLES: ROWLABELS and COLLABELS may not both be +specified. + +ctables.sps:97.16-97.26: error: CTABLES: Cannot nest scale variables. + 97 | CTABLES /TABLE qn20 > qnd1. + | ^~~~~~~~~~~ + +ctables.sps:97.16-97.19: note: CTABLES: This is an outer scale variable. + 97 | CTABLES /TABLE qn20 > qnd1. + | ^~~~ + +ctables.sps:97.23-97.26: note: CTABLES: This is an inner scale variable. + 97 | CTABLES /TABLE qn20 > qnd1. + | ^~~~ + +ctables.sps:98.16-98.35: error: CTABLES: Summaries may only be requested for +categorical variables at the innermost nesting level. + 98 | CTABLES /TABLE qn1 [ROWPCT] > qnsa1. + | ^~~~~~~~~~~~~~~~~~~~ + +ctables.sps:98.16-98.18: note: CTABLES: This outer categorical variable has a +summary. + 98 | CTABLES /TABLE qn1 [ROWPCT] > qnsa1. + | ^~~ + +ctables.sps:100.52-100.56: error: CTABLES: Failed to parse category +specification as format DATETIME: Day (123) must be between 1 and 31.. + 100 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=datetime ['123']. + | ^~~~~ +]]) +AT_CLEANUP + +AT_SETUP([CTABLES parsing - more negative]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc]. +CTABLES /PCOMPUTE &pc=EXPR(TOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc]. +CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 [&pc, SUBTOTAL, SUBTOTAL]. + +STRING string(A8). +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 ['string']. +CTABLES /TABLE string /CATEGORIES VARIABLES=string [1]. + +CTABLES /TABLE qn1 /CLABELS ROWLABELS=OPPOSITE /CATEGORIES VARIABLES=qn1 KEY=MEAN(qn1). + +CTABLES /TABLE qnd1 /CLABELS ROWLABELS=OPPOSITE. +CTABLES /TABLE qn1 + string /CLABELS ROWLABELS=OPPOSITE. +CTABLES /TABLE qn1 + qnsa1 /CLABELS ROWLABELS=OPPOSITE. +CTABLES /TABLE qn105ba + qn105bb /CLABELS ROWLABELS=OPPOSITE /CATEGORIES VARIABLES=qn105ba [1,2,3]. + +CTABLES /PCOMPUTE &x=EXPR(1**2**3). +CTABLES /PCOMPUTE &x=EXPR([**]). +CTABLES /PCOMPUTE &x=EXPR(**). + +CTABLES /TABLE. + +CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT]. + +CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 KEY=PTILE(qn1, 50). + +CTABLES /TABLE $mrset. + +CTABLES /TABLE qn113 /SIGTEST TYPE=CHISQUARE. +CTABLES /TABLE qn113 /COMPARETEST TYPE=PROP. + +CTABLES /TABLE qn113 [COUNT.UCL]. + +CTABLES /TABLE qn1 /CATEGORIES **. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [1], +[[ctables.sps:2.76-2.78: error: CTABLES: Computed category &pc references a +category not included in the category list. + 2 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES +VARIABLES=qn1 [&pc]. + | +^~~ + +ctables.sps:2.28-2.35: note: CTABLES: This is the missing category. + 2 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES +VARIABLES=qn1 [&pc]. + | ^~~~~~~~ + +ctables.sps:2.76-2.79: note: CTABLES: To fix the problem, add subtotals to the +list of categories here. + 2 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES +VARIABLES=qn1 [&pc]. + | +^~~~ + +ctables.sps:3.73-3.75: error: CTABLES: Computed category &pc references a +category not included in the category list. + 3 | CTABLES /PCOMPUTE &pc=EXPR(TOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 +[&pc]. + | +^~~ + +ctables.sps:3.28-3.32: note: CTABLES: This is the missing category. + 3 | CTABLES /PCOMPUTE &pc=EXPR(TOTAL) /TABLE qn1 /CATEGORIES VARIABLES=qn1 +[&pc]. + | ^~~~~ + +ctables.sps:3: note: CTABLES: To fix the problem, add TOTAL=YES to the +variable's CATEGORIES specification. + +ctables.sps:4.76-4.99: error: CTABLES: These categories include 2 instances of +SUBTOTAL or HSUBTOTAL, so references from computed categories must refer to +subtotals by position, e.g. SUBTOTAL[1]. + 4 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES +VARIABLES=qn1 [&pc, SUBTOTAL, SUBTOTAL]. + | +^~~~~~~~~~~~~~~~~~~~~~~~ + +ctables.sps:4.28-4.35: note: CTABLES: This is the reference that lacks a +position. + 4 | CTABLES /PCOMPUTE &pc=EXPR(SUBTOTAL) /TABLE qn1 /CATEGORIES +VARIABLES=qn1 [&pc, SUBTOTAL, SUBTOTAL]. + | ^~~~~~~~ + +ctables.sps:7.47-7.54: error: CTABLES: This category specification may be +applied only to string variables, but this subcommand tries to apply it to +numeric variable QN1. + 7 | CTABLES /TABLE qn1 /CATEGORIES VARIABLES=qn1 ['string']. + | ^~~~~~~~ + +ctables.sps:8.53: error: CTABLES: This category specification may be applied +only to numeric variables, but this subcommand tries to apply it to string +variable string. + 8 | CTABLES /TABLE string /CATEGORIES VARIABLES=string [1]. + | ^ + +ctables.sps:10.74-10.86: error: CTABLES: Syntax error at `KEY=MEAN(qn1)': Data- +dependent sorting is not implemented. + +ctables.sps:12: error: CTABLES: ROWLABELS=OPPOSITE requires the variables to be +moved to be categorical, but qnd1 is a scale variable. + +ctables.sps:13: error: CTABLES: ROWLABELS=OPPOSITE requires the variables to be +moved to have the same width, but QN1 has width 0 and string has width 8. + +ctables.sps:14: error: CTABLES: ROWLABELS=OPPOSITE requires the variables to be +moved to have the same value labels, but QN1 and QNSA1 have different value +labels. + +ctables.sps:15: error: CTABLES: ROWLABELS=OPPOSITE requires the variables to be +moved to have the same category specifications, but QN105BA and QN105BB have +different category specifications. + +ctables.sps:17.27-17.33: warning: CTABLES: The exponentiation operator (`**') is +left-associative: `a**b**c' equals `(a**b)**c', not `a**(b**c)'. To disable +this warning, insert parentheses. + 17 | CTABLES /PCOMPUTE &x=EXPR(1**2**3). + | ^~~~~~~ + +ctables.sps:17.35: error: CTABLES: Syntax error at end of command: expecting +`/'. + +ctables.sps:18.28-18.29: error: CTABLES: Syntax error at `**'. + +ctables.sps:19.27-19.28: error: CTABLES: Syntax error at `**'. + +ctables.sps:21.15: error: CTABLES: Syntax error at end of command: At least one +variable must be specified. + +ctables.sps:23: error: CTABLES: Summaries may appear only on one axis. + +ctables.sps:23.50-23.54: note: CTABLES: This variable on the layers axis has a +summary. + 23 | CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT]. + | ^~~~~ + +ctables.sps:23.16-23.20: note: CTABLES: This variable on the rows axis has a +summary. + 23 | CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT]. + | ^~~~~ + +ctables.sps:23.33-23.37: note: CTABLES: This variable on the columns axis has a +summary. + 23 | CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT]. + | ^~~~~ + +ctables.sps:23.33-23.37: note: CTABLES: This is a scale variable, so it always +has a summary even if the syntax does not explicitly specify one. + 23 | CTABLES /TABLE qn113 [COUNT] BY qn114 [COUNT] BY qn116 [COUNT]. + | ^~~~~ + +ctables.sps:25.46-25.63: error: CTABLES: Syntax error at `KEY=PTILE(qn1, 50)': +Data-dependent sorting is not implemented. + +ctables.sps:27.16-27.21: error: CTABLES: Syntax error at `$mrset': Multiple +response set support not implemented. + +ctables.sps:29.23-29.44: error: CTABLES: Syntax error at `SIGTEST +TYPE=CHISQUARE': Support for SIGTEST not yet implemented. + +ctables.sps:30.35-30.43: error: CTABLES: Syntax error at `TYPE=PROP': Support +for COMPARETEST not yet implemented. + +ctables.sps:32.23-32.31: error: CTABLES: Syntax error at `COUNT.UCL': Support +for LCL, UCL, and SE summary functions is not yet implemented. + +ctables.sps:34.32-34.33: error: CTABLES: Syntax error at `**': expecting +VARIABLES. +]]) +AT_CLEANUP + +AT_SETUP([CTABLES one categorical variable]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /TABLE qn1. +CTABLES /TABLE BY qn1. +CTABLES /TABLE BY BY qn1. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭────────────────────────────────────────────────────────────────────────┬─────╮ +│ │Count│ +├────────────────────────────────────────────────────────────────────────┼─────┤ +│ 1. How often do you usually drive a car or other Every day │ 4667│ +│motor vehicle? Several days a week │ 1274│ +│ Once a week or less │ 361│ +│ Only certain times a │ 130│ +│ year │ │ +│ Never │ 540│ +╰────────────────────────────────────────────────────────────────────────┴─────╯ + + Custom Tables +╭──────────────────────────────────────────────────────────────────────────────╮ +│ 1. How often do you usually drive a car or other motor vehicle? │ +├─────────┬──────────────────┬──────────────────┬────────────────────────┬─────┤ +│ │ Several days a │ Once a week or │ Only certain times a │ │ +│Every day│ week │ less │ year │Never│ +├─────────┼──────────────────┼──────────────────┼────────────────────────┼─────┤ +│ Count │ Count │ Count │ Count │Count│ +├─────────┼──────────────────┼──────────────────┼────────────────────────┼─────┤ +│ 4667│ 1274│ 361│ 130│ 540│ +╰─────────┴──────────────────┴──────────────────┴────────────────────────┴─────╯ + +Custom Tables +Every day +╭─────╮ +│Count│ +├─────┤ +│ 4667│ +╰─────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES one string variable]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +STRING licensed(A8). +MISSING VALUES licensed('DontKnow', 'Refused'). +RECODE qnd7a(1='Yes')(2='No')(3='DontKnow')(4='Refused') INTO licensed. +CTABLES /TABLE licensed. +CTABLES /TABLE licensed [COUNT, TOTALS[COUNT, VALIDN]] /CATEGORIES VARIABLES=ALL TOTAL=YES MISSING=INCLUDE. +CTABLES /TABLE licensed /CATEGORIES VARIABLES=licensed ['Yes', 'No'] TOTAL=YES. +* Notice that the string matching is case-sensitive. +CTABLES /TABLE licensed /CATEGORIES VARIABLES=licensed ['Yes', 'no'] TOTAL=YES. +CTABLES /TABLE licensed /CATEGORIES VARIABLES=licensed ['No' THRU 'yes'] TOTAL=YES. +CTABLES + /PCOMPUTE ¬yes=EXPR(['No']+['DontKnow']+['Refused']) + /PPROPERTIES ¬yes LABEL='Not Yes' HIDESOURCECATS=YES + /TABLE licensed + /CATEGORIES VARIABLES=licensed ['Yes', ¬yes, 'No', 'DontKnow', 'Refused']. +CTABLES + /PCOMPUTE ¬yes=EXPR(['DontKnow' THRU 'No'] + ['Refused']) + /PPROPERTIES ¬yes LABEL='Not Yes' HIDESOURCECATS=YES + /TABLE licensed + /CATEGORIES VARIABLES=licensed ['Yes', ¬yes, 'DontKnow' THRU 'No', 'Refused']. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭────────────┬─────╮ +│ │Count│ +├────────────┼─────┤ +│licensed No │ 572│ +│ Yes│ 6379│ +╰────────────┴─────╯ + + Custom Tables +╭─────────────────┬─────┬───────╮ +│ │Count│Valid N│ +├─────────────────┼─────┼───────┤ +│licensed DontKnow│ 4│ │ +│ No │ 572│ │ +│ Refused │ 44│ │ +│ Yes │ 6379│ │ +│ Total │ 6999│ 6951│ +╰─────────────────┴─────┴───────╯ + + Custom Tables +╭──────────────┬─────╮ +│ │Count│ +├──────────────┼─────┤ +│licensed Yes │ 6379│ +│ No │ 572│ +│ Total│ 6951│ +╰──────────────┴─────╯ + + Custom Tables +╭──────────────┬─────╮ +│ │Count│ +├──────────────┼─────┤ +│licensed Yes │ 6379│ +│ no │ 0│ +│ Total│ 6379│ +╰──────────────┴─────╯ + + Custom Tables +╭────────────────┬─────╮ +│ │Count│ +├────────────────┼─────┤ +│licensed No │ 572│ +│ Refused│ 44│ +│ Yes │ 6379│ +│ Total │ 6995│ +╰────────────────┴─────╯ + + Custom Tables +╭────────────────┬─────╮ +│ │Count│ +├────────────────┼─────┤ +│licensed Yes │ 6379│ +│ Not Yes│ 620│ +╰────────────────┴─────╯ + + Custom Tables +╭────────────────┬─────╮ +│ │Count│ +├────────────────┼─────┤ +│licensed Yes │ 6379│ +│ Not Yes│ 620│ +╰────────────────┴─────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES one scale variable]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +DESCRIPTIVES qnd1. +CTABLES /TABLE qnd1[COUNT, VALIDN, TOTALN, MEAN, STDDEV, MINIMUM, MAXIMUM]. +CTABLES /TABLE BY qnd1. +CTABLES /TABLE BY BY qnd1. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Descriptive Statistics +╭──────────────────────────┬────┬─────┬───────┬───────┬───────────╮ +│ │ N │ Mean│Std Dev│Minimum│ Maximum │ +├──────────────────────────┼────┼─────┼───────┼───────┼───────────┤ +│D1. AGE: What is your age?│6930│48.26│ 19.01│ 16│86 or older│ +│Valid N (listwise) │6999│ │ │ │ │ +│Missing N (listwise) │ 69│ │ │ │ │ +╰──────────────────────────┴────┴─────┴───────┴───────┴───────────╯ + + Custom Tables +╭──────────────────────┬─────┬───────┬───────┬────┬────────────┬───────┬───────╮ +│ │ │ │ │ │ Std │ │ │ +│ │Count│Valid N│Total N│Mean│ Deviation │Minimum│Maximum│ +├──────────────────────┼─────┼───────┼───────┼────┼────────────┼───────┼───────┤ +│D1. AGE: What is your │ 6999│ 6930│ 6999│ 48│ 19│ 16│ 86│ +│age? │ │ │ │ │ │ │ │ +╰──────────────────────┴─────┴───────┴───────┴────┴────────────┴───────┴───────╯ + + Custom Tables +╭──────────────────────────╮ +│D1. AGE: What is your age?│ +├──────────────────────────┤ +│ Mean │ +├──────────────────────────┤ +│ 48│ +╰──────────────────────────╯ + +Custom Tables +D1. AGE: What is your age? +╭────╮ +│Mean│ +├────┤ +│ 48│ +╰────╯ +]) +AT_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'. +CTABLES /TABLE qn105ba + qn105bb + qn105bc + qn105bd BY qns3a [COLPCT PCT8.0]. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭───────────────────────────────────────────────────────────────┬──────────────╮ +│ │ S3a. GENDER: │ +│ ├──────┬───────┤ +│ │ Male │ Female│ +│ ├──────┼───────┤ +│ │Column│ Column│ +│ │ % │ % │ +├───────────────────────────────────────────────────────────────┼──────┼───────┤ +│105b. How likely is it that drivers who have had Almost │ 10%│ 11%│ +│too much to drink to drive safely will A. Get certain │ │ │ +│stopped by the police? Very likely │ 21%│ 22%│ +│ Somewhat │ 38%│ 42%│ +│ likely │ │ │ +│ Somewhat │ 21%│ 18%│ +│ unlikely │ │ │ +│ Very │ 10%│ 8%│ +│ unlikely │ │ │ +├───────────────────────────────────────────────────────────────┼──────┼───────┤ +│105b. How likely is it that drivers who have had Almost │ 14%│ 18%│ +│too much to drink to drive safely will B. Have an certain │ │ │ +│accident? Very likely │ 36%│ 45%│ +│ Somewhat │ 39%│ 32%│ +│ likely │ │ │ +│ Somewhat │ 9%│ 4%│ +│ unlikely │ │ │ +│ Very │ 3%│ 2%│ +│ unlikely │ │ │ +├───────────────────────────────────────────────────────────────┼──────┼───────┤ +│105b. How likely is it that drivers who have had Almost │ 18%│ 16%│ +│too much to drink to drive safely will C. Be certain │ │ │ +│convicted for drunk driving? Very likely │ 32%│ 28%│ +│ Somewhat │ 27%│ 32%│ +│ likely │ │ │ +│ Somewhat │ 15%│ 15%│ +│ unlikely │ │ │ +│ Very │ 9%│ 9%│ +│ unlikely │ │ │ +├───────────────────────────────────────────────────────────────┼──────┼───────┤ +│105b. How likely is it that drivers who have had Almost │ 16%│ 16%│ +│too much to drink to drive safely will D. Be certain │ │ │ +│arrested for drunk driving? Very likely │ 26%│ 27%│ +│ Somewhat │ 32%│ 35%│ +│ likely │ │ │ +│ Somewhat │ 17%│ 15%│ +│ unlikely │ │ │ +│ Very │ 9%│ 7%│ +│ unlikely │ │ │ +╰───────────────────────────────────────────────────────────────┴──────┴───────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES show or hide empty categories]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +IF (qn105ba = 2) qn105ba = 1. +IF (qns3a = 1) qns3a = 2. +CTABLES /TABLE qn105ba BY qns3a [COLPCT PCT8.0]. +CTABLES /TABLE qn105ba BY qns3a [COLPCT PCT8.0] + /CATEGORIES VAR=qn105ba EMPTY=EXCLUDE. +CTABLES /TABLE qn105ba BY qns3a [COLPCT PCT8.0] + /CATEGORIES VAR=qns3a EMPTY=EXCLUDE. +CTABLES /TABLE qn105ba BY qns3a [COLPCT PCT8.0] + /CATEGORIES VAR=ALL EMPTY=EXCLUDE. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭──────────────────────────────────────────────────────────────┬───────────────╮ +│ │ S3a. GENDER: │ +│ ├───────┬───────┤ +│ │ Male │ Female│ +│ ├───────┼───────┤ +│ │ Column│ Column│ +│ │ % │ % │ +├──────────────────────────────────────────────────────────────┼───────┼───────┤ +│105b. How likely is it that drivers who have had Almost │ .│ 32%│ +│too much to drink to drive safely will A. Get certain │ │ │ +│stopped by the police? Very likely│ .│ 0%│ +│ Somewhat │ .│ 40%│ +│ likely │ │ │ +│ Somewhat │ .│ 19%│ +│ unlikely │ │ │ +│ Very │ .│ 9%│ +│ unlikely │ │ │ +╰──────────────────────────────────────────────────────────────┴───────┴───────╯ + + Custom Tables +╭──────────────────────────────────────────────────────────────┬───────────────╮ +│ │ S3a. GENDER: │ +│ ├───────┬───────┤ +│ │ Male │ Female│ +│ ├───────┼───────┤ +│ │ Column│ Column│ +│ │ % │ % │ +├──────────────────────────────────────────────────────────────┼───────┼───────┤ +│105b. How likely is it that drivers who have had Almost │ .│ 32%│ +│too much to drink to drive safely will A. Get certain │ │ │ +│stopped by the police? Somewhat │ .│ 40%│ +│ likely │ │ │ +│ Somewhat │ .│ 19%│ +│ unlikely │ │ │ +│ Very │ .│ 9%│ +│ unlikely │ │ │ +╰──────────────────────────────────────────────────────────────┴───────┴───────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────────────┬─────────╮ +│ │ S3a. │ +│ │ GENDER: │ +│ ├─────────┤ +│ │ Female │ +│ ├─────────┤ +│ │ Column %│ +├────────────────────────────────────────────────────────────────────┼─────────┤ +│105b. How likely is it that drivers who have had too Almost │ 32%│ +│much to drink to drive safely will A. Get stopped by certain │ │ +│the police? Very likely │ 0%│ +│ Somewhat │ 40%│ +│ likely │ │ +│ Somewhat │ 19%│ +│ unlikely │ │ +│ Very │ 9%│ +│ unlikely │ │ +╰────────────────────────────────────────────────────────────────────┴─────────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────────────┬─────────╮ +│ │ S3a. │ +│ │ GENDER: │ +│ ├─────────┤ +│ │ Female │ +│ ├─────────┤ +│ │ Column %│ +├────────────────────────────────────────────────────────────────────┼─────────┤ +│105b. How likely is it that drivers who have had too Almost │ 32%│ +│much to drink to drive safely will A. Get stopped by certain │ │ +│the police? Somewhat │ 40%│ +│ likely │ │ +│ Somewhat │ 19%│ +│ unlikely │ │ +│ Very │ 9%│ +│ unlikely │ │ +╰────────────────────────────────────────────────────────────────────┴─────────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES sorting categories]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +IF (QND5A=6) QND5A=-1. +IF (QND5A=5) QND5A=-2. +CTABLES /TABLE qnd5a /CATEGORIES VARIABLES=qnd5a KEY=VALUE ORDER=A + /TABLE qnd5a /CATEGORIES VARIABLES=qnd5a KEY=VALUE ORDER=D + /TABLE qnd5a /CATEGORIES VARIABLES=qnd5a KEY=LABEL ORDER=A + /TABLE qnd5a /CATEGORIES VARIABLES=qnd5a KEY=LABEL ORDER=D. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭────────────────────────────────────────────────────────────────────────┬─────╮ +│ │Count│ +├────────────────────────────────────────────────────────────────────────┼─────┤ +│D5a. What would you say is your primary ethnic -2.00 │ 52│ +│background? -1.00 │ 78│ +│ Cuban │ 20│ +│ Mexican │ 311│ +│ Spanish │ 48│ +│ South American │ 34│ +│ Central American │ 0│ +│ Puerto Rican, OR │ 0│ +│ Something else │ 68│ +│ Multiple - cannot choose│ 7│ +│ one │ │ +╰────────────────────────────────────────────────────────────────────────┴─────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────────────────┬─────╮ +│ │Count│ +├────────────────────────────────────────────────────────────────────────┼─────┤ +│D5a. What would you say is your primary ethnic Multiple - cannot choose│ 7│ +│background? one │ │ +│ Something else │ 68│ +│ Puerto Rican, OR │ 0│ +│ Central American │ 0│ +│ South American │ 34│ +│ Spanish │ 48│ +│ Mexican │ 311│ +│ Cuban │ 20│ +│ -1.00 │ 78│ +│ -2.00 │ 52│ +╰────────────────────────────────────────────────────────────────────────┴─────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────────────────┬─────╮ +│ │Count│ +├────────────────────────────────────────────────────────────────────────┼─────┤ +│D5a. What would you say is your primary ethnic Central American │ 0│ +│background? Cuban │ 20│ +│ Mexican │ 311│ +│ Multiple - cannot choose│ 7│ +│ one │ │ +│ Puerto Rican, OR │ 0│ +│ Something else │ 68│ +│ South American │ 34│ +│ Spanish │ 48│ +│ -2.00 │ 52│ +│ -1.00 │ 78│ +╰────────────────────────────────────────────────────────────────────────┴─────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────────────────┬─────╮ +│ │Count│ +├────────────────────────────────────────────────────────────────────────┼─────┤ +│D5a. What would you say is your primary ethnic Spanish │ 48│ +│background? South American │ 34│ +│ Something else │ 68│ +│ Puerto Rican, OR │ 0│ +│ Multiple - cannot choose│ 7│ +│ one │ │ +│ Mexican │ 311│ +│ Cuban │ 20│ +│ Central American │ 0│ +│ -1.00 │ 78│ +│ -2.00 │ 52│ +╰────────────────────────────────────────────────────────────────────────┴─────╯ +]) +AT_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'. +CTABLES /TABLE (qn105ba + qn105bb + qn105bc + qn105bd) > qns3a [COUNT, TABLEPCT PCT8.0] + /CATEGORIES VARIABLES=qns3a TOTAL=YES. +CTABLES /TABLE qns3a > (qn105ba + qn105bb + qn105bc + qn105bd) [TABLEPCT PCT8.0] + /CATEGORIES VARIABLES=qns3a TOTAL=YES + /CLABELS ROW=OPPOSITE. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭─────────────────────────────────────────────────────────────────┬─────┬──────╮ +│ │ │ Table│ +│ │Count│ % │ +├─────────────────────────────────────────────────────────────────┼─────┼──────┤ +│105b. How likely is it that drivers Almost S3a. Male │ 297│ 4%│ +│who have had too much to drink to certain GENDER: Female│ 403│ 6%│ +│drive safely will A. Get stopped by Total │ 700│ 10%│ +│the police? ╶──────────────────────────┼─────┼──────┤ +│ Very S3a. Male │ 660│ 10%│ +│ likely GENDER: Female│ 842│ 12%│ +│ Total │ 1502│ 22%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Somewhat S3a. Male │ 1174│ 17%│ +│ likely GENDER: Female│ 1589│ 23%│ +│ Total │ 2763│ 40%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Somewhat S3a. Male │ 640│ 9%│ +│ unlikely GENDER: Female│ 667│ 10%│ +│ Total │ 1307│ 19%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Very S3a. Male │ 311│ 5%│ +│ unlikely GENDER: Female│ 298│ 4%│ +│ Total │ 609│ 9%│ +├─────────────────────────────────────────────────────────────────┼─────┼──────┤ +│105b. How likely is it that drivers Almost S3a. Male │ 429│ 6%│ +│who have had too much to drink to certain GENDER: Female│ 671│ 10%│ +│drive safely will B. Have an accident? Total │ 1100│ 16%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Very S3a. Male │ 1104│ 16%│ +│ likely GENDER: Female│ 1715│ 25%│ +│ Total │ 2819│ 41%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Somewhat S3a. Male │ 1203│ 17%│ +│ likely GENDER: Female│ 1214│ 18%│ +│ Total │ 2417│ 35%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Somewhat S3a. Male │ 262│ 4%│ +│ unlikely GENDER: Female│ 168│ 2%│ +│ Total │ 430│ 6%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Very S3a. Male │ 81│ 1%│ +│ unlikely GENDER: Female│ 59│ 1%│ +│ Total │ 140│ 2%│ +├─────────────────────────────────────────────────────────────────┼─────┼──────┤ +│105b. How likely is it that drivers Almost S3a. Male │ 539│ 8%│ +│who have had too much to drink to certain GENDER: Female│ 610│ 9%│ +│drive safely will C. Be convicted for Total │ 1149│ 17%│ +│drunk driving? ╶──────────────────────────┼─────┼──────┤ +│ Very S3a. Male │ 988│ 14%│ +│ likely GENDER: Female│ 1049│ 15%│ +│ Total │ 2037│ 30%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Somewhat S3a. Male │ 822│ 12%│ +│ likely GENDER: Female│ 1210│ 18%│ +│ Total │ 2032│ 30%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Somewhat S3a. Male │ 446│ 7%│ +│ unlikely GENDER: Female│ 548│ 8%│ +│ Total │ 994│ 15%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Very S3a. Male │ 268│ 4%│ +│ unlikely GENDER: Female│ 354│ 5%│ +│ Total │ 622│ 9%│ +├─────────────────────────────────────────────────────────────────┼─────┼──────┤ +│105b. How likely is it that drivers Almost S3a. Male │ 498│ 7%│ +│who have had too much to drink to certain GENDER: Female│ 603│ 9%│ +│drive safely will D. Be arrested for Total │ 1101│ 16%│ +│drunk driving? ╶──────────────────────────┼─────┼──────┤ +│ Very S3a. Male │ 805│ 12%│ +│ likely GENDER: Female│ 1029│ 15%│ +│ Total │ 1834│ 27%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Somewhat S3a. Male │ 975│ 14%│ +│ likely GENDER: Female│ 1332│ 19%│ +│ Total │ 2307│ 34%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Somewhat S3a. Male │ 535│ 8%│ +│ unlikely GENDER: Female│ 560│ 8%│ +│ Total │ 1095│ 16%│ +│ ╶──────────────────────────┼─────┼──────┤ +│ Very S3a. Male │ 270│ 4%│ +│ unlikely GENDER: Female│ 279│ 4%│ +│ Total │ 549│ 8%│ +╰─────────────────────────────────────────────────────────────────┴─────┴──────╯ + + Custom Tables +╭─────────────────────────────────┬────────┬──────┬─────────┬─────────┬────────╮ +│ │ Almost │ Very │ Somewhat│ Somewhat│ Very │ +│ │ certain│likely│ likely │ unlikely│unlikely│ +│ ├────────┼──────┼─────────┼─────────┼────────┤ +│ │ │ Table│ │ │ │ +│ │ Table %│ % │ Table % │ Table % │ Table %│ +├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│S3a. Male 105b. How likely │ 4%│ 10%│ 17%│ 9%│ 5%│ +│GENDER: is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ A. Get stopped by │ │ │ │ │ │ +│ the police? │ │ │ │ │ │ +│ ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│ Female 105b. How likely │ 6%│ 12%│ 23%│ 10%│ 4%│ +│ is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ A. Get stopped by │ │ │ │ │ │ +│ the police? │ │ │ │ │ │ +│ ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│ Total 105b. How likely │ 10%│ 22%│ 40%│ 19%│ 9%│ +│ is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ A. Get stopped by │ │ │ │ │ │ +│ the police? │ │ │ │ │ │ +├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│S3a. Male 105b. How likely │ 6%│ 16%│ 17%│ 4%│ 1%│ +│GENDER: is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ B. Have an │ │ │ │ │ │ +│ accident? │ │ │ │ │ │ +│ ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│ Female 105b. How likely │ 10%│ 25%│ 18%│ 2%│ 1%│ +│ is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ B. Have an │ │ │ │ │ │ +│ accident? │ │ │ │ │ │ +│ ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│ Total 105b. How likely │ 16%│ 41%│ 35%│ 6%│ 2%│ +│ is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ B. Have an │ │ │ │ │ │ +│ accident? │ │ │ │ │ │ +├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│S3a. Male 105b. How likely │ 8%│ 14%│ 12%│ 7%│ 4%│ +│GENDER: is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ C. Be convicted │ │ │ │ │ │ +│ for drunk driving?│ │ │ │ │ │ +│ ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│ Female 105b. How likely │ 9%│ 15%│ 18%│ 8%│ 5%│ +│ is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ C. Be convicted │ │ │ │ │ │ +│ for drunk driving?│ │ │ │ │ │ +│ ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│ Total 105b. How likely │ 17%│ 30%│ 30%│ 15%│ 9%│ +│ is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ C. Be convicted │ │ │ │ │ │ +│ for drunk driving?│ │ │ │ │ │ +├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│S3a. Male 105b. How likely │ 7%│ 12%│ 14%│ 8%│ 4%│ +│GENDER: is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ D. Be arrested for│ │ │ │ │ │ +│ drunk driving? │ │ │ │ │ │ +│ ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│ Female 105b. How likely │ 9%│ 15%│ 19%│ 8%│ 4%│ +│ is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ D. Be arrested for│ │ │ │ │ │ +│ drunk driving? │ │ │ │ │ │ +│ ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤ +│ Total 105b. How likely │ 16%│ 27%│ 34%│ 16%│ 8%│ +│ is it that drivers│ │ │ │ │ │ +│ who have had too │ │ │ │ │ │ +│ much to drink to │ │ │ │ │ │ +│ drive safely will │ │ │ │ │ │ +│ D. Be arrested for│ │ │ │ │ │ +│ drunk driving? │ │ │ │ │ │ +╰─────────────────────────────────┴────────┴──────┴─────────┴─────────┴────────╯ +]) +AT_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'. +CTABLES /TABLE=qnd1 > qn1 BY qns3a. +CTABLES /TABLE=qnd1 [MINIMUM, MAXIMUM, MEAN] > qns3a > (qn26 + qn27). +CTABLES /TABLE=qnsa1 > qn105ba [COLPCT] BY qns1 + /CATEGORIES VAR=qnsa1 EMPTY=EXCLUDE. +CTABLES /TABLE=AgeGroup > qn20 [MEAN F8.1, STDDEV F8.1]. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭─────────────────────────────────────────────────────────────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │ Mean│ Mean │ +├─────────────────────────────────────────────────────────────────┼─────┼──────┤ +│D1. AGE: What 1. How often do you usually drive Every day │ 46│ 46│ +│is your age? a car or other motor vehicle? Several days a │ 51│ 59│ +│ week │ │ │ +│ Once a week or │ 44│ 54│ +│ less │ │ │ +│ Only certain │ 34│ 41│ +│ times a year │ │ │ +│ Never │ 39│ 55│ +╰─────────────────────────────────────────────────────────────────┴─────┴──────╯ + + Custom Tables +╭─────────────────────────────────────────────────────────┬───────┬───────┬────╮ +│ │Minimum│Maximum│Mean│ +├─────────────────────────────────────────────────────────┼───────┼───────┼────┤ +│D1. AGE: S3a. Male 26. During the last 12 Yes│ 16│ 86│ 42│ +│What is GENDER: months, has there been a │ │ │ │ +│your time when you felt you │ │ │ │ +│age? should cut down on your No │ 16│ 86│ 46│ +│ drinking? │ │ │ │ +│ ╶───────────────────────────────────────┼───────┼───────┼────┤ +│ Female 26. During the last 12 Yes│ 16│ 86│ 43│ +│ months, has there been a │ │ │ │ +│ time when you felt you │ │ │ │ +│ should cut down on your No │ 16│ 86│ 48│ +│ drinking? │ │ │ │ +├─────────────────────────────────────────────────────────┼───────┼───────┼────┤ +│D1. AGE: S3a. Male 27. During the last 12 Yes│ 16│ 86│ 38│ +│What is GENDER: months, has there been a │ │ │ │ +│your time when people criticized No │ 16│ 86│ 46│ +│age? your drinking? │ │ │ │ +│ ╶───────────────────────────────────────┼───────┼───────┼────┤ +│ Female 27. During the last 12 Yes│ 17│ 69│ 37│ +│ months, has there been a │ │ │ │ +│ time when people criticized No │ 16│ 86│ 48│ +│ your drinking? │ │ │ │ +╰─────────────────────────────────────────────────────────┴───────┴───────┴────╯ + + Custom Tables +╭─────────────────────────────┬────────────────────────────────────────────────╮ +│ │S1. Including yourself, how many members of this│ +│ │ household are age 16 or older? │ +│ ├──────┬──────┬──────┬──────┬──────┬──────┬──────┤ +│ │ │ │ │ │ │ │ 6 or │ +│ │ None │ 1 │ 2 │ 3 │ 4 │ 5 │ more │ +│ ├──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ │Column│Column│Column│Column│Column│Column│Column│ +│ │ % │ % │ % │ % │ % │ % │ % │ +├─────────────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Sa1. RDD 105b. Almost │ .│ 9.5%│ 8.2%│ 12.4%│ 9.9%│ 20.0%│ 23.8%│ +│SAMPLE How certain │ │ │ │ │ │ │ │ +│SOURCE: likely │ │ │ │ │ │ │ │ +│ is it Very │ .│ 24.9%│ 18.5%│ 24.0%│ 26.6%│ 25.5%│ 33.3%│ +│ that likely │ │ │ │ │ │ │ │ +│ drivers │ │ │ │ │ │ │ │ +│ who have │ │ │ │ │ │ │ │ +│ had too Somewhat│ .│ 38.3%│ 41.9%│ 38.6%│ 37.5%│ 36.4%│ 23.8%│ +│ much to likely │ │ │ │ │ │ │ │ +│ drink to │ │ │ │ │ │ │ │ +│ drive │ │ │ │ │ │ │ │ +│ safely Somewhat│ .│ 18.1%│ 21.7%│ 16.8%│ 16.7%│ 10.9%│ 9.5%│ +│ will A. unlikely│ │ │ │ │ │ │ │ +│ Get │ │ │ │ │ │ │ │ +│ stopped Very │ .│ 9.2%│ 9.7%│ 8.2%│ 9.4%│ 7.3%│ 9.5%│ +│ by the unlikely│ │ │ │ │ │ │ │ +│ police? │ │ │ │ │ │ │ │ +╰─────────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────╯ + + Custom Tables +╭──────────────────────────────────────────────────────────────┬────┬──────────╮ +│ │ │ Std │ +│ │Mean│ Deviation│ +├──────────────────────────────────────────────────────────────┼────┼──────────┤ +│Age 16 to 25 20. On how many of the thirty days in this │ 5.2│ 6.0│ +│group typical month did you have one or more │ │ │ +│ alcoholic beverages to drink? │ │ │ +│ ╶───────────────────────────────────────────────────────┼────┼──────────┤ +│ 26 to 35 20. On how many of the thirty days in this │ 4.7│ 5.9│ +│ typical month did you have one or more │ │ │ +│ alcoholic beverages to drink? │ │ │ +│ ╶───────────────────────────────────────────────────────┼────┼──────────┤ +│ 36 to 45 20. On how many of the thirty days in this │ 5.5│ 6.8│ +│ typical month did you have one or more │ │ │ +│ alcoholic beverages to drink? │ │ │ +│ ╶───────────────────────────────────────────────────────┼────┼──────────┤ +│ 46 to 55 20. On how many of the thirty days in this │ 5.8│ 7.7│ +│ typical month did you have one or more │ │ │ +│ alcoholic beverages to drink? │ │ │ +│ ╶───────────────────────────────────────────────────────┼────┼──────────┤ +│ 56 to 65 20. On how many of the thirty days in this │ 6.3│ 8.2│ +│ typical month did you have one or more │ │ │ +│ alcoholic beverages to drink? │ │ │ +│ ╶───────────────────────────────────────────────────────┼────┼──────────┤ +│ 66 or 20. On how many of the thirty days in this │ 7.1│ 9.2│ +│ older typical month did you have one or more │ │ │ +│ alcoholic beverages to drink? │ │ │ +╰──────────────────────────────────────────────────────────────┴────┴──────────╯ +]) +AT_CLEANUP + + +AT_SETUP([CTABLES SLABELS]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /TABLE qn1 [COUNT COLPCT]. +CTABLES /TABLE qn1 [COUNT COLPCT] + /SLABELS POSITION=ROW. +CTABLES /TABLE qn1 [COUNT COLPCT] + /SLABELS POSITION=ROW VISIBLE=NO. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭────────────────────────────────────────────────────────────────┬─────┬───────╮ +│ │ │ Column│ +│ │Count│ % │ +├────────────────────────────────────────────────────────────────┼─────┼───────┤ +│ 1. How often do you usually drive a car or Every day │ 4667│ 66.9%│ +│other motor vehicle? Several days a week│ 1274│ 18.3%│ +│ Once a week or less│ 361│ 5.2%│ +│ Only certain times │ 130│ 1.9%│ +│ a year │ │ │ +│ Never │ 540│ 7.7%│ +╰────────────────────────────────────────────────────────────────┴─────┴───────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────────────────┬─────╮ +│ 1. How often do you usually drive a car or Every day Count │ 4667│ +│other motor vehicle? Column │66.9%│ +│ % │ │ +│ ╶───────────────────────────┼─────┤ +│ Several days a week Count │ 1274│ +│ Column │18.3%│ +│ % │ │ +│ ╶───────────────────────────┼─────┤ +│ Once a week or less Count │ 361│ +│ Column │ 5.2%│ +│ % │ │ +│ ╶───────────────────────────┼─────┤ +│ Only certain times Count │ 130│ +│ a year Column │ 1.9%│ +│ % │ │ +│ ╶───────────────────────────┼─────┤ +│ Never Count │ 540│ +│ Column │ 7.7%│ +│ % │ │ +╰────────────────────────────────────────────────────────────────────────┴─────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────────────────┬─────╮ +│ 1. How often do you usually drive a car or other Every day │ 4667│ +│motor vehicle? │66.9%│ +│ Several days a week │ 1274│ +│ │18.3%│ +│ Once a week or less │ 361│ +│ │ 5.2%│ +│ Only certain times a │ 130│ +│ year │ 1.9%│ +│ Never │ 540│ +│ │ 7.7%│ +╰────────────────────────────────────────────────────────────────────────┴─────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES simple totals]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /TABLE=qn17 + /CATEGORIES VARIABLES=qn17 TOTAL=YES LABEL='Number responding'. +DESCRIPTIVES qn18/STATISTICS=MEAN. +CTABLES /TABLE=region > qn18 [MEAN, COUNT, VALIDN, TOTALN] + /CATEGORIES VARIABLES=region TOTAL=YES LABEL='All regions'. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl + Custom Tables +╭────────────────────────────────────────────────────────────────────────┬─────╮ +│ │Count│ +├────────────────────────────────────────────────────────────────────────┼─────┤ +│17. When you drink alcoholic beverages, which ONE of OR, something else│ 2│ +│the following beverages do you drink MOST OFTEN? Beer │ 1073│ +│ Light beer │ 620│ +│ Wine │ 1418│ +│ Wine coolers │ 137│ +│ Hard liquor or │ 888│ +│ mixed drinks │ │ +│ Flavored malt │ 83│ +│ drinks │ │ +│ Number responding │ 4221│ +╰────────────────────────────────────────────────────────────────────────┴─────╯ + + Descriptive Statistics +╭────────────────────────────────────────────────────────────────────┬────┬────╮ +│ │ N │Mean│ +├────────────────────────────────────────────────────────────────────┼────┼────┤ +│18. When you drink ANSWERFROM(QN17R1), about how many │4218│4.62│ +│ANSWERFROM(QN17R2) do you usually drink per sitting? │ │ │ +│Valid N (listwise) │6999│ │ +│Missing N (listwise) │2781│ │ +╰────────────────────────────────────────────────────────────────────┴────┴────╯ + + Custom Tables +╭──────────────────────────────────────────────────────┬────┬─────┬──────┬─────╮ +│ │ │ │ Valid│Total│ +│ │Mean│Count│ N │ N │ +├──────────────────────────────────────────────────────┼────┼─────┼──────┼─────┤ +│Region NE 18. When you drink ANSWERFROM(QN17R1),│4.36│ 1409│ 949│ 1409│ +│ about how many ANSWERFROM(QN17R2) do │ │ │ │ │ +│ you usually drink per sitting? │ │ │ │ │ +│ ╶───────────────────────────────────────────────┼────┼─────┼──────┼─────┤ +│ MW 18. When you drink ANSWERFROM(QN17R1),│4.67│ 1654│ 1027│ 1654│ +│ about how many ANSWERFROM(QN17R2) do │ │ │ │ │ +│ you usually drink per sitting? │ │ │ │ │ +│ ╶───────────────────────────────────────────────┼────┼─────┼──────┼─────┤ +│ S 18. When you drink ANSWERFROM(QN17R1),│4.71│ 2390│ 1287│ 2390│ +│ about how many ANSWERFROM(QN17R2) do │ │ │ │ │ +│ you usually drink per sitting? │ │ │ │ │ +│ ╶───────────────────────────────────────────────┼────┼─────┼──────┼─────┤ +│ W 18. When you drink ANSWERFROM(QN17R1),│4.69│ 1546│ 955│ 1546│ +│ about how many ANSWERFROM(QN17R2) do │ │ │ │ │ +│ you usually drink per sitting? │ │ │ │ │ +│ ╶───────────────────────────────────────────────┼────┼─────┼──────┼─────┤ +│ All 18. When you drink ANSWERFROM(QN17R1),│4.62│ 6999│ 4218│ 6999│ +│ regions about how many ANSWERFROM(QN17R2) do │ │ │ │ │ +│ you usually drink per sitting? │ │ │ │ │ +╰──────────────────────────────────────────────────────┴────┴─────┴──────┴─────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES subtotals]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /TABLE=qn105ba BY qns1 + /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, SUBTOTAL]. +CTABLES /TABLE=qn105ba [COLPCT] BY qns1 + /CATEGORIES VARIABLES=qn105ba [1, 2, 3, SUBTOTAL, 4, 5, SUBTOTAL]. +CTABLES /TABLE=qn105ba BY qns1 + /CATEGORIES VARIABLES=qn105ba [1, 2, 3, SUBTOTAL, 4, 5, SUBTOTAL] + /CATEGORIES VARIABLES=qns1 [1, 2, SUBTOTAL, 3, 4, 5, SUBTOTAL]. +]]) +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│ 3 │ 4 │ 5 │ Subtotal │ +│ ├───────┼───────┼─────────┼───────┼────────┼──────┼──────────┤ +│ │ Count │ Count │ Count │ Count │ Count │ Count│ Count │ +├─────────────────────────────────────────────────────────┼───────┼───────┼─────────┼───────┼────────┼──────┼──────────┤ +│105b. How likely is it that drivers who have Almost │ 147│ 246│ 393│ 62│ 19│ 11│ 92│ +│had too much to drink to drive safely will A. certain │ │ │ │ │ │ │ │ +│Get stopped by the police? Very likely│ 384│ 552│ 936│ 120│ 51│ 14│ 185│ +│ Somewhat │ 590│ 1249│ 1839│ 193│ 72│ 20│ 285│ +│ likely │ │ │ │ │ │ │ │ +│ Somewhat │ 278│ 647│ 925│ 84│ 32│ 6│ 122│ +│ unlikely │ │ │ │ │ │ │ │ +│ Very │ 141│ 290│ 431│ 41│ 18│ 4│ 63│ +│ unlikely │ │ │ │ │ │ │ │ +╰─────────────────────────────────────────────────────────┴───────┴───────┴─────────┴───────┴────────┴──────┴──────────╯ + + Custom Tables +╭────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────╮ +│ │ S1. Including yourself, how many members of this household │ +│ │ are age 16 or older? │ +│ ├────────┬────────┬────────┬────────┬───────┬────────┬────────┤ +│ │ │ │ │ │ │ │ 6 or │ +│ │ None │ 1 │ 2 │ 3 │ 4 │ 5 │ more │ +│ ├────────┼────────┼────────┼────────┼───────┼────────┼────────┤ +│ │ │ │ │ │ Column│ │ │ +│ │Column %│Column %│Column %│Column %│ % │Column %│Column %│ +├────────────────────────────────────────────────────────┼────────┼────────┼────────┼────────┼───────┼────────┼────────┤ +│105b. How likely is it that drivers who have Almost │ .│ 9.5%│ 8.2%│ 12.4%│ 9.9%│ 20.0%│ 23.8%│ +│had too much to drink to drive safely will certain │ │ │ │ │ │ │ │ +│A. Get stopped by the police? Very likely│ .│ 24.9%│ 18.5%│ 24.0%│ 26.6%│ 25.5%│ 33.3%│ +│ Somewhat │ .│ 38.3%│ 41.9%│ 38.6%│ 37.5%│ 36.4%│ 23.8%│ +│ likely │ │ │ │ │ │ │ │ +│ Subtotal │ │ 72.8%│ 68.6%│ 75.0%│ 74.0%│ 81.8%│ 81.0%│ +│ Somewhat │ .│ 18.1%│ 21.7%│ 16.8%│ 16.7%│ 10.9%│ 9.5%│ +│ unlikely │ │ │ │ │ │ │ │ +│ Very │ .│ 9.2%│ 9.7%│ 8.2%│ 9.4%│ 7.3%│ 9.5%│ +│ unlikely │ │ │ │ │ │ │ │ +│ Subtotal │ │ 27.2%│ 31.4%│ 25.0%│ 26.0%│ 18.2%│ 19.0%│ +╰────────────────────────────────────────────────────────┴────────┴────────┴────────┴────────┴───────┴────────┴────────╯ + + Custom Tables +╭─────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────────╮ +│ │ S1. Including yourself, how many members of this household │ +│ │ are age 16 or older? │ +│ ├───────┬───────┬─────────┬───────┬────────┬──────┬──────────┤ +│ │ 1 │ 2 │ Subtotal│ 3 │ 4 │ 5 │ Subtotal │ +│ ├───────┼───────┼─────────┼───────┼────────┼──────┼──────────┤ +│ │ Count │ Count │ Count │ Count │ Count │ Count│ Count │ +├─────────────────────────────────────────────────────────┼───────┼───────┼─────────┼───────┼────────┼──────┼──────────┤ +│105b. How likely is it that drivers who have Almost │ 147│ 246│ 393│ 62│ 19│ 11│ 92│ +│had too much to drink to drive safely will A. certain │ │ │ │ │ │ │ │ +│Get stopped by the police? Very likely│ 384│ 552│ 936│ 120│ 51│ 14│ 185│ +│ Somewhat │ 590│ 1249│ 1839│ 193│ 72│ 20│ 285│ +│ likely │ │ │ │ │ │ │ │ +│ Subtotal │ 1121│ 2047│ 3168│ 375│ 142│ 45│ 562│ +│ Somewhat │ 278│ 647│ 925│ 84│ 32│ 6│ 122│ +│ unlikely │ │ │ │ │ │ │ │ +│ Very │ 141│ 290│ 431│ 41│ 18│ 4│ 63│ +│ unlikely │ │ │ │ │ │ │ │ +│ Subtotal │ 419│ 937│ 1356│ 125│ 50│ 10│ 185│ +╰─────────────────────────────────────────────────────────┴───────┴───────┴─────────┴───────┴────────┴──────┴──────────╯ +]) +AT_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' 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 +╭──────────────────┬───────────────────────────────────────────────────────────────────────────────────╮ +│ │ Gender │ +│ ├─────────────────────────────────────────┬─────────────────────────────────────────┤ +│ │ Male │ Female │ +│ ├─────────────────────────────────────────┼─────────────────────────────────────────┤ +│ │ Favorite day of the week │ Favorite day of the week │ +│ ├───┬───┬───┬───┬───┬───┬───┬───────┬─────┼───┬───┬───┬───┬───┬───┬───┬───────┬─────┤ +│ │SUN│MON│TUE│WED│THU│FRI│SAT│Weekend│Total│SUN│MON│TUE│WED│THU│FRI│SAT│Weekend│Total│ +├──────────────────┼───┼───┼───┼───┼───┼───┼───┼───────┼─────┼───┼───┼───┼───┼───┼───┼───┼───────┼─────┤ +│Favorite month JAN│ 10│ 3│ 8│ 6│ 4│ 2│ 7│ 17│ 40│ 9│ 6│ 4│ 2│ 7│ 5│ 3│ 12│ 36│ +│ FEB│ 6│ 8│ 6│ 4│ 2│ 7│ 5│ 11│ 38│ 12│ 4│ 2│ 7│ 5│ 3│ 8│ 20│ 41│ +│ MAR│ 16│ 6│ 4│ 2│ 7│ 5│ 3│ 19│ 43│ 8│ 2│ 7│ 5│ 3│ 8│ 6│ 14│ 39│ +│ Q1 │ 32│ 17│ 18│ 12│ 13│ 14│ 15│ │ │ 29│ 12│ 13│ 14│ 15│ 16│ 17│ │ │ +│ APR│ 12│ 4│ 2│ 7│ 5│ 3│ 8│ 20│ 41│ 4│ 7│ 5│ 3│ 8│ 6│ 4│ 8│ 37│ +│ MAY│ 8│ 2│ 7│ 5│ 3│ 8│ 6│ 14│ 39│ 14│ 5│ 3│ 8│ 6│ 4│ 2│ 16│ 42│ +│ JUN│ 4│ 7│ 5│ 3│ 8│ 6│ 4│ 8│ 37│ 10│ 3│ 8│ 6│ 4│ 2│ 7│ 17│ 40│ +│ Q2 │ 24│ 13│ 14│ 15│ 16│ 17│ 18│ .│ │ 28│ 15│ 16│ 17│ 18│ 12│ 13│ .│ │ +│ JUL│ 14│ 5│ 3│ 8│ 6│ 4│ 2│ 16│ 42│ 6│ 8│ 6│ 4│ 2│ 7│ 5│ 11│ 38│ +│ AUG│ 10│ 3│ 8│ 6│ 4│ 2│ 7│ 17│ 40│ 16│ 6│ 4│ 2│ 7│ 5│ 3│ 19│ 43│ +│ SEP│ 6│ 8│ 6│ 4│ 2│ 7│ 5│ 11│ 38│ 12│ 4│ 2│ 7│ 5│ 3│ 8│ 20│ 41│ +│ Q3 │ 54│ 29│ 31│ 33│ 28│ 30│ 32│ │ │ 62│ 33│ 28│ 30│ 32│ 27│ 29│ │ │ +│ OCT│ 16│ 6│ 4│ 2│ 7│ 5│ 3│ 19│ 43│ 8│ 2│ 7│ 5│ 3│ 8│ 6│ 14│ 39│ +│ NOV│ 12│ 4│ 2│ 7│ 5│ 3│ 8│ 20│ 41│ 4│ 7│ 5│ 3│ 8│ 6│ 4│ 8│ 37│ +│ DEC│ 8│ 2│ 7│ 5│ 3│ 8│ 6│ 14│ 39│ 14│ 5│ 3│ 8│ 6│ 4│ 2│ 16│ 42│ +│ Q4 │ 36│ 12│ 13│ 14│ 15│ 16│ 17│ │ │ 26│ 14│ 15│ 16│ 17│ 18│ 12│ │ │ +╰──────────────────┴───┴───┴───┴───┴───┴───┴───┴───────┴─────┴───┴───┴───┴───┴───┴───┴───┴───────┴─────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES CLABELS]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /TABLE AgeGroup BY qns3a. +CTABLES /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=OPPOSITE. +CTABLES /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=OPPOSITE. +CTABLES /TABLE AgeGroup BY qns3a /CLABELS ROWLABELS=LAYER. +CTABLES /TABLE AgeGroup BY qns3a /CLABELS COLLABELS=LAYER. +]]) +AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl + Custom Tables +╭───────────────────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├───────────────────────┼─────┼──────┤ +│Age group 15 or younger│ 0│ 0│ +│ 16 to 25 │ 594│ 505│ +│ 26 to 35 │ 476│ 491│ +│ 36 to 45 │ 489│ 548│ +│ 46 to 55 │ 526│ 649│ +│ 56 to 65 │ 516│ 731│ +│ 66 or older │ 531│ 943│ +╰───────────────────────┴─────┴──────╯ + + Custom Tables +╭───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ │ S3a. GENDER: │ +│ ├──────────────────────────────────────────────────────┬───────────────────────────────────────────────────────┤ +│ │ Male │ Female │ +│ ├─────────┬───────┬──────┬──────┬──────┬───────┬───────┼──────────┬──────┬───────┬──────┬──────┬──────┬────────┤ +│ │ 15 or │ 16 to │ 26 to│ 36 to│ 46 to│ 56 to │ 66 or │ 15 or │ 16 to│ 26 to │ 36 to│ 46 to│ 56 to│ 66 or │ +│ │ younger │ 25 │ 35 │ 45 │ 55 │ 65 │ older │ younger │ 25 │ 35 │ 45 │ 55 │ 65 │ older │ +│ ├─────────┼───────┼──────┼──────┼──────┼───────┼───────┼──────────┼──────┼───────┼──────┼──────┼──────┼────────┤ +│ │ Count │ Count │ Count│ Count│ Count│ Count │ Count │ Count │ Count│ Count │ Count│ Count│ Count│ Count │ +├───────┼─────────┼───────┼──────┼──────┼──────┼───────┼───────┼──────────┼──────┼───────┼──────┼──────┼──────┼────────┤ +│Age │ 0│ 594│ 476│ 489│ 526│ 516│ 531│ 0│ 505│ 491│ 548│ 649│ 731│ 943│ +│group │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +╰───────┴─────────┴───────┴──────┴──────┴──────┴───────┴───────┴──────────┴──────┴───────┴──────┴──────┴──────┴────────╯ + + Custom Tables +╭──────────────────────────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├────────────┤ +│ │ Count │ +├──────────────────────────────┼────────────┤ +│Age group 15 or younger Male │ 0│ +│ Female│ 0│ +│ ╶────────────────────┼────────────┤ +│ 16 to 25 Male │ 594│ +│ Female│ 505│ +│ ╶────────────────────┼────────────┤ +│ 26 to 35 Male │ 476│ +│ Female│ 491│ +│ ╶────────────────────┼────────────┤ +│ 36 to 45 Male │ 489│ +│ Female│ 548│ +│ ╶────────────────────┼────────────┤ +│ 46 to 55 Male │ 526│ +│ Female│ 649│ +│ ╶────────────────────┼────────────┤ +│ 56 to 65 Male │ 516│ +│ Female│ 731│ +│ ╶────────────────────┼────────────┤ +│ 66 or older Male │ 531│ +│ Female│ 943│ +╰──────────────────────────────┴────────────╯ + + Custom Tables +15 or younger +╭─────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├─────────┼─────┼──────┤ +│Age group│ 0│ 0│ +╰─────────┴─────┴──────╯ + + Custom Tables +16 to 25 +╭─────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├─────────┼─────┼──────┤ +│Age group│ 594│ 505│ +╰─────────┴─────┴──────╯ + + Custom Tables +26 to 35 +╭─────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├─────────┼─────┼──────┤ +│Age group│ 476│ 491│ +╰─────────┴─────┴──────╯ + + Custom Tables +36 to 45 +╭─────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├─────────┼─────┼──────┤ +│Age group│ 489│ 548│ +╰─────────┴─────┴──────╯ + + Custom Tables +46 to 55 +╭─────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├─────────┼─────┼──────┤ +│Age group│ 526│ 649│ +╰─────────┴─────┴──────╯ + + Custom Tables +56 to 65 +╭─────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├─────────┼─────┼──────┤ +│Age group│ 516│ 731│ +╰─────────┴─────┴──────╯ + + Custom Tables +66 or older +╭─────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├─────────┼─────┼──────┤ +│Age group│ 531│ 943│ +╰─────────┴─────┴──────╯ + + Custom Tables +Male +╭───────────────────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├────────────┤ +│ │ Count │ +├───────────────────────┼────────────┤ +│Age group 15 or younger│ 0│ +│ 16 to 25 │ 594│ +│ 26 to 35 │ 476│ +│ 36 to 45 │ 489│ +│ 46 to 55 │ 526│ +│ 56 to 65 │ 516│ +│ 66 or older │ 531│ +╰───────────────────────┴────────────╯ + + Custom Tables +Female +╭───────────────────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├────────────┤ +│ │ Count │ +├───────────────────────┼────────────┤ +│Age group 15 or younger│ 0│ +│ 16 to 25 │ 505│ +│ 26 to 35 │ 491│ +│ 36 to 45 │ 548│ +│ 46 to 55 │ 649│ +│ 56 to 65 │ 731│ +│ 66 or older │ 943│ +╰───────────────────────┴────────────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES missing values]) +AT_DATA([ctables.sps], +[[DATA LIST LIST NOTABLE/x y. +BEGIN DATA. +1 1 +1 2 +1 3 +1 4 +1 5 +1 . +2 1 +2 2 +2 3 +2 4 +2 5 +2 . +3 1 +3 2 +3 3 +3 4 +3 5 +3 . +4 1 +4 2 +4 3 +4 4 +4 5 +4 . +5 1 +5 2 +5 3 +5 4 +5 5 +5 . +. 1 +. 2 +. 3 +. 4 +. 5 +. . +END DATA. +MISSING VALUES x (1, 2) y (2, 3). +VARIABLE LEVEL ALL (NOMINAL). + +CTABLES /TABLE x[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, + TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, VALIDN, TOTALN]] + /CATEGORIES VARIABLES=ALL TOTAL=YES. +CTABLES /TABLE x[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, + TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, VALIDN, TOTALN]] + /CATEGORIES VARIABLES=ALL TOTAL=YES MISSING=INCLUDE. +CTABLES /TABLE x BY y[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, + TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, VALIDN, TOTALN]] + /CATEGORIES VARIABLES=ALL TOTAL=YES + /SLABELS POSITION=ROW. +CTABLES /TABLE x BY y[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, + TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, VALIDN, TOTALN]] + /CATEGORIES VARIABLES=ALL TOTAL=YES MISSING=INCLUDE + /SLABELS POSITION=ROW. +CTABLES /TABLE x BY y[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, + TOTALS[COUNT, COLPCT, COLPCT.VALIDN, COLPCT.TOTALN, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, VALIDN, TOTALN]] + /CATEGORIES VARIABLES=x [1, 2, 3, 4] TOTAL=YES + /CATEGORIES VARIABLES=y [1, 3, 4, 5] TOTAL=YES + /SLABELS POSITION=ROW. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl + Custom Tables +╭───────┬─────┬────────┬────────────────┬────────────────┬───────┬───────╮ +│ │Count│Column %│Column Valid N %│Column Total N %│Valid N│Total N│ +├───────┼─────┼────────┼────────────────┼────────────────┼───────┼───────┤ +│x 3.00 │ 6│ 33.3%│ 33.3%│ 16.7%│ │ │ +│ 4.00 │ 6│ 33.3%│ 33.3%│ 16.7%│ │ │ +│ 5.00 │ 6│ 33.3%│ 33.3%│ 16.7%│ │ │ +│ Total│ 18│ 100.0%│ 100.0%│ 100.0%│ 18│ 36│ +╰───────┴─────┴────────┴────────────────┴────────────────┴───────┴───────╯ +dnl Note that Column Total N % doesn't add up to 100 because missing +dnl values are included in the total but not shown as a category and this +dnl is expected behavior. + + Custom Tables +╭───────┬─────┬────────┬────────────────┬────────────────┬───────┬───────╮ +│ │Count│Column %│Column Valid N %│Column Total N %│Valid N│Total N│ +├───────┼─────┼────────┼────────────────┼────────────────┼───────┼───────┤ +│x 1.00 │ 6│ 20.0%│ .0%│ 16.7%│ │ │ +│ 2.00 │ 6│ 20.0%│ .0%│ 16.7%│ │ │ +│ 3.00 │ 6│ 20.0%│ 33.3%│ 16.7%│ │ │ +│ 4.00 │ 6│ 20.0%│ 33.3%│ 16.7%│ │ │ +│ 5.00 │ 6│ 20.0%│ 33.3%│ 16.7%│ │ │ +│ Total│ 30│ 100.0%│ 100.0%│ 100.0%│ 18│ 36│ +╰───────┴─────┴────────┴────────────────┴────────────────┴───────┴───────╯ +dnl Note that Column Total N % doesn't add up to 100 because system-missing +dnl values are included in the total but not shown as a category and this +dnl is expected behavior. + + Custom Tables +╭────────────────────────┬───────────────────────────╮ +│ │ y │ +│ ├──────┬──────┬──────┬──────┤ +│ │ 1.00 │ 4.00 │ 5.00 │ Total│ +├────────────────────────┼──────┼──────┼──────┼──────┤ +│x 3.00 Count │ 1│ 1│ 1│ 3│ +│ Column % │ 33.3%│ 33.3%│ 33.3%│ .│ +│ Column Valid N %│ 33.3%│ 33.3%│ 33.3%│ .│ +│ Column Total N %│ 33.3%│ 33.3%│ 33.3%│ .│ +│ Row % │ 33.3%│ 33.3%│ 33.3%│100.0%│ +│ Row Valid N % │ 33.3%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ 3│ +│ Total N │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┤ +│ 4.00 Count │ 1│ 1│ 1│ 3│ +│ Column % │ 33.3%│ 33.3%│ 33.3%│ .│ +│ Column Valid N %│ 33.3%│ 33.3%│ 33.3%│ .│ +│ Column Total N %│ 33.3%│ 33.3%│ 33.3%│ .│ +│ Row % │ 33.3%│ 33.3%│ 33.3%│100.0%│ +│ Row Valid N % │ 33.3%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ 3│ +│ Total N │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┤ +│ 5.00 Count │ 1│ 1│ 1│ 3│ +│ Column % │ 33.3%│ 33.3%│ 33.3%│ .│ +│ Column Valid N %│ 33.3%│ 33.3%│ 33.3%│ .│ +│ Column Total N %│ 33.3%│ 33.3%│ 33.3%│ .│ +│ Row % │ 33.3%│ 33.3%│ 33.3%│100.0%│ +│ Row Valid N % │ 33.3%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ 3│ +│ Total N │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┤ +│ Total Count │ 3│ 3│ 3│ 9│ +│ Column % │100.0%│100.0%│100.0%│ .│ +│ Column Valid N %│100.0%│100.0%│100.0%│ .│ +│ Column Total N %│100.0%│100.0%│100.0%│ .│ +│ Row % │ .│ .│ .│ .│ +│ Row Valid N % │ .│ .│ .│ .│ +│ Row Total N % │ .│ .│ .│ .│ +│ Valid N │ 3│ 3│ 3│ 9│ +│ Total N │ 3│ 3│ 3│ 18│ +╰────────────────────────┴──────┴──────┴──────┴──────╯ + + Custom Tables +╭────────────────────────┬─────────────────────────────────────────╮ +│ │ y │ +│ ├──────┬──────┬──────┬──────┬──────┬──────┤ +│ │ 1.00 │ 2.00 │ 3.00 │ 4.00 │ 5.00 │ Total│ +├────────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│x 1.00 Count │ 1│ 1│ 1│ 1│ 1│ 5│ +│ Column % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Column Valid N %│ 20.0%│ .│ .│ 20.0%│ 20.0%│ .│ +│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Row % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ 2.00 Count │ 1│ 1│ 1│ 1│ 1│ 5│ +│ Column % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Column Valid N %│ 20.0%│ .│ .│ 20.0%│ 20.0%│ .│ +│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Row % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ 3.00 Count │ 1│ 1│ 1│ 1│ 1│ 5│ +│ Column % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Column Valid N %│ 20.0%│ .│ .│ 20.0%│ 20.0%│ .│ +│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Row % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ 4.00 Count │ 1│ 1│ 1│ 1│ 1│ 5│ +│ Column % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Column Valid N %│ 20.0%│ .│ .│ 20.0%│ 20.0%│ .│ +│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Row % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ 5.00 Count │ 1│ 1│ 1│ 1│ 1│ 5│ +│ Column % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Column Valid N %│ 20.0%│ .│ .│ 20.0%│ 20.0%│ .│ +│ Column Total N %│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│ .│ +│ Row % │ 20.0%│ 20.0%│ 20.0%│ 20.0%│ 20.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ Total Count │ 5│ 5│ 5│ 5│ 5│ 25│ +│ Column % │100.0%│100.0%│100.0%│100.0%│100.0%│ .│ +│ Column Valid N %│100.0%│ .│ .│100.0%│100.0%│ .│ +│ Column Total N %│100.0%│100.0%│100.0%│100.0%│100.0%│ .│ +│ Row % │ .│ .│ .│ .│ .│ .│ +│ Row Valid N % │ .│ .│ .│ .│ .│ .│ +│ Row Total N % │ .│ .│ .│ .│ .│ .│ +│ Valid N │ 5│ 0│ 0│ 5│ 5│ 15│ +│ Total N │ 5│ 5│ 5│ 5│ 5│ 30│ +╰────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────╯ + + Custom Tables +╭────────────────────────┬──────────────────────────────────╮ +│ │ y │ +│ ├──────┬──────┬──────┬──────┬──────┤ +│ │ 1.00 │ 3.00 │ 4.00 │ 5.00 │ Total│ +├────────────────────────┼──────┼──────┼──────┼──────┼──────┤ +│x 1.00 Count │ 1│ 1│ 1│ 1│ 4│ +│ Column % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│ +│ Column Valid N %│ 25.0%│ .│ 25.0%│ 25.0%│ .│ +│ Column Total N %│ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│ +│ Row % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤ +│ 2.00 Count │ 1│ 1│ 1│ 1│ 4│ +│ Column % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│ +│ Column Valid N %│ 25.0%│ .│ 25.0%│ 25.0%│ .│ +│ Column Total N %│ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│ +│ Row % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤ +│ 3.00 Count │ 1│ 1│ 1│ 1│ 4│ +│ Column % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│ +│ Column Valid N %│ 25.0%│ .│ 25.0%│ 25.0%│ .│ +│ Column Total N %│ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│ +│ Row % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤ +│ 4.00 Count │ 1│ 1│ 1│ 1│ 4│ +│ Column % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│ +│ Column Valid N %│ 25.0%│ .│ 25.0%│ 25.0%│ .│ +│ Column Total N %│ 25.0%│ 25.0%│ 25.0%│ 25.0%│ .│ +│ Row % │ 25.0%│ 25.0%│ 25.0%│ 25.0%│100.0%│ +│ Row Valid N % │ 33.3%│ .0%│ 33.3%│ 33.3%│100.0%│ +│ Row Total N % │ 16.7%│ 16.7%│ 16.7%│ 16.7%│100.0%│ +│ Valid N │ │ │ │ │ 3│ +│ Total N │ │ │ │ │ 6│ +│ ╶──────────────────────┼──────┼──────┼──────┼──────┼──────┤ +│ Total Count │ 4│ 4│ 4│ 4│ 16│ +│ Column % │100.0%│100.0%│100.0%│100.0%│ .│ +│ Column Valid N %│100.0%│ .│100.0%│100.0%│ .│ +│ Column Total N %│100.0%│100.0%│100.0%│100.0%│ .│ +│ Row % │ .│ .│ .│ .│ .│ +│ Row Valid N % │ .│ .│ .│ .│ .│ +│ Row Total N % │ .│ .│ .│ .│ .│ +│ Valid N │ 4│ 0│ 4│ 4│ 12│ +│ Total N │ 4│ 4│ 4│ 4│ 24│ +╰────────────────────────┴──────┴──────┴──────┴──────┴──────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES SMISSING=LISTWISE]) +AT_KEYWORDS([SMISSING LISTWISE]) +AT_DATA([ctables.sps], +[[DATA LIST LIST NOTABLE/x y z. +BEGIN DATA. +1 . 40 +1 10 50 +1 20 60 +1 . . +1 30 . +END DATA. +VARIABLE LEVEL x (NOMINAL). + +CTABLES /TABLE (y + z) > x. +CTABLES /SMISSING LISTWISE /TABLE (y + z) > x. + +* The following doesn't come out as listwise because the tables are +separate, not linked by an > operator. +CTABLES /SMISSING LISTWISE /TABLE (y > x) + (z > x). +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl + Custom Tables +╭────────┬─────╮ +│ │ Mean│ +├────────┼─────┤ +│y x 1.00│20.00│ +├────────┼─────┤ +│z x 1.00│50.00│ +╰────────┴─────╯ + + Custom Tables +╭────────┬─────╮ +│ │ Mean│ +├────────┼─────┤ +│y x 1.00│15.00│ +├────────┼─────┤ +│z x 1.00│55.00│ +╰────────┴─────╯ + + Custom Tables +╭────────┬─────╮ +│ │ Mean│ +├────────┼─────┤ +│y x 1.00│20.00│ +├────────┼─────┤ +│z x 1.00│50.00│ +╰────────┴─────╯ +]) +AT_CLEANUP + +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'. +CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=DEFAULT /TABLE qnd5a BY qns3a. +CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=NAME /TABLE qnd5a BY qns3a. +CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=LABEL /TABLE qnd5a BY qns3a. +CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=BOTH /TABLE qnd5a BY qns3a. +CTABLES /VLABELS VARIABLES=qns3a qnd5a DISPLAY=NONE /TABLE qnd5a BY qns3a. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode], [0], [dnl + Custom Tables +╭────────────────────────────────────────────────────────────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├────────────────────────────────────────────────────────────────┼─────┼──────┤ +│D5a. What would you say is your primary Cuban │ 13│ 7│ +│ethnic background? Mexican │ 175│ 136│ +│ Spanish │ 20│ 28│ +│ South American │ 21│ 13│ +│ Central American │ 27│ 25│ +│ Puerto Rican, OR │ 37│ 41│ +│ Something else │ 35│ 33│ +│ Multiple - cannot │ 2│ 5│ +│ choose one │ │ │ +╰────────────────────────────────────────────────────────────────┴─────┴──────╯ + + Custom Tables +╭──────────────────────────────────┬────────────╮ +│ │ QNS3A │ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├──────────────────────────────────┼─────┼──────┤ +│QND5A Cuban │ 13│ 7│ +│ Mexican │ 175│ 136│ +│ Spanish │ 20│ 28│ +│ South American │ 21│ 13│ +│ Central American │ 27│ 25│ +│ Puerto Rican, OR │ 37│ 41│ +│ Something else │ 35│ 33│ +│ Multiple - cannot choose one│ 2│ 5│ +╰──────────────────────────────────┴─────┴──────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────────┬────────────╮ +│ │S3a. GENDER:│ +│ ├─────┬──────┤ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├────────────────────────────────────────────────────────────────┼─────┼──────┤ +│D5a. What would you say is your primary Cuban │ 13│ 7│ +│ethnic background? Mexican │ 175│ 136│ +│ Spanish │ 20│ 28│ +│ South American │ 21│ 13│ +│ Central American │ 27│ 25│ +│ Puerto Rican, OR │ 37│ 41│ +│ Something else │ 35│ 33│ +│ Multiple - cannot │ 2│ 5│ +│ choose one │ │ │ +╰────────────────────────────────────────────────────────────────┴─────┴──────╯ + + Custom Tables +╭────────────────────────────────────────────────────────────┬────────────────╮ +│ │ QNS3A S3a. │ +│ │ GENDER: │ +│ ├───────┬────────┤ +│ │ Male │ Female │ +│ ├───────┼────────┤ +│ │ Count │ Count │ +├────────────────────────────────────────────────────────────┼───────┼────────┤ +│QND5A D5a. What would you say is your Cuban │ 13│ 7│ +│primary ethnic background? Mexican │ 175│ 136│ +│ Spanish │ 20│ 28│ +│ South American │ 21│ 13│ +│ Central American │ 27│ 25│ +│ Puerto Rican, OR │ 37│ 41│ +│ Something else │ 35│ 33│ +│ Multiple - cannot │ 2│ 5│ +│ choose one │ │ │ +╰────────────────────────────────────────────────────────────┴───────┴────────╯ + + Custom Tables +╭────────────────────────────┬─────┬──────╮ +│ │ Male│Female│ +│ ├─────┼──────┤ +│ │Count│ Count│ +├────────────────────────────┼─────┼──────┤ +│Cuban │ 13│ 7│ +│Mexican │ 175│ 136│ +│Spanish │ 20│ 28│ +│South American │ 21│ 13│ +│Central American │ 27│ 25│ +│Puerto Rican, OR │ 37│ 41│ +│Something else │ 35│ 33│ +│Multiple - cannot choose one│ 2│ 5│ +╰────────────────────────────┴─────┴──────╯ +]) +AT_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 /FORMAT EMPTY=ZERO /TABLE qnd5a BY qnd5. +CTABLES /FORMAT EMPTY=BLANK /TABLE qnd5a BY qnd5. +CTABLES /FORMAT EMPTY='n/a' /TABLE qnd5a BY qnd5. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode], [0], [dnl + Custom Tables +╭─────────────────────────────────────────────┬───────────────────────────────╮ +│ │ D5. ETHNICITY: Are you of │ +│ │ Hispanic or Latino origin or │ +│ │ descent? │ +│ ├───────────────┬───────────────┤ +│ │ Yes │ No │ +│ ├───────────────┼───────────────┤ +│ │ Count │ Count │ +├─────────────────────────────────────────────┼───────────────┼───────────────┤ +│D5a. What would you say is Cuban │ 20│ 0│ +│your primary ethnic Mexican │ 311│ 0│ +│background? Spanish │ 48│ 0│ +│ South American │ 34│ 0│ +│ Central American│ 52│ 0│ +│ Puerto Rican, OR│ 78│ 0│ +│ Something else │ 68│ 0│ +│ Multiple - │ 7│ 0│ +│ cannot choose │ │ │ +│ one │ │ │ +╰─────────────────────────────────────────────┴───────────────┴───────────────╯ + + Custom Tables +╭─────────────────────────────────────────────┬───────────────────────────────╮ +│ │ D5. ETHNICITY: Are you of │ +│ │ Hispanic or Latino origin or │ +│ │ descent? │ +│ ├───────────────┬───────────────┤ +│ │ Yes │ No │ +│ ├───────────────┼───────────────┤ +│ │ Count │ Count │ +├─────────────────────────────────────────────┼───────────────┼───────────────┤ +│D5a. What would you say is Cuban │ 20│ │ +│your primary ethnic Mexican │ 311│ │ +│background? Spanish │ 48│ │ +│ South American │ 34│ │ +│ Central American│ 52│ │ +│ Puerto Rican, OR│ 78│ │ +│ Something else │ 68│ │ +│ Multiple - │ 7│ │ +│ cannot choose │ │ │ +│ one │ │ │ +╰─────────────────────────────────────────────┴───────────────┴───────────────╯ + + Custom Tables +╭─────────────────────────────────────────────┬───────────────────────────────╮ +│ │ D5. ETHNICITY: Are you of │ +│ │ Hispanic or Latino origin or │ +│ │ descent? │ +│ ├───────────────┬───────────────┤ +│ │ Yes │ No │ +│ ├───────────────┼───────────────┤ +│ │ Count │ Count │ +├─────────────────────────────────────────────┼───────────────┼───────────────┤ +│D5a. What would you say is Cuban │ 20│n/a │ +│your primary ethnic Mexican │ 311│n/a │ +│background? Spanish │ 48│n/a │ +│ South American │ 34│n/a │ +│ Central American│ 52│n/a │ +│ Puerto Rican, OR│ 78│n/a │ +│ Something else │ 68│n/a │ +│ Multiple - │ 7│n/a │ +│ cannot choose │ │ │ +│ one │ │ │ +╰─────────────────────────────────────────────┴───────────────┴───────────────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES FORMAT MISSING]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /FORMAT MISSING='(no data)' /TABLE qnd5a[COLPCT] BY qnd5. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode], [0], [dnl + Custom Tables +╭─────────────────────────────────────────────┬───────────────────────────────╮ +│ │ D5. ETHNICITY: Are you of │ +│ │ Hispanic or Latino origin or │ +│ │ descent? │ +│ ├───────────────┬───────────────┤ +│ │ Yes │ No │ +│ ├───────────────┼───────────────┤ +│ │ Column % │ Column % │ +├─────────────────────────────────────────────┼───────────────┼───────────────┤ +│D5a. What would you say is Cuban │ 3.2%│(no data) │ +│your primary ethnic Mexican │ 50.3%│(no data) │ +│background? Spanish │ 7.8%│(no data) │ +│ South American │ 5.5%│(no data) │ +│ Central American│ 8.4%│(no data) │ +│ Puerto Rican, OR│ 12.6%│(no data) │ +│ Something else │ 11.0%│(no data) │ +│ Multiple - │ 1.1%│(no data) │ +│ cannot choose │ │ │ +│ one │ │ │ +╰─────────────────────────────────────────────┴───────────────┴───────────────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES HIDESMALLCOUNTS]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /TABLE qn38[c][COUNT, COLPCT]. +CTABLES /HIDESMALLCOUNTS /TABLE qn38[c][COUNT, COLPCT]. +CTABLES /HIDESMALLCOUNTS COUNT=10 /TABLE qn38[c][COUNT, COLPCT]. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode], [0], [dnl + Custom Tables +╭──────────────────────────────────────────────────────────────┬─────┬────────╮ +│ │Count│Column %│ +├──────────────────────────────────────────────────────────────┼─────┼────────┤ +│38. How many drinks did you have on that Less than one│ 7│ .5%│ +│occasion? 1 │ 491│ 34.9%│ +│ 2 │ 462│ 32.9%│ +│ 3 │ 229│ 16.3%│ +│ 4 │ 82│ 5.8%│ +│ 5 │ 56│ 4.0%│ +│ 6 │ 32│ 2.3%│ +│ 7 │ 9│ .6%│ +│ 8 │ 8│ .6%│ +│ 9 │ 4│ .3%│ +│ 10 │ 6│ .4%│ +│ 11 │ 2│ .1%│ +│ 12 │ 5│ .4%│ +│ 14 │ 1│ .1%│ +│ 15 │ 1│ .1%│ +│ 18 │ 1│ .1%│ +│ 20 │ 4│ .3%│ +│ 25 │ 1│ .1%│ +│ 30 │ 3│ .2%│ +│ 60 │ 1│ .1%│ +│ 99+ │ 0│ .0%│ +╰──────────────────────────────────────────────────────────────┴─────┴────────╯ + + Custom Tables +╭──────────────────────────────────────────────────────────────┬─────┬────────╮ +│ │Count│Column %│ +├──────────────────────────────────────────────────────────────┼─────┼────────┤ +│38. How many drinks did you have on that Less than one│ 7│ .5%│ +│occasion? 1 │ 491│ 34.9%│ +│ 2 │ 462│ 32.9%│ +│ 3 │ 229│ 16.3%│ +│ 4 │ 82│ 5.8%│ +│ 5 │ 56│ 4.0%│ +│ 6 │ 32│ 2.3%│ +│ 7 │ 9│ .6%│ +│ 8 │ 8│ .6%│ +│ 9 │<5 │ .3%│ +│ 10 │ 6│ .4%│ +│ 11 │<5 │ .1%│ +│ 12 │ 5│ .4%│ +│ 14 │<5 │ .1%│ +│ 15 │<5 │ .1%│ +│ 18 │<5 │ .1%│ +│ 20 │<5 │ .3%│ +│ 25 │<5 │ .1%│ +│ 30 │<5 │ .2%│ +│ 60 │<5 │ .1%│ +│ 99+ │<5 │ .0%│ +╰──────────────────────────────────────────────────────────────┴─────┴────────╯ + + Custom Tables +╭──────────────────────────────────────────────────────────────┬─────┬────────╮ +│ │Count│Column %│ +├──────────────────────────────────────────────────────────────┼─────┼────────┤ +│38. How many drinks did you have on that Less than one│<10 │ .5%│ +│occasion? 1 │ 491│ 34.9%│ +│ 2 │ 462│ 32.9%│ +│ 3 │ 229│ 16.3%│ +│ 4 │ 82│ 5.8%│ +│ 5 │ 56│ 4.0%│ +│ 6 │ 32│ 2.3%│ +│ 7 │<10 │ .6%│ +│ 8 │<10 │ .6%│ +│ 9 │<10 │ .3%│ +│ 10 │<10 │ .4%│ +│ 11 │<10 │ .1%│ +│ 12 │<10 │ .4%│ +│ 14 │<10 │ .1%│ +│ 15 │<10 │ .1%│ +│ 18 │<10 │ .1%│ +│ 20 │<10 │ .3%│ +│ 25 │<10 │ .1%│ +│ 30 │<10 │ .2%│ +│ 60 │<10 │ .1%│ +│ 99+ │<10 │ .0%│ +╰──────────────────────────────────────────────────────────────┴─────┴────────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES FORMAT MINCOLWIDTH MAXCOLWIDTH]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES /FORMAT MINCOLWIDTH=1 MAXCOLWIDTH=2 UNITS=INCHES /TABLE BY qns3a. +]]) +AT_CHECK([pspp ctables.sps -o - -O box=unicode -o pspp.spv], [0], [dnl + Custom Tables +╭────────────╮ +│S3a. GENDER:│ +├─────┬──────┤ +│ Male│Female│ +├─────┼──────┤ +│Count│ Count│ +├─────┼──────┤ +│ 3132│ 3867│ +╰─────┴──────╯ +]) +AT_CHECK([pspp-output get-table-look pspp.spv pspp.stt]) +AT_CHECK([sed 's/ /\n/g' pspp.stt | grep ColumnWidth | sort], [0], [dnl +maximumColumnWidth="192" +minimumColumnWidth="96" +]) +AT_CLEANUP + +AT_SETUP([CTABLES special formats]) +AT_KEYWORDS([NEGPAREN NEQUAL PAREN PCTPAREN]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +COMPUTE x = qnd3 - 4. +CTABLES /TABLE x[MINIMUM NEGPAREN8.1, MINIMUM NEQUAL8.1, MINIMUM PAREN8.1, MINIMUM PCTPAREN8.1, MAXIMUM NEGPAREN8.1, MAXIMUM NEQUAL8.1, MAXIMUM PAREN8.1, MAXIMUM PCTPAREN8.1]. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode], [0], [dnl + Custom Tables +╭─┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────╮ +│ │Minimum│Minimum│Minimum│Minimum│Maximum│Maximum│Maximum│Maximum│ +├─┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ +│x│(3.0) │N=-3.0 │(-3.0) │(-3.0%)│8.0 │N=8.0 │(8.0) │(8.0%) │ +╰─┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES TITLES]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES + /VLABELS VARIABLES=qn1 DISPLAY=NONE + /TABLE ((qn1[c][COUNT])) BY qns3a[c] > qnd5 + /TITLES TITLE='How often do you drive?' + CAPTION='Generated )TIME on )DATE' + CORNER=')TABLE'. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode | sed 's/..:..:../HH:MM:SS/ +s&../../..&MM/DD/YY&'], [0], [dnl + How often do you drive? +╭───────────────────────────────────┬─────────────────────────────────────────╮ +│ │ S3a. GENDER: │ +│ ├────────────────────┬────────────────────┤ +│ │ Male │ Female │ +│ ├────────────────────┼────────────────────┤ +│ │ D5. ETHNICITY: Are │ D5. ETHNICITY: Are │ +│ │ you of Hispanic or │ you of Hispanic or │ +│ │ Latino origin or │ Latino origin or │ +│( ( 1. How often do you usually │ descent? │ descent? │ +│drive a car or other motor ├─────────┬──────────┼─────────┬──────────┤ +│vehicle?) ) BY S3a. GENDER: > D5. │ Yes │ No │ Yes │ No │ +│ETHNICITY: Are you of Hispanic or ├─────────┼──────────┼─────────┼──────────┤ +│Latino origin or descent? │ Count │ Count │ Count │ Count │ +├───────────────────────────────────┼─────────┼──────────┼─────────┼──────────┤ +│Every day │ 218│ 2066│ 166│ 2175│ +│Several days a week │ 44│ 391│ 45│ 782│ +│Once a week or less │ 16│ 109│ 12│ 223│ +│Only certain times a year │ 15│ 41│ 11│ 61│ +│Never │ 39│ 150│ 56│ 278│ +╰───────────────────────────────────┴─────────┴──────────┴─────────┴──────────╯ +Generated HH:MM:SS on MM/DD/YY +]) +AT_CLEANUP + +AT_SETUP([CTABLES area definitions]) +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[TABLEID, LAYERID, SUBTABLEID] + /SLABELS POSITION=ROW + /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[ROWID, LAYERROWID] + /SLABELS POSITION=ROW + /TABLE qn61 > qn57 BY qnd7a > qn86 + qn64b BY qns3a[COLID, LAYERCOLID] + /SLABELS POSITION=ROW. +]]) +AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=80], [0], [dnl + Custom Tables +Male +╭─────────────────────────────┬─────────────┬──────╮ +│ │ QND7A │ QN64B│ +│ ├──────┬──────┼───┬──┤ +│ │ Yes │ No │ │ │ +│ ├──────┼──────┤ │ │ +│ │ QN86 │ QN86 │ │ │ +│ ├───┬──┼───┬──┤ │ │ +│ │Yes│No│Yes│No│Yes│No│ +├─────────────────────────────┼───┼──┼───┼──┼───┼──┤ +│QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Layer ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Subtable ID│ 1│ 1│ 2│ 2│ 3│ 3│ +│ ╶───────────────┼───┼──┼───┼──┼───┼──┤ +│ No Table ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Layer ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Subtable ID│ 1│ 1│ 2│ 2│ 3│ 3│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Layer ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Subtable ID│ 4│ 4│ 5│ 5│ 6│ 6│ +│ ╶───────────────┼───┼──┼───┼──┼───┼──┤ +│ No Table ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Layer ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Subtable ID│ 4│ 4│ 5│ 5│ 6│ 6│ +╰─────────────────────────────┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +╭─────────────────────────────┬─────────────┬──────╮ +│ │ QND7A │ QN64B│ +│ ├──────┬──────┼───┬──┤ +│ │ Yes │ No │ │ │ +│ ├──────┼──────┤ │ │ +│ │ QN86 │ QN86 │ │ │ +│ ├───┬──┼───┬──┤ │ │ +│ │Yes│No│Yes│No│Yes│No│ +├─────────────────────────────┼───┼──┼───┼──┼───┼──┤ +│QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Layer ID │ 3│ 3│ 3│ 3│ 4│ 4│ +│ Subtable ID│ 7│ 7│ 8│ 8│ 9│ 9│ +│ ╶───────────────┼───┼──┼───┼──┼───┼──┤ +│ No Table ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Layer ID │ 3│ 3│ 3│ 3│ 4│ 4│ +│ Subtable ID│ 7│ 7│ 8│ 8│ 9│ 9│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Layer ID │ 3│ 3│ 3│ 3│ 4│ 4│ +│ Subtable ID│ 10│10│ 11│11│ 12│12│ +│ ╶───────────────┼───┼──┼───┼──┼───┼──┤ +│ No Table ID │ 1│ 1│ 1│ 1│ 2│ 2│ +│ Layer ID │ 3│ 3│ 3│ 3│ 4│ 4│ +│ Subtable ID│ 10│10│ 11│11│ 12│12│ +╰─────────────────────────────┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +╭──────────────────────────────┬─────────────┬──────╮ +│ │ QND7A │ QN64B│ +│ ├──────┬──────┼───┬──┤ +│ │ Yes │ No │ │ │ +│ ├──────┼──────┤ │ │ +│ │ QN86 │ QN86 │ │ │ +│ ├───┬──┼───┬──┤ │ │ +│ │Yes│No│Yes│No│Yes│No│ +├──────────────────────────────┼───┼──┼───┼──┼───┼──┤ +│QN61 Yes QN57 Yes Row ID │ 1│ 1│ 2│ 2│ 3│ 3│ +│ Layer Row ID│ 1│ 1│ 1│ 1│ 2│ 2│ +│ ╶────────────────┼───┼──┼───┼──┼───┼──┤ +│ No Row ID │ 4│ 4│ 5│ 5│ 6│ 6│ +│ Layer Row ID│ 3│ 3│ 3│ 3│ 4│ 4│ +│ ╶─────────────────────────┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Yes Row ID │ 7│ 7│ 8│ 8│ 9│ 9│ +│ Layer Row ID│ 5│ 5│ 5│ 5│ 6│ 6│ +│ ╶────────────────┼───┼──┼───┼──┼───┼──┤ +│ No Row ID │ 10│10│ 11│11│ 12│12│ +│ Layer Row ID│ 7│ 7│ 7│ 7│ 8│ 8│ +╰──────────────────────────────┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +╭──────────────────────────────┬─────────────┬──────╮ +│ │ QND7A │ QN64B│ +│ ├──────┬──────┼───┬──┤ +│ │ Yes │ No │ │ │ +│ ├──────┼──────┤ │ │ +│ │ QN86 │ QN86 │ │ │ +│ ├───┬──┼───┬──┤ │ │ +│ │Yes│No│Yes│No│Yes│No│ +├──────────────────────────────┼───┼──┼───┼──┼───┼──┤ +│QN61 Yes QN57 Yes Row ID │ 13│13│ 14│14│ 15│15│ +│ Layer Row ID│ 9│ 9│ 9│ 9│ 10│10│ +│ ╶────────────────┼───┼──┼───┼──┼───┼──┤ +│ No Row ID │ 16│16│ 17│17│ 18│18│ +│ Layer Row ID│ 11│11│ 11│11│ 12│12│ +│ ╶─────────────────────────┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Yes Row ID │ 19│19│ 20│20│ 21│21│ +│ Layer Row ID│ 13│13│ 13│13│ 14│14│ +│ ╶────────────────┼───┼──┼───┼──┼───┼──┤ +│ No Row ID │ 22│22│ 23│23│ 24│24│ +│ Layer Row ID│ 15│15│ 15│15│ 16│16│ +╰──────────────────────────────┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +╭─────────────────────────────────┬─────────────┬──────╮ +│ │ QND7A │ QN64B│ +│ ├──────┬──────┼───┬──┤ +│ │ Yes │ No │ │ │ +│ ├──────┼──────┤ │ │ +│ │ QN86 │ QN86 │ │ │ +│ ├───┬──┼───┬──┤ │ │ +│ │Yes│No│Yes│No│Yes│No│ +├─────────────────────────────────┼───┼──┼───┼──┼───┼──┤ +│QN61 Yes QN57 Yes Column ID │ 1│ 2│ 3│ 4│ 5│ 6│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ 5│ 6│ +│ ╶───────────────────┼───┼──┼───┼──┼───┼──┤ +│ No Column ID │ 1│ 2│ 3│ 4│ 5│ 6│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ 5│ 6│ +│ ╶────────────────────────────┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Yes Column ID │ 7│ 8│ 9│10│ 11│12│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ 5│ 6│ +│ ╶───────────────────┼───┼──┼───┼──┼───┼──┤ +│ No Column ID │ 7│ 8│ 9│10│ 11│12│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ 5│ 6│ +╰─────────────────────────────────┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +╭─────────────────────────────────┬─────────────┬──────╮ +│ │ QND7A │ QN64B│ +│ ├──────┬──────┼───┬──┤ +│ │ Yes │ No │ │ │ +│ ├──────┼──────┤ │ │ +│ │ QN86 │ QN86 │ │ │ +│ ├───┬──┼───┬──┤ │ │ +│ │Yes│No│Yes│No│Yes│No│ +├─────────────────────────────────┼───┼──┼───┼──┼───┼──┤ +│QN61 Yes QN57 Yes Column ID │ 13│14│ 15│16│ 17│18│ +│ Layer Column ID│ 7│ 8│ 9│10│ 11│12│ +│ ╶───────────────────┼───┼──┼───┼──┼───┼──┤ +│ No Column ID │ 13│14│ 15│16│ 17│18│ +│ Layer Column ID│ 7│ 8│ 9│10│ 11│12│ +│ ╶────────────────────────────┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Yes Column ID │ 19│20│ 21│22│ 23│24│ +│ Layer Column ID│ 7│ 8│ 9│10│ 11│12│ +│ ╶───────────────────┼───┼──┼───┼──┼───┼──┤ +│ No Column ID │ 19│20│ 21│22│ 23│24│ +│ Layer Column ID│ 7│ 8│ 9│10│ 11│12│ +╰─────────────────────────────────┴───┴──┴───┴──┴───┴──╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES area definitions with CLABELS ROWLABELS=OPPOSITE]) +AT_KEYWORDS([ROWLABELS OPPOSITE]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES + /VLABELS VARIABLES=ALL DISPLAY=NAME + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[TABLEID, LAYERID, SUBTABLEID] + /SLABELS POSITION=ROW + /CLABELS ROWLABELS=OPPOSITE + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID] + /SLABELS POSITION=ROW + /CLABELS ROWLABELS=OPPOSITE + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID] + /SLABELS POSITION=ROW + /CLABELS ROWLABELS=OPPOSITE. +]]) +AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl + Custom Tables +Male +╭──────────────────────────────────┬───────────────────────────────────────────────────────╮ +│ │ QN27 │ +│ ├───────────────────────────┬───────────────────────────┤ +│ │ Yes │ No │ +│ ├───────────────────────────┼───────────────────────────┤ +│ │ QND7A │ QND7A │ +│ ├─────────────┬─────────────┼─────────────┬─────────────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├─────────────┼─────────────┼─────────────┼─────────────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ Yes │ No │ Yes │ No │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Subtable ID│ 1│ 1│ 2│ 2│ 3│ 3│ 4│ 4│ 5│ 5│ 6│ 6│ 7│ 7│ 8│ 8│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Subtable ID│ 1│ 1│ 2│ 2│ 3│ 3│ 4│ 4│ 5│ 5│ 6│ 6│ 7│ 7│ 8│ 8│ +│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Subtable ID│ 9│ 9│ 10│10│ 11│11│ 12│12│ 13│13│ 14│14│ 15│15│ 16│16│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Subtable ID│ 9│ 9│ 10│10│ 11│11│ 12│12│ 13│13│ 14│14│ 15│15│ 16│16│ +╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +╭──────────────────────────────────┬───────────────────────────────────────────────────────╮ +│ │ QN27 │ +│ ├───────────────────────────┬───────────────────────────┤ +│ │ Yes │ No │ +│ ├───────────────────────────┼───────────────────────────┤ +│ │ QND7A │ QND7A │ +│ ├─────────────┬─────────────┼─────────────┬─────────────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├─────────────┼─────────────┼─────────────┼─────────────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ Yes │ No │ Yes │ No │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ Subtable ID│ 17│17│ 18│18│ 19│19│ 20│20│ 21│21│ 22│22│ 23│23│ 24│24│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ Subtable ID│ 17│17│ 18│18│ 19│19│ 20│20│ 21│21│ 22│22│ 23│23│ 24│24│ +│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ Subtable ID│ 25│25│ 26│26│ 27│27│ 28│28│ 29│29│ 30│30│ 31│31│ 32│32│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ Subtable ID│ 25│25│ 26│26│ 27│27│ 28│28│ 29│29│ 30│30│ 31│31│ 32│32│ +╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +╭───────────────────────────────────┬───────────────────────────────────────────────────────╮ +│ │ QN27 │ +│ ├───────────────────────────┬───────────────────────────┤ +│ │ Yes │ No │ +│ ├───────────────────────────┼───────────────────────────┤ +│ │ QND7A │ QND7A │ +│ ├─────────────┬─────────────┼─────────────┬─────────────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├─────────────┼─────────────┼─────────────┼─────────────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ Yes │ No │ Yes │ No │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│ +├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Row ID │ 1│ 1│ 2│ 2│ 3│ 3│ 4│ 4│ 5│ 5│ 6│ 6│ 7│ 7│ 8│ 8│ +│ Layer Row ID│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 9│ 9│ 10│10│ 11│11│ 12│12│ 13│13│ 14│14│ 15│15│ 16│16│ +│ Layer Row ID│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Row ID │ 17│17│ 18│18│ 19│19│ 20│20│ 21│21│ 22│22│ 23│23│ 24│24│ +│ Layer Row ID│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 25│25│ 26│26│ 27│27│ 28│28│ 29│29│ 30│30│ 31│31│ 32│32│ +│ Layer Row ID│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ +╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +╭───────────────────────────────────┬───────────────────────────────────────────────────────╮ +│ │ QN27 │ +│ ├───────────────────────────┬───────────────────────────┤ +│ │ Yes │ No │ +│ ├───────────────────────────┼───────────────────────────┤ +│ │ QND7A │ QND7A │ +│ ├─────────────┬─────────────┼─────────────┬─────────────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├─────────────┼─────────────┼─────────────┼─────────────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ Yes │ No │ Yes │ No │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│ +├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Row ID │ 33│33│ 34│34│ 35│35│ 36│36│ 37│37│ 38│38│ 39│39│ 40│40│ +│ Layer Row ID│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 41│41│ 42│42│ 43│43│ 44│44│ 45│45│ 46│46│ 47│47│ 48│48│ +│ Layer Row ID│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ +│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Row ID │ 49│49│ 50│50│ 51│51│ 52│52│ 53│53│ 54│54│ 55│55│ 56│56│ +│ Layer Row ID│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 57│57│ 58│58│ 59│59│ 60│60│ 61│61│ 62│62│ 63│63│ 64│64│ +│ Layer Row ID│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ +╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +╭──────────────────────────────────────┬───────────────────────────────────────────────────────╮ +│ │ QN27 │ +│ ├───────────────────────────┬───────────────────────────┤ +│ │ Yes │ No │ +│ ├───────────────────────────┼───────────────────────────┤ +│ │ QND7A │ QND7A │ +│ ├─────────────┬─────────────┼─────────────┬─────────────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├─────────────┼─────────────┼─────────────┼─────────────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ Yes │ No │ Yes │ No │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│ +│ Layer Column ID│ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│ +│ Layer Column ID│ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 32│31│ +│ Layer Column ID│ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 32│31│ +│ Layer Column ID│ 2│ 1│ 4│ 3│ 6│ 5│ 7│ 8│ 10│ 9│ 11│12│ 14│13│ 15│16│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +╭──────────────────────────────────────┬───────────────────────────────────────────────────────╮ +│ │ QN27 │ +│ ├───────────────────────────┬───────────────────────────┤ +│ │ Yes │ No │ +│ ├───────────────────────────┼───────────────────────────┤ +│ │ QND7A │ QND7A │ +│ ├─────────────┬─────────────┼─────────────┬─────────────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├─────────────┼─────────────┼─────────────┼─────────────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├──────┬──────┼──────┬──────┼──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ Yes │ No │ Yes │ No │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 34│33│ 35│36│ 37│38│ 39│40│ 41│42│ 44│43│ 45│46│ 47│48│ +│ Layer Column ID│ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 31│32│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 34│33│ 35│36│ 37│38│ 39│40│ 41│42│ 44│43│ 45│46│ 47│48│ +│ Layer Column ID│ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 31│32│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 50│49│ 51│52│ 53│54│ 55│56│ 57│58│ 59│60│ 62│61│ 64│63│ +│ Layer Column ID│ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 31│32│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 50│49│ 51│52│ 53│54│ 55│56│ 57│58│ 59│60│ 62│61│ 64│63│ +│ Layer Column ID│ 18│17│ 19│20│ 21│22│ 23│24│ 25│26│ 28│27│ 29│30│ 31│32│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──┴───┴──╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES area definitions with CLABELS COLLABELS=OPPOSITE]) +AT_KEYWORDS([COLLABELS OPPOSITE]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES + /VLABELS VARIABLES=ALL DISPLAY=NAME + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[TABLEID, LAYERID, SUBTABLEID] + /SLABELS POSITION=ROW + /CLABELS COLLABELS=OPPOSITE + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID] + /SLABELS POSITION=ROW + /CLABELS COLLABELS=OPPOSITE + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID] + /SLABELS POSITION=ROW + /CLABELS COLLABELS=OPPOSITE. +]]) +AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl + Custom Tables +Male +╭──────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 1│ 1│ 2│ 2│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 1│ 1│ 2│ 2│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 3│ 3│ 4│ 4│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 3│ 3│ 4│ 4│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 5│ 5│ 6│ 6│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 5│ 5│ 6│ 6│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 7│ 7│ 8│ 8│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 7│ 7│ 8│ 8│ +│ ╶─────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 9│ 9│ 10│ 10│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 9│ 9│ 10│ 10│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 11│ 11│ 12│ 12│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 11│ 11│ 12│ 12│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 13│ 13│ 14│ 14│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 13│ 13│ 14│ 14│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 15│ 15│ 16│ 16│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 15│ 15│ 16│ 16│ +╰──────────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +╭──────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 17│ 17│ 18│ 18│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 17│ 17│ 18│ 18│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 19│ 19│ 20│ 20│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 19│ 19│ 20│ 20│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 21│ 21│ 22│ 22│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 21│ 21│ 22│ 22│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 23│ 23│ 24│ 24│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 23│ 23│ 24│ 24│ +│ ╶─────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 25│ 25│ 26│ 26│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 25│ 25│ 26│ 26│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 27│ 27│ 28│ 28│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 27│ 27│ 28│ 28│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 29│ 29│ 30│ 30│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 29│ 29│ 30│ 30│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 31│ 31│ 32│ 32│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 31│ 31│ 32│ 32│ +╰──────────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Male +╭───────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├───────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Yes Row ID │ 2│ 2│ 3│ 3│ +│ Layer Row ID│ 2│ 2│ 2│ 2│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 1│ 1│ 4│ 4│ +│ Layer Row ID│ 1│ 1│ 1│ 1│ +│ ╶────────────────────┼────┼────┼────┼────┤ +│ No Yes Row ID │ 5│ 5│ 7│ 7│ +│ Layer Row ID│ 3│ 3│ 3│ 3│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 6│ 6│ 8│ 8│ +│ Layer Row ID│ 4│ 4│ 4│ 4│ +│ ╶─────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Row ID │ 10│ 10│ 11│ 11│ +│ Layer Row ID│ 6│ 6│ 6│ 6│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 9│ 9│ 12│ 12│ +│ Layer Row ID│ 5│ 5│ 5│ 5│ +│ ╶────────────────────┼────┼────┼────┼────┤ +│ No Yes Row ID │ 14│ 14│ 16│ 16│ +│ Layer Row ID│ 8│ 8│ 8│ 8│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 13│ 13│ 15│ 15│ +│ Layer Row ID│ 7│ 7│ 7│ 7│ +│ ╶──────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Yes Row ID │ 17│ 17│ 19│ 19│ +│ Layer Row ID│ 9│ 9│ 9│ 9│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 18│ 18│ 20│ 20│ +│ Layer Row ID│ 10│ 10│ 10│ 10│ +│ ╶────────────────────┼────┼────┼────┼────┤ +│ No Yes Row ID │ 21│ 21│ 23│ 23│ +│ Layer Row ID│ 11│ 11│ 11│ 11│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 22│ 22│ 24│ 24│ +│ Layer Row ID│ 12│ 12│ 12│ 12│ +│ ╶─────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Row ID │ 26│ 26│ 28│ 28│ +│ Layer Row ID│ 14│ 14│ 14│ 14│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 25│ 25│ 27│ 27│ +│ Layer Row ID│ 13│ 13│ 13│ 13│ +│ ╶────────────────────┼────┼────┼────┼────┤ +│ No Yes Row ID │ 30│ 30│ 32│ 32│ +│ Layer Row ID│ 16│ 16│ 16│ 16│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 29│ 29│ 31│ 31│ +│ Layer Row ID│ 15│ 15│ 15│ 15│ +╰───────────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +╭───────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├───────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Yes Row ID │ 33│ 33│ 36│ 36│ +│ Layer Row ID│ 17│ 17│ 17│ 17│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 34│ 34│ 35│ 35│ +│ Layer Row ID│ 18│ 18│ 18│ 18│ +│ ╶────────────────────┼────┼────┼────┼────┤ +│ No Yes Row ID │ 37│ 37│ 39│ 39│ +│ Layer Row ID│ 19│ 19│ 19│ 19│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 38│ 38│ 40│ 40│ +│ Layer Row ID│ 20│ 20│ 20│ 20│ +│ ╶─────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Row ID │ 41│ 41│ 44│ 44│ +│ Layer Row ID│ 21│ 21│ 21│ 21│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 42│ 42│ 43│ 43│ +│ Layer Row ID│ 22│ 22│ 22│ 22│ +│ ╶────────────────────┼────┼────┼────┼────┤ +│ No Yes Row ID │ 45│ 45│ 48│ 48│ +│ Layer Row ID│ 23│ 23│ 23│ 23│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 46│ 46│ 47│ 47│ +│ Layer Row ID│ 24│ 24│ 24│ 24│ +│ ╶──────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Yes Row ID │ 49│ 49│ 52│ 52│ +│ Layer Row ID│ 25│ 25│ 25│ 25│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 50│ 50│ 51│ 51│ +│ Layer Row ID│ 26│ 26│ 26│ 26│ +│ ╶────────────────────┼────┼────┼────┼────┤ +│ No Yes Row ID │ 53│ 53│ 55│ 55│ +│ Layer Row ID│ 27│ 27│ 27│ 27│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 54│ 54│ 56│ 56│ +│ Layer Row ID│ 28│ 28│ 28│ 28│ +│ ╶─────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Row ID │ 58│ 58│ 59│ 59│ +│ Layer Row ID│ 30│ 30│ 30│ 30│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 57│ 57│ 60│ 60│ +│ Layer Row ID│ 29│ 29│ 29│ 29│ +│ ╶────────────────────┼────┼────┼────┼────┤ +│ No Yes Row ID │ 62│ 62│ 64│ 64│ +│ Layer Row ID│ 32│ 32│ 32│ 32│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 61│ 61│ 63│ 63│ +│ Layer Row ID│ 31│ 31│ 31│ 31│ +╰───────────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Male +╭──────────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Yes Column ID │ 1│ 2│ 3│ 4│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 1│ 2│ 3│ 4│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────────┼────┼────┼────┼────┤ +│ No Yes Column ID │ 5│ 6│ 7│ 8│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 5│ 6│ 7│ 8│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶────────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Column ID │ 9│ 10│ 11│ 12│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 9│ 10│ 11│ 12│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────────┼────┼────┼────┼────┤ +│ No Yes Column ID │ 13│ 14│ 15│ 16│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 13│ 14│ 15│ 16│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶─────────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Yes Column ID │ 17│ 18│ 19│ 20│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 17│ 18│ 19│ 20│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────────┼────┼────┼────┼────┤ +│ No Yes Column ID │ 21│ 22│ 23│ 24│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 21│ 22│ 23│ 24│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶────────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Column ID │ 25│ 26│ 27│ 28│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 25│ 26│ 27│ 28│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────────┼────┼────┼────┼────┤ +│ No Yes Column ID │ 29│ 30│ 31│ 32│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 29│ 30│ 31│ 32│ +│ Layer Column ID│ 1│ 2│ 3│ 4│ +╰──────────────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +╭──────────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Yes Column ID │ 33│ 34│ 35│ 36│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 33│ 34│ 35│ 36│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────────┼────┼────┼────┼────┤ +│ No Yes Column ID │ 37│ 38│ 39│ 40│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 37│ 38│ 39│ 40│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶────────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Column ID │ 41│ 42│ 43│ 44│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 41│ 42│ 43│ 44│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────────┼────┼────┼────┼────┤ +│ No Yes Column ID │ 45│ 46│ 47│ 48│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 45│ 46│ 47│ 48│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶─────────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Yes Column ID │ 49│ 50│ 51│ 52│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 49│ 50│ 51│ 52│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────────┼────┼────┼────┼────┤ +│ No Yes Column ID │ 53│ 54│ 55│ 56│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 53│ 54│ 55│ 56│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶────────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Yes Column ID │ 57│ 58│ 59│ 60│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 57│ 58│ 59│ 60│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────────┼────┼────┼────┼────┤ +│ No Yes Column ID │ 61│ 62│ 63│ 64│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 61│ 62│ 63│ 64│ +│ Layer Column ID│ 5│ 6│ 7│ 8│ +╰──────────────────────────────────────────────┴────┴────┴────┴────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES area definitions with CLABELS ROWLABELS=LAYER]) +AT_KEYWORDS([ROWLABELS LAYER]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES + /VLABELS VARIABLES=ALL DISPLAY=NAME + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[TABLEID, LAYERID, SUBTABLEID] + /SLABELS POSITION=ROW + /CLABELS ROWLABELS=LAYER + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID] + /SLABELS POSITION=ROW + /CLABELS ROWLABELS=LAYER + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID] + /SLABELS POSITION=ROW + /CLABELS ROWLABELS=LAYER. +]]) +AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl + Custom Tables +Male +Yes +╭──────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ Subtable ID│ 2│ 2│ 3│ 3│ 5│ 5│ 7│ 7│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ Subtable ID│ 2│ 2│ 3│ 3│ 5│ 5│ 7│ 7│ +│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ Subtable ID│ 10│10│ 12│12│ 13│13│ 16│16│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ Subtable ID│ 10│10│ 12│12│ 13│13│ 16│16│ +╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +No +╭──────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Subtable ID│ 1│ 1│ 4│ 4│ 6│ 6│ 8│ 8│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Subtable ID│ 1│ 1│ 4│ 4│ 6│ 6│ 8│ 8│ +│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Subtable ID│ 9│ 9│ 11│11│ 14│14│ 15│15│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Subtable ID│ 9│ 9│ 11│11│ 14│14│ 15│15│ +╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +Yes +╭──────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ +│ Subtable ID│ 17│17│ 19│19│ 21│21│ 23│23│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ +│ Subtable ID│ 17│17│ 19│19│ 21│21│ 23│23│ +│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ +│ Subtable ID│ 25│25│ 28│28│ 29│29│ 32│32│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ +│ Subtable ID│ 25│25│ 28│28│ 29│29│ 32│32│ +╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +No +╭──────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ +│ Subtable ID│ 18│18│ 20│20│ 22│22│ 24│24│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ +│ Subtable ID│ 18│18│ 20│20│ 22│22│ 24│24│ +│ ╶─────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ +│ Subtable ID│ 26│26│ 27│27│ 30│30│ 31│31│ +│ ╶────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Table ID │ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ +│ Subtable ID│ 26│26│ 27│27│ 30│30│ 31│31│ +╰──────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +Yes +╭───────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Row ID │ 1│ 1│ 3│ 3│ 6│ 6│ 8│ 8│ +│ Layer Row ID│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ 1│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 9│ 9│ 11│11│ 14│14│ 15│15│ +│ Layer Row ID│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ 3│ +│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Row ID │ 18│18│ 20│20│ 22│22│ 23│23│ +│ Layer Row ID│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ 6│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 26│26│ 28│28│ 29│29│ 32│32│ +│ Layer Row ID│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ 8│ +╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +No +╭───────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Row ID │ 2│ 2│ 4│ 4│ 5│ 5│ 7│ 7│ +│ Layer Row ID│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ 2│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 10│10│ 12│12│ 13│13│ 16│16│ +│ Layer Row ID│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ 4│ +│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Row ID │ 17│17│ 19│19│ 21│21│ 24│24│ +│ Layer Row ID│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ 5│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 25│25│ 27│27│ 30│30│ 31│31│ +│ Layer Row ID│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ 7│ +╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +Yes +╭───────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Row ID │ 33│33│ 36│36│ 38│38│ 40│40│ +│ Layer Row ID│ 9│ 9│ 9│ 9│ 9│ 9│ 9│ 9│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 42│42│ 43│43│ 45│45│ 47│47│ +│ Layer Row ID│ 12│12│ 12│12│ 12│12│ 12│12│ +│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Row ID │ 50│50│ 52│52│ 53│53│ 56│56│ +│ Layer Row ID│ 14│14│ 14│14│ 14│14│ 14│14│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 57│57│ 60│60│ 61│61│ 63│63│ +│ Layer Row ID│ 15│15│ 15│15│ 15│15│ 15│15│ +╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +No +╭───────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├───────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Row ID │ 34│34│ 35│35│ 37│37│ 39│39│ +│ Layer Row ID│ 10│10│ 10│10│ 10│10│ 10│10│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 41│41│ 44│44│ 46│46│ 48│48│ +│ Layer Row ID│ 11│11│ 11│11│ 11│11│ 11│11│ +│ ╶──────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Row ID │ 49│49│ 51│51│ 54│54│ 55│55│ +│ Layer Row ID│ 13│13│ 13│13│ 13│13│ 13│13│ +│ ╶─────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Row ID │ 58│58│ 59│59│ 62│62│ 64│64│ +│ Layer Row ID│ 16│16│ 16│16│ 16│16│ 16│16│ +╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +Yes +╭──────────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 2│ 4│ 6│ 7│ 10│11│ 14│15│ +│ Layer Column ID│ 2│ 4│ 6│ 7│ 10│11│ 14│15│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 2│ 4│ 6│ 7│ 10│11│ 14│15│ +│ Layer Column ID│ 2│ 4│ 6│ 7│ 10│11│ 14│15│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 18│19│ 21│23│ 25│28│ 29│32│ +│ Layer Column ID│ 2│ 4│ 6│ 7│ 10│11│ 14│15│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 18│19│ 21│23│ 25│28│ 29│32│ +│ Layer Column ID│ 2│ 4│ 6│ 7│ 10│11│ 14│15│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +No +╭──────────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 1│ 3│ 5│ 8│ 9│12│ 13│16│ +│ Layer Column ID│ 1│ 3│ 5│ 8│ 9│12│ 13│16│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 1│ 3│ 5│ 8│ 9│12│ 13│16│ +│ Layer Column ID│ 1│ 3│ 5│ 8│ 9│12│ 13│16│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 17│20│ 22│24│ 26│27│ 30│31│ +│ Layer Column ID│ 1│ 3│ 5│ 8│ 9│12│ 13│16│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 17│20│ 22│24│ 26│27│ 30│31│ +│ Layer Column ID│ 1│ 3│ 5│ 8│ 9│12│ 13│16│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +Yes +╭──────────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 34│35│ 37│39│ 41│44│ 45│47│ +│ Layer Column ID│ 18│19│ 21│23│ 25│28│ 29│31│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 34│35│ 37│39│ 41│44│ 45│47│ +│ Layer Column ID│ 18│19│ 21│23│ 25│28│ 29│31│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 50│51│ 53│55│ 57│59│ 62│64│ +│ Layer Column ID│ 18│19│ 21│23│ 25│28│ 29│31│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 50│51│ 53│55│ 57│59│ 62│64│ +│ Layer Column ID│ 18│19│ 21│23│ 25│28│ 29│31│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +No +╭──────────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 33│36│ 38│40│ 42│43│ 46│48│ +│ Layer Column ID│ 17│20│ 22│24│ 26│27│ 30│32│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 33│36│ 38│40│ 42│43│ 46│48│ +│ Layer Column ID│ 17│20│ 22│24│ 26│27│ 30│32│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 49│52│ 54│56│ 58│60│ 61│63│ +│ Layer Column ID│ 17│20│ 22│24│ 26│27│ 30│32│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 49│52│ 54│56│ 58│60│ 61│63│ +│ Layer Column ID│ 17│20│ 22│24│ 26│27│ 30│32│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES area definitions with CLABELS COLLABELS=LAYER]) +AT_KEYWORDS([COLLABELS LAYER]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES + /VLABELS VARIABLES=ALL DISPLAY=NAME + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[TABLEID, LAYERID, SUBTABLEID] + /SLABELS POSITION=ROW + /CLABELS COLLABELS=LAYER + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID] + /SLABELS POSITION=ROW + /CLABELS COLLABELS=LAYER + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID] + /SLABELS POSITION=ROW + /CLABELS COLLABELS=LAYER. +]]) +AT_CHECK([pspp ctables.sps --table-look="$builddir"/all-layers.stt -O box=unicode -O width=120], [0], [dnl + Custom Tables +Male +Yes +╭──────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 2│ 2│ 4│ 4│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 2│ 2│ 4│ 4│ +│ ╶────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 5│ 5│ 7│ 7│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 5│ 5│ 7│ 7│ +│ ╶─────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 10│ 10│ 12│ 12│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 10│ 10│ 12│ 12│ +│ ╶────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 13│ 13│ 15│ 15│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 2│ 2│ 2│ 2│ +│ Subtable ID│ 13│ 13│ 15│ 15│ +╰──────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Male +No +╭──────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 1│ 1│ 3│ 3│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 1│ 1│ 3│ 3│ +│ ╶────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 6│ 6│ 8│ 8│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 6│ 6│ 8│ 8│ +│ ╶─────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 9│ 9│ 11│ 11│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 9│ 9│ 11│ 11│ +│ ╶────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 14│ 14│ 16│ 16│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 1│ 1│ 1│ 1│ +│ Subtable ID│ 14│ 14│ 16│ 16│ +╰──────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +Yes +╭──────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ +│ Subtable ID│ 18│ 18│ 19│ 19│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ +│ Subtable ID│ 18│ 18│ 19│ 19│ +│ ╶────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ +│ Subtable ID│ 22│ 22│ 23│ 23│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ +│ Subtable ID│ 22│ 22│ 23│ 23│ +│ ╶─────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ +│ Subtable ID│ 26│ 26│ 28│ 28│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ +│ Subtable ID│ 26│ 26│ 28│ 28│ +│ ╶────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ +│ Subtable ID│ 29│ 29│ 31│ 31│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 4│ 4│ 4│ 4│ +│ Subtable ID│ 29│ 29│ 31│ 31│ +╰──────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +No +╭──────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ +│ Subtable ID│ 17│ 17│ 20│ 20│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ +│ Subtable ID│ 17│ 17│ 20│ 20│ +│ ╶────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ +│ Subtable ID│ 21│ 21│ 24│ 24│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ +│ Subtable ID│ 21│ 21│ 24│ 24│ +│ ╶─────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ +│ Subtable ID│ 25│ 25│ 27│ 27│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ +│ Subtable ID│ 25│ 25│ 27│ 27│ +│ ╶────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ +│ Subtable ID│ 30│ 30│ 32│ 32│ +│ ╶───────────────┼────┼────┼────┼────┤ +│ No Table ID │ 1│ 1│ 1│ 1│ +│ Layer ID │ 3│ 3│ 3│ 3│ +│ Subtable ID│ 30│ 30│ 32│ 32│ +╰──────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Male +Yes +╭───────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├───────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Row ID │ 2│ 2│ 3│ 3│ +│ Layer Row ID│ 2│ 2│ 2│ 2│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 5│ 5│ 7│ 7│ +│ Layer Row ID│ 3│ 3│ 3│ 3│ +│ ╶─────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Row ID │ 10│ 10│ 11│ 11│ +│ Layer Row ID│ 6│ 6│ 6│ 6│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 14│ 14│ 16│ 16│ +│ Layer Row ID│ 8│ 8│ 8│ 8│ +│ ╶──────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Row ID │ 17│ 17│ 19│ 19│ +│ Layer Row ID│ 9│ 9│ 9│ 9│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 21│ 21│ 23│ 23│ +│ Layer Row ID│ 11│ 11│ 11│ 11│ +│ ╶─────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Row ID │ 26│ 26│ 28│ 28│ +│ Layer Row ID│ 14│ 14│ 14│ 14│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 30│ 30│ 32│ 32│ +│ Layer Row ID│ 16│ 16│ 16│ 16│ +╰───────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Male +No +╭───────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├───────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Row ID │ 1│ 1│ 4│ 4│ +│ Layer Row ID│ 1│ 1│ 1│ 1│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 6│ 6│ 8│ 8│ +│ Layer Row ID│ 4│ 4│ 4│ 4│ +│ ╶─────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Row ID │ 9│ 9│ 12│ 12│ +│ Layer Row ID│ 5│ 5│ 5│ 5│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 13│ 13│ 15│ 15│ +│ Layer Row ID│ 7│ 7│ 7│ 7│ +│ ╶──────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Row ID │ 18│ 18│ 20│ 20│ +│ Layer Row ID│ 10│ 10│ 10│ 10│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 22│ 22│ 24│ 24│ +│ Layer Row ID│ 12│ 12│ 12│ 12│ +│ ╶─────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Row ID │ 25│ 25│ 27│ 27│ +│ Layer Row ID│ 13│ 13│ 13│ 13│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 29│ 29│ 31│ 31│ +│ Layer Row ID│ 15│ 15│ 15│ 15│ +╰───────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +Yes +╭───────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├───────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Row ID │ 33│ 33│ 36│ 36│ +│ Layer Row ID│ 17│ 17│ 17│ 17│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 37│ 37│ 39│ 39│ +│ Layer Row ID│ 19│ 19│ 19│ 19│ +│ ╶─────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Row ID │ 41│ 41│ 44│ 44│ +│ Layer Row ID│ 21│ 21│ 21│ 21│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 45│ 45│ 48│ 48│ +│ Layer Row ID│ 23│ 23│ 23│ 23│ +│ ╶──────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Row ID │ 49│ 49│ 52│ 52│ +│ Layer Row ID│ 25│ 25│ 25│ 25│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 53│ 53│ 55│ 55│ +│ Layer Row ID│ 27│ 27│ 27│ 27│ +│ ╶─────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Row ID │ 58│ 58│ 59│ 59│ +│ Layer Row ID│ 30│ 30│ 30│ 30│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 62│ 62│ 64│ 64│ +│ Layer Row ID│ 32│ 32│ 32│ 32│ +╰───────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +No +╭───────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├───────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Row ID │ 34│ 34│ 35│ 35│ +│ Layer Row ID│ 18│ 18│ 18│ 18│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 38│ 38│ 40│ 40│ +│ Layer Row ID│ 20│ 20│ 20│ 20│ +│ ╶─────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Row ID │ 42│ 42│ 43│ 43│ +│ Layer Row ID│ 22│ 22│ 22│ 22│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 46│ 46│ 47│ 47│ +│ Layer Row ID│ 24│ 24│ 24│ 24│ +│ ╶──────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Row ID │ 50│ 50│ 51│ 51│ +│ Layer Row ID│ 26│ 26│ 26│ 26│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 54│ 54│ 56│ 56│ +│ Layer Row ID│ 28│ 28│ 28│ 28│ +│ ╶─────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Row ID │ 57│ 57│ 60│ 60│ +│ Layer Row ID│ 29│ 29│ 29│ 29│ +│ ╶────────────────┼────┼────┼────┼────┤ +│ No Row ID │ 61│ 61│ 63│ 63│ +│ Layer Row ID│ 31│ 31│ 31│ 31│ +╰───────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Male +Yes +╭──────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Column ID │ 1│ 4│ 5│ 7│ +│ Layer Column ID│ 1│ 4│ 5│ 7│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 1│ 4│ 5│ 7│ +│ Layer Column ID│ 1│ 4│ 5│ 7│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Column ID │ 9│ 12│ 14│ 15│ +│ Layer Column ID│ 1│ 4│ 5│ 7│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 9│ 12│ 14│ 15│ +│ Layer Column ID│ 1│ 4│ 5│ 7│ +│ ╶─────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Column ID │ 18│ 20│ 22│ 24│ +│ Layer Column ID│ 1│ 4│ 5│ 7│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 18│ 20│ 22│ 24│ +│ Layer Column ID│ 1│ 4│ 5│ 7│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Column ID │ 26│ 27│ 30│ 31│ +│ Layer Column ID│ 1│ 4│ 5│ 7│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 26│ 27│ 30│ 31│ +│ Layer Column ID│ 1│ 4│ 5│ 7│ +╰──────────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Male +No +╭──────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Column ID │ 2│ 3│ 6│ 8│ +│ Layer Column ID│ 2│ 3│ 6│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 2│ 3│ 6│ 8│ +│ Layer Column ID│ 2│ 3│ 6│ 8│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Column ID │ 10│ 11│ 13│ 16│ +│ Layer Column ID│ 2│ 3│ 6│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 10│ 11│ 13│ 16│ +│ Layer Column ID│ 2│ 3│ 6│ 8│ +│ ╶─────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Column ID │ 17│ 19│ 21│ 23│ +│ Layer Column ID│ 2│ 3│ 6│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 17│ 19│ 21│ 23│ +│ Layer Column ID│ 2│ 3│ 6│ 8│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Column ID │ 25│ 28│ 29│ 32│ +│ Layer Column ID│ 2│ 3│ 6│ 8│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 25│ 28│ 29│ 32│ +│ Layer Column ID│ 2│ 3│ 6│ 8│ +╰──────────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +Yes +╭──────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Column ID │ 34│ 36│ 37│ 39│ +│ Layer Column ID│ 10│ 12│ 13│ 15│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 34│ 36│ 37│ 39│ +│ Layer Column ID│ 10│ 12│ 13│ 15│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Column ID │ 41│ 43│ 46│ 48│ +│ Layer Column ID│ 10│ 12│ 13│ 15│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 41│ 43│ 46│ 48│ +│ Layer Column ID│ 10│ 12│ 13│ 15│ +│ ╶─────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Column ID │ 50│ 51│ 53│ 55│ +│ Layer Column ID│ 10│ 12│ 13│ 15│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 50│ 51│ 53│ 55│ +│ Layer Column ID│ 10│ 12│ 13│ 15│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Column ID │ 58│ 60│ 62│ 64│ +│ Layer Column ID│ 10│ 12│ 13│ 15│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 58│ 60│ 62│ 64│ +│ Layer Column ID│ 10│ 12│ 13│ 15│ +╰──────────────────────────────────────────┴────┴────┴────┴────╯ + + Custom Tables +Female +No +╭──────────────────────────────────────────┬───────────────────╮ +│ │ QN27 │ +│ ├─────────┬─────────┤ +│ │ Yes │ No │ +│ ├─────────┼─────────┤ +│ │ QND7A │ QND7A │ +│ ├────┬────┼────┬────┤ +│ │ Yes│ No │ Yes│ No │ +│ ├────┼────┼────┼────┤ +│ │QN86│QN86│QN86│QN86│ +├──────────────────────────────────────────┼────┼────┼────┼────┤ +│QN26 Yes QN61 Yes QN57 Yes Column ID │ 33│ 35│ 38│ 40│ +│ Layer Column ID│ 9│ 11│ 14│ 16│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 33│ 35│ 38│ 40│ +│ Layer Column ID│ 9│ 11│ 14│ 16│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Column ID │ 42│ 44│ 45│ 47│ +│ Layer Column ID│ 9│ 11│ 14│ 16│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 42│ 44│ 45│ 47│ +│ Layer Column ID│ 9│ 11│ 14│ 16│ +│ ╶─────────────────────────────────────┼────┼────┼────┼────┤ +│ No QN61 Yes QN57 Yes Column ID │ 49│ 52│ 54│ 56│ +│ Layer Column ID│ 9│ 11│ 14│ 16│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 49│ 52│ 54│ 56│ +│ Layer Column ID│ 9│ 11│ 14│ 16│ +│ ╶────────────────────────────┼────┼────┼────┼────┤ +│ No QN57 Yes Column ID │ 57│ 59│ 61│ 63│ +│ Layer Column ID│ 9│ 11│ 14│ 16│ +│ ╶───────────────────┼────┼────┼────┼────┤ +│ No Column ID │ 57│ 59│ 61│ 63│ +│ Layer Column ID│ 9│ 11│ 14│ 16│ +╰──────────────────────────────────────────┴────┴────┴────┴────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES categorical summary functions]) +AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .]) +AT_DATA([ctables.sps], +[[GET 'nhtsa.sav'. +CTABLES + /TABLE region BY qnd5a[COUNT, ROWPCT, ROWPCT.VALIDN, ROWPCT.TOTALN, TOTAL[COUNT, VALIDN, TOTALN]] + /CATEGORIES VARIABLES=qnd5a TOTAL=YES MISSING=INCLUDE + /SLABELS POSITION=ROW. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl + Custom Tables +╭─────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ │ D5a. What would you say is your primary ethnic background? │ +│ ├─────┬───────┬───────┬──────────┬──────────┬─────────┬──────────┬──────────────┬──────┬───────┬─────┤ +│ │ │ │ │ │ │ │ │ Multiple - │ │ │ │ +│ │ │ │ │ South │ Central │ Puerto │ Something│ cannot choose│ Don't│ │ │ +│ │Cuban│Mexican│Spanish│ American │ American │Rican, OR│ else │ one │ know │Refused│Total│ +├─────────────────┼─────┼───────┼───────┼──────────┼──────────┼─────────┼──────────┼──────────────┼──────┼───────┼─────┤ +│Region NE Count │ 6│ 8│ 8│ 11│ 7│ 39│ 23│ 2│ 0│ 1│ 105│ +│ Row % │ 5.7%│ 7.6%│ 7.6%│ 10.5%│ 6.7%│ 37.1%│ 21.9%│ 1.9%│ .0%│ 1.0%│ │ +│ Row │ 5.8%│ 7.7%│ 7.7%│ 10.6%│ 6.7%│ 37.5%│ 22.1%│ 1.9%│ .0%│ .0%│ │ +│ Valid N│ │ │ │ │ │ │ │ │ │ │ │ +│ % │ │ │ │ │ │ │ │ │ │ │ │ +│ Row │ .4%│ .6%│ .6%│ .8%│ .5%│ 2.8%│ 1.6%│ .1%│ .0%│ .1%│ │ +│ Total N│ │ │ │ │ │ │ │ │ │ │ │ +│ % │ │ │ │ │ │ │ │ │ │ │ │ +│ Valid N│ │ │ │ │ │ │ │ │ │ │ 104│ +│ Total N│ │ │ │ │ │ │ │ │ │ │ 1409│ +│ ╶──────────┼─────┼───────┼───────┼──────────┼──────────┼─────────┼──────────┼──────────────┼──────┼───────┼─────┤ +│ MW Count │ 3│ 24│ 1│ 4│ 5│ 9│ 6│ 0│ 0│ 1│ 53│ +│ Row % │ 5.7%│ 45.3%│ 1.9%│ 7.5%│ 9.4%│ 17.0%│ 11.3%│ .0%│ .0%│ 1.9%│ │ +│ Row │ 5.8%│ 46.2%│ 1.9%│ 7.7%│ 9.6%│ 17.3%│ 11.5%│ .0%│ .0%│ .0%│ │ +│ Valid N│ │ │ │ │ │ │ │ │ │ │ │ +│ % │ │ │ │ │ │ │ │ │ │ │ │ +│ Row │ .2%│ 1.5%│ .1%│ .2%│ .3%│ .5%│ .4%│ .0%│ .0%│ .1%│ │ +│ Total N│ │ │ │ │ │ │ │ │ │ │ │ +│ % │ │ │ │ │ │ │ │ │ │ │ │ +│ Valid N│ │ │ │ │ │ │ │ │ │ │ 52│ +│ Total N│ │ │ │ │ │ │ │ │ │ │ 1654│ +│ ╶──────────┼─────┼───────┼───────┼──────────┼──────────┼─────────┼──────────┼──────────────┼──────┼───────┼─────┤ +│ S Count │ 10│ 113│ 11│ 14│ 25│ 23│ 20│ 2│ 3│ 2│ 223│ +│ Row % │ 4.5%│ 50.7%│ 4.9%│ 6.3%│ 11.2%│ 10.3%│ 9.0%│ .9%│ 1.3%│ .9%│ │ +│ Row │ 4.6%│ 51.8%│ 5.0%│ 6.4%│ 11.5%│ 10.6%│ 9.2%│ .9%│ .0%│ .0%│ │ +│ Valid N│ │ │ │ │ │ │ │ │ │ │ │ +│ % │ │ │ │ │ │ │ │ │ │ │ │ +│ Row │ .4%│ 4.7%│ .5%│ .6%│ 1.0%│ 1.0%│ .8%│ .1%│ .1%│ .1%│ │ +│ Total N│ │ │ │ │ │ │ │ │ │ │ │ +│ % │ │ │ │ │ │ │ │ │ │ │ │ +│ Valid N│ │ │ │ │ │ │ │ │ │ │ 218│ +│ Total N│ │ │ │ │ │ │ │ │ │ │ 2390│ +│ ╶──────────┼─────┼───────┼───────┼──────────┼──────────┼─────────┼──────────┼──────────────┼──────┼───────┼─────┤ +│ W Count │ 1│ 166│ 28│ 5│ 15│ 7│ 19│ 3│ 0│ 1│ 245│ +│ Row % │ .4%│ 67.8%│ 11.4%│ 2.0%│ 6.1%│ 2.9%│ 7.8%│ 1.2%│ .0%│ .4%│ │ +│ Row │ .4%│ 68.0%│ 11.5%│ 2.0%│ 6.1%│ 2.9%│ 7.8%│ 1.2%│ .0%│ .0%│ │ +│ Valid N│ │ │ │ │ │ │ │ │ │ │ │ +│ % │ │ │ │ │ │ │ │ │ │ │ │ +│ Row │ .1%│ 10.7%│ 1.8%│ .3%│ 1.0%│ .5%│ 1.2%│ .2%│ .0%│ .1%│ │ +│ Total N│ │ │ │ │ │ │ │ │ │ │ │ +│ % │ │ │ │ │ │ │ │ │ │ │ │ +│ Valid N│ │ │ │ │ │ │ │ │ │ │ 244│ +│ Total N│ │ │ │ │ │ │ │ │ │ │ 1546│ +╰─────────────────┴─────┴───────┴───────┴──────────┴──────────┴─────────┴──────────┴──────────────┴──────┴───────┴─────╯ +]) +AT_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], +[[GET 'nhtsa.sav'. +SET TVAR=NAME. + +* Use SPLIT FILE with FREQUENCIES to generate output equivalent to + CTABLES later, to make the results easier to verify. +SPLIT FILE BY REGION. +FREQUENCIES + qn19a + /STATISTICS=MEAN SEMEAN MEDIAN MODE STDDEV VARIANCE RANGE MINIMUM MAXIMUM SUM + /FORMAT NOTABLE /MISSING=INCLUDE. +SPLIT FILE OFF. + +CTABLES + /VLABELS VARIABLE=qn19a DISPLAY=NONE + /TABLE region BY qn19a[VALIDN, MISSING, MEAN, SEMEAN, MEDIAN, MODE, STDDEV, VARIANCE, RANGE, MINIMUM, MAXIMUM, SUM, COUNT, TOTALN, ROWPCT.SUM] + /CATEGORIES VARIABLES=qn19a TOTAL=YES MISSING=INCLUDE + /SLABELS POSITION=ROW + /CLABELS ROWLABELS=OPPOSITE. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl + Statistics +╭─────────┬───────────────────────────────────╮ +│ │ REGION │ +│ ├────────┬────────┬────────┬────────┤ +│ │ NE │ MW │ S │ W │ +│ ├────────┼────────┼────────┼────────┤ +│ │ QN19A │ QN19A │ QN19A │ QN19A │ +├─────────┼────────┼────────┼────────┼────────┤ +│N Valid │ 936│ 1019│ 1276│ 950│ +│ Missing│ 473│ 635│ 1114│ 596│ +├─────────┼────────┼────────┼────────┼────────┤ +│Mean │ 19.33│ 19.83│ 20.29│ 19.87│ +├─────────┼────────┼────────┼────────┼────────┤ +│S.E. Mean│ .14│ .16│ .18│ .17│ +├─────────┼────────┼────────┼────────┼────────┤ +│Median │ 18.00│ 19.00│ 19.00│ 19.00│ +├─────────┼────────┼────────┼────────┼────────┤ +│Mode │ 18.00│ 18.00│ 18.00│ 18.00│ +├─────────┼────────┼────────┼────────┼────────┤ +│Std Dev │ 4.41│ 5.15│ 6.44│ 5.25│ +├─────────┼────────┼────────┼────────┼────────┤ +│Variance │ 19.41│ 26.47│ 41.43│ 27.59│ +├─────────┼────────┼────────┼────────┼────────┤ +│Range │ 59.00│ 71.00│ 75.00│ 61.00│ +├─────────┼────────┼────────┼────────┼────────┤ +│Minimum │ .00│ 4.00│ 4.00│ 4.00│ +├─────────┼────────┼────────┼────────┼────────┤ +│Maximum │ 59.00│ 75.00│ 79.00│ 65.00│ +├─────────┼────────┼────────┼────────┼────────┤ +│Sum │18092.00│20206.00│25886.00│18877.00│ +╰─────────┴────────┴────────┴────────┴────────╯ + + Custom Tables +╭────────────────────────┬────────┬────────┬────────┬────────╮ +│ │ NE │ MW │ S │ W │ +├────────────────────────┼────────┼────────┼────────┼────────┤ +│REGION Valid N │ 936│ 1019│ 1276│ 950│ +│ Missing │ 473.00│ 635.00│ 1114.00│ 596.00│ +│ Mean │ 19.33│ 19.83│ 20.29│ 19.87│ +│ Std Error of Mean│ .14│ .16│ .18│ .17│ +│ Median │ 18.00│ 19.00│ 19.00│ 19.00│ +│ Mode │ 18.00│ 18.00│ 18.00│ 18.00│ +│ Std Deviation │ 4.41│ 5.15│ 6.44│ 5.25│ +│ Variance │ 19.41│ 26.47│ 41.43│ 27.59│ +│ Range │ 59.00│ 71.00│ 75.00│ 61.00│ +│ Minimum │ .00│ 4.00│ 4.00│ 4.00│ +│ Maximum │ 59.00│ 75.00│ 79.00│ 65.00│ +│ Sum │18092.00│20206.00│25886.00│18877.00│ +│ Count │ 1409│ 1654│ 2390│ 1546│ +│ Total N │ 1409│ 1654│ 2390│ 1546│ +│ Row Sum % │ 21.8%│ 24.3%│ 31.2%│ 22.7%│ +╰────────────────────────┴────────┴────────┴────────┴────────╯ +]) +AT_CLEANUP + +AT_SETUP([CTABLES scale summary functions - weighting]) +weight=1 +c=10 +for a in 1 2 9; do + for b in 3 4 9; do + for n in 1 2 3 4 5 6 7 8 9 10; do + if test $c -lt 15; then + cval=. + else + cval=$c + fi + printf "$weight $a $b $cval\n" + weight=$(expr \( $weight + 3 \) % 7 + 2) + c=$(expr \( $c + 13 \) % 29 + 7) + done + done +done > ctables.txt + +AT_DATA([analysis.sps], +[[* Use SPLIT FILE with FREQUENCIES to generate output equivalent to + CTABLES later, to make the results easier to verify. +SPLIT FILE BY a b. +FREQUENCIES + c + /STATISTICS=MEAN SEMEAN MEDIAN MODE STDDEV VARIANCE RANGE MINIMUM MAXIMUM SUM + /FORMAT NOTABLE /MISSING=INCLUDE. +SPLIT FILE OFF. + +CTABLES + /TABLE c[VALIDN, MISSING, MEAN F8.2, SEMEAN F8.2, MEDIAN F8.2, MODE, STDDEV F8.2, VARIANCE F8.2, RANGE F8.2, MINIMUM, MAXIMUM, SUM F8.2, COUNT, TOTALN, LAYERROWPCT.SUM] BY a>b + /SLABELS POSITION=ROW + /CATEGORIES VARIABLES=a b MISSING=INCLUDE. +]]) + +AT_DATA([ctables.sps], +[[DATA LIST LIST NOTABLE FILE='ctables.txt' + /w (F5.0) a b c (f2.0). +VAR LEVEL w c (SCALE) a b (NOMINAL). +MISSING VALUES a b (9). + +INCLUDE 'analysis.sps'. + +WEIGHT BY w. +INCLUDE 'analysis.sps'. + +* Same as original analysis using unweighted versions of summaries. +CTABLES + /TABLE c[UVALIDN, UMISSING, UMEAN F8.2, USEMEAN F8.2, UMEDIAN F8.2, UMODE, USTDDEV F8.2, UVARIANCE F8.2, USUM F8.2, UCOUNT, UTOTALN, ULAYERROWPCT.SUM] BY a>b + /SLABELS POSITION=ROW + /CATEGORIES VARIABLES=a b MISSING=INCLUDE. +]]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl + Statistics +╭─────────┬──────────────────────────────────────────────────────────────╮ +│ │ a │ +│ ├────────────────────┬────────────────────┬────────────────────┤ +│ │ 1 │ 2 │ 9 │ +│ ├────────────────────┼────────────────────┼────────────────────┤ +│ │ b │ b │ b │ +│ ├──────┬──────┬──────┼──────┬──────┬──────┼──────┬──────┬──────┤ +│ │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ +│ ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ │ c │ c │ c │ c │ c │ c │ c │ c │ c │ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│N Valid │ 7│ 6│ 8│ 7│ 7│ 8│ 7│ 7│ 8│ +│ Missing│ 3│ 4│ 2│ 3│ 3│ 2│ 3│ 3│ 2│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Mean │ 25.86│ 24.50│ 24.63│ 25.86│ 25.71│ 24.25│ 25.43│ 25.29│ 23.88│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│S.E. Mean│ 2.44│ 2.14│ 2.58│ 2.44│ 2.18│ 2.43│ 2.36│ 2.18│ 2.47│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Median │ 25.00│ 24.50│ 25.00│ 25.00│ 27.00│ 25.00│ 25.00│ 24.00│ 23.50│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Mode │ 16│ 18│ 15│ 16│ 18│ 15│ 16│ 18│ 15│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Std Dev │ 6.47│ 5.24│ 7.31│ 6.47│ 5.77│ 6.88│ 6.24│ 5.77│ 6.98│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Variance │ 41.81│ 27.50│ 53.41│ 41.81│ 33.24│ 47.36│ 38.95│ 33.24│ 48.70│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Range │ 18.00│ 13.00│ 20.00│ 18.00│ 15.00│ 20.00│ 18.00│ 15.00│ 20.00│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Minimum │ 16│ 18│ 15│ 16│ 18│ 15│ 16│ 18│ 15│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Maximum │ 34│ 31│ 35│ 34│ 33│ 35│ 34│ 33│ 35│ +├─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│Sum │181.00│147.00│197.00│181.00│180.00│194.00│178.00│177.00│191.00│ +╰─────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────╯ + + Custom Tables +╭───────────────────┬──────────────────────────────────────────────────────────────╮ +│ │ a │ +│ ├────────────────────┬────────────────────┬────────────────────┤ +│ │ 1 │ 2 │ 9 │ +│ ├────────────────────┼────────────────────┼────────────────────┤ +│ │ b │ b │ b │ +│ ├──────┬──────┬──────┼──────┬──────┬──────┼──────┬──────┬──────┤ +│ │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ +├───────────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│c Valid N │ 7│ 6│ 8│ 7│ 7│ 8│ 7│ 7│ 8│ +│ Missing │ 3│ 4│ 2│ 3│ 3│ 2│ 3│ 3│ 2│ +│ Mean │ 25.86│ 24.50│ 24.63│ 25.86│ 25.71│ 24.25│ 25.43│ 25.29│ 23.88│ +│ Std Error of Mean│ 2.44│ 2.14│ 2.58│ 2.44│ 2.18│ 2.43│ 2.36│ 2.18│ 2.47│ +│ Median │ 25.00│ 24.50│ 25.00│ 25.00│ 27.00│ 25.00│ 25.00│ 24.00│ 23.50│ +│ Mode │ 16│ 18│ 15│ 16│ 18│ 15│ 16│ 18│ 15│ +│ Std Deviation │ 6.47│ 5.24│ 7.31│ 6.47│ 5.77│ 6.88│ 6.24│ 5.77│ 6.98│ +│ Variance │ 41.81│ 27.50│ 53.41│ 41.81│ 33.24│ 47.36│ 38.95│ 33.24│ 48.70│ +│ Range │ 18.00│ 13.00│ 20.00│ 18.00│ 15.00│ 20.00│ 18.00│ 15.00│ 20.00│ +│ Minimum │ 16│ 18│ 15│ 16│ 18│ 15│ 16│ 18│ 15│ +│ Maximum │ 34│ 31│ 35│ 34│ 33│ 35│ 34│ 33│ 35│ +│ Sum │181.00│147.00│197.00│181.00│180.00│194.00│178.00│177.00│191.00│ +│ Count │ 10│ 10│ 10│ 10│ 10│ 10│ 10│ 10│ 10│ +│ Total N │ 10│ 10│ 10│ 10│ 10│ 10│ 10│ 10│ 10│ +│ Layer Row Sum % │ 11.1%│ 9.0%│ 12.1%│ 11.1%│ 11.1%│ 11.9%│ 10.9%│ 10.9%│ 11.7%│ +╰───────────────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────╯ + + Statistics +╭─────────┬─────────────────────────────────────────────────────────────────╮ +│ │ a │ +│ ├─────────────────────┬─────────────────────┬─────────────────────┤ +│ │ 1 │ 2 │ 9 │ +│ ├─────────────────────┼─────────────────────┼─────────────────────┤ +│ │ b │ b │ b │ +│ ├───────┬──────┬──────┼──────┬───────┬──────┼──────┬──────┬───────┤ +│ │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ +│ ├───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│ │ c │ c │ c │ c │ c │ c │ c │ c │ c │ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│N Valid │ 40│ 35│ 41│ 26│ 38│ 40│ 34│ 32│ 39│ +│ Missing│ 6│ 14│ 11│ 22│ 13│ 7│ 16│ 21│ 10│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Mean │ 27.23│ 24.20│ 22.63│ 27.96│ 27.21│ 23.48│ 23.71│ 25.47│ 26.03│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│S.E. Mean│ .93│ .75│ 1.03│ 1.12│ .84│ .87│ 1.01│ 1.05│ 1.01│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Median │ 30.00│ 22.00│ 19.00│ 30.00│ 29.00│ 24.00│ 23.00│ 24.00│ 28.00│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Mode │ 34│ 29│ 19│ 34│ 33│ 28│ 23│ 18│ 30│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Std Dev │ 5.89│ 4.42│ 6.59│ 5.69│ 5.16│ 5.50│ 5.87│ 5.94│ 6.30│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Variance │ 34.64│ 19.52│ 43.39│ 32.36│ 26.66│ 30.20│ 34.46│ 35.29│ 39.71│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Range │ 18.00│ 13.00│ 20.00│ 18.00│ 15.00│ 20.00│ 18.00│ 15.00│ 20.00│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Minimum │ 16│ 18│ 15│ 16│ 18│ 15│ 16│ 18│ 15│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Maximum │ 34│ 31│ 35│ 34│ 33│ 35│ 34│ 33│ 35│ +├─────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│Sum │1089.00│847.00│928.00│727.00│1034.00│939.00│806.00│815.00│1015.00│ +╰─────────┴───────┴──────┴──────┴──────┴───────┴──────┴──────┴──────┴───────╯ + + Custom Tables +╭───────────────────┬─────────────────────────────────────────────────────────────────╮ +│ │ a │ +│ ├─────────────────────┬─────────────────────┬─────────────────────┤ +│ │ 1 │ 2 │ 9 │ +│ ├─────────────────────┼─────────────────────┼─────────────────────┤ +│ │ b │ b │ b │ +│ ├───────┬──────┬──────┼──────┬───────┬──────┼──────┬──────┬───────┤ +│ │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ +├───────────────────┼───────┼──────┼──────┼──────┼───────┼──────┼──────┼──────┼───────┤ +│c Valid N │ 40│ 35│ 41│ 26│ 38│ 40│ 34│ 32│ 39│ +│ Missing │ 6│ 14│ 11│ 22│ 13│ 7│ 16│ 21│ 10│ +│ Mean │ 27.22│ 24.20│ 22.63│ 27.96│ 27.21│ 23.48│ 23.71│ 25.47│ 26.03│ +│ Std Error of Mean│ .93│ .75│ 1.03│ 1.12│ .84│ .87│ 1.01│ 1.05│ 1.01│ +│ Median │ 30.00│ 22.00│ 19.00│ 30.00│ 29.00│ 24.00│ 23.00│ 24.00│ 28.00│ +│ Mode │ 34│ 29│ 19│ 34│ 33│ 28│ 23│ 18│ 30│ +│ Std Deviation │ 5.89│ 4.42│ 6.59│ 5.69│ 5.16│ 5.50│ 5.87│ 5.94│ 6.30│ +│ Variance │ 34.64│ 19.52│ 43.39│ 32.36│ 26.66│ 30.20│ 34.46│ 35.29│ 39.71│ +│ Range │ 18.00│ 13.00│ 20.00│ 18.00│ 15.00│ 20.00│ 18.00│ 15.00│ 20.00│ +│ Minimum │ 16│ 18│ 15│ 16│ 18│ 15│ 16│ 18│ 15│ +│ Maximum │ 34│ 31│ 35│ 34│ 33│ 35│ 34│ 33│ 35│ +│ Sum │1089.00│847.00│928.00│727.00│1034.00│939.00│806.00│815.00│1015.00│ +│ Count │ 46│ 49│ 52│ 48│ 51│ 47│ 50│ 53│ 49│ +│ Total N │ 46│ 49│ 52│ 48│ 51│ 47│ 50│ 53│ 49│ +│ Layer Row Sum % │ 13.3%│ 10.3%│ 11.3%│ 8.9%│ 12.6%│ 11.5%│ 9.8%│ 9.9%│ 12.4%│ +╰───────────────────┴───────┴──────┴──────┴──────┴───────┴──────┴──────┴──────┴───────╯ + + Custom Tables +╭──────────────────────────────┬──────────────────────────────────────────────────────────────╮ +│ │ a │ +│ ├────────────────────┬────────────────────┬────────────────────┤ +│ │ 1 │ 2 │ 9 │ +│ ├────────────────────┼────────────────────┼────────────────────┤ +│ │ b │ b │ b │ +│ ├──────┬──────┬──────┼──────┬──────┬──────┼──────┬──────┬──────┤ +│ │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ 3 │ 4 │ 9 │ +├──────────────────────────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│c Unweighted Valid N │ 7│ 6│ 8│ 7│ 7│ 8│ 7│ 7│ 8│ +│ Unweighted Missing │ 3│ 4│ 2│ 3│ 3│ 2│ 3│ 3│ 2│ +│ Unweighted Mean │ 25.86│ 24.50│ 24.63│ 25.86│ 25.71│ 24.25│ 25.43│ 25.29│ 23.88│ +│ Unweighted Std Error of Mean│ 2.44│ 2.14│ 2.58│ 2.44│ 2.18│ 2.43│ 2.36│ 2.18│ 2.47│ +│ Unweighted Median │ 25.00│ 24.50│ 25.00│ 25.00│ 27.00│ 25.00│ 25.00│ 24.00│ 23.50│ +│ Unweighted Mode │ 16│ 18│ 15│ 16│ 18│ 15│ 16│ 18│ 15│ +│ Unweighted Std Deviation │ 6.47│ 5.24│ 7.31│ 6.47│ 5.77│ 6.88│ 6.24│ 5.77│ 6.98│ +│ Unweighted Variance │ 41.81│ 27.50│ 53.41│ 41.81│ 33.24│ 47.36│ 38.95│ 33.24│ 48.70│ +│ Unweighted Sum │181.00│147.00│197.00│181.00│180.00│194.00│178.00│177.00│191.00│ +│ Unweighted Count │ 10│ 10│ 10│ 10│ 10│ 10│ 10│ 10│ 10│ +│ Unweighted Total N │ 10│ 10│ 10│ 10│ 10│ 10│ 10│ 10│ 10│ +│ Unweighted Layer Row Sum % │ 11.1%│ 9.0%│ 12.1%│ 11.1%│ 11.1%│ 11.9%│ 10.9%│ 10.9%│ 11.7%│ +╰──────────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────╯ +]) +AT_CLEANUP + +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 + 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], [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 -- 2.30.2