//
// PSPP - computes sample statistics.
// Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-// Written by Ben Pfaff <blp@gnu.org>.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
function XDATE.WKDAY (date >= DAY_S) = calendar_offset_to_wday (date / DAY_S);
function XDATE.YEAR (date >= DAY_S) = calendar_offset_to_year (date / DAY_S);
+// Date arithmetic functions.
+no_abbrev function DATEDIFF (date2 >= DAY_S, date1 >= DAY_S, string unit)
+ = expr_date_difference (date1, date2, unit);
+no_abbrev function DATESUM (date, quantity, string unit)
+ = expr_date_sum (date, quantity, unit, ss_cstr ("closest"));
+no_abbrev function DATESUM (date, quantity, string unit, string method)
+ = expr_date_sum (date, quantity, unit, method);
+
+
// String functions.
string function CONCAT (string a[n])
expression e;
return empty_string;
}
+absorb_miss no_opt no_abbrev string function VALUELABEL (var v)
+ expression e;
+ case c;
+{
+ const char *label = var_lookup_value_label (v, case_data (c, v));
+ if (label != NULL)
+ return copy_string (e, label, strlen (label));
+ else
+ return empty_string;
+}
+
// Artificial.
operator SQUARE (x) = x * x;
boolean operator NUM_TO_BOOLEAN (x)
{
const struct variable *var = vector_get_var (v, (size_t) idx - 1);
double value = case_num (c, var);
- return !var_is_num_user_missing (var, value) ? value : SYSMIS;
+ return !var_is_num_missing (var, value, MV_USER) ? value : SYSMIS;
}
else
{
num_var v;
{
double d = case_num (c, v);
- return !var_is_num_user_missing (v, d) ? d : SYSMIS;
+ return !var_is_num_missing (v, d, MV_USER) ? d : SYSMIS;
}
no_opt string operator STR_VAR ()
if (c != NULL)
{
double x = case_num (c, v);
- return !var_is_num_user_missing (v, x) ? x : SYSMIS;
+ return !var_is_num_missing (v, x, MV_USER) ? x : SYSMIS;
}
else
return SYSMIS;
if (c != NULL)
{
double x = case_num (c, v);
- return !var_is_num_user_missing (v, x) ? x : SYSMIS;
+ return !var_is_num_missing (v, x, MV_USER) ? x : SYSMIS;
}
else
return SYSMIS;