% This macro source file is from the four volume series
% "TeX in Practice" by Stephan von Bechtolsheim, published
% 1993 by Springer-Verlag, New York.
% Copyright 1993 Stephan von Bechtolsheim.
% No warranty or liability is assumed.
% This macro may be copied freely if no fees other than
% media cost or shipping charges are charged and as long
% as this copyright and the following source code itself
% is not changed. Please see the series for further information.
%
% Version: 1.0
% Date: May 1, 1993
%
%
% This source code is documented in 3.3.16, p. I-63.
% Original source in file "reg1.TEX", starting line 1835.
\wlog{L: "ntotext.tip" ["reg1.TEX," l. 1835, p. I-63]}%
% This file DOES belong to format "texip."
\InputD{imodn.tip}
\catcode`\@ = 11
\def\@OneDigitNumberText #1#2{%
   \ifcase #2\relax
       \ifnum #1=0
       \else
           zero%
       \fi
       \or
       one\or
       two\or
       three\or
       four\or
       five\or
       six\or
       seven\or
       eight\or
       nine%
   \else
       \errmessage{\string\@OneDigitNumberText: number
           \number#2 out of range.}%
   \fi
}
\newcount\@NumberToConvert
\newcount\@NumberToConvertTwo
\newcount\@NumberToConvertAndFlag
\def\NumberToText #1{%
   \@NumberToConvert = #1\relax
   \ifnum\@NumberToConvert < 0
       minus
       \@NumberToConvert = -\@NumberToConvert
   \fi
   \CheckRange{\@NumberToConvert}{0}{999999}%
       {\string\NumberToText: numbers >= 1.000.000
           not handled.}%
   \@NumberToConvertAndFlag = 0
   \ifnum\@NumberToConvert > 999
       \@NumberToConvertTwo = \@NumberToConvert
       \divide\@NumberToConvert by 1000
       \@NumberToText
       \space thousand and
       \IModN{\@NumberToConvertTwo}{1000}{\@NumberToConvert}%
   \fi
   \CheckRange{\@NumberToConvert}{0}{999}%
       {\string\NumberToText: internal error 1}%
   \@NumberToText
}
\newcount\@NumberToTextTmp
\def\@NumberToText{%
   \ifnum\@NumberToConvert > 99
       \ValueOfDecimalPosition{\@NumberToConvert}{2}%
           {\@NumberToTextTmp}%
       \@OneDigitNumberText{1}{\@NumberToTextTmp}%
       \space hundred and
       \IModN{\@NumberToConvert}{100}{\@NumberToConvert}%
   \fi
   \ValueOfDecimalPosition{\@NumberToConvert}{1}%
       {\@NumberToTextTmp}%
   \ifnum\@NumberToTextTmp > 1
       \ifcase\@NumberToTextTmp
               \errmessage{\string\@NumberToText:
                   internal error 1.}%
           \or
               \errmessage{\string\@NumberToText:
                   internal error 2.}%
           \or
           twenty\or
           thirty\or
           forty\or
           fifty\or
           sixty\or
           seventy\or
           eighty\or
           ninety%
       \else
           \errmessage{\string\@NumberToText:
               internal error 4.}%
       \fi
       \IModN{\@NumberToConvert}{10}{\@NumberToTextTmp}%
           \@OneDigitNumberText{0}{\@NumberToTextTmp}%
   \else
       \ifnum\@NumberToTextTmp = 1
           \advance\@NumberToConvert by -10
           \ifcase\@NumberToConvert
               ten\or
               eleven\or
               twelve\or
               thirteen\or
               fourteen\or
               fifteen\or
               sixteen\or
               seventeen\or
               eighteen\or
               nineteen%
           \fi
       \else
           \@OneDigitNumberText{1}{\@NumberToConvert}%
       \fi
   \fi
}
\catcode`\@ = 12