decdiv() 函数将两个 decimal 类型值相除。
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 640 -
语法
mint decdiv(n1, n2, result) /* result = n1 / n2 */
dec_t *n1;
dec_t *n2;
dec_t *result;
n1
指向第一个运算对象的 decimal 结构的指针。
n2
指向第二个运算对象的 decimal 结构的指针。
quotient
指向包含 n1 除以 n2 的商的 decimal 结构的指针。
语法
quotient 可与 n1 或 n2 相同。
返回代码
0
操作成功。
-1200
操作导致溢出。
-1201
操作导致下溢。
-1202
操作尝试除零。
示例
demo 目录中的文件 decdiv.ec 包含下列样例程序。
/*
* decdiv.ec *
The following program divides two DECIMAL numbers and displays the result.
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 641 -
*/
#include
EXEC SQL include decimal;
char string1[] = "480";
char string2[] = "80";
char result[41];
main()
{
mint x;
dec_t num1, num2, dvd;
printf("DECDIV Sample ESQL Program running.\n\n");
if (x = deccvasc(string1, strlen(string1), &num1))
{
printf("Error %d in converting string1 to DECIMAL\n", x);
exit(1);
}
if (x = deccvasc(string2, strlen(string2), &num2))
{
printf("Error %d in converting string2 to DECIMAL\n", x);
exit(1);
}
if (x = decdiv(&num1, &num2, &dvd))
{
printf("Error %d in converting divide num1 by num2\n", x);
exit(1);
}
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 642 -
if (x = dectoasc(&dvd, result, sizeof(result), -1))
{
printf("Error %d in converting dividend to string\n", x);
exit(1);
}
result[40] = '\0';
printf("\t%s / %s = %s\n", string1, string2, result);
printf("\nDECDIV Sample Program over.\n\n");
exit(0);
}
输出
DECDIV Sample ESQL Program running.
480 / 80 = 6.0
DECDIV Sample Program over.