SUBROUTINE NUM.TO.ENG(NUMBER, ENGLISH)
***
* NUM.TO.ENG - Converts number to written english number.
LastUpdated... = "Rev: 22:21 13DEC89 ANDREW <KSF.A1>SOFA2 157 Z ANDREW>BP>NUM.TO.ENG"
* ex. 123.45 -> "ONE HUNDRED TWENTY THREE AND 45/100"
*
* Written by Andrew McLaughlin (SoftScience) December 1988
***
     ENGLISH = ''
     ONES = ''
     ONES<01> = 'ONE'
     ONES<02> = 'TWO'
     ONES<03> = 'THREE'
     ONES<04> = 'FOUR'
     ONES<05> = 'FIVE'
     ONES<06> = 'SIX'
     ONES<07> = 'SEVEN'
     ONES<08> = 'EIGHT'
     ONES<09> = 'NINE'
     ONES<10> = 'TEN'
     ONES<11> = 'ELEVEN'
     ONES<12> = 'TWELVE'
     ONES<13> = 'THIRTEEN'
     ONES<14> = 'FOURTEEN'
     ONES<15> = 'FIFTEEN'
     ONES<16> = 'SIXTEEN'
     ONES<17> = 'SEVENTEEN'
     ONES<18> = 'EIGHTEEN'
     ONES<19> = 'NINETEEN'
*
     TENS = ''
     TENS<1> = ''
     TENS<2> = 'TWENTY'
     TENS<3> = 'THIRTY'
     TENS<4> = 'FORTY'
     TENS<5> = 'FIFTY'
     TENS<6> = 'SIXTY'
     TENS<7> = 'SEVENTY'
     TENS<8> = 'EIGHTY'
     TENS<9> = 'NINETY'
*
     TMBT = ''
     TMBT<1> = 'THOUSAND'
     TMBT<2> = 'MILLION'
     TMBT<3> = 'BILLION'
     TMBT<4> = 'TRILLION'
***
     THOUSANDS = 1
     MANTISSA = FIELD(NUMBER,'.',1)
     DECIMAL = FIELD(NUMBER,'.',2)
     MANTISSA = SPACE(3-MOD(LEN(MANTISSA),3)):MANTISSA
     LOOP UNTIL LEN(NUMBER) EQ 0 DO
        LEN = LEN(MANTISSA)
        PORTION = MANTISSA[LEN-2,3]
        MANTISSA = MANTISSA[1,LEN-2]
        IF THOUSANDS GT 1 THEN
           ENGLISH = TMBT<THOUSANDS>:' ':ENGLISH
        END
        THOUSANDS += 1
        LAST = PORTION[2,2]
        IF LAST LT 20 THEN
           IF LAST GT 0 THEN
              ENGLISH = ONES<LAST>:' ':ENGLISH
           END
        END ELSE
           ENGLISH = ONES<LAST[2,1]>:' ':ENGLISH
           ENGLISH = TENS<LAST[1,1]>:'-':ENGLISH
        END
        IF PORTION[1,1] NE ' ' AND PORTION[1,1] GT 0 THEN
           ENGLISH = ONES<PORTION[1,1]>:'-HUNDRED ':ENGLISH
        END
     REPEAT
     ENGLISH = ENGLISH:' AND '
     DECIMAL = (DECIMAL:'00')[1,2]
     IF DECIMAL GT 0 THEN
        ENGLISH = ENGLISH:DECIMAL:'/100'
     END ELSE
        ENGLISH = ENGLISH:'NO/100'
     END
     RETURN
  END
