! *** 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 DECLARE LONG CONSTANT IEEE$K_VERSION_NUMBER = 2 ! ! IEEE Floating Point control definitions. ! ! ! The following values are used to set the precision control and rounding control fields via ! SYS$IEEE_SET_PRECISION_MODE and SYS$IEEE_SET_ROUNDING_MODE. (Note that one can not set ! precision mode on Alpha). ! DECLARE LONG CONSTANT IEEE$C_PM_NO_CHANGE = -1 ! No change. Just get previous value DECLARE LONG CONSTANT IEEE$C_PM_SINGLE = 0 ! Single Precision DECLARE LONG CONSTANT IEEE$C_PM_UNUSED = 1 ! This value has no meaning DECLARE LONG CONSTANT IEEE$C_PM_DOUBLE = 2 ! Double Precision DECLARE LONG CONSTANT IEEE$C_PM_DOUBLE_EXTENDED = 3 ! Double-Extended Precision DECLARE LONG CONSTANT IEEE$C_PM_MAX = 3 ! Maximum legal value DECLARE LONG CONSTANT IEEE$C_RM_NO_CHANGE = -1 ! No change. Just get previous value DECLARE LONG CONSTANT IEEE$C_RM_NEAREST = 0 ! Nearest (or even) DECLARE LONG CONSTANT IEEE$C_RM_DOWN = 1 ! -Infinity (down) DECLARE LONG CONSTANT IEEE$C_RM_UP = 2 ! +Infinity (up) DECLARE LONG CONSTANT IEEE$C_RM_TRUNCATE = 3 ! Zero (truncate/chop) DECLARE LONG CONSTANT IEEE$C_RM_MAX = 3 ! Maximum legal value ! ! The following structure defines bits for the (software) IEEE Floating Point ! control register on Alpha, and for the values passed to SYS$IEEE_SET_FP_CONTROL ! on all architectures (except VAX where it does not exist). ! DECLARE LONG CONSTANT IEEE$M_TRAP_ENABLE_INV = x'00000002' DECLARE LONG CONSTANT IEEE$M_TRAP_ENABLE_DZE = x'00000004' DECLARE LONG CONSTANT IEEE$M_TRAP_ENABLE_OVF = x'00000008' DECLARE LONG CONSTANT IEEE$M_TRAP_ENABLE_UNF = x'00000010' DECLARE LONG CONSTANT IEEE$M_TRAP_ENABLE_INE = x'00000020' DECLARE LONG CONSTANT IEEE$M_TRAP_ENABLE_DNOE = x'00000040' DECLARE LONG CONSTANT IEEE$M_MAP_DNZ = x'00002000' DECLARE LONG CONSTANT IEEE$M_MAP_UMZ = x'00004000' DECLARE LONG CONSTANT IEEE$M_INHERIT = x'00008000' DECLARE LONG CONSTANT IEEE$M_STATUS_INV = x'00020000' DECLARE LONG CONSTANT IEEE$M_STATUS_DZE = x'00040000' DECLARE LONG CONSTANT IEEE$M_STATUS_OVF = x'00080000' DECLARE LONG CONSTANT IEEE$M_STATUS_UNF = x'00100000' DECLARE LONG CONSTANT IEEE$M_STATUS_INE = x'00200000' DECLARE LONG CONSTANT IEEE$M_STATUS_DNO = x'00400000' DECLARE LONG CONSTANT IEEE$M_PC = x'01800000' DECLARE LONG CONSTANT IEEE$M_RC = x'06000000' DECLARE LONG CONSTANT IEEE$M_WPFP = x'08000000' DECLARE LONG CONSTANT IEEE$S_IEEE = 8 record IEEE group IEEE$R_FILL_18_ variant case BASIC$QUADWORD IEEE$Q_FLAGS ! Internal flags case group IEEE$R_FILL_19_ ! Bit 0 - reserved ! Trap enable flags ! invalid operation ! divide by zero ! overflow ! underflow ! inexact ! denormal operand exception enable ! reserved ! denormal operands mapped to 0.0 ! underflows mapped to 0.0 ! inherit FP state on thread create ! reserved ! invalid operation ! divide by zero ! overflow ! underflow ! inexact ! denormal operand ! Precision, rounding, and WPFP are not currently supported on Alpha. ! Precision control ! Rounding control ! Whole program floating point mode ! reserved LONG SPARE_0_bits ! COMMENT ADDED BY SDL - SPARE_0_bits contains bits SPARE_0 through SPARE_28_31 end group IEEE$R_FILL_19_ end variant end group IEEE$R_FILL_18_ end record IEEE