Informix Error -1201: Number is too small for a DECIMAL data type.
Cause and resolution
Number is too small for a DECIMAL data type.
The DECIMAL data type accommodates numbers greater than or equal to 1.000E-130 and less than 1.000E+126 in absolute value. The precision (number of significant digits) varies from 1 to 32; however, the source of this error is not the length of the number but its magnitude.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-1201 is the mirror image of -1200: it fires when a number's magnitude falls below what
DECIMAL can represent — per the official guidance, DECIMAL supports absolute values between
1.000E-130 and 1.000E+126; this error is specifically about the value's magnitude being too
small (too close to zero), not its digit count.
- A computed or literal nonzero value with an absolute magnitude smaller than
1.000E-130, per the official guidance — the direct, only cause. - An arithmetic operation (division, exponentiation) that underflows
DECIMAL's lower bound, even though each individual operand was within range.
Solutions / Resolution
- Review the computation or literal producing the undersized value, per the official guidance, and confirm it's actually the intended magnitude.
- If the value is genuinely correct, reconsider whether
DECIMALis the right data type for values at this scale — no rescaling ofDECIMALitself extends its1.000E-130floor.
Examples
An underflowing computation
DEFINE v_result DECIMAL(32);
LET v_result = 1e-100 / 1e50;
-- -1201: the quotient (1e-150) falls below DECIMAL's 1.000E-130 magnitude floor
Diagnostic Checks
- Check the actual magnitude of the value involved against
DECIMAL's1.000E-130lower bound.
Related Errors / Related Topics
- -1200 — "Number is too large for a DECIMAL data type." The mirror-image restriction: a
value above
DECIMAL's maximum magnitude rather than below its minimum.
A nonzero value's magnitude fell below DECIMAL's 1.000E-130 floor — review the computation
or literal that produced it.