The mi_column_scale() function

The mi_column_scale() function obtains the scale of the specified column from a row descriptor.

Syntax

mi_integer mi_column_scale(row_desc, column_id)
   MI_ROW_DESC *row_desc;
   mi_integer column_id;
row_desc
A pointer to the row descriptor of the row that contains the column.
column_id
indicates the column identifier, which specifies the position of the column in the specified row descriptor. Column numbering follows C array-indexing conventions: the first column in the row is at position zero.
Valid in client LIBMI application? Valid in user-defined routine?
Yes Yes

Usage

A row descriptor can describe the structure of a row in a table or the structure of a row type. From the row descriptor that row_desc references, the mi_column_scale() function obtains the scale of a column for either structure:
  • The scale of the column at position column_id in the row
  • The scale of the field at position column_id for the row type
The scale is an attribute of the data type. The meaning of the scale depends on the associated data type, as the following list shows.
Data type
Meaning of scale
DECIMAL (fixed-point), MONEY
The number of digits to the right of the decimal point
DECIMAL (floating-point)
The value 255
DATETIME, INTERVAL
The encoded integer value for the end qualifier of the data type, which end_qual represents in the following qualifier:

start_qual TO end_qual

If you call mi_column_scale() on a column or row-type field of some other data type, the function returns zero.

For more information about row descriptors or about the scale of a fixed-point data type, see the Informix® DataBlade® API Programmer's Guide.

Return values

0
The data type of the specified column or field is something other than DECIMAL, MONEY, FLOAT, or SMALLFLOAT.
>0
The scale of the specified column or field.
MI_ERROR
The function was not successful.