+
+
+extern struct dataset *the_dataset;
+extern struct source_stream *the_source_stream;
+extern PsppireDataStore *the_data_store;
+
+gboolean
+execute_syntax (struct getl_interface *sss)
+{
+ struct lexer *lexer;
+
+ g_return_val_if_fail (proc_has_source (the_dataset), FALSE);
+
+ lexer = lex_create (the_source_stream);
+
+ getl_append_source (the_source_stream, sss);
+
+ for (;;)
+ {
+ int result = cmd_parse (lexer, the_dataset);
+
+ if (result == CMD_EOF || result == CMD_FINISH)
+ break;
+ }
+
+ getl_abort_noninteractive (the_source_stream);
+
+ lex_destroy (lexer);
+
+ /* The GUI must *always* have a data source, even if it's an empty one.
+ Therefore, we find that there is none, (for example NEW FILE was the last
+ item in the syntax) then we create a new one. */
+ if ( ! proc_has_source (the_dataset))
+ proc_set_source (the_dataset,
+ storage_source_create (the_data_store->case_file->flexifile)
+ );
+
+ /* GUI syntax needs this implicit EXECUTE command at the end of
+ every script. Otherwise commands like GET could leave the GUI without
+ a casefile. */
+ return procedure (the_dataset, NULL, NULL);
+}
+
+