33 if (p->dec_ndgts == 0)
36 size_t n = p->dec_pos == 0 ? 1 : 0;
38 int __n = p->dec_exp - p->dec_ndgts;
48 n += p->dec_ndgts * 2;
51 if (p->dec_dgts[0] < 10)
55 if ((p->dec_dgts[p->dec_ndgts - 1] % 10) == 0)
67 if ((p->dec_dgts[p->dec_ndgts - 1] % 10) == 0)
76 n += (p->dec_ndgts + __n) * 2;
78 n += p->dec_ndgts * 2;
81 if (p->dec_dgts[0] < 10)
122 int nYears, nMonths, nDays, nHours, nMins, nSecs, nFSecs;
123 nYears = nMonths = nDays = nHours = nMins = nSecs = nFSecs = 0;
125 const char* p = _s->in_dec.dec_dgts;
126 int ndgts = _s->in_dec.dec_ndgts;
128 switch(TU_START(_s->in_qual))
144 if (_s->in_dec.dec_exp >= 0)
146 nFSecs += *p++ * 10000;
152 if (_s->in_dec.dec_exp >= -1)
160 if (_s->in_dec.dec_exp >= -2)
164#define MIN_PER_DAY 1440
165#define SEC_PER_DAY 86400
166#define SEC_PER_HOUR 3600
168 switch(TU_START(_s->in_qual))
173 nYears = nMonths / 12;
174 nMonths = nMonths % 12;
180 nHours = nHours % 24;
199 if (_s->in_dec.dec_pos == 1)
202 _r->nMonths = nMonths;
207 _r->nFracs = nFSecs * 1000;
211 _r->nYears = -nYears;
212 _r->nMonths = -nMonths;
214 _r->nHours = -nHours;
217 _r->nFracs = -(nFSecs * 1000);
225 __DCL_ASSERT(0 <= _s->dt_dec.dec_exp && _s->dt_dec.dec_exp <= 7);
228 int nYear, nMonth, nDay, nHour, nMin, nSec, nFSec;
229 nYear = nMonth = nDay = nHour = nMin = nSec = nFSec = 0;
231 const char* p = _s->dt_dec.dec_dgts;
232 int ndgts = _s->dt_dec.dec_ndgts;
233 switch(TU_START(_s->dt_qual))
236 if (_s->dt_dec.dec_exp >= 7)
238 nYear = (*p++) * 100;
242 if (_s->dt_dec.dec_exp >= 6)
249 if (_s->dt_dec.dec_exp >= 5)
256 if (_s->dt_dec.dec_exp >= 4)
263 if (_s->dt_dec.dec_exp >= 3)
270 if (_s->dt_dec.dec_exp >= 2)
277 if (_s->dt_dec.dec_exp >= 1)
285 if (_s->dt_dec.dec_exp >= 0)
287 nFSec = *p++ * 10000;
292 if (_s->dt_dec.dec_exp >= -1)
299 if (_s->dt_dec.dec_exp >= -2)
309 _r->nFrac = nFSec * 1000;