Google
 

Trailing-Edge - PDP-10 Archives - BB-FB49A-RM - sources/snterr.b36
There are no other files named snterr.b36 in the archive.
%title 'SNT Error handling routines'
module SNT$ERRORS (ident = 'Version 1.00') =
 
begin
 
! Copyright (c) 1984, 1985 by
! DIGITAL EQUIPMENT CORPORATION, Maynard, Massachusetts
!
! This software is furnished under a license and may be used and  copied
! only  in  accordance  with  the  terms  of  such  license and with the
! inclusion of the above copyright notice.  This software or  any  other
! copies  thereof may not be provided or otherwise made available to any
! other person.  No title to and ownership of  the  software  is  hereby
! transferred.
!
! The information in this software is subject to change  without  notice
! and  should  not  be  construed  as  a commitment by Digital Equipment
! Corporation.
!
! Digital assumes no responsibility for the use or  reliability  of  its
! software on equipment which is not supplied by Digital.
!++
! FACILITY:
!
!	DECnet/SNA TOPS-20 Trace Protocol Utility error handler.
!
! ABSTRACT:
!
!        This module handles error conditions for SNATRACE.
!
! ENVIRONMENT:
!
!	TOPS-20 Operating Systems, user mode.
!
! AUTHOR:       Dennis Brannon,               CREATION DATE: January 17,1984
!
! MODIFIED BY:
!
! 	D. Brannon, 11-Oct-84 : VERSION 1.00
! 
!--
%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!

forward routine
    SNT$MSGHANDLER;

!
! INCLUDE FILES:
!

library 'SNTDEF';
library 'SNTLIB';

!
! MACROS:
!

!
! EQUATED SYMBOLS:
!

!
! OWN STORAGE:
!

!
! EXTERNAL REFERENCES:
!
external routine
    MSG$EXPAND_ERROR;
%sbttl 'SNT$MSGHANDLER'
global routine SNT$MSGHANDLER (SIGVEC, MECHVEC, ENAVEC) =

!++
! FUNCTIONAL DESCRIPTION:
!
!	Condition handler to perform cleanup operations.
!
! FORMAL PARAMETERS:
!
!	SIGVEC
!	MECHVEC
!	ENAVEC
!
! IMPLICIT INPUTS:
!
!	NONE
!
! IMPLICIT OUTPUTS:
!
!	NONE
!
! ROUTINE VALUE:
! COMPLETION CODES:
!
!	Returns with SS$_RESIGNAL to resignal the condition.
!
! SIDE EFFECTS:
!
!	NONE
!
!--

    BEGIN

    MAP
	SIGVEC : REF BLOCK,
        MECHVEC: REF BLOCK,
        ENAVEC : REF BLOCK;

    LOCAL
        MSGBLK : REF BLOCK,
        SIZE,
	STATUS;

    BIND
	SIGNAME = SIGVEC [CHF$L_SIG_NAME] : CONDITION_VALUE;
    !
    ! If we are unwinding then just resignal.
    !
    IF .SIGVEC [CHF$L_SIG_NAME] EQLU SS$_UNWIND
    THEN
	RETURN SS$_RESIGNAL;
    !
    ! If the error is severe then resignal.
    !
    IF .SIGNAME [STS$V_SEVERITY] EQLU STS$K_SEVERE
    THEN
	RETURN SS$_RESIGNAL;
    !
    ! Output the message.
    !
    STATUS = MSG$EXPAND_ERROR (MSGBLK = .SIGVEC);
    !
    ! Return primary status to caller.  If just informational then continue.
    !
    IF .SIGNAME [STS$V_SEVERITY] NEQU STS$K_INFO
    THEN
        BEGIN
        SETUNWIND ();
        MECHVEC [CHF$L_MCH_SAVR0] = .SIGNAME;
        END;
    !
    ! Continue.
    !
    RETURN SS$_CONTINUE

    END;				! End of SNT$MSGHANDLER
END					! End of module
ELUDOM