/[pspp]/pspp/src/sysfile-info.c
ViewVC logotype

Diff of /pspp/src/sysfile-info.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.15 by blp, Sun Jul 31 21:42:46 2005 UTC revision 1.16 by blp, Sun Aug 7 04:39:28 2005 UTC
# Line 463  describe_variable (struct variable *v, s Line 463  describe_variable (struct variable *v, s
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++;

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26