fh = fh_ref (s->prev_save_file);
else
{
- lex_sbc_missing ("OUTFILE");
+ lex_sbc_missing (s->lexer, "OUTFILE");
goto error;
}
}
if (!read->c1)
{
- lex_sbc_missing ("FIELD");
+ lex_sbc_missing (s->lexer, "FIELD");
goto error;
}
fh = fh_ref (s->prev_read_file);
else
{
- lex_sbc_missing ("FILE");
+ lex_sbc_missing (s->lexer, "FILE");
goto error;
}
}
if (!write->c1)
{
- lex_sbc_missing ("FIELD");
+ lex_sbc_missing (s->lexer, "FIELD");
goto error;
}
fh = fh_ref (s->prev_write_file);
else
{
- lex_sbc_missing ("OUTFILE");
+ lex_sbc_missing (s->lexer, "OUTFILE");
goto error;
}
}
write->format = xmalloc (sizeof *write->format);
*write->format = (struct fmt_spec) { .type = format, .w = w };
- if (!fmt_check_output (write->format))
- goto error;
- };
+ char *error = fmt_check_output__ (write->format);
+ if (error)
+ {
+ msg (SE, "%s", error);
+ free (error);
+
+ if (has_format)
+ lex_ofs_msg (s->lexer, SN, format_ofs, format_ofs,
+ _("This syntax specifies format %s."),
+ fmt_name (format));
+
+ if (repetitions)
+ {
+ lex_ofs_msg (s->lexer, SN, format_ofs, format_ofs,
+ ngettext ("This syntax specifies %d repetition.",
+ "This syntax specifies %d repetitions.",
+ repetitions),
+ repetitions);
+ lex_ofs_msg (s->lexer, SN, record_width_start, record_width_end,
+ _("This syntax designates record width %d, "
+ "which divided by %d repetitions implies "
+ "field width %d."),
+ record_width, repetitions, w);
+ }
+
+ if (by)
+ lex_ofs_msg (s->lexer, SN, by_ofs, by_ofs,
+ _("This syntax specifies field width %d."), by);
+
+ goto error;
+ }
+ }
if (write->format && fmt_var_width (write->format) > sizeof (double))
{
}
if (!msave->rowtype)
{
- lex_sbc_missing ("TYPE");
+ lex_sbc_missing (s->lexer, "TYPE");
goto error;
}
}
if (!common->outfile)
{
- lex_sbc_missing ("OUTFILE");
+ lex_sbc_missing (s->lexer, "OUTFILE");
goto error;
}
common->location = lex_ofs_location (s->lexer, start_ofs,