lexer: Reimplement for better testability and internationalization.
[pspp-builds.git] / doc / flow-control.texi
index 868143b35a5a0ba8b73c5f628834f9b7a39cc87a..892887e211f9cb5b9f68f4f79a562b7796b33d55 100644 (file)
@@ -72,6 +72,7 @@ expansion takes one of the following forms:
         var_list
         num_or_range@dots{}
         'string'@dots{}
+        ALL
 
 num_or_range takes one of the following forms:
         number
@@ -82,13 +83,11 @@ num_or_range takes one of the following forms:
 different variables, numbers, or strings into the block with each
 repetition.
 
-Specify a dummy variable name followed by an equals sign (@samp{=}) and
-the list of replacements.  Replacements can be a list of variables
-(which may be existing variables or new variables or some combination),
-numbers, or strings.  When new variable names are
-specified, @cmd{DO REPEAT} creates them as numeric variables.  When numbers
-are specified, runs of increasing integers may be indicated as
-@code{@var{num1} TO @var{num2}}, so that
+Specify a dummy variable name followed by an equals sign (@samp{=})
+and the list of replacements.  Replacements can be a list of existing
+or new variables, numbers, strings, or @code{ALL} to specify all
+existing variables.  When numbers are specified, runs of increasing
+integers may be indicated as @code{@var{num1} TO @var{num2}}, so that
 @samp{1 TO 5} is short for @samp{1 2 3 4 5}.
 
 Multiple dummy variables can be specified.  Each
@@ -100,10 +99,22 @@ each dummy variable is substituted; the second time, the second value
 for each dummy variable is substituted; and so on.
 
 Dummy variable substitutions work like macros.  They take place
-anywhere in a line that the dummy variable name occurs as a token,
-including command and subcommand names.  For this reason,
-words commonly used in command and subcommand names should not be used
-as dummy variable identifiers.
+anywhere in a line that the dummy variable name occurs.  This includes
+command and subcommand names, so command and subcommand names that
+appear in the code block should not be used as dummy variable
+identifiers.  Dummy variable substitutions do not occur inside quoted
+strings, comments, unquoted strings (such as the text on the
+@cmd{TITLE} or @cmd{DOCUMENT} command), or inside @cmd{BEGIN
+DATA}@dots{}@cmd{END DATA}.
+
+New variable names used as replacements are not automatically created
+as variables, but only if used in the code block in a context that
+would create them, e.g.@: on a @cmd{NUMERIC} or @cmd{STRING} command
+or on the left side of a @cmd{COMPUTE} assignment.
+
+Any command may appear within DO REPEAT, including nested DO REPEAT
+commands.  If @cmd{INCLUDE} or @cmd{INSERT} appears within DO REPEAT,
+the substitutions do not apply to the included file.
 
 If PRINT is specified on @cmd{END REPEAT}, the commands after substitutions
 are made are printed to the listing file, prefixed by a plus sign