integer division bug
Posted in 1995
Topics: Stored Procedures & SPL
I was was really surprised, when I noticed that Informix didn't evaluate arithmetic expressions right, 1 / 2 will be 0 , if stored in a variable, 1 / 2 will be 1 in an arithmetic expression. Is this a known bug (or feature) ? A small piece of code follows to demonstate the effect. Ciao Klaus ################################################################## GLOBALS DEFINE p_wiederimma CHAR(3), semi integer, diffdata integer, diffdata1 integer, anz_hs integer, p_hs_sem_ges CHAR(2), JJi integer END GLOBALS MAIN LET p_wiederimma = "931" LET anz_hs = 14 LET p_hs_sem_ges = "13" LET semi = p_wiederimma[1,2] DISPLAY p_wiederimma," -> ",semi LET JJi = semi - ((anz_hs - p_hs_sem_ges) / 2) DISPLAY semi," - ((",anz_hs," - ",p_hs_sem_ges,") / 2) = ",JJi LET diffdata = (anz_hs - p_hs_sem_ges) DISPLAY diffdata," = ",anz_hs," - ",p_hs_sem_ges LET JJi = semi - (diffdata / 2) DISPLAY semi," - (",diffdata," / 2) = ",JJi LET diffdata1 = diffdata / 2 DISPLAY diffdata1," = ",diffdata," / 2" LET JJi = semi - diffdata1 DISPLAY semi," - ",diffdata1," = ",JJi LET semi = JJi END MAIN produces the following output: 931 -> 93 93 - (( 14 - 13) / 2) = 92 1 = 14 - 13 93 - ( 1 / 2) = 92 0 = 1 / 2 93 - 0 = 93 What a weird arithmetic expression handling is this? The division operator "/" ignores any reminder on division of two integers (3-13U) I'm using INFORMIX-OnLine Version 5.01.UD3 -- ----------------------------------------------------------------------------- | Klaus Dobrindt dobrahs1@mailszrz.zrz.tu-berlin.de | | Turmstr. 44 tel.: (priv) +49 30 396 72 44 | | 10551 Berlin (off) 3185-2737 |