Next: Introduction, Up: DEFINE [Contents][Index]
DEFINE macro_name([argument[/argument]…]) …body… !ENDDEFINE.
Each argument takes the following form:
{!arg_name= | !POSITIONAL} [!DEFAULT(default)] [!NOEXPAND] {!TOKENS(count) | !CHAREND('token') | !ENCLOSE('start' | 'end') | !CMDEND}
The following directives may be used within body:
!OFFEXPAND !ONEXPAND
The following functions may be used within the body:
!BLANKS(count) !CONCAT(arg…) !EVAL(arg) !HEAD(arg) !INDEX(haystack, needle) !LENGTH(arg) !NULL !QUOTE(arg) !SUBSTR(arg, start[, count]) !TAIL(arg) !UNQUOTE(arg) !UPCASE(arg)
The body may also include the following constructs:
!IF (condition) !THEN true-expansion !ENDIF !IF (condition) !THEN true-expansion !ELSE false-expansion !ENDIF !DO !var = start !TO end [!BY step] body !DOEND !DO !var !IN (expression) body !DOEND !LET !var = expression