463 |
} |
} |
464 |
|
|
465 |
/* Missing values if any. */ |
/* Missing values if any. */ |
466 |
if (v->miss_type != MISSING_NONE) |
if (!mv_is_empty (&v->miss)) |
467 |
{ |
{ |
468 |
char buf[80]; |
char buf[128]; |
469 |
char *cp = stpcpy (buf, _("Missing Values: ")); |
char *cp; |
470 |
|
struct missing_values mv; |
471 |
if (v->type == NUMERIC) |
int cnt = 0; |
472 |
switch (v->miss_type) |
|
473 |
{ |
cp = stpcpy (buf, _("Missing Values: ")); |
474 |
case MISSING_1: |
mv_copy (&mv, &v->miss); |
475 |
sprintf (cp, "%g", v->missing[0].f); |
if (mv_has_range (&mv)) |
476 |
break; |
{ |
477 |
case MISSING_2: |
double x, y; |
478 |
sprintf (cp, "%g; %g", v->missing[0].f, v->missing[1].f); |
mv_pop_range (&mv, &x, &y); |
479 |
break; |
if (x == LOWEST) |
480 |
case MISSING_3: |
cp += nsprintf (cp, "LOWEST THRU %g", y); |
481 |
sprintf (cp, "%g; %g; %g", v->missing[0].f, |
else if (y == HIGHEST) |
482 |
v->missing[1].f, v->missing[2].f); |
cp += nsprintf (cp, "%g THRU HIGHEST", x); |
483 |
break; |
else |
484 |
case MISSING_RANGE: |
cp += nsprintf (cp, "%g THRU %g", x, y); |
485 |
sprintf (cp, "%g THRU %g", v->missing[0].f, v->missing[1].f); |
cnt++; |
486 |
break; |
} |
487 |
case MISSING_LOW: |
while (mv_has_value (&mv)) |
488 |
sprintf (cp, "LOWEST THRU %g", v->missing[0].f); |
{ |
489 |
break; |
union value value; |
490 |
case MISSING_HIGH: |
mv_pop_value (&mv, &value); |
491 |
sprintf (cp, "%g THRU HIGHEST", v->missing[0].f); |
if (cnt++ > 0) |
492 |
break; |
cp += nsprintf (cp, "; "); |
493 |
case MISSING_RANGE_1: |
if (v->type == NUMERIC) |
494 |
sprintf (cp, "%g THRU %g; %g", |
cp += nsprintf (cp, "%g", value.f); |
495 |
v->missing[0].f, v->missing[1].f, v->missing[2].f); |
else |
496 |
break; |
{ |
497 |
case MISSING_LOW_1: |
*cp++ = '"'; |
498 |
sprintf (cp, "LOWEST THRU %g; %g", |
memcpy (cp, value.s, v->width); |
|
v->missing[0].f, v->missing[1].f); |
|
|
break; |
|
|
case MISSING_HIGH_1: |
|
|
sprintf (cp, "%g THRU HIGHEST; %g", |
|
|
v->missing[0].f, v->missing[1].f); |
|
|
break; |
|
|
default: |
|
|
assert (0); |
|
|
} |
|
|
else |
|
|
{ |
|
|
int i; |
|
|
|
|
|
for (i = 0; i < v->miss_type; i++) |
|
|
{ |
|
|
if (i != 0) |
|
|
cp = stpcpy (cp, "; "); |
|
|
*cp++ = '"'; |
|
|
memcpy (cp, v->missing[i].s, v->width); |
|
499 |
cp += v->width; |
cp += v->width; |
500 |
*cp++ = '"'; |
*cp++ = '"'; |
501 |
} |
*cp = '\0'; |
502 |
*cp = 0; |
} |
503 |
} |
} |
504 |
|
|
505 |
tab_joint_text (t, 1, r, 2, r, TAB_LEFT, buf); |
tab_joint_text (t, 1, r, 2, r, TAB_LEFT, buf); |
506 |
r++; |
r++; |