Coordinated condition handling under IMS

Language Environment and IMS™ condition handling is coordinated, meaning that if a program interrupt or abend occurs when your application is running in an IMS environment, the Language Environment condition manager can determine whether the problem occurred in your application or in IMS. If the program interrupt or abend occurs in IMS, Language Environment, as well as any invoked HLL-specific condition handler, percolates the condition back to IMS.

If a program interrupt or abend occurs in the application outside of IMS, or if a software condition of severity 2 or greater is raised outside of IMS, the Language Environment condition manager takes normal condition handling actions as described in Introduction to Language Environment condition handling. If the condition manager remains in control, however, you must do one of the following:
  • Resolve the error so that the application can continue.
  • Issue a rollback call to IMS, and then terminate the application.
  • Ensure that the application terminates abnormally by using the ABTERMENC(ABEND) runtime option to transform all abnormal terminations into operating system abends in order to cause IMS rollbacks.
  • Ensure that the application terminates abnormally by coding and providing a modified runtime assembler user exit (CEEBXITA) that transforms all abnormal terminations into operating system abends in order to cause IMS rollbacks.

    The assembler user exit you provide should check the return code and reason code or the CEEAUE_ABTERM bit, and request an abend by setting the CEEAUE_ABND flag to ON, if appropriate. See CEEBXITA assembler user exit interface for more details about the CEEBXITA user exit.