// 函數: 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 ;