SKIP
ID "#.#"
SKIP
-UNEXPECTED_DOT
+MACRO_PUNCT "."
ID "x"
SKIP
MACRO_PUNCT "_"
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