option #11
WSupported on Windows
|
USupported on Unix
|
VSupported on OpenVMS
|
|
System option #11 determines whether Synergy DBL rounds or truncates expression results by default.
If option #11 is set, Synergy DBL truncates results in the following situations at compile time:
- Stores from an implied-decimal type or an alpha type in implied-decimal format (for example, “1.3”) to either an integer, a decimal, or an implied-decimal with a smaller fractional precision
- Intrinsic functions and system-supplied subroutines when an implied-decimal value is passed as an argument to a routine expecting a decimal or integer value
- The following data references when an implied-decimal value is used in place of a decimal or integer value (where dexp is specified):
dim_var[dexp, dexp, ...] ^arg(dexp) var(dexp) ^argn(dexp) var(dexp, dexp) ^d(exp, dexp) var(dexp:dexp)
- The GOTO statement when an implied-decimal value is used in place of a decimal or integer value (where dexp is specified):
goto (lbl, lbl, ...) dexp
- I/O statements when an implied-decimal value is used as a channel argument or qualifier value
- Multiplication or division operations, if the result is an implied-decimal value with more than 10 digits of fractional precision
- READ and WRITE statements when you specify the record number as the third argument (where dexp is specified):
read(channel, data_area, dexp)
- %IMPLIED with an alpha argument containing an implied-decimal value whose fractional precision is greater than 10
If option #11 is not set, Synergy DBL defaults to rounding in each of the above situations. When rounding, if the leftmost digit (or the eleventh digit for multiplication or division) of the fractional precision is in the range 5 through 9, Synergy DBL adds one to the absolute value of the whole number part (or the fractional part for multiplication or division). For example, if system option #11 is not set and you specify 3.5 as the record number to read in a READ statement, you get the fourth record. If system option #11 is set, you get the third record.
The state of this option is overridden in routines using the ROUND or TRUNCATE option on MAIN, SUBROUTINE, and FUNCTION.
This option is only used at compile time. It is ignored at runtime.