Requested by Dave Trollope <dave@knowledgehound.com>.
* Plain text output is no longer divided into pages, since it is now
rarely printed on paper.
- * The pspp-convert utility has new "-a", "-l", "--password-list"
- options to search for an encrypted file's password.
+ * pspp-convert improvements:
+
+ - New "-a", "-l", "--password-list" options to search for an
+ encrypted file's password.
+
+ - New "--labels" and "--recode" options for CSV output.
* Improvements to SAVE DATA COLLECTION support for MDD files.
interpreted. This option is necessary because old SPSS system files,
and SPSS/PC+ system files, do not self-identify their encoding.
+@item --labels
+By default, @command{pspp-convert} writes variables' values to CVS
+output files. With this option, @command{pspp-convert} writes value
+labels.
+
+@item --recode
+By default, @command{pspp-convert} writes user-missing values to CVS
+output files as their regular values. With this option,
+@command{pspp-convert} recodes them to system-missing values (which
+are written as a single space).
+
@item -p @var{password}
@item --password=@var{password}
Specifies the password to use to decrypt an encrypted SPSS system file
interpreted. This option is necessary because old SPSS system files
do not self-identify their encoding.
.
+.SS "CSV Output Options"
+.PP
+These options affect only output to \fB.csv\fR and \fB.txt\fR files.
+.IP "\fB\-\-labels\fR"
+By default, \fBpspp\-convert\fR writes variables' values to the output.
+With this option, \fBpspp\-convert\fR writes value labels.
+.IP "\fB\-\-recode\fR"
+By default, \fBpspp\-convert\fR writes user-missing values as their
+regular values. With this option, \fBpspp\-convert\fR recodes them to
+system-missing values (which are written as a single space).
+.
.SS "Password Options"
When the input file is encrypted, \fBpspp\-convert\fR needs to obtain
a password to decrypt it. To do so, the user may specify the password
const char *password_list = NULL;
int length = 0;
+ bool recode_user_missing = false;
+ bool use_value_labels = false;
+
long long int i;
set_program_name (argv[0]);
enum
{
OPT_PASSWORD_LIST = UCHAR_MAX + 1,
+ OPT_LABELS,
+ OPT_RECODE,
};
static const struct option long_options[] =
{
{ "cases", required_argument, NULL, 'c' },
{ "encoding", required_argument, NULL, 'e' },
+ { "labels", no_argument, NULL, OPT_LABELS },
+ { "recode", no_argument, NULL, OPT_RECODE },
+
{ "password", required_argument, NULL, 'p' },
{ "password-alphabet", required_argument, NULL, 'a' },
{ "password-length", required_argument, NULL, 'l' },
password_list = optarg;
break;
+ case OPT_LABELS:
+ use_value_labels = true;
+ break;
+
+ case OPT_RECODE:
+ recode_user_missing = true;
+ break;
+
case 'a':
for (const char *p = optarg; *p; )
if (p[1] == '-' && p[2] > p[0])
csv_writer_options_init (&options);
options.include_var_names = true;
+ options.use_value_labels = use_value_labels;
+ options.recode_user_missing = recode_user_missing;
writer = csv_writer_open (output_fh, dict, &options);
}
else if (!strcmp (output_format, "sav") || !strcmp (output_format, "sys"))