- struct varname *v;
- char name[INT_DIGITS + 2];
-
- if (newnames->type == NUMERIC)
- sprintf (name, "V%d", (int) temp_case->data[newnames->fv].f);
+ struct varname *v = xmalloc (sizeof (struct varname));
+ if (newnames->type == NUMERIC)
+ {
+ double f = temp_case->data[newnames->fv].f;
+
+ if (f == SYSMIS)
+ strcpy (v->name, "VSYSMIS");
+ else if (f < INT_MIN)
+ strcpy (v->name, "VNEGINF");
+ else if (f > INT_MAX)
+ strcpy (v->name, "VPOSINF");
+ else
+ {
+ char name[INT_DIGITS + 2];
+ sprintf (name, "V%d", (int) f);
+ strncpy (v->name, name, 8);
+ name[8] = 0;
+ }
+ }