Google
 

Trailing-Edge - PDP-10 Archives - bb-jr93k-bb - 10,7/decmai/mx/mxcndt.r36
There are 13 other files named mxcndt.r36 in the archive. Click here to see a list.
!	COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1985, 1989.
!	ALL RIGHTS RESERVED.
!
!	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 THAT IS NOT SUPPLIED BY DIGITAL.
!Condition handling stuff (temporary until we get real one from BLISS grp)

LITERAL
    STS$K_NORMAL = 1,
    STS$K_SUCCESS = 1,
    STS$K_ERROR = 2,
    STS$K_INFO = 3,
    STS$K_FATAL = 4,
    STS$K_SEVERE = 4,
    STS$K_WARNING = 0;

LITERAL
    SS$_NORMAL = STS$K_NORMAL,
    SS$_ERROR = STS$K_ERROR,
    SS$_FATAL = STS$K_FATAL,
    SS$_WARNING = STS$K_WARNING;

LITERAL STS$K_RESIGNAL=0,
        SS$_RESIGNAL=0,
        STS$K_CONTINUE=1,
        SS$_CONTINUE=1;

EXTERNAL LITERAL SS$UNW;

MACRO STS$K_UNWIND=SS$UNW %;
MACRO SS$_UNWIND=SS$UNW %;

! Define the condition code fields

FIELD
    condit_fields =
	SET
	sts$v_severity = [0,0,3,0],	! Severity field
	sts$v_success = [0,0,1,0],	! Success field
	sts$v_cond_id = [0,3,29,0],	! Identity field
	sts$v_msg_no = [0,3,15,0],	! Message number field
	sts$v_fac_sp = [0,17,1,0],	! Facility specific flag
	sts$v_code = [0,3,14,0],	! Code for condition only
	sts$v_fac_no = [0,18,14,0],	! Facility number
	sts$v_fac_mx = [0,18,13,0],	! Facility number
	sts$v_cust_def = [0,31,1,0]	! Customer definition flag
	TES;

MACRO
    condition_value = BLOCK[1] FIELD (condit_fields) %;

! Define the status definition macro

KEYWORDMACRO
    sts$value (
	SEV = sts$k_severe,	        ! default is severe
       	COD = 0,			! %(318)% no default code
	FAC_SP = 1 ^17,			! default is facility-specific
	FAC = 0,			! arbitrary default
	CUST_DEF = 1^31) =		! default is user definition

	(SEV AND %O'7') OR
	(COD AND %O'37777')^3 OR
	(IF FAC_SP NEQ 0
	    THEN 1^17
	    ELSE 0) OR
	(FAC AND %O'37777')^18 OR
	(IF CUST_DEF NEQ 0
	    THEN 1^31
	    ELSE 0)
%;

MACRO
    STS$MATCH(a,b) =
        BEGIN
        LOCAL
            QQQQA:  CONDITION_VALUE,
            QQQQB:  CONDITION_VALUE;

        QQQQA = (A);
        QQQQB = (B);
        IF NOT (.QQQQA[STS$V_FAC_SP] OR .QQQQB[STS$V_FAC_SP])
        THEN
            .QQQQA[STS$V_CODE] EQL .QQQQB[STS$V_CODE]
        ELSE
            .QQQQA[STS$V_COND_ID] EQL .QQQQB[STS$V_COND_ID]
        END %;