본문 바로가기

컴퓨터/파워빌더

파워빌더 - 금액을 한글로 표기하기


금액을 한글로 표현해야 하는경우가 있습니다.

견적서 같은경우 금액을 한글로 출력해야되는경우

function 으로 만들어두고 쓰시면 유용하겠습니다.

예> 2,050 -> 이천오십원

//스크립트

int MAX_LEN = 16
string ls_cnt [10] = {'일','이','삼','사','오','육','칠','팔','구',''}
string ls_unit [4] = {'천','백','십',''}
string ls_tmp, unit, ls_rtn
string ls_i1, ls_i2, ls_i3, ls_i4, ls_s1, ls_s2, ls_s3, ls_s4, ls_chk
int ii, jj, li_len
decimal ld_num

ld_num = dec(str_don)
if ld_num < 0 then
str_don = string(abs(ld_num))
ls_chk ='1'
end if
li_len = LEN(str_don)

str_don = string(dec(str_don), '0000000000000000') // 0가 16

ls_i1 = mid(str_don, 1, 4)
ls_i2 = mid(str_don, 5, 4)
ls_i3 = mid(str_don, 9, 4)
ls_i4 = mid(str_don,13, 4)

ls_s1 = ""
ls_s2 = ""
ls_s3 = ""
ls_s4 = ""

// 조단위
if ls_i1 <> "0000" then
FOR ii = 1 TO 4
ls_tmp = mid(ls_i1, ii, 1)
unit = ls_unit[ii]

if ls_tmp = "0" then
elseif ls_tmp = "1" then
if ii <> 4 then
ls_s1 += unit
else
ls_s1 += "일"
end if
else
ls_s1 += ( ls_cnt[integer(ls_tmp)] + unit)
end if
NEXT
ls_s1 += "조"
end if

// 억단위
if ls_i2 <> "0000" then
FOR ii = 1 TO 4
ls_tmp = mid(ls_i2, ii, 1)
unit = ls_unit[ii]

if ls_tmp = "0" then
elseif ls_tmp = "1" THEN
if ii <> 4 then
ls_s2 += unit
else
ls_s2 += "일"
end if
else
ls_s2 += ( ls_cnt[integer(ls_tmp)] + unit)
end if
NEXT
ls_s2 += "억"
end if

// 만단위
if ls_i3 <> "0000" then
FOR ii = 1 TO 4
ls_tmp = mid(ls_i3, ii, 1)
unit = ls_unit[ii]

if ls_tmp = "0" then
elseif ls_tmp = "1" THEN
if ii <> 4 then
ls_s3 += unit
else
ls_s3 += "일"
end if
else
ls_s3 += ( ls_cnt[integer(ls_tmp)] + unit)
end if
NEXT
ls_s3 += "만"
end if

// 단단위
if ls_i4 <> "0000" then
FOR ii = 1 TO 4
ls_tmp = mid(ls_i4, ii, 1)
unit = ls_unit[ii]

if ls_tmp = "0" then
elseif ls_tmp = "1" THEN
if ii <> 4 then
ls_s4 += unit
else
ls_s4 += "일"
end if
else
ls_s4 += ( ls_cnt[integer(ls_tmp)] + unit)
end if
NEXT
ls_s4 += ""
end if

ls_rtn = ls_s1 + ls_s2 + ls_s3 + ls_s4 + "원"

if ls_chk ='1' then
ls_rtn = '-' + ls_rtn
end if

RETURN ls_rtn