DEFINITION MODULE Conversions;

    PROCEDURE ConvertToString
          (n : LONGCARD; b : CARDINAL; neg : BOOLEAN; 
           VAR s : ARRAY OF CHAR; VAR done : BOOLEAN);

      (* n: number to convert.
         b: base of converted string, (10=dec, 10H=16=hex etc)
            2<=b<=36;
         neg: if TRUE, the number is negative.
         s: the resulting string, length(s)>=32.
         done: if FALSE s is too short or b is not in the right range.
         
         eg.   ConvertToString(10,2,FALSE,s,done)
         gives s = '1010'
         
               VAR x: INTEGER;
               x:=-456;
               ConvertToString(ABS(x),10,x<0,s,done)
         gives s = '-456'                                   *)
    
    PROCEDURE ConvertFromString
         (VAR s : ARRAY OF CHAR; b : CARDINAL; neg : BOOLEAN; 
         max : LONGCARD; VAR result : LONGCARD; VAR done : BOOLEAN);
           
    (*   s: the string to convert.
         b: the base of the string.
         neg: TRUE => signed numbers are accepted.
         max: the maximum number accepted.
         result: the converted number.
         done: TRUE => string OK & result OK, otherwise invalid caracter 
                       in string eg. sign specified when signed number 
                       not accepted, number too big etc.
       
         eg.   ConvertFromString('-123',10,TRUE,MAX(INTEGER),result,done)
         gives result = -123, done = TRUE
         
               ConvertFromString('-123',10,FALSE,0FFFFH,result,done)
               done = FALSE (sign not allowed)
               
               ConvertFromString('123',10H,FALSE,100,result,done)
               done = FALSE (number too large)
               
               ConvertFromString('A5G',16,FALSE,MAX(CARDINAL),result,done)
               done = FALSE (G is not a valid hex (base 16) character)
               
               ConvertFromString('+',10,TRUE,MAX(INTEGER),result,done)
               done = FALSE (no number after the sign)                
               

     Convertions between (LONG)REAL numbers and strings are provided in
     the MODULE RealInOut                                              *)
       

END Conversions.
