|
VMS Help CC, /PDSC_MASK *Conan The Librarian |
/PDSC_MASK=option
Forces the compiler to set the PDSC$V_EXCEPTION_MODE field of the
procedure descriptor for each function in the compilation unit to
the specified value, regardless of the setting of any other
qualifiers.
Ordinarily the PDSC$V_EXCEPTION_MODE field gets set automatically
by the compiler, depending on which /IEEE mode is specified on the
command line. The /PDSC_MASK qualifier overrides the /IEEE_MODE
qualifer setting of this field.
NOTE:
The /PDSC_MASK qualifier is a low-level systems-programming
feature that is seldom necessary. Its usage can produce object
modules that do not conform to the OpenVMS common language
environment and, within C, it can produce non-standard and
seemingly incorrect floating-point behaviors at runtime.
The qualifier option keywords are exactly the allowed values
defined in the OpenVMS Calling Standard for this field, stripped of
the PDSC$V_EXCEPTION_MODE prefix (for example, /PDSC_MASK=SIGNAL
sets the field to PDSC$V_EXCEPTION_MODE_SIGNAL).
The qualifier options are:
SIGNAL Maps to PDSC$K_EXCEPTION_MODE_SIGNAL. Raise
exceptions for all except underflow (which
equals 0).
SIGNAL_ALL Maps to PDSC$K_EXCEPTION_MODE_SIGNAL_ALL.
Raise exceptions for all.
SILENT Maps to PDSC$K_EXCEPTION_MODE_SILENT. Raise
no exceptions. Create only finite values:
no infinities, no denorms, no NaNs. The
function result or errno needs to be
examined.)
FULL_IEEE Maps to PDSC$K_EXCEPTION_MODE_FULL_IEEE.
Raise no exceptions except as controlled by
separate IEEE exception-enabling bits.
Create exceptional values according to the
IEEE standard.
CALLER Maps to PDSC$K_EXCEPTION_MODE_CALLER.
Emulate the same mode as the caller.
In the absence the /PDSC_MASK qualifier, the compiler sets the
PDSC$V_EXCEPTION_MODE field automatically, depending on the
/IEEE_MODE qualifier setting:
o If /IEEE_MODE is specified with UNDERFLOW_TO_ZERO,
DENORM_RESULTS, or INEXACT, then /PDSC_MASK is set to
FULL_IEEE.
o In all other cases, /PDSC_MASK is set to SILENT. This setting
differs from the calling-standard-specified default of SIGNAL
used by Fortran, and is largly responsible for the ANSI C
conforming behavior of the math library when called from C or
C++ programs.
|
|