Google
 

Trailing-Edge - PDP-10 Archives - tops20-v7-ft-dist1-clock - 7-sources/stsdef.r36
There are 3 other files named stsdef.r36 in the archive. Click here to see a list.
!
!	COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1986.
!	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.
!

!STSDEF.R36

!+
!	Condition value macros
!
!	These macros are found on pages 17-24 and 17-25 of the BLISS
!	Language Guide, Second Edition, January 1980.
!-

FIELD
    sts$r_fields = 				! Condition fields	!A04
	SET
	sts$v_severity = [0, 0, 3, 0],		! severity field
	sts$v_success = [0, 0, 1, 0],		! success field
						! (subfield of severity)
	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 code
	sts$v_cust_def = [0, 31, 1, 0]		! customer definition flag
	TES;

LITERAL
    sts$k_bln = 1;

MACRO
    $condition_value =
 BLOCK[sts$k_bln] FIELD(sts$r_fields) %;

LITERAL
    sts$k_warning = 0,				! warning
    sts$k_success = 1,				! successful completion
    sts$k_error = 2,				! error
    sts$k_info = 3,				! information
    sts$k_severe = 4;				! severe error

KEYWORDMACRO
    sts$value (					! create a status value
	    severity = severe,			! default is severe error
	    CODE,				! no default code
	    fac_sp = 1 ^ 17,			! default is facility specific
	    fac_no = 0,				! arbitrary default
	    cust_def = 1 ^ 31 			! default is user definition
	    ) =
	    (%name ('sts$k_', severity) AND %O'7') OR
	    (CODE AND %O'37777')^3 OR
	    (IF fac_sp NEQ 0
		THEN 1^17
		ELSE 0 ) OR
	    (fac_no 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]	    !M10
	ELSE
	    .qqqqa[sts$v_cond_id] EQL .qqqqb[sts$v_cond_id]
	END %;

! End STSDEF.R36