SunSystems Reporting Services Functions

You can use a number of SunSystems Reporting Services in-built functions as expressions:
Balance
Returns the aggregate value of the expression for all rows that are less than or equal to the value specified as the Sequence parameter:
BALANCE(Expression, Sequence, Calculation Type, Scope)
OpeningBalance
Returns the aggregate value of the expression for all rows that are less than the value specified as the Sequence parameter. Generally the sequence is set to a period parameter. The syntax for this function is:
OPENINGBALANCE(Expression, Sequence, Calculation Type, Scope)
SSLanguageToLocale
Converts the SunsSystems5 language code to the user's locale. The syntax for this function is:
SSLANGUAGETOLOCALE(Expression)
Example:
SSLANGUAGETOLOCALE("2") = en-GB
SSRound
The most common rounding method where values are rounded up or down to the nearest number of places before or after the decimal.
Note: This is not the equivalent of the Visual Basic Round method which rounds 5 to the nearest even number. For example ROUND(0.025) = 0.02, whereas SSROUND(0.025) = 0.03
The syntax for this function is:
SSROUND(numeric_expression, digit, reverse_negatives)
numeric_expression
numeric expression is any numeric expression
digit
digit specifies the number of digits to which you want to round the number derived from the numeric expression. When specifying the number of digits:
  • If digit is greater than 0 zero, then number is rounded to the specified number of decimal places.
  • If digit is 0, then number is rounded to the nearest integer.
  • If digit is less than 0, then number is rounded to the left of the decimal point.
You can also use a value of c for digit, which uses the currency number of decimals for the field.
reverse_negatives
reverse_negatives is a boolean. This only affects the rounding of negative numbers. When FALSE then rounding up is away from zero and rounding down is towards zero. When TRUE, then rounding up a negative number rounds towards zero, and rounding down a negative number rounds away from zero.
Example:
SSROUND(2767.345, 2, FALSE) = 2767.35
SSROUND(2767.345, -2, FALSE) = 2800.00
Negative Rounding Expressions SSRound SSRoundUp SSRoundDown
(2767.345, -2, FALSE) 2767.35 2767.35 2767.34
(-2767.345, -2, FALSE) -2767.35 -2767.35 -2767.34
(2767.344, -2, FALSE) 2767.34 2767.35 2767.34
(2767.344, -2, FALSE) -2767.34 -2767.35 -2767.34
(2767.345, -2, TRUE) 2767.35 2767.35 2767.34
(2767.345, -2, TRUE) -2767.35 -2767.35 -2767.34
(2767.344, -2, TRUE) 2767.34 2767.35 2767.34
(2767.344, -2, TRUE) -2767.34 -2767.34 -2767.35
SSRoundUp
Numbers are rounded up away from zero when reverse_negatives is FALSE, and to a larger number when reverse_negatives is TRUE. The syntax for this function is:
SSROUNDUP(numeric_expression, digit, reverse_negatives)
Example:
SSROUNDUP(2767.344, 2, FALSE) = 2767.35
SSRoundDown
Numbers are rounded down away from zero when reverse_negatives is FALSE, and to a smaller number when reverse_negatives is TRUE. The syntax for this function is:
SSROUNDUP(numeric_expression, digit, reverse_negatives)
Example:
SSROUNDUP(2767.345, 2, FALSE) = 2767.34
SSMRound
Values are rounded up or down to the nearest multiple of the unit specified. The syntax for this function is:
SSMROUND(numeric_expression, multiple_unit, reverse_negatives)
numeric_expression
numeric expression is any numeric expression
multiple_unit
multiple_unit is always a positive number
reverse_negatives
reverse_negatives is a boolean. When FALSE then any rounding up or down is away or towards zero. When TRUE, then any rounding up results in a larger number and rounding down results in a smaller number.
Example:
SSMROUND(2767.345, 2, FALSE) = 2768
SSROUND(10, 3, FALSE) = 9 
SSMRoundUp
Values are rounded up to the nearest multiple of the unit specified.
SSMRoundDown
Values are rounded down to the nearest multiple of the unit specified.