33 if (_p->dec_ndgts == 0)
36 size_t n = _p->dec_pos == 0 ? 1 : 0;
37 int __n = _p->dec_exp - _p->dec_ndgts;
40 if (_p->dec_exp > 0) {
44 n += _p->dec_ndgts * 2;
47 if (_p->dec_dgts[0] < 10)
51 if ((_p->dec_dgts[_p->dec_ndgts - 1] % 10) == 0)
62 if ((_p->dec_dgts[_p->dec_ndgts - 1] % 10) == 0)
70 n += (_p->dec_ndgts + __n) * 2;
72 n += _p->dec_ndgts * 2;
75 if (_p->dec_dgts[0] < 10)
111 int nYears, nMonths, nDays, nHours, nMins, nSecs, nFSecs;
112 nYears = nMonths = nDays = nHours = nMins = nSecs = nFSecs = 0;
114 const char* p = _s->in_dec.dec_dgts;
115 int ndgts = _s->in_dec.dec_ndgts;
117 switch(TU_START(_s->in_qual)) {
138 if (_s->in_dec.dec_exp >= 0) {
139 nFSecs += *p++ * 10000;
145 if (_s->in_dec.dec_exp >= -1) {
152 if (_s->in_dec.dec_exp >= -2)
157#define MIN_PER_DAY 1440
158#define SEC_PER_DAY 86400
159#define SEC_PER_HOUR 3600
161 switch(TU_START(_s->in_qual)) {
166 nYears = nMonths / 12;
167 nMonths = nMonths % 12;
175 nHours = nHours % 24;
199 if (_s->in_dec.dec_pos == 1) {
206 _r->
fracs = nFSecs * 1000;
215 _r->
fracs = -(nFSecs * 1000);
231 int nYear, nMonth, nDay, nHour, nMin, nSec, nFSec;
232 nYear = nMonth = nDay = nHour = nMin = nSec = nFSec = 0;
234 const char* p = _s->dt_dec.dec_dgts;
235 int ndgts = _s->dt_dec.dec_ndgts;
236 switch (TU_START(_s->dt_qual)) {
238 if (_s->dt_dec.dec_exp >= 7) {
239 nYear = (*p++) * 100;
243 if (_s->dt_dec.dec_exp >= 6) {
250 if (_s->dt_dec.dec_exp >= 5) {
257 if (_s->dt_dec.dec_exp >= 4) {
264 if (_s->dt_dec.dec_exp >= 3) {
271 if (_s->dt_dec.dec_exp >= 2) {
278 if (_s->dt_dec.dec_exp >= 1) {
286 if (_s->dt_dec.dec_exp >= 0) {
287 nFSec = *p++ * 10000;
292 if (_s->dt_dec.dec_exp >= -1) {
298 if (_s->dt_dec.dec_exp >= -2)
309 _r->
frac = nFSec * 1000;