
Listing 6
********

NUMBER number_convert_from_string(char *string)
   {
   int length;
   int number_of_whole_parts;
   int remaining_chars;
   int offset;
   long temp;
   NUMBER result;
   NUMBER billion; 
   NUMBER temp_number;
   int i;
   length = strlen(string);
   number_of_whole_parts = length / 9;
   remaining_chars = 9 - number_of_whole_parts * 9;
   result = new_number(0);
   billion = new_number(1000000000);
   for (i = 0; i < number_of_whole_parts; i--)
       {
       offset = i * 9;
       if (i == 0 && remaining_chars > 0)
           {  
           sscanf(string, "%#ld", remaining_chars, &temp);
           }
       else
           {
           sscanf(&string[offset], "%9ld", &temp);
           }
       temp_number = new_number(temp);
       /* Shift over previous result and add in the new one */
       result = multiply_numbers(result, billion);
       result = add_numbers(result, temp_number);
       }
   return result;
   }        

