4gl数字金额转大写汉字金额

首先看张效果图:注意底色部分

实现函数代码:

FUNCTION F_CONV_GB(pf_money)
DEFINE pf_money    DECIMAL(14,2)
DEFINE ll_money    INTEGER
DEFINE i           SMALLINT
DEFINE li_bit      SMALLINT
DEFINE li_length   SMALLINT
DEFINE li_len      SMALLINT
DEFINE ls_money    CHAR(20)
DEFINE ls_result   CHAR(64)
DEFINE ls_arr_num    ARRAY[10] OF CHAR(2)
DEFINE ls_arr_unit   ARRAY[14] OF CHAR(2)
DEFINE ls_arr_unit0  ARRAY[14] OF CHAR(2)
   LET  ls_arr_num[1]='壹'
   LET  ls_arr_num[2]='贰'
   LET  ls_arr_num[3]='叁'
   LET  ls_arr_num[4]='肆'
   LET  ls_arr_num[5]='伍'
   LET  ls_arr_num[6]='陆'
   LET  ls_arr_num[7]='柒'
   LET  ls_arr_num[8]='捌'
   LET  ls_arr_num[9]='玖'
   LET  ls_arr_num[10]='零'
   LET  ls_arr_unit[1]='分'
   LET  ls_arr_unit[2]='角'
   LET  ls_arr_unit[3]='元'
   LET  ls_arr_unit[4]='拾'
   LET  ls_arr_unit[5]='佰'
   LET  ls_arr_unit[6]='仟'
   LET  ls_arr_unit[7]='万'
   LET  ls_arr_unit[8]='拾'
   LET  ls_arr_unit[9]='佰'
   LET  ls_arr_unit[10]='仟'
   LET  ls_arr_unit[11]='亿'
   LET  ls_arr_unit[12]='拾'
   LET  ls_arr_unit[13]='佰'
   LET  ls_arr_unit[14]='仟'
   LET  ls_arr_unit0[1]='整'
   LET  ls_arr_unit0[2]='零'
   LET  ls_arr_unit0[3]='元'
   LET  ls_arr_unit0[4]='零'
   LET  ls_arr_unit0[5]='零'
   LET  ls_arr_unit0[6]='零'
   LET  ls_arr_unit0[7]='万'
   LET  ls_arr_unit0[8]='零'
   LET  ls_arr_unit0[9]='零'
   LET  ls_arr_unit0[10]='零'
   LET  ls_arr_unit0[11]='亿'
   LET  ls_arr_unit0[12]='零'
   LET  ls_arr_unit0[13]='零'
   LET  ls_arr_unit0[14]='零'

 ##如果参数为0
 IF pf_money=0 THEN RETURN '零元整'  END IF
 
 ##参数小于零,则为负值
 IF pf_money<0 THEN
    LET  pf_money=0-pf_money
    LET  ls_result='负'
 ELSE
    LET  ls_result=''
 END IF
 
 ##判断是否超出范围
 IF pf_money>999999999999.99 THEN
    RETURN ls_result='数值超出范围'
 END IF
##循环每一个数字
LET ls_money=pf_money*100 USING"<<<<<<<<<<<<<<"
LET li_length=length(ls_money CLIPPED)
FOR i=1 to li_length
  LET li_bit=ls_money[i]
    IF  li_bit=0 then
       LET li_len=length(ls_result  CLIPPED)
       IF ls_result[li_len-1,li_len]<>'零'then 
            LET ls_result=ls_result  CLIPPED,ls_arr_unit0[li_length-i+1]
       ELSE
            LET ls_result=ls_result[1,li_len-2],ls_arr_unit0[li_length-i+1]
       END IF 
   ELSE
       LET ls_result=ls_result CLIPPED,ls_arr_num[li_bit],ls_arr_unit[li_length-i+1]
   END IF
END  FOR
  return ls_result CLIPPED    ##返回大写
END 
FUNCTION


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值