?? NEWTITLE := 'clp$abort_handler', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc CYD$RUN_TIME_ERROR_CONDITION
*copyc oss$job_paged_literal
*copyc PMT$CONDITION
?? POP ??
*copyc PMP$CONTINUE_TO_CAUSE

{
{   PURPOSE:
{     This procedure is established to invoke a procedure clean_up within its
{     establisher in the event that its establisher is aborted.
{     Conditions considered to represent an abort are: system, segment access,
{     cybil run time, interactive terminate break, and block exit.
{
{   NOTE:
{     ***********************************************************************
{     ***********************************************************************
{     ****** This condition handler is obsolete and should NOT, under  ******
{     ****** ANY circumstances be used.  Modules presently using it    ******
{     ****** should be changed to have their own specialized condition ******
{     ****** handler.  This usually just entails making a block exit   ******
{     ****** handler out of the "clean_up" procedure that this routine ******
{     ****** now calls.                                                ******
{     ***********************************************************************
{     ***********************************************************************
{

  PROCEDURE clp$abort_handler
    (    condition: pmt$condition;
         condition_information: ^pmt$condition_information;
         save_area: ^ost$stack_frame_save_area;
     VAR handler_status: ost$status);

    VAR
      abort: boolean;

    handler_status.normal := TRUE;
    CASE condition.selector OF
    = pmc$system_conditions, mmc$segment_access_condition =
      abort := TRUE;
    = pmc$user_defined_condition =
      abort := condition.user_condition_name = cye$run_time_condition;
    = ifc$interactive_condition =
      abort := condition.interactive_condition = ifc$terminate_break;
    = pmc$block_exit_processing =
      abort := TRUE;
    ELSE
      abort := FALSE;
    CASEND;

    IF abort THEN
      clean_up;
    IFEND;

    IF condition.selector = pmc$block_exit_processing THEN
      RETURN;
    IFEND;

    pmp$continue_to_cause (pmc$execute_standard_procedure, handler_status);

  PROCEND clp$abort_handler;


  VAR
    clv$abort_conditions: [STATIC, READ, oss$job_paged_literal]
          pmt$condition := [pmc$condition_combination,
          [pmc$system_conditions, mmc$segment_access_condition,
          pmc$user_defined_condition, ifc$interactive_condition]],
    clv$established_abort_handler: pmt$established_handler;

?? OLDTITLE ??
