SKIP
ID "#.#"
SKIP
-UNEXPECTED_DOT
+MACRO_PUNCT "."
ID "x"
SKIP
MACRO_PUNCT "_"
PSPP_CHECK_SCAN([-i])
AT_CLEANUP
\f
-AT_SETUP([TITLE, SUBTITLE, FILE LABEL commands])
+AT_SETUP([FILE LABEL commands])
AT_KEYWORDS([scan])
AT_DATA([input], [dnl
-title/**/'Quoted string title'.
-tit /*
-"Quoted string on second line".
-sub "Quoted string subtitle"
- .
-
-TITL /* Not a */ quoted string title.
-SUBT Not a quoted string /* subtitle
-
FIL label isn't quoted.
FILE
lab 'is quoted'.
])
AT_DATA([expout-base], [dnl
-ID "title"
-SKIP
-STRING "Quoted string title"
-ENDCMD
-SKIP
-ID "tit"
-SKIP
-SKIP
-SKIP
-STRING "Quoted string on second line"
-ENDCMD
-SKIP
-ID "sub"
-SKIP
-STRING "Quoted string subtitle"
-SKIP
-SKIP
-ENDCMD
-SKIP
-ENDCMD
-SKIP
-ID "TITL"
-SKIP
-STRING "/* Not a */ quoted string title"
-ENDCMD
-SKIP
-ID "SUBT"
-SKIP
-STRING "Not a quoted string /* subtitle"
-SKIP
-ENDCMD
-SKIP
ID "FIL"
SKIP
ID "label"
LPAREN
RPAREN
SKIP
+SKIP
STRING "var1 var2 var3"
SKIP
MACRO_ID "!enddefine"
PSPP_CHECK_SCAN([-i])
AT_CLEANUP
\f
+AT_SETUP([DEFINE command - no newline after parentheses])
+AT_KEYWORDS([scan])
+AT_DATA([input], [dnl
+define !macro1() var1 var2 var3
+!enddefine.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+LPAREN
+RPAREN
+STRING " var1 var2 var3"
+SKIP
+MACRO_ID "!enddefine"
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
+AT_SETUP([DEFINE command - no newline before !ENDDEFINE])
+AT_KEYWORDS([scan ENDDEFINE])
+AT_DATA([input], [dnl
+define !macro1()
+var1 var2 var3!enddefine.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+LPAREN
+RPAREN
+SKIP
+SKIP
+STRING "var1 var2 var3"
+MACRO_ID "!enddefine"
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
+AT_SETUP([DEFINE command - all on one line])
+AT_KEYWORDS([scan])
+AT_DATA([input], [dnl
+define !macro1()var1 var2 var3!enddefine.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+LPAREN
+RPAREN
+STRING "var1 var2 var3"
+MACRO_ID "!enddefine"
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
AT_SETUP([DEFINE command - empty])
AT_KEYWORDS([scan])
AT_DATA([input], [dnl
LPAREN
RPAREN
SKIP
+SKIP
+MACRO_ID "!enddefine"
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
+AT_SETUP([DEFINE command - blank lines])
+AT_KEYWORDS([scan])
+AT_DATA([input], [dnl
+define !macro1()
+
+
+!enddefine.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+LPAREN
+RPAREN
+SKIP
+SKIP
+STRING ""
+SKIP
+STRING ""
+SKIP
MACRO_ID "!enddefine"
ENDCMD
-SKIP
RPAREN
RPAREN
SKIP
+SKIP
MACRO_ID "!enddefine"
ENDCMD
-SKIP
SKIP
RPAREN
SKIP
+SKIP
MACRO_ID "!enddefine"
ENDCMD
-SKIP
SKIP
RPAREN
SKIP
+SKIP
STRING "content 1"
SKIP
STRING "content 2"
PSPP_CHECK_SCAN([-i])
AT_CLEANUP
\f
+AT_SETUP([DEFINE command - early end of command 4])
+AT_KEYWORDS([segment])
+AT_DATA([input], [dnl
+dnl Notice the command terminator at the end of the DEFINE command,
+dnl which should not be there and ends it early.
+define !macro1.
+data list /x 1.
+])
+AT_DATA([expout-base], [dnl
+ID "define"
+SKIP
+MACRO_ID "!macro1"
+ENDCMD
+SKIP
+ID "data"
+SKIP
+ID "list"
+SKIP
+SLASH
+ID "x"
+SKIP
+POS_NUM 1
+ENDCMD
+-SKIP
+STOP
+])
+PSPP_CHECK_SCAN([-i])
+AT_CLEANUP
+\f
AT_SETUP([DEFINE command - missing !ENDDEFINE])
AT_KEYWORDS([scan])
AT_DATA([input], [dnl
-define !macro1().
+define !macro1()
content line 1
content line 2
])
MACRO_ID "!macro1"
LPAREN
RPAREN
-ENDCMD
+SKIP
SKIP
STRING "content line 1"
SKIP