decimal32 * decimal32FromString (decimal32 *result, const char *string, decContext *set) { decContext dc; decNumber dn; decContextDefault (&dc, DEC_INIT_DECIMAL32); dc.round = set->round; decNumberFromString (&dn, string, &dc); decimal32FromNumber (result, &dn, &dc); if (dc.status != 0) decContextSetStatus (set, dc.status); return result; }
decimal32 * decimal32FromString (decimal32 *result, const char *string, decContext *set) { decContext dc; /* work */ decNumber dn; /* .. */ decContextDefault (&dc, DEC_INIT_DECIMAL32); /* no traps, please */ dc.round = set->round; /* use supplied rounding */ decNumberFromString (&dn, string, &dc); /* will round if needed */ decimal32FromNumber (result, &dn, &dc); if (dc.status != 0) { /* something happened */ decContextSetStatus (set, dc.status); /* .. pass it on */ } return result; }