[ 파워빌더.공통함수 - 숫자를 한들로 변환  ]

 

☞   

 

//* ======================================================================*
//*  f_amount() : 아라비아 숫자로 표기된 금액을 한글로 변환해 주는 함수
//*              천조단위( 16자리 ) 까지 표시 ( 1,000,000,000,000,000 )
//*      
//*  Example    :  ₩123,456,789   
//*            --> 일금 일억이천삼백사십오만육천칠백팔십구 원정
//*  구분(flag) : '1' 한글, '2' 한자.
//*---------------------------------------------------------------------- *
Double  db_amount
String ls_amount, ls_money,  ls_knum,    ls_kor_amount,Ls_hanja,ls_mhanja
string   ls_hanja_amount,ls_return
Long l_cnt,    l_cipher,     l_cipher_1
//*----------------------------------------------------------------------*
db_amount   =   target
ls_amount   =  String(db_amount) //  입력된 수치값을 문자로 변환
l_cipher    =  len(ls_amount)  //  자릿수를 구함
l_cipher_1  = l_cipher + 1  //  단위를 구하기 위해 초기값 부여( 자릿수 + 1 )
//*----------------------------------------------------------------------*
FOR l_cnt = 1 TO  l_cipher
l_cipher_1   = l_cipher_1  -  1   //  자릿수가 증가할때 감소시킴( 초기값 : 자릿수 )
//*----------------------------------------------------------------------*
CHOOSE CASE Mid(ls_amount, l_cnt, 1)  //  해당 자릿수의 숫자 변환( 한글 )
  CASE '1'
 If L_Cnt = L_cipher Then
  ls_knum = '일'
  ls_hanja =  '壹'
 Else
  ls_knum = ''
  ls_hanja =  ''
 End If
  CASE '2'
 ls_knum = '이'
 ls_hanja =  '貳'
  CASE '3'
 ls_knum = '삼'
 ls_hanja =  '參'
  CASE '4'
 ls_knum = '사'
 ls_hanja =  '四'
  CASE '5'
 ls_knum = '오'
 ls_hanja =  '五'
  CASE '6'
 ls_knum = '육'
 ls_hanja =  '六'
  CASE '7'
 ls_knum = '칠'
 ls_hanja =  '七'
  CASE '8'
 ls_knum = '팔'
 ls_hanja =  '八'
  CASE '9'
 ls_knum = '구'
 ls_hanja =  '九'
  CASE ELSE
 ls_knum = '00'
 ls_hanja =  '  '
END CHOOSE
//*----------------------------------------------------------------------*
CHOOSE CASE l_cipher_1 // 해당 자릿수의 단위 표시
  CASE  1
//  If L_Cnt = L_cipher Then
//   ls_knum = '일'
//   ls_hanja =  '壹'
//  Else
//   ls_knum = ''
//   ls_hanja =  ''
//  End If   
    ls_money = ''
 ls_mhanja = '' 
CASE  2,  6, 10, 14
 ls_money = '십'
 ls_mhanja = '十' 
  CASE  3,  7, 11, 15
 ls_money = '백'
 ls_mhanja = '百' 
  CASE  4,  8, 12, 16
 ls_money = '천'
 ls_mhanja = '千' 
  CASE  5
 ls_money = '만'
 ls_mhanja = '萬' 
  CASE  9
 ls_money = '억'
 ls_mhanja = '億' 
  CASE 13
 ls_money = '조'
 ls_mhanja = '兆' 
END CHOOSE
//*----------------------------------------------------------------------*
//*  해당 자릿수의 단위가 0(ZERO)인 경우 단위표시를 하지 않음
//*----------------------------------------------------------------------*

IF ls_knum <> '00' THEN
 ls_kor_amount = ls_kor_amount + ls_knum + ls_money
 ls_hanja_amount = ls_hanja_amount + ls_hanja + ls_mhanja
ELSEIF l_cipher_1  =   5  THEN
 IF Mid(ls_amount, l_cnt - 3, 4) <> '0000'  THEN
  ls_kor_amount = ls_kor_amount + ls_money
    ls_hanja_amount = ls_hanja_amount + ls_mhanja  
 END IF
ELSEIF l_cipher_1  =   9  THEN
 IF Mid(ls_amount, l_cnt - 3, 4) <> '0000'  THEN
  ls_kor_amount = ls_kor_amount + ls_money
    ls_hanja_amount = ls_hanja_amount + ls_mhanja     
 END IF
ELSEIF l_cipher_1  =  13  THEN
 ls_kor_amount = ls_kor_amount + ls_money
    ls_hanja_amount = ls_hanja_amount + ls_mhanja    
ELSE
 ls_kor_amount = ls_kor_amount
   ls_hanja_amount = ls_hanja_amount
END IF
NEXT
//*----------------------------------------------------------------------*
//ls_kor_amount =  '일금 ' + ls_kor_amount + ' 원정'
//*----------------------------------------------------------------------*

if flag = '2' then
ls_return = ls_hanja_amount
else
  ls_return = ls_kor_amount
end if

RETURN trim(ls_return)
//*======================================================================*
http://cafe.naver.com/pentaeduclub.cafe

Posted by 농부지기
,