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;
   }

/* End of File */