rfmtdec() 函数使用格式化掩码来将 decimal 值转换为字符串。
语法
mint rfmtdec(dec_val, fmtstring, outbuf)
dec_t *dec_val;
char *fmtstring;
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 865 -
char *outbuf;
dec_val
指向要格式化的 decimal 值的指针。
fmtstring
指向包含要用于 dec_val 值的格式化掩码的字符缓冲区的指针。
outbuf
指向接收 dec_val 值的格式化的字符串的字符缓冲区的指针。
用法
rfmtdec() 函数的 fmtstring 参数指向数值格式化掩码,其包含描述如何
格式化 decimal 值的字符。
当您使用 rfmtdec() 来格式化 MONEY 值时,该函数使用 DBMONEY 环境变量指
定的货币符号。
如果您未设置此环境变量,
则 rfmtdec() 使用客户机语言环境定义的货币符
号。缺省的语言环境 US English 定义货币符号,就如同您将 DBMONEY 设置为 “$,.”
一样。
当您使用有多字节代码集的非缺省的语言环境时,
rfmtdec() 支持格式字符串中的多字
节字符。
返回代码
0
转换成功。
-1211
程序用尽内存(内存分配错误)。
-1217
格式字符串太大。
示例
demo 目录在文件 rfmtdec.ec 中包含此样例程序。
/*
* rfmtdec.ec *
The following program applies a series of format specifications to each of a series of
DECIMAL numbers and displays each result.
*/
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 866 -
#include
EXEC SQL include decimal;
char *strings[] =
{
"210203.204",
"4894",
"443.334899312",
"-12344455",
0
};
char *formats[] =
{
"**###########",
"$$$$$$$$$$.##",
"(&&,&&&,&&&.)",
"<,<<<,<<<,<<<",
"$*********.**",
0
};
char result[41];
main()
{
mint x;
mint s = 0, f;
dec_t num;
printf("RFMTDEC Sample ESQL Program running.\n\n");
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 867 -
while(strings[s])
{
/*
* Convert each string to DECIMAL
*/
printf("String = %s\n", strings[s]);
if (x = deccvasc(strings[s], strlen(strings[s]), #))
{
printf("Error %d in converting string [%s] to decimal\n",
x, strings[s]);
break;
}
f = 0;
while(formats[f])
{
/*
* Format DECIMAL num for each of formats[f]
*/
rfmtdec(#, formats[f], result);
/*
* Display result and bump to next format (f++)
*/
result[40] = '\0';
printf(" Format String = '%s'\t", formats[f++]);
printf("\tResult = '%s'\n", result);
}
++s; /* bump to next string */
printf("\n"); /* separate result groups */
}
printf("\nRFMTDEC Sample Program over.\n\n");
}
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 868 -
输出
RFMTDEC Sample ESQL Program running.
String = 210203.204
Format String = '**###########'
Result = '** 210203'
Format String = '$$$$$$$$$$.##'
Result = ' $210203.20'
Format String = '(&&,&&&,&&&.)'
Result = ' 000210,203. '
Format String = '<,<<<,<<<,<<<'
Result = '210,203'
Format String = ' $*********.**'
Result = '$***210203.20'
String = 4894
Format String = '**###########'
Result = ' ** 4894'
Format String = '$$$$$$$$$$.##'
Result = ' $4894.00'
Format String = '(&&,&&&,&&&.)'
Result = ' 000004,894. '
Format String = '<,<<<,<<<,<<<'
Result = '4,894'
Format String = ' $*********.**'
Result = '$*****4894.00'
String = 443.334899312
Format String = '**###########'
Result = ' ** 443'
Format String = '$$$$$$$$$$.##'
Result = ' $443.33'
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 869 -
Format String = '(&&,&&&,&&&.)'
Result = ' 0000000443. '
Format String = '<,<<<,<<<,<<<'
Result = ' 443'
Format String = ' $*********.**'
Result = '$******443.33'
String = -12344455
Format String = '**###########'
Result = ' ** 12344455'
Format String = '$$$$$$$$$$.##'
Result = ' $12344455.00'
Format String = '(&&,&&&,&&&.)'
Result = '(12,344,455.)'
Format String = '<,<<<,<<<,<<<'
Result = '12,344,455'
Format String = ' $*********.**'
Result = ' $*12344455.00'
RFMTDEC Sample Program over.