projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
FREQUENCIES: Reimplement FORMAT=LIMIT feature.
[pspp]
/
src
/
data
/
por-file-writer.c
diff --git
a/src/data/por-file-writer.c
b/src/data/por-file-writer.c
index 3c475d30b58d83b9e0217e88d8d22d05afe4383b..778b8e402f3a303157ee597380872caa87cfb000 100644
(file)
--- a/
src/data/por-file-writer.c
+++ b/
src/data/por-file-writer.c
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011
, 2012, 2013
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-74,7
+74,7
@@
struct pfm_writer
struct pfm_var
{
int width; /* 0=numeric, otherwise string var width. */
struct pfm_var
{
int width; /* 0=numeric, otherwise string var width. */
- int
fv; /* Starting case index
. */
+ int
case_index; /* Index in case
. */
};
static const struct casewriter_class por_file_casewriter_class;
};
static const struct casewriter_class por_file_casewriter_class;
@@
-131,7
+131,7
@@
pfm_open_writer (struct file_handle *fh, struct dictionary *dict,
const struct variable *dv = dict_get_var (dict, i);
struct pfm_var *pv = &w->vars[i];
pv->width = MIN (var_get_width (dv), MAX_POR_WIDTH);
const struct variable *dv = dict_get_var (dict, i);
struct pfm_var *pv = &w->vars[i];
pv->width = MIN (var_get_width (dv), MAX_POR_WIDTH);
- pv->
fv
= var_get_case_index (dv);
+ pv->
case_index
= var_get_case_index (dv);
}
w->digits = opts.digits;
}
w->digits = opts.digits;
@@
-336,7
+336,9
@@
write_variables (struct pfm_writer *w, struct dictionary *dict)
buf_write (w, "4", 1);
write_int (w, dict_get_var_cnt (dict));
buf_write (w, "4", 1);
write_int (w, dict_get_var_cnt (dict));
- write_int (w, 161);
+
+ buf_write (w, "5", 1);
+ write_int (w, ceil (w->digits * (log (10) / log (30))));
for (i = 0; i < dict_get_var_cnt (dict); i++)
{
for (i = 0; i < dict_get_var_cnt (dict); i++)
{
@@
-404,6
+406,7
@@
write_value_labels (struct pfm_writer *w, const struct dictionary *dict)
const struct val_labs *val_labs = var_get_value_labels (v);
size_t n_labels = val_labs_count (val_labs);
const struct val_lab **labels;
const struct val_labs *val_labs = var_get_value_labels (v);
size_t n_labels = val_labs_count (val_labs);
const struct val_lab **labels;
+ int j;
if (n_labels == 0)
continue;
if (n_labels == 0)
continue;
@@
-415,9
+418,9
@@
write_value_labels (struct pfm_writer *w, const struct dictionary *dict)
n_labels = val_labs_count (val_labs);
labels = val_labs_sorted (val_labs);
n_labels = val_labs_count (val_labs);
labels = val_labs_sorted (val_labs);
- for (
i = 0; i < n_labels; i
++)
+ for (
j = 0; j < n_labels; j
++)
{
{
- const struct val_lab *vl = labels[
i
];
+ const struct val_lab *vl = labels[
j
];
write_value (w, val_lab_get_value (vl), var_get_width (v));
write_string (w, val_lab_get_escaped_label (vl));
}
write_value (w, val_lab_get_value (vl), var_get_width (v));
write_string (w, val_lab_get_escaped_label (vl));
}
@@
-455,11
+458,11
@@
por_file_casewriter_write (struct casewriter *writer, void *w_,
struct pfm_var *v = &w->vars[i];
if (v->width == 0)
struct pfm_var *v = &w->vars[i];
if (v->width == 0)
- write_float (w, case_num_idx (c, v->
fv
));
+ write_float (w, case_num_idx (c, v->
case_index
));
else
{
write_int (w, v->width);
else
{
write_int (w, v->width);
- buf_write (w, case_str_idx (c, v->
fv
), v->width);
+ buf_write (w, case_str_idx (c, v->
case_index
), v->width);
}
}
}
}
}
}