! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! + ! ! Security classification block. Contains secrecy and integrity ! level and categories for non-discretionary (mandatory) access controls. ! ! - DECLARE LONG CONSTANT CLS$S_CLSDEF_TLVRNG = 4 ! Preserve previous size symbol DECLARE LONG CONSTANT CLS$S_CLS_TLVRNG = 4 record CLS_TLVRNG ! Range specifier field references WORD CLS$W_RANGE_LOW ! Range low limit WORD CLS$W_RANGE_HIGH ! Range high limit end record CLS_TLVRNG DECLARE LONG CONSTANT CLS$K_END = 0 ! List terminator DECLARE LONG CONSTANT CLS$K_SC_ENUMERATE = 1 ! Secrecy category enumerated list DECLARE LONG CONSTANT CLS$K_SC_RANGE = 2 ! Secrecy category range list DECLARE LONG CONSTANT CLS$K_SC_MASK = 3 ! Secrecy category bitmask DECLARE LONG CONSTANT CLS$K_IC_ENUMERATE = 17 ! Integrity category enumerated list DECLARE LONG CONSTANT CLS$K_IC_RANGE = 18 ! Integirty category range list DECLARE LONG CONSTANT CLS$K_IC_MASK = 19 ! Integrity category bitmask DECLARE LONG CONSTANT CLS$K_VOID = 255 ! Voided entry DECLARE LONG CONSTANT CLS$S_CLSDEF_TLV = 8 ! Preserve previous size symbol DECLARE LONG CONSTANT CLS$S_CLS_TLV = 8 record CLS_TLV ! TLV entry field references variant case group CLS$R_TLV BYTE CLS$B_TAG ! Format code group CLS$B_LENGTH ! Field length, intrepretation format variant ! dependent: case BYTE CLS$B_COUNT ! # entries in an enumerated list ! # range pairs in a range list ! # longwords following voided entry case BYTE CLS$B_MASK_SIZE ! # longwords in a bitmask end variant end group CLS$B_LENGTH group CLS$R_VALUE_SET ! Value set. variant case group CLS$R_CATLSTTLV WORD CLS$W_CATLST ( 1 to 1 ) ! Vector of enumerated cat. end group CLS$R_CATLSTTLV case group CLS$R_RNGLSTTLV WORD CLS$W_RSVD LONG CLS$L_RNGLST ( 1 to 1 ) ! Vector of high:low word ! range pairs end group CLS$R_RNGLSTTLV case group CLS$R_MSKTLV WORD CLS$W_BASE ! Bias value LONG CLS$L_MASK ( 1 to 1 ) ! <32 * MASK_SIZE> bit mask end group CLS$R_MSKTLV case group CLS$R_ENDTLV WORD CLS$W_RSVD ( 1 to 3 ) end group CLS$R_ENDTLV case group CLS$R_VOIDTLV WORD CLS$W_VOID ( 1 to 1 ) ! words end group CLS$R_VOIDTLV end variant end group CLS$R_VALUE_SET end group CLS$R_TLV end variant end record CLS_TLV DECLARE LONG CONSTANT CLS$K_MIN_SEC_LEV = 0 ! Minimum secrecy level DECLARE LONG CONSTANT CLS$K_MIN_INT_LEV = 0 ! Minimum integrity level DECLARE LONG CONSTANT CLS$K_MAX_SEC_LEV = 255 ! Maximum secrecy level DECLARE LONG CONSTANT CLS$K_MAX_INT_LEV = 255 ! Maximum integrity level DECLARE LONG CONSTANT CLS$K_MIN_SEC_CAT = 1 ! Minimum secrecy category DECLARE LONG CONSTANT CLS$K_MIN_INT_CAT = 1 ! Minimum integrity category DECLARE LONG CONSTANT CLS$K_MAX_SEC_CAT = 65536 ! Maximum supported secrecy category DECLARE LONG CONSTANT CLS$K_MAX_INT_CAT = 65536 ! Maximum supported integrity category DECLARE LONG CONSTANT CLS$K_MAX_SEC_CAT_S64I64 = 64 ! Maximum type 0 secrecy category DECLARE LONG CONSTANT CLS$K_MAX_INT_CAT_S64I64 = 64 ! Maximum type 0 integrity category DECLARE LONG CONSTANT CLS$K_MAX_SEC_CAT_S128 = 128 ! Maximum type 1 secrecy category DECLARE LONG CONSTANT CLS$K_MAX_SEC_CAT_DYN_CAT = 65536 ! Maximum type 2 secrecy category DECLARE LONG CONSTANT CLS$K_MAX_INT_CAT_DYN_CAT = 65536 ! Maximum type 2 integrity category DECLARE LONG CONSTANT CLS$K_TYP_S64I64 = 0 ! Type 0 class block identifier DECLARE LONG CONSTANT CLS$K_TYP_S128 = 1 ! Type 1 class block identifier DECLARE LONG CONSTANT CLS$K_TYP_DYN_CAT = 2 ! Type 2 class blook identifier DECLARE LONG CONSTANT CLS$K_LENGTH_HDR = 4 ! Size of common header DECLARE LONG CONSTANT CLS$K_LENGTH_S64I64 = 20 ! Size of type 0 class block DECLARE LONG CONSTANT CLS$K_LENGTH_S128 = 20 ! Size of type 1 class block DECLARE LONG CONSTANT CLS$K_LENGTH_DYN_CAT = 4 ! Size of type 2 class block ! fixed portion DECLARE LONG CONSTANT CLS$S_CLSDEF = 20 ! Preserve previous size definition DECLARE LONG CONSTANT CLS$K_LENGTH = 20 ! length of structure DECLARE LONG CONSTANT CLS$S_CLS = 20 record CLS variant case group CLS$R_SEVMS_DEFS BYTE CLS$B_SEC_LEV ! Secrecy level BYTE CLS$B_INT_LEV ! Integrity level BYTE CLS$B_TYPE ! Class block type ! Class block type identifiers BYTE CLS$B_TLVLST_SIZE ! Size in longwords of TLV list in ! a type 2 class block. group CLS$R_CLSDEF_X ! Type dependent overlays/extensions variant ! ! Usage of the ..._S64I64 and ..._S128 symbolic name forms is preferred. ! Previous name forms have been retained for backwards compatibility only. ! case group CLS$R_CLSDEF_S64I64 ! Type 0 class block fields BASIC$QUADWORD CLS$Q_SEC_CAT_S64I64 ! Secrecy category mask BASIC$QUADWORD CLS$Q_INT_CAT_S64I64 ! Integrity category mask end group CLS$R_CLSDEF_S64I64 case group CLS$R_CLSDEF_S128 ! Type 1 class block fields BASIC$OCTAWORD CLS$O_SEC_CAT_S128 ! Secrecy category mask end group CLS$R_CLSDEF_S128 case group CLS$R_CLSDEF_DYN_CAT ! Type 2 class block fields LONG CLS$L_TLVLST ( 1 to 1 ) ! Tag-Length-Value_set list end group CLS$R_CLSDEF_DYN_CAT ! ! The following definitions have been superseded and are being retained for backwards compatibility only. ! Usage of the ..._S64I64 and ..._S128 symbolic names is preferred. ! case group CLS$R_CLSDEF_0 ! Type 0 class block fields BASIC$QUADWORD CLS$Q_SEC_CAT_0 ! Secrecy category mask - Usage of CLS$Q_SEC_CAT_S64I64 preferred BASIC$QUADWORD CLS$Q_INT_CAT_0 ! Integrity category mask - Usage of CLS$Q_INT_CAT_S64I64 preferred end group CLS$R_CLSDEF_0 case group CLS$R_CLSDEF_1 ! Type 1 class block fields BASIC$OCTAWORD CLS$O_SEC_CAT_1 ! Secrecy category mask - Usage of CLS$O_SEC_CAT_S128 preferred end group CLS$R_CLSDEF_1 end variant end group CLS$R_CLSDEF_X end group CLS$R_SEVMS_DEFS ! ! The following definitions have been superseded and are being retained for backwards compatibility only. ! Usage of the ..._S64I64 and ..._S128 symbolic names is preferred. ! case group CLS$R_VMS_DEFS BYTE CLS$B_SECUR_LEV ! Security level - Usage of CLS$B_SEC_LEV preferred BYTE CLS$B_INTEG_LEV ! Integrity level - Usage of CLS$B_INT_LEV preferred WORD CLS$W_FILL_1 ! Reserved BASIC$QUADWORD CLS$Q_SECUR_CAT ! Security category mask - Usage of CLS$Q_SEC_CAT_S64I64/CLS$O_SEC_CAT_S128 & ! preferred BASIC$QUADWORD CLS$Q_INTEG_CAT ! Integrity category mask - Usage of CLS$Q_INT_CAT_S64I64 preferred end group CLS$R_VMS_DEFS ! ! The CLS$S_CLSDEF definition is provided for backwards compatibility only. ! Usage of the CLS$K_LENGTH_S64I64, CLS$K_LENGTH_S128 and CLS$K_LENGTH_DYN_CAT definitions is preferred. ! end variant end record CLS ! ! $CHANGE_CLASS, PARSE_CLASS, FORMAT_CLASS system service item codes ! DECLARE LONG CONSTANT CLS$_SECSTR = 1 ! Textual secrecy/security string DECLARE LONG CONSTANT CLS$_INTSTR = 2 ! Textual integrity string DECLARE LONG CONSTANT CLS$_CLSBLK = 3 ! Simple classification block DECLARE LONG CONSTANT CLS$_MINCLSBLK = 4 ! Minimum classification block DECLARE LONG CONSTANT CLS$_MAXCLSBLK = 5 ! Maximum classification block DECLARE LONG CONSTANT CLS$_WIDTH = 6 ! Width of display for $FORMAT_CLASS DECLARE LONG CONSTANT CLS$_TRMDSC = 7 ! Line terminator for $FORMAT_CLASS DECLARE LONG CONSTANT CLS$_INDENT = 8 ! Line indenting for $FORMAT_CLASS DECLARE LONG CONSTANT CLS$_OLDCLSBLK = 9 ! Previous classification block DECLARE LONG CONSTANT CLS$_OLDMINCLS = 10 ! Previous minimum class block DECLARE LONG CONSTANT CLS$_OLDMAXCLS = 11 ! Previous maximum class block DECLARE LONG CONSTANT CLS$_TRANQUIL = 12 ! Override tranquility checks - Usage reserved to Digital DECLARE LONG CONSTANT CLS$_FLAGS = 13 ! Formatting control flags ! ADD ITEM-CODES BEFORE THIS COMMENT DECLARE LONG CONSTANT CLS$_MIN_ITEM_CODE = 1 DECLARE LONG CONSTANT CLS$_MAX_ITEM_CODE = 13 DECLARE LONG CONSTANT CLS$M_COMPRESS = x'00000001' DECLARE LONG CONSTANT CLS$M_EXPAND = x'00000002' DECLARE LONG CONSTANT CLS$S_FILL_112_ = 4 record FILL_112_ variant case LONG CLS$L_FLAGS ! $FORMAT_CLASS control flags case group CLS$R_FILL_113_ ! Compress category range strings ! Expande category range strings BYTE COMPRESS_bits ! COMMENT ADDED BY SDL - COMPRESS_bits contains bits COMPRESS through FILL_114_ end group CLS$R_FILL_113_ end variant end record FILL_112_