program konversi angka ke kata-kata

* duit.prg
* 18 Januari 2002
* program konversi angka ke kata-kata
* dari 0 hingga 999 Milyar
* Pemakaian
* ?duit(100) atau rupiah=duit(100)
*-------------------------------------
para nilai
set fixe off
set deci to 9
if set('TALK')='ON'
set talk off
endif
hasil=""
jt=10^6
my=10^9
do case
case nilai>=0 and nilai<=99
hasil=pilih(nilai)
case nilai>=100 and nilai<=999
hasil=ratusan(nilai)
case nilai>=1000 and nilai<=999999
hasil=ribuan(nilai)
case nilai>=jt and nilai<=999.999999*jt
hasil=jutaan(nilai)
case nilai>=my and nilai<=999.999999999*my
hasil=pilih(int(nilai/my))+" Milyar"+;
iif(mod(nilai,my)=0,"",pilih(mod(nilai,my)))
endcase
RETU ltri(hasil)

FUNC PILIH
para n
do case
case n>=0 and n<=9
has=satuan(n+1)
case n>=10 and n<=19
has=belasan(n)
case n>=20 and n<=99
has=puluhan(n)
case n>=100 and n<=999
has=ratusan(n)
case n>=1000 and n<=999999
has=ribuan(n)
case n>=jt and n<=999.999999*jt
has=jutaan(n)
endcase
RETU has

FUNC SATUAN
para n
nil="Nol Satu Dua Tiga Empat Lima Enam Tujuh Delapan SembilanSepuluh "
RETU " "+rtri(subs(nil,n*8-7,8))

FUNC BELASAN
para n
RETU iif(n=10," Sepuluh",iif(n=11," Sebelas",satuan(mod(n,10)+1)+"belas"))

FUNC PULUHAN
para n
RETU satuan(int(n/10)+1)+"puluh"+iif(mod(n,10)=0,"",satuan(mod(n,10)+1))

FUNC RATUSAN
para n
RETU iif(int(n/100)=1," Seratus",satuan(int(n/100)+1)+"ratus")+;
iif(mod(n,100)=0,"",pilih(mod(n,100)))

FUNC RIBUAN
para n
RETU iif(int(n/1000)=1," Seribu",pilih(int(n/1000))+" Ribu")+;
iif(mod(n,1000)=0,"",pilih(mod(n,1000)))

FUNC JUTAAN
para n
RETU pilih(int(n/jt))+" Juta"+iif(mod(n,jt)=0,"",pilih(mod(n,jt)))

tinggal copy n paste aja di code simpan dengan nama duit.prg
jadi deh selamat mencoba ya....(supported by N.edy s)