forward prototypes
global function string uf_dxje (decimal data)
end prototypes
global function string uf_dxje (decimal data);
constant string ls_bit = "万仟佰拾亿仟佰拾万仟佰拾元角分"
constant string ls_num = "壹贰叁肆伍陆柒捌玖"
long lmax = len( ls_bit )
string ls_je, ls_dw, ls_result = '',ls_temp,ls_zhengfu
long ll_len, i, k
if data < 0.00 then
ls_zhengfu='负'
data=data* -1
else
ls_zhengfu='正'
end if
ls_je = string( data, "#############.00" )
ll_len = len( ls_je ) - 1
ls_je = replace( ls_je, ll_len - 1, 1, '' )
for i = ll_len to 1 step -1
lmax -= 2
ls_dw = mid( ls_bit, lmax+1, 2 )
k = long( mid( ls_je, i, 1 ) )
if k = 0 then
choose case ls_dw
case '亿'
// //判断亿元级别的位数是不是全为零[开始]
ls_result = ls_dw + ls_result
case '万'
//判断万元级别的位数是不是全为零[开始]
if i =ll_len -6 then
// ls_temp=replace(ls_je, ll_len - 6, 6, '' )/*此处按照replace的使用说明不能得出正确结果,后来经过测试,发现是pb90的replace函数在处理纯数字时跟使用说明里的不一致*/
ls_temp=replace(ls_je, i+1, 6, '' )
if right(ls_temp,4)='0000' then
else
ls_result = ls_dw + ls_result
end if
else
ls_result = ls_dw + ls_result
end if
case '元'
ls_result = ls_dw + ls_result
case '分'
ls_result = '整'
case '角'
if ls_result <> '整' then ls_result = '零' + ls_result
case else
choose case left( ls_result, 2 )
case '万', '亿', '元', '零'
case else
ls_result = '零' + ls_result
end choose
end choose
else
ls_result = mid( ls_num, 2*(k -1)+1 , 2 ) + ls_dw + ls_result
end if
next
if ls_zhengfu='负' then
ls_result='负'+ls_result
else
end if
if ls_result='整' then
return ''
else
return ls_result
end if