This code illustrates the fact that a 
TRY/CATCH block
can be used in conjunction       with a 
WHENEVER instruction:
The program first executes a 
WHENEVER         ANY ERROR to
define an error handler named 
foo and later it uses a     
   
TRY/CATCH block to trap expression errors. In
this example, we       intentionally force a division by zero. After
the 
TRY/CATCH block we force       another division
by zero error, which will call the 
foo error       handler:
MAIN
  DEFINE i INTEGER
  WHENEVER ANY ERROR CALL foo
  TRY
    DISPLAY "Next exception should be handled by the catch statement"
    LET i = i / 0
  CATCH
    DISPLAY "Exception caught, status: ", STATUS
  END TRY
  -- Previous error handler is restored after the TRY - CATCH block 
  LET status = 0
  DISPLAY "Next exception should be handled by the foo function"
  LET i = i / 0
END MAIN
FUNCTION foo()
  DISPLAY "Function foo called, status: ", STATUS
END FUNCTION
 
Program    output:
Next exception should be handled by the catch statement
Exception caught, status:      -1202
Next exception should be handled by the foo function 
Function foo called, status:      -1202