//==============================================================================
// 函数: f_getBigMoney()
//------------------------------------------------------------------------------
// 描述: 返回大写金额
//------------------------------------------------------------------------------
// 参数:
// value decimal adec_money 待转换为大写的金额
//------------------------------------------------------------------------------
// 返回值: string
//------------------------------------------------------------------------------
// 作者: Ran(Sunday_hl) 日期: 2006.08.22
//------------------------------------------------------------------------------
// 修改历史:
//
//==============================================================================
String ls_num[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"} ;
String ls_unit[] = {"分","角","","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万"} ;
String ls_dec,ls_return,ls_char ;
Integer li_index,li_num ;
Decimal{2} ldec_arg,ldec_xs ;
ldec_arg = adec_money ;
//如果为零,直接返回“零”
IF IsNull(ldec_arg) OR ldec_arg = 0.00 THEN RETURN ls_num[1] ;
//取小数,如果没小数 那么显示多少元整
ldec_xs = Mod(ldec_arg,1)
IF ldec_xs = 0.00 THEN ls_return = "整" ;
//把金额转换为字符串,并且把字符串倒置过来
ls_dec = Reverse(String(ldec_arg,"##0.00")) ;
//从低位向高位 逐位提取
FOR li_index = 1 TO Len(ls_dec)
IF li_index > UpperBound(ls_unit) THEN EXIT ;
//取得当前位,如果不是数字(如 .) 就进入下一循环
ls_char = Mid(ls_dec,li_index,1) ;
IF NOT IsNumber(ls_char) THEN CONTINUE ;
//把取得的当前位 转换为数值型
li_num = Integer(ls_char) ;
//如果当前位不为0,或要转换的金额不足一元,或者在小数(如果有的话)的时候,直接显示数值加单位
If (li_num <> 0 OR ldec_arg < 1 Or (li_index < 4 AND ldec_xs > 0.00)) THEN
ls_return = ls_num[li_num + 1] + ls_unit[li_index] + ls_return ;
ElseIf (li_index = 4 OR li_index = 8 OR li_index = 12) THEN
//如果当前位为0,且在个位、万位、亿位的时候加上单位
IF li_index = 8 AND Len(ls_dec) >= 12 THEN CONTINUE ;
ls_return = ls_unit[li_index] + ls_return ;
ELSEIF Integer(Mid(ls_dec,li_index - 1,1)) <> 0 THEN
//如果当前位为0,且前一位不为0,那么加上 “零”
ls_return = ls_num[li_num + 1] + ls_return ;
END IF
NEXT
//返回所转换得到的金额
RETURN ls_return ;
// 函数: f_getBigMoney()
//------------------------------------------------------------------------------
// 描述: 返回大写金额
//------------------------------------------------------------------------------
// 参数:
// value decimal adec_money 待转换为大写的金额
//------------------------------------------------------------------------------
// 返回值: string
//------------------------------------------------------------------------------
// 作者: Ran(Sunday_hl) 日期: 2006.08.22
//------------------------------------------------------------------------------
// 修改历史:
//
//==============================================================================
String ls_num[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"} ;
String ls_unit[] = {"分","角","","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万"} ;
String ls_dec,ls_return,ls_char ;
Integer li_index,li_num ;
Decimal{2} ldec_arg,ldec_xs ;
ldec_arg = adec_money ;
//如果为零,直接返回“零”
IF IsNull(ldec_arg) OR ldec_arg = 0.00 THEN RETURN ls_num[1] ;
//取小数,如果没小数 那么显示多少元整
ldec_xs = Mod(ldec_arg,1)
IF ldec_xs = 0.00 THEN ls_return = "整" ;
//把金额转换为字符串,并且把字符串倒置过来
ls_dec = Reverse(String(ldec_arg,"##0.00")) ;
//从低位向高位 逐位提取
FOR li_index = 1 TO Len(ls_dec)
IF li_index > UpperBound(ls_unit) THEN EXIT ;
//取得当前位,如果不是数字(如 .) 就进入下一循环
ls_char = Mid(ls_dec,li_index,1) ;
IF NOT IsNumber(ls_char) THEN CONTINUE ;
//把取得的当前位 转换为数值型
li_num = Integer(ls_char) ;
//如果当前位不为0,或要转换的金额不足一元,或者在小数(如果有的话)的时候,直接显示数值加单位
If (li_num <> 0 OR ldec_arg < 1 Or (li_index < 4 AND ldec_xs > 0.00)) THEN
ls_return = ls_num[li_num + 1] + ls_unit[li_index] + ls_return ;
ElseIf (li_index = 4 OR li_index = 8 OR li_index = 12) THEN
//如果当前位为0,且在个位、万位、亿位的时候加上单位
IF li_index = 8 AND Len(ls_dec) >= 12 THEN CONTINUE ;
ls_return = ls_unit[li_index] + ls_return ;
ELSEIF Integer(Mid(ls_dec,li_index - 1,1)) <> 0 THEN
//如果当前位为0,且前一位不为0,那么加上 “零”
ls_return = ls_num[li_num + 1] + ls_return ;
END IF
NEXT
//返回所转换得到的金额
RETURN ls_return ;