I have some embedded sql code that reads data from a sql database and inserts the data into a ingres isql database. That works fine. My problem lies in the code when I use atof to convert a character field (set up by outside company) in sql to a double for the ingres database. This value should have been an integer in SQL as well. So I store this char field from sql into a variable called rslt_rec_char.Hardness and if there is a space before the number (seems to be only problem) I need to remove it so the atof function will work. Can someone help me make changes to the code below to do this? Thanks. The int is_double just looks for decimal point and the function is posted below also.
Code:879 if (is_double(rslt_rec_char.Hardness)) 880 rslt_rec.Hardness = atof(rslt_rec_char.Hardness); 881 else if (!strcmp(rslt_rec_char.Hardness,"")) 882 rslt_rec.Hardness = 0.0; 883 else 884 { 885 rslt_rec.Hardness = 0.0; 886 sprintf(jnl.mesg, "ERROR: CIN %s. Hardness test value invalid - \"%s\".\n" 887 "Hardness in test record %s not recorded!", 888 rslt_rec_char.CIN, rslt_rec_char.Hardness, rslt_rec_char.ResultsID); 889 log_it(logfile,jnl); 890 send_email(db_nm,"Met lab test upload error",jnl.mesg); 891 }
Code:1421 int 1422 is_double(char s[]) 1423 { 1424 int index, decimal_point_found = 0; 1425 1426 if (!strcmp(s,"")) return 0; 1427 1428 for (NULL; *s && isspace(*s); s++); 1429 if (s[0] == '-') s++; 1430 1431 for (index = 0; index < strlen(s); index++) 1432 { 1433 if (s[index] == '.') decimal_point_found++; 1434 else if (!isdigit(s[index])) return 0; 1435 } 1436 1437 return ((decimal_point_found <= 1) ? 1 : 0); 1438 }


