Next: evaluate() Up: MacAnova Help File Previous: enterchars()   Contents


error(a, b, ...[,format:Fmt or nsig:m, header:F, labels:F,
  missing:missStr, zero:zeroStr, macroname:F]), CHARACTER scalars Fmt,
  missStr and zeroStr, integer m > 0

Keywords: output
error() is almost identical to print().  It differs in ways which make
it useful for reporting errors recognized in a macro.

(i) Use of error() immediately terminates execution of the current line
or macro.

(ii) error("Oops!") will print "ERROR: Oops!", where "Oops!" is a single
quoted string or CHARACTER scalar that does not start with "ERROR:" or
"WARNING:".  When the message starts with "ERROR:" or "WARNING:" error()
prints it unchanged.

(iii) In macro mymacro(), say, error("Oops!") prints
  "ERROR: Oops! in macro mymacro".

To avoid appending the macro name when using error() in a macro, use
keyword phrase 'macroname:F'.  This is helpful when the error message
itself contains the macro name is in
   error("argument 2 to mymacro >= 1",macroname:F)

  Cmd> for(i,run(nrows(x))){if(x[i] >= 0){y[i] <- sqrt(x[i]);;}else{
        error("attempt to take square root of number < 0")}}

This will terminate the loop on the first x[i] < 0.  The message printed
will actually be "ERROR: attempt to take square root of number < 0".

See also topics print(), write(), paste(), 'macros', 'macro_syntax',
'for', 'if'.

Gary Oehlert 2003-01-15