+ Returns true if anything was updated, false otherwise. */
+gboolean
+psppire_data_store_set_string (PsppireDataStore *store,
+ const gchar *text,
+ glong row, const struct variable *var,
+ gboolean use_value_label)
+{
+ gint case_index;
+ glong n_cases;
+ gboolean ok;
+
+ n_cases = psppire_data_store_get_case_count (store);
+ if (row > n_cases)
+ return FALSE;
+ if (row == n_cases)
+ psppire_data_store_insert_new_case (store, row);
+
+ case_index = var_get_case_index (var);
+ if (use_value_label)
+ {
+ const struct val_labs *vls = var_get_value_labels (var);
+ const union value *value = vls ? val_labs_find_value (vls, text) : NULL;
+ if (value)
+ ok = datasheet_put_value (store->datasheet, row, case_index, value);
+ else
+ ok = FALSE;
+ }
+ else
+ ok = psppire_data_store_data_in (store, row, case_index, ss_cstr (text),
+ var_get_print_format (var));