The BIFPREC option controls the precision of the FIXED BIN result returned by the following built-in functions:
The effect of the BIFPREC compiler option is most visible when the result of one of the above built-in functions is passed to an external function that has been declared without a parameter list. For example, consider the following code fragment:
dcl parm char(40) var; dcl funky ext entry( pointer, fixed bin(15) ); dcl beans ext entry; call beans( addr(parm), verify(parm),' ') );
If the function beans actually declares its parameters as POINTER and FIXED BIN(15), then if the code above were compiled with the option BIFPREC(31) and if it were run on a big-endian system such as z/OS, the compiler would pass a four-byte integer as the second argument and the second parameter would appear to be zero.
Note that the function funky would work on all systems with either option.
The BIFPREC option does not affect the built-in functions DIM, HBOUND and LBOUND. The CMPAT option determines the precision of the FIXED BIN result returned these three functions: under CMPAT(V1), these array-handling functions return a FIXED BIN(15) result, while under CMPAT(V2) and CMPAT(LE), they return a FIXED BIN(31) result.