^D

Access data as decimal or implied-decimal

WSupported on Windows
USupported on Unix
VSupported on OpenVMS
NSupported in Synergy .NET
^D(expression[, precision])

Arguments

expression

An expression to be accessed as decimal or implied-decimal. (a or n)

precision

(optional) The fractional precision. (n)

Discussion

^D accesses data as a decimal or implied-decimal data type.

^D does not convert expression to a decimal or implied-decimal value; the data itself remains unchanged. Only the data type is changed for the reference. (If you need to convert an expression to an implied-decimal value, use the %IMPLIED function. (See %IMPLIED.) There is no conversion function that creates a decimal from another type.)

Important

Before using ^D(expression) in another expression, be sure to validate that the data is numeric. Using ^D on non-ASCII numeric (for example, integer) data yields undefined numeric results.

If you specify precision, the expression is accessed as implied-decimal with the specified fractional precision. If you omit precision, the expression is accessed as decimal. Precision cannot be less than zero, greater than 28, or greater than the size of expression.

Examples

record drec
    len         ,d4
    siz         ,d4
    val         ,d4
record
    amount      ,d10.4
proc 
    clear ^d(drec)                      ;Clear all decimals with zeros
    amount = 234.5678
    ; ^d(amount, 2) changes amount from a d10.4 to a d10.2 
    ; This causes the contents of amount to be viewed as 123456.78
    ^d(amount, 2) = %round(^d(amount, 2))   ;Round off last two digits
                                            ;Amount will contain 234.57
    xreturn
end