Rabu, 16 Desember 2009

Terbilang PRG

ingin mengubah dari angka numeric menjadi angka terbilang

ex : 2500000 menjadi Dua Juta Lima Ratus Ribu Rupiah

berikut saya berikan sample sederhana yang saya buat saat masih kuliah dulu


FUNCTION TERBILANG

LPARAMETER MNNUMERIK
PRIVATE MCHASIL,MNLOOP,MCUANG,MNONE,MNTWO,MNTREE
PRIVATE MCANGKA0,MCANGKA1,MCANGKA2,MCANGKA3
PRIVATE MCANGKA4,MCANGKA5,MCANGKA6,MCANGKA7
PRIVATE MCANGKA8,MCANGKA9
PRIVATE MCSATU,MCDUA,MCTIGA,MCGABUNG,MCSEN1,MCSEN2

MCHASIL=" "
MCUANG=STR(MNNUMERIK,15,2)
MNONE=1
MNTWO=2
MNTREE=3

MCANGKA0=" "
MCANGKA1="Satu "
MCANGKA2="Dua "
MCANGKA3="Tiga "
MCANGKA4="Empat "
MCANGKA5="Lima "
MCANGKA6="Enam "
MCANGKA7="Tujuh "
MCANGKA8="Delapan "
MCANGKA9="Sembilan "
MCGABUNG=" "

FOR MNLOOP = 1 TO 4
  MCSATU=SUBSTR(MCUANG,MNONE,1)
  MCDUA=SUBSTR(MCUANG,MNTWO,1)
  MCTIGA=SUBSTR(MCUANG,MNTREE,1)
  MCGABUNG=MCSATU+MCDUA+MCTIGA
   
  IF VAL(MCSATU)=1
  MCHASIL = MCHASIL + "Seratus "
  ELSE
  IF VAL(MCSATU) > 1
  MCHASIL = MCHASIL + MCANGKA&MCSATU + "Ratus "
  ENDIF 
  ENDIF  
  DO CASE
  CASE VAL(MCDUA) = 1
  DO CASE 
  CASE VAL(MCTIGA)=0
  MCHASIL = MCHASIL + "Sepuluh "
  CASE VAL(MCTIGA)=1
  MCHASIL = MCHASIL + "Sebelas "
  OTHERWISE 
  MCHASIL = MCHASIL + MCANGKA&MCTIGA+"Belas "
  ENDCASE
  CASE VAL(MCDUA) > 1
  MCHASIL = MCHASIL + MCANGKA&MCDUA + "Puluh "+MCANGKA&MCTIGA
  CASE VAL(MCDUA)=0 .AND. VAL(MCTIGA)>0  
  IF (MNLOOP=3 .AND. MCGABUNG="001") .OR. ;
  (MNLOOP=3 .AND. MCGABUNG=" 1")
  MCHASIL=MCHASIL+"Seribu "
  ELSE
  MCHASIL=MCHASIL+MCANGKA&MCTIGA
  ENDIF
  ENDCASE
   
  DO CASE
  CASE MNLOOP=1 .AND. VAL(MCGABUNG)>0
  MCHASIL=MCHASIL+"Milyar "
  CASE MNLOOP=2 .AND. VAL(MCGABUNG)>0
  MCHASIL=MCHASIL+"Juta "
  CASE MNLOOP=3 .AND. VAL(MCGABUNG)>0
  IF MCGABUNG="001" .OR. MCGABUNG=" 1"
  MCHASIL=MCHASIL+" "
  ELSE  
  MCHASIL=MCHASIL+"Ribu "
  ENDIF
  ENDCASE
   
  MNONE = MNONE + 3
  MNTWO = MNTWO + 3
  MNTREE = MNTREE + 3
NEXT MNLOOP  

MCSEN1 = SUBSTR(MCUANG,14,1)
MCSEN2 = SUBSTR(MCUANG,15,1)
IF LEN(MCHASIL)>1
  MCHASIL = MCHASIL +"Rupiah "
ENDIF

DO CASE
  CASE VAL(MCSEN1)=0 .AND. VAL(MCSEN2)>0
  MCHASIL=MCHASIL+MCANGKA&MCSEN2+"Sen "
  CASE VAL(MCSEN1)= 1
  DO CASE
  CASE VAL(MCSEN2)=0
  MCHASIL=MCHASIL+"Sepuluh Sen "
  CASE VAL(MCSEN2)=1
  MCHASIL=MCHASIL+"Sebelas Sen "
  CASE VAL(MCSEN2)>1
  MCHASIL=MCHASIL+MCANGKA&MCSEN2+"Belas Sen"
  ENDCASE 
  CASE VAL(MCSEN1)>1
  MCHASIL=MCHASIL+MCANGKA&MCSEN1+"Puluh "+MCANGKA&MCSEN2+"Sen "  
ENDCASE
RETURN MCHASIL

Readmore »»