That code extract is a bit scary. I think something like this shows the subtle difference...
MAIN
DEFINE x DECIMAL(6,2)
LET x= 9999.99 + 1
DISPLAY "Value is ",x
WHENEVER ANY ERROR STOP
LET x= 9999.99 + 1
DISPLAY "Value is ",x
END MAIN
On BDS displays 10000.99 for both
On Genero displays NULL and stops.