#include "data/casereader.h"
#include "data/dataset.h"
#include "data/dictionary.h"
+#include "data/session.h"
#include "data/settings.h"
#include "data/variable.h"
#include "language/lexer/command-name.h"
/* Command processing states. */
enum states
{
- S_INITIAL = 0x01, /* Allowed before active file defined. */
- S_DATA = 0x02, /* Allowed after active file defined. */
+ S_INITIAL = 0x01, /* Allowed before active dataset defined. */
+ S_DATA = 0x02, /* Allowed after active dataset defined. */
S_INPUT_PROGRAM = 0x04, /* Allowed in INPUT PROGRAM. */
S_FILE_TYPE = 0x08, /* Allowed in FILE TYPE. */
S_ANY = 0x0f /* Allowed anywhere. */
cmd_parse_in_state (struct lexer *lexer, struct dataset *ds,
enum cmd_state state)
{
+ struct session *session = dataset_session (ds);
int result;
result = do_parse_command (lexer, ds, state);
+ ds = session_active_dataset (session);
assert (!proc_is_open (ds));
unset_cmd_algorithm ();
dict_clear_aux (dataset_dict (ds));
{
const struct dictionary *dict = dataset_dict (ds);
return cmd_parse_in_state (lexer, ds,
- proc_has_active_file (ds) &&
+ dataset_has_source (ds) &&
dict_get_var_cnt (dict) > 0 ?
CMD_STATE_DATA : CMD_STATE_INITIAL);
}
{
/* One allowed state. */
case S_INITIAL:
- msg (SE, _("%s is allowed only before the active file has "
+ msg (SE, _("%s is allowed only before the active dataset has "
"been defined."), command->name);
break;
case S_DATA:
- msg (SE, _("%s is allowed only after the active file has "
+ msg (SE, _("%s is allowed only after the active dataset has "
"been defined."), command->name);
break;
case S_INPUT_PROGRAM:
case S_INITIAL | S_DATA:
NOT_REACHED ();
case S_INITIAL | S_INPUT_PROGRAM:
- msg (SE, _("%s is allowed only before the active file has "
+ msg (SE, _("%s is allowed only before the active dataset has "
"been defined or inside INPUT PROGRAM."), command->name);
break;
case S_INITIAL | S_FILE_TYPE:
- msg (SE, _("%s is allowed only before the active file has "
+ msg (SE, _("%s is allowed only before the active dataset has "
"been defined or inside FILE TYPE."), command->name);
break;
case S_DATA | S_INPUT_PROGRAM:
- msg (SE, _("%s is allowed only after the active file has "
+ msg (SE, _("%s is allowed only after the active dataset has "
"been defined or inside INPUT PROGRAM."), command->name);
break;
case S_DATA | S_FILE_TYPE:
- msg (SE, _("%s is allowed only after the active file has "
+ msg (SE, _("%s is allowed only after the active dataset has "
"been defined or inside FILE TYPE."), command->name);
break;
case S_INPUT_PROGRAM | S_FILE_TYPE:
/* Three allowed states. */
case S_DATA | S_INPUT_PROGRAM | S_FILE_TYPE:
- msg (SE, _("%s is allowed only after the active file has "
+ msg (SE, _("%s is allowed only after the active dataset has "
"been defined, inside INPUT PROGRAM, or inside "
"FILE TYPE."), command->name);
break;
case S_INITIAL | S_INPUT_PROGRAM | S_FILE_TYPE:
- msg (SE, _("%s is allowed only before the active file has "
+ msg (SE, _("%s is allowed only before the active dataset has "
"been defined, inside INPUT PROGRAM, or inside "
"FILE TYPE."), command->name);
break;
int
cmd_new_file (struct lexer *lexer UNUSED, struct dataset *ds)
{
- proc_discard_active_file (ds);
+ dataset_clear (ds);
return CMD_SUCCESS;
}