alias numconv { if ($1 == $null) halt unset %tot var %f,%z,%g,%n = 1,%k,%l %z = $g($1,1) %g = $remove(%z,$chr(44),$chr(46)) %f = $remove($gettok(%z,1,46),$chr(44)) %l = $len(%f) if (($count(%z,.) > 1) || (%g !isnum) || (%l > 66) || ($left(%f,1) isin - +)) return invalid number if ($left(%z,1) == .) return Zero %g = $calc(%l / 3) %z = $int(%g) if (%g > %z) { %k = $calc($left($gettok(%g,2,46),1) / 3) set %tot $name($left(%f,%k),%z,1) inc %n %k } dec %z while (%n <= %l) { set %tot %tot $name($mid(%f,%n,3),%z,%n) inc %n 3 dec %z } return %tot } alias -l g return $gettok($1,$2,32) alias -l name { var %nn = Zero One Two Three Four Five Six Seven Eight Nine var %no = Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen var %nd = Ten Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety Hundred var %nb = Thousand Million Billion Trillion Quadrillion Quintillion Sextillion Septillion Octillion Nonillion Decillion Undecillion Duodecillion Tredecillion Quattuordecillion Quindecillion Sexdecillion Septendecillion Octodecillion Novemdecillion Vigintillion var %r,%t,%t1,%u,%l %l = $len($1) %t = $left($1,1) if ((%l > 2) && (%t > 0)) %r = $g(%nn,$calc(%t + 1)) $g(%nd,10) %t = $left($right($1,2),1) if ((%l > 1) && (%t > 0)) { if (%t > 1) %r = %r $g(%nd,%t) else { %r = %r $g(%no,$calc($right($1,1) + 1)) goto next } } %t1 = $right($1,1) %u = $g(%nn,$calc(%t1 + 1)) if ((%t > 0) && (%l > 1) && (%t1 > 0)) %r = %r $+ - $+ %u elseif ((%t1 > 0) || ((!%tot) && ($2 < 1) && ($len(%r) < 1))) %r = %r %u :next if (%r && ($2 > 0)) %r = %r $g(%nb,$2) if (%r) return %r }