record_error
#define ERROR(x, y, z) x = record_error(x, y, z)
#define ERROR1(w, x, y, z) w = record_error(w, x, y, z)
#define ERROR2(v, w, x, y, z) v = record_error(v, w, x, y, z)