DECOVF: PROCEDURE OPTIONS (MAIN); %INCLUDE LIB$DEC_OVER; DECLARE DISABLE FIXED BINARY (31) INITIAL (0) STATIC READONLY; DECLARE OLD_DV FIXED BINARY (31); DECLARE (A,B) FIXED DECIMAL (4,2); ON FIXEDOVERFLOW PUT SKIP LIST (' Overflow detected'); PUT LIST ('In procedure MAIN'); A = 99.99; /* Temporarily disable decimal overflow */ OLD_DV = LIB$DEC_OVER (DISABLE); /* Does not raise FIXEDOVERFLOW */ B = A + 2; BEGIN; PUT SKIP LIST ('In BEGIN block'); /* Raises FIXEDOVERFLOW */ B = A + 2; CALL Q; Q: PROCEDURE; PUT SKIP LIST ('In procedure Q'); /* Raises FIXEDOVERFLOW */ B = A + 2; END Q; END /* Begin */; PUT SKIP LIST ('Back in procedure MAIN'); /* Restore the old overflow flag */ OLD_DV = LIB$DEC_OVER (OLD_DV); /* Raises FIXEDOVERFLOW */ B = A + 2; END DECOVF;