A comment is a sequence of characters delimited by specific characters.
It is ignored by the program but acts as a separator. For example, a token
containing one comment is treated as two tokens.
The interpreter recognizes the following types of comments:
A line comment, where the comment is limited to one line
The standard Rexx comment, where the comment
can cover several lines
A
line comment is
started by two subsequent minus signs (--) and ends at the end
of a line. Example:
"Fred"
"Don't Panic!"
'You shouldn''t' -- Same as "You shouldn't"
""
In this example, the language processor processes the statements
from
'Fred' to
'You shouldn''t', ignores the words following
the line comment, and continues to process the statement
"".
A
standard comment is a sequence of characters
(on one or more lines) delimited by /* and */. Within these delimiters any
characters are allowed.
Standard comments can contain other standard comments, as long as each begins
and ends with the necessary delimiters. They are called
nested comments. Standard comments can be anywhere and
of any length.
/* This is an example of a valid Rexx comment */
Take special care when commenting out lines of code containing
/* or
*/
as part of a literal string. Consider the following
program segment:
Example 1.3. Comments
parse pull input
if substr(input,1,5) = "/*123" then
call process
dept = substr(input,32,5)
To comment out lines 2 and 3, the following change would be incorrect:
parse pull input
/* if substr(input,1,5) = "/*123" then
call process
*/ dept = substr(input,32,5)
This is incorrect because the language processor would interpret the
/* that is part of the literal string
/*123 as the start
of a nested standard comment. It would not process the rest of the program
because it would be looking for a matching standard comment end
(
*/).
You can avoid this type of problem by using concatenation for literal
strings containing
/* or
*/; line 2 would be:
if substr(input,1,5) = "/" || "*123" then ...
You could comment out lines 2 and 3 correctly as follows:
Example 1.4. Comments
parse pull input
/* if substr(input,1,5) = "/" || "*123" then
call process
*/ dept = substr(input,32,5)
Both types of comments can be mixed and nested. However, when
you nest the two types, the type of comment that comes first takes precedence
over the one nested. Here is an example:
Example 1.5. Comments
"Fred"
"Don't Panic!"
'You shouldn''t' /* Same as "You shouldn't"
"" -- The null string */
In this example, the language processor ignores everything after
'You shouldn''t' up to the end of the last
line. In this case, the standard comment has precedence over the line comment.
When nesting the two comment types, make sure that the start
delimiter of the standard comment
/* is not
in the line commented out with the line comment signs.
Example 1.6. Comments
"Fred"
"Don't Panic!"
'You shouldn''t' -- Same as /* "You shouldn't"
"" The null string */
This example produces an error because the language processor
ignores the start delimiter of the standard comment, which is commented out
using the line comment.