Corrected documentation of WORKSPACE.
When --testing-mode is set, workspace can now be arbitrarily low.
/MXERRS=max_errs
/MXWARNS=max_warnings
/PROMPT='prompt'
+ /WORKSPACE=workspace_size
(program execution)
/MEXPAND=@{ON,OFF@}
/SCRIPTTAB='c'
/TB1=@{'xxx','xxxxxxxxxxx'@}
/TBFONTS='string'
- /WORKSPACE=workspace_size
/XSORT=@{YES,NO@}
@end display
@item UNDEFINED
Currently not used.
+
+@item WORKSPACE
+The maximum amount of memory that PSPP will use to store data being processed.
+If memory in excess of the workspace size is required, then PSPP will start
+to use temporary files to store the data.
+Setting a higher value will, in general, mean procedures will run faster,
+but may cause other applications to run slower.
+On platforms without virtual memory management, setting a very large workspace
+may cause PSPP to abort.
+@cindex workspace
+@cindex memory, amount used to store cases
@end table
Data output subcommands affect the format of output data. These
/* endcmd */
'.',
/* workspace */
- 4L * 1024 * 1024,
+ 64L * 1024 * 1024,
/* default_format */
{FMT_F, 8, 2},
/* testing_mode */
size_t settings_get_workspace (void);
size_t settings_get_workspace_cases (size_t value_cnt);
-void settings_set_workspace ( size_t);
+void settings_set_workspace (size_t);
const struct fmt_spec *settings_get_format (void);
void settings_set_format ( const struct fmt_spec *);
bool settings_get_testing_mode (void);
-void settings_set_testing_mode ( bool);
+void settings_set_testing_mode (bool);
enum behavior_mode {
ENHANCED, /* Use improved PSPP behavior. */
wib=wib:msbfirst/lsbfirst/vax/native;
wrb=wrb:native/isl/isb/idl/idb/vf/vd/vg/zs/zl;
width=custom;
- workspace=integer "x>=1024" "%s must be at least 1 MB";
+ workspace=integer "x>0" "%s must be positive";
xsort=xsort:yes/no.
*/
if (cmd.sbc_wrb)
settings_set_output_float_format (stc_to_float_format (cmd.wrb));
if (cmd.sbc_workspace)
- settings_set_workspace (cmd.n_workspace[0] * 1024L);
+ {
+ if ( cmd.n_workspace[0] < 1024 && ! settings_get_testing_mode ())
+ msg (SE, _("WORKSPACE must be at least 1MB"));
+ else
+ settings_set_workspace (cmd.n_workspace[0] * 1024L);
+ }
if (cmd.sbc_block)
msg (SW, _("%s is obsolete."), "BLOCK");