Estas son unas instrucciones básicas para trabajar con redondeos, valores absolutos, etc...
DATA n1 TYPE p DECIMALS 2.
DATA m1 TYPE p DECIMALS 2 VALUE '-5.55'.
DATA n2 TYPE p DECIMALS 2.
DATA m2 TYPE p DECIMALS 2 VALUE '5.15'.
n1 = abs( m1 ). WRITE: / 'ABS : ', n1.
n1 = sign( m1 ). WRITE: / 'SIGN : ', n1.
n1 = ceil( m1 ). WRITE: / 'CEIL : ', n1.
n1 = floor( m1 ). WRITE: / 'FLOOR: ', n1.
n1 = trunc( m1 ). WRITE: / 'TRUNC: ', n1.
n1 = frac( m1 ). WRITE: / 'FRAC : ', n1.
SKIP.
n2 = abs( m2 ). WRITE: / 'ABS : ', n2.
n2 = sign( m2 ). WRITE: / 'SIGN : ', n2.
n2 = ceil( m2 ). WRITE: / 'CEIL : ', n2.
n2 = floor( m2 ). WRITE: / 'FLOOR: ', n2.
n2 = trunc( m2 ). WRITE: / 'TRUNC: ', n2.
n2 = frac( m2 ). WRITE: / 'FRAC : ', n2.
Resultado final para N1
ABS : 5,55 "Valor absoluto
SIGN : 1,00- "*
CEIL : 5,00- "Redondea hacia arriba
FLOOR: 6,00- "Redondea hacia abajo
TRUNC: 5,00- "Parte entera
FRAC : 0,55- "Parte decimal
Resultado final para N2
ABS : 5,15 "Valor absoluto
SIGN : 1,00
CEIL : 6,00 "Redondea hacia arriba
FLOOR: 5,00 "Redondea hacia abajo
TRUNC: 5,00 "Parte entera
FRAC : 0,15 "Parte decimal
*El comando SIGN funciona de la siguiente manera:
Si el valor es > 0, devuelve 1.
Si el valor es = 0, devuelve 0.
Si el valor es < 0, devuelve -1.