Under both the old and new compilers, if you try to assign a source to a numeric target and the source is too big, the SIZE condition will be raised if it is enabled.
However, if the SIZE condition is NOT enabled, your program is in error and what happens is unpredictable. You should correct such a program.
Under the old compiler, sometimes no condition would be raised. For example, consider the following program:
dcl A fixed dec(3);
dcl B pic'9';
A = 123;
B = A;
The value in the source A is too large to fit into B, and if SIZE is enabled, it would be raised. However, when SIZE is disabled, the old compiler raises no condition. That does not mean your program is correct - in fact, it is incorrect and should be changed. For instance, if you wished to set B to just the ones digit of A, you could change the above code to:
dcl A fixed dec(3);
dcl B pic'9';
A = 123;
B = mod(A,10);
Moreover, under the old compiler, sometimes a condition would be raised for very similar code. For example, consider the following program:
dcl X fixed dec(5);
dcl Y fixed dec(4);
dcl Z fixed dec(5);
X = 99999;
Y = X + 1;
Z = X + 1;
The value of the expression X + 1 is too large to fit into either Y or Z, and if SIZE is enabled, it would be raised for both statements. However, when SIZE is disabled, the old compiler raises no condition for the assignment to Y and raises FIXEDOVERFLOW for the assignment to Z. Again your program is incorrect and should be changed.
The new compiler handles these statements consistently, but the results depend on the target attributes and the compiler options in effect: when the SIZE condition is disabled,
More precisely, the generated code will not raise the FIXEDOVERFLOW condition when SIZE is disabled when assigning a source expression with any of the following data types to a non-floating point PICTURE target:
Note that the above discussion applies to assignments only: if an operation such as addition or multiplication produces a result requiring more than 15 digits (or more than 31 if the LIMITS(FIXEDDEC(15,31)) option is in effect), then an exception will be raised. The exception raised will usually be FIXEDOVERFLOW, but depending on the machine instructions generated, other exceptions, such as a specification exception, may be raised.