aerror(laError) * A global error handler is in effect, so let's pass the error on to it. * Replace certain parameters passed to the error handler (the name of the * program, the error number, the line number, the message, and SYS(2018)) with * the appropriate values. if not empty(on('ERROR')) lcError = upper(on('ERROR')) lcError = strtran(lcError, 'SYS(16)', '"' + tcMethod + '"') lcError = strtran(lcError, 'PROGRAM()', '"' + tcMethod + '"') lcError = strtran(lcError, ',ERROR()', ',tnError') lcError = strtran(lcError, ' ERROR()', ' tnError') lcError = strtran(lcError, 'LINENO()', 'tnLine') lcError = strtran(lcError, 'MESSAGE()', 'laError[2]') lcError = strtran(lcError, 'SYS(2018)', 'laError[3]') * If the error handler is called with DO, macro expand it and assume the return * value is "CONTINUE". If the error handler is called as a function (such as an * object method), call it and grab the return value if there is one. if left(lcError, 3) = 'DO ' or '=' $ lcError &lcError lcReturn = 'CONTINUE' else lcReturn = &lcError endif left(lcError, 3) = 'DO ' ...For more details, download the Error Handling paper from the Technical Papers page of Stonefield's Web site.