The mi_fp_setretprec() function

The mi_fp_setretprec() accessor function sets the precision of a return value of a user-defined function in its associated MI_FPARAM structure.

Syntax

void mi_fp_setretprec(fparam_ptr, ret_pos, ret_prec)
   MI_FPARAM *fparam_ptr;
   mi_integer ret_pos;
   mi_integer ret_prec;
fparam_ptr
A pointer to the associated MI_FPARAM structure.
ret_pos
The index position into the return-precision array for the return value whose precision you want to set. For C user-defined functions, the only valid value is 0.
ret_prec
The precision, in number of digits, to set for the ret_pos+1 return value.
Valid in client LIBMI application? Valid in user-defined routine?
Yes Yes

Usage

The mi_fp_setretprec() function sets the precision of the function return value at position ret_pos in the MI_FPARAM structure that fparam_ptr references.

The precision is an attribute of the data type that represents the total number of digits the routine return value can hold, as follows.
DECIMAL, MONEY
Number of significant digits in the fixed-point or floating-point (DECIMAL) column
DATETIME, INTERVAL
Number of digits that are stored in the date and/or time column with the specified qualifier
Character, Varying-character
Maximum number of characters in the column

The MI_FPARAM structure stores information about the precision of function return values in the zero-based return-precision array.

For more information about return-value information in an MI_FPARAM structure or about the precision of a fixed-point data type, see the Informix® DataBlade® API Programmer's Guide.

To set information for the nth return value, use a ret_pos value of n-1.

For example, the following call to mi_fp_setretprec() sets the precision of 10 for the first return value of the my_func() UDR, with which fparam1 is associated:
mi_integer my_func(..., fparam1)
   ...
   MI_FPARAM *fparam1;
{
   ...
   mi_fp_setretprec(fparam1, 0, 10);
Important: C user-defined functions always have only one return value.

Return values

None.