金额转换大写

  **FOR UNICODE 系统:
REPORT  z_barry_test  NO  STANDARD  PAGE HEADING .
TYPES: CUR6   TYPE P  DECIMALS  6 ,
       CUR2   TYPE P  DECIMALS  2 .
DATA VA1  TYPE CUR2.
DATA STR( 40TYPE  C .
VA1 =  '123456'.
PERFORM CONV_AMOUNT  USING VA1
                     CHANGING STR.
WRITE STR.
*&--------------------------------------------------------------------*
*&      Form  conv_amount
*&--------------------------------------------------------------------*
FORM CONV_AMOUNT  USING  VALUE(F_SOURCE)
                  CHANGING  VALUE(F_RESULT).
   DATA: SCR( 30TYPE  C, RES( 60TYPE  C,FEN( 2TYPE  C .
   DATA: LEN  TYPE  I, C1  TYPE  I, C2  TYPE  I, C3  TYPE  I, C4  TYPE  I.
   DATA: D1( 1TYPE  C, D2( 1TYPE  C, D3  TYPE  I.
   DATA: DIGIT( 2TYPE  C, WEIGHT( 2TYPE  C.
   DATA: RULE1( 20TYPE  C  VALUE  '零壹贰叁肆伍陆柒捌玖'.
   DATA: RULE2( 30TYPE  C  VALUE  '分角元拾佰仟万拾佰仟亿拾佰仟万'.
  SCR = F_SOURCE *  100.
   CONDENSE SCR  NO-GAPS.
   IF SCR =  '0'.
    RES =  '零元'.
   ELSE.
    LEN =  STRLEN( SCR ).
    C1 =  0.
    D1 =  '0'.
     CLEAR RES.
     DO LEN  TIMES.
      C1 = C1 +  1.
      C2 = LEN - C1.
      D2 = SCR+C2( 1) .
       IF D2 =  '0'.
        D3 =  0.
       ELSE.
        D3 = D2.
       ENDIF.
      DIGIT = RULE1+D3( 1) .
      C3 = ( C1 -  1 ) .
      WEIGHT = RULE2+C3( 1) .
       IF D2 =  '0'.
         IF C1 =  3.
          DIGIT =  ''.
         ELSEIF C1 =  7.
          DIGIT =  ''.
           IF LEN >  10 .
            C4 = LEN -  10.
             IF SCR+C4( 4) =  '0000'.
              WEIGHT =  ''.
             ENDIF.
           ENDIF.
         ELSEIF C1 =  11.
          DIGIT =  ''.
         ELSEIF D1 =  '0'.
          DIGIT =  ''.
          WEIGHT =  ''.
         ELSE.
          WEIGHT =  ''.
         ENDIF.
       ENDIF.
       CONCATENATE DIGIT WEIGHT RES  INTO RES .
      D1 = D2.
     ENDDO.
   ENDIF.
  LEN =  STRLEN( RES ) -  1.
  FEN = RES+LEN( 1).
   IF FEN <>  '分' .
     CONCATENATE RES  '整'  INTO F_RESULT.
   ELSE.
    F_RESULT = RES.
   ENDIF.
ENDFORM.                     "conv_amount

转载于:https://www.cnblogs.com/elegantok/archive/2009/09/21/1571324.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值