From 8cc788667db16517f96ba15979da3e3b9638dd3b Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 3 Feb 2008 06:45:03 +0000 Subject: [PATCH] In system files, allow missing values to be specified on long string variables, but warn about them because PSPP does not yet support them. Ignore extension records 20 and 21, which PSPP does not yet support. Patch #6347. --- src/data/ChangeLog | 10 ++++++++++ src/data/sys-file-reader.c | 23 ++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/data/ChangeLog b/src/data/ChangeLog index 558bb249..a14e6cde 100644 --- a/src/data/ChangeLog +++ b/src/data/ChangeLog @@ -1,3 +1,13 @@ +2008-02-02 Ben Pfaff + + Patch #6347. + + * sys-file-reader.c (read_variable_record): Allow missing values + to be specified on long string variables, but warn about them + because PSPP does not yet support them. + (read_extension_record): Ignore extension records 20 and 21, which + PSPP does not yet support. + 2008-02-01 Ben Pfaff Patch #6386. Thanks to John Darrington for review and for the diff --git a/src/data/sys-file-reader.c b/src/data/sys-file-reader.c index d71027d5..705fb015 100644 --- a/src/data/sys-file-reader.c +++ b/src/data/sys-file-reader.c @@ -549,11 +549,14 @@ read_variable_record (struct sfm_reader *r, struct dictionary *dict, for (i = 0; i < missing_value_code; i++) mv_add_num (&mv, read_float (r)); } - else if (var_get_width (var) <= MAX_SHORT_STRING) + else { if (missing_value_code < 1 || missing_value_code > 3) sys_error (r, _("String missing value indicator field is not " "0, 1, 2, or 3.")); + if (var_is_long_string (var)) + sys_warn (r, _("Ignoring missing values on long string variable " + "%s, which PSPP does not yet support."), name); for (i = 0; i < missing_value_code; i++) { char string[9]; @@ -561,10 +564,8 @@ read_variable_record (struct sfm_reader *r, struct dictionary *dict, mv_add_str (&mv, string); } } - else - sys_error (r, _("Long string variable %s may not have missing " - "values."), name); - var_set_missing_values (var, &mv); + if (!var_is_long_string (var)) + var_set_missing_values (var, &mv); } /* Set formats. */ @@ -752,6 +753,18 @@ read_extension_record (struct sfm_reader *r, struct dictionary *dict, SPSS 14. */ break; + case 20: + /* New in SPSS 16. Contains a single string that describes + the character encoding, e.g. "windows-1252". */ + break; + + case 21: + /* New in SPSS 16. Encodes value labels for long string + variables. */ + sys_warn (r, _("Ignoring value labels for long string variables, " + "which PSPP does not yet support.")); + break; + default: sys_warn (r, _("Unrecognized record type 7, subtype %d."), subtype); break; -- 2.30.2