#include <float.h>
#include <limits.h>
#include <stdlib.h>
-#include "array.h"
-#include "alloc.h"
-#include "case.h"
-#include "dictionary.h"
-#include "message.h"
+#include <libpspp/array.h>
+#include <libpspp/alloc.h>
+#include <data/case.h>
+#include <data/dictionary.h>
+#include <libpspp/message.h>
#include "helpers.h"
-#include "lexer.h"
-#include "misc.h"
-#include "pool.h"
-#include "settings.h"
-#include "str.h"
-#include "variable.h"
-#include "procedure.h"
+#include <language/lexer/lexer.h>
+#include <libpspp/misc.h>
+#include <libpspp/pool.h>
+#include <data/settings.h>
+#include <libpspp/str.h>
+#include <data/variable.h>
+#include <procedure.h>
\f
/* Declarations. */
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC",
};
- time_t last_vfm_invocation = vfm_last_invocation ();
+ time_t last_proc_time = time_of_last_procedure ();
struct tm *time;
char temp_buf[10];
- time = localtime (&last_vfm_invocation);
+ time = localtime (&last_proc_time);
sprintf (temp_buf, "%02d %s %02d", abs (time->tm_mday) % 100,
months[abs (time->tm_mon) % 12], abs (time->tm_year) % 100);
return expr_allocate_number (e, SYSMIS);
else if (lex_match_id ("$JDATE"))
{
- time_t time = vfm_last_invocation ();
+ time_t time = time_of_last_procedure ();
struct tm *tm = localtime (&time);
return expr_allocate_number (e, expr_ymd_to_ofs (tm->tm_year + 1900,
tm->tm_mon + 1,
}
else if (lex_match_id ("$TIME"))
{
- time_t time = vfm_last_invocation ();
+ time_t time = time_of_last_procedure ();
struct tm *tm = localtime (&time);
return expr_allocate_number (e,
expr_ymd_to_date (tm->tm_year + 1900,
msg (SE, _("%s is not yet implemented."), f->prototype);
goto fail;
}
+ if ((f->flags & OPF_PERM_ONLY) && temporary != 0)
+ {
+ msg (SE, _("%s may not appear after TEMPORARY."), f->prototype);
+ goto fail;
+ }
n = expr_allocate_composite (e, f - operations, args, arg_cnt);
n->composite.min_valid = min_valid != -1 ? min_valid : f->array_min_elems;
{
union any_node *n = pool_alloc (e->expr_pool, sizeof n->string);
n->type = OP_string;
- if (length > 255)
- length = 255;
+ if (length > MAX_STRING)
+ length = MAX_STRING;
n->string.s = copy_string (e, string, length);
return n;
}