+
+AT_SETUP([GLM missing values])
+AT_KEYWORDS([categorical categoricals])
+
+AT_DATA([glm.data], [dnl
+1 1 6 3.5
+1 2 2 8.9
+1 3 3 9.6
+1 4 4 10.5
+1 5 5 3.1
+1 6 1 5.9
+2 1 2 4.2
+2 2 6 1.9
+2 3 5 3.7
+2 4 3 10.2
+2 5 1 7.2
+2 6 4 7.6
+3 1 1 6.7
+3 2 4 5.8
+3 3 6 -2.7
+3 4 2 4.6
+3 5 3 4.0
+3 6 5 -0.7
+4 1 4 6.6
+4 2 1 4.5
+4 3 2 3.7
+4 4 5 3.7
+4 5 6 -3.3
+4 6 3 3.0
+5 1 3 4.1
+5 2 5 2.4
+5 3 4 6.0
+5 4 1 5.1
+5 5 2 3.5
+5 6 6 4.0
+6 1 5 3.8
+6 2 3 5.8
+6 3 1 7.0
+6 4 6 3.8
+6 5 4 5.0
+6 6 2 8.6
+])
+
+AT_DATA([glm-miss.sps], [dnl
+set format = F20.3.
+data list file='glm.data' notable fixed /a 1 b 3 c 5 y 7-10(2).
+
+do if a=6.
+recode y (else=SYSMIS).
+end if.
+
+glm y by b a c
+ /criteria=alpha(.05)
+ /design = a b c
+ .
+])
+
+AT_CHECK([pspp -O format=csv glm-miss.sps], [0], [dnl
+Table: Tests of Between-Subjects Effects
+,Type III Sum Of Squares,df,Mean Square,F,Sig.
+Corrected Model,251.621,14,17.973,4.969,.002
+Intercept,628.376,1,628.376,173.737,.000
+a,72.929,4,18.232,5.041,.009
+b,20.703,5,4.141,1.145,.380
+c,135.179,5,27.036,7.475,.001
+Error,54.253,15,3.617,,
+Total,934.250,30,,,
+Corrected Total,305.874,29,,,
+])
+
+
+
+AT_DATA([glm-miss2.sps], [dnl
+set format = F20.3.
+data list file='glm.data' notable fixed /a 1 b 3 c 5 y 7-10(2).
+
+select if a <> 6.
+
+glm y by b a c
+ /criteria=alpha(.05)
+ /design = a b c
+ .
+])
+
+AT_CHECK([pspp -O format=csv glm-miss2.sps], [0], [dnl
+Table: Tests of Between-Subjects Effects
+,Type III Sum Of Squares,df,Mean Square,F,Sig.
+Corrected Model,251.621,14,17.973,4.969,.002
+Intercept,628.376,1,628.376,173.737,.000
+a,72.929,4,18.232,5.041,.009
+b,20.703,5,4.141,1.145,.380
+c,135.179,5,27.036,7.475,.001
+Error,54.253,15,3.617,,
+Total,934.250,30,,,
+Corrected Total,305.874,29,,,
+])
+
+
+dnl Now for some missing values in the factor variables.
+
+AT_DATA([glm-miss3.sps], [dnl
+set format = F20.3.
+data list file=glm.data notable fixed /a 1 b 3 c 5 y 7-10(2).
+
+do if a=6.
+recode a (else=SYSMIS).
+end if.
+
+glm y by b a c
+ /criteria=alpha(.05)
+ /design = a b c
+ .
+])
+
+AT_CHECK([pspp -O format=csv glm-miss3.sps], [0], [dnl
+Table: Tests of Between-Subjects Effects
+,Type III Sum Of Squares,df,Mean Square,F,Sig.
+Corrected Model,251.621,14,17.973,4.969,.002
+Intercept,628.376,1,628.376,173.737,.000
+a,72.929,4,18.232,5.041,.009
+b,20.703,5,4.141,1.145,.380
+c,135.179,5,27.036,7.475,.001
+Error,54.253,15,3.617,,
+Total,934.250,30,,,
+Corrected Total,305.874,29,,,
+])
+
+AT_CLEANUP
+
+AT_SETUP([GLM syntax errors])
+AT_DATA([glm.sps], [dnl
+DATA LIST LIST NOTABLE /x y z.
+GLM **.
+GLM x **.
+GLM x BY **.
+GLM x BY y.
+GLM x y BY z.
+GLM x BY y/MISSING=**.
+GLM x BY y/INTERCEPT=**.
+GLM x BY y/CRITERIA=**.
+GLM x BY y/CRITERIA=ALPHA **.
+GLM x BY y/CRITERIA=ALPHA(**).
+GLM x BY y/CRITERIA=ALPHA(123 **).
+GLM x BY y/METHOD=**.
+GLM x BY y/METHOD=SSTYPE **.
+GLM x BY y/METHOD=SSTYPE(4).
+GLM x BY y/METHOD=SSTYPE(2 **).
+GLM x BY y/DESIGN=**.
+GLM x BY y/DESIGN=x(y).
+GLM x BY y/DESIGN=x WITHIN y.
+])
+AT_CHECK([pspp -O format=csv glm.sps], [1], [dnl
+"glm.sps:2.5-2.6: error: GLM: Syntax error expecting variable name.
+ 2 | GLM **.
+ | ^~"
+
+"glm.sps:3.7-3.8: error: GLM: Syntax error expecting `BY'.
+ 3 | GLM x **.
+ | ^~"
+
+"glm.sps:4.10-4.11: error: GLM: Syntax error expecting variable name.
+ 4 | GLM x BY **.
+ | ^~"
+
+"glm.sps:6.1-6.3: error: GLM: Syntax error expecting `BEGIN DATA'.
+ 6 | GLM x y BY z.
+ | ^~~"
+
+"glm.sps:6.1-6.3: error: GLM: Syntax error expecting end of command.
+ 6 | GLM x y BY z.
+ | ^~~"
+
+"glm.sps:7.20-7.21: error: GLM: Syntax error expecting INCLUDE or EXCLUDE.
+ 7 | GLM x BY y/MISSING=**.
+ | ^~"
+
+"glm.sps:8.22-8.23: error: GLM: Syntax error expecting INCLUDE or EXCLUDE.
+ 8 | GLM x BY y/INTERCEPT=**.
+ | ^~"
+
+"glm.sps:9.21-9.22: error: GLM: Syntax error expecting `ALPHA@{:@'.
+ 9 | GLM x BY y/CRITERIA=**.
+ | ^~"
+
+"glm.sps:10.21-10.28: error: GLM: Syntax error expecting `ALPHA@{:@'.
+ 10 | GLM x BY y/CRITERIA=ALPHA **.
+ | ^~~~~~~~"
+
+"glm.sps:11.27-11.28: error: GLM: Syntax error expecting number.
+ 11 | GLM x BY y/CRITERIA=ALPHA(**).
+ | ^~"
+
+"glm.sps:12.31-12.32: error: GLM: Syntax error expecting `@:}@'.
+ 12 | GLM x BY y/CRITERIA=ALPHA(123 **).
+ | ^~"
+
+"glm.sps:13.19-13.20: error: GLM: Syntax error expecting `SSTYPE@{:@'.
+ 13 | GLM x BY y/METHOD=**.
+ | ^~"
+
+"glm.sps:14.19-14.27: error: GLM: Syntax error expecting `SSTYPE@{:@'.
+ 14 | GLM x BY y/METHOD=SSTYPE **.
+ | ^~~~~~~~~"
+
+"glm.sps:15.26: error: GLM: Syntax error expecting integer between 1 and 3 for SSTYPE.
+ 15 | GLM x BY y/METHOD=SSTYPE(4).
+ | ^"
+
+"glm.sps:16.28-16.29: error: GLM: Syntax error expecting `@:}@'.
+ 16 | GLM x BY y/METHOD=SSTYPE(2 **).
+ | ^~"
+
+"glm.sps:17.19-17.20: error: GLM: Syntax error expecting variable name.
+ 17 | GLM x BY y/DESIGN=**.
+ | ^~"
+
+"glm.sps:18.20: error: GLM: Nested variables are not yet implemented.
+ 18 | GLM x BY y/DESIGN=x(y).
+ | ^"
+
+"glm.sps:19.21-19.26: error: GLM: Nested variables are not yet implemented.
+ 19 | GLM x BY y/DESIGN=x WITHIN y.
+ | ^~~~~~"
+])
+AT_CLEANUP