[파워빌더]아라비아 숫자로 표기된 금액을 한글로 변환해 주는 함수
global type gf_amt_str from function_object
end type
forward prototypes
global function string gf_amt_str (long target, string flag)
end prototypes
global function string gf_amt_str (long target, string flag);//* ======================================================================*
//* f_amount() : 아라비아 숫자로 표기된 금액을 한글로 변환해 주는 함수
//* 천조단위( 16자리 ) 까지 표시 ( 1,000,000,000,000,000 )
//*
//* Example : ₩123,456,789
//* --> 일금 일억이천삼백사십오만육천칠백팔십구 원정
//* 구분(flag) : 'K' 한글, 'C' 한자.
//*---------------------------------------------------------------------- *
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 upper(left(flag, 1)) = 'C' then
ls_return = ls_hanja_amount
else
ls_return = ls_kor_amount
end if
RETURN trim(ls_return)
end function
end type
forward prototypes
global function string gf_amt_str (long target, string flag)
end prototypes
global function string gf_amt_str (long target, string flag);//* ======================================================================*
//* f_amount() : 아라비아 숫자로 표기된 금액을 한글로 변환해 주는 함수
//* 천조단위( 16자리 ) 까지 표시 ( 1,000,000,000,000,000 )
//*
//* Example : ₩123,456,789
//* --> 일금 일억이천삼백사십오만육천칠백팔십구 원정
//* 구분(flag) : 'K' 한글, 'C' 한자.
//*---------------------------------------------------------------------- *
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 upper(left(flag, 1)) = 'C' then
ls_return = ls_hanja_amount
else
ls_return = ls_kor_amount
end if
RETURN trim(ls_return)
end function