You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
/*
Categories of SET subcommands:
- data input: BLANKS, DECIMAL, FORMAT.
+ data input: BLANKS, DECIMAL, FORMAT, EPOCH.
program input: ENDCMD, NULLINE.
static double set_blanks=SYSMIS;
+static int set_epoch = -1;
+
static struct fmt_spec set_format={FMT_F,8,2};
static struct set_cust_currency set_cc[5];
echo=echo:on/off;
eject=eject:on/off;
endcmd=string "x==1" "one character long";
+ epoch=custom;
errorbreak=errbrk:on/off;
errors=errors:on/off/terminal/listing/both/none;
format=custom;
return aux_stc_custom_listing(cmd);
}
+static int
+aux_stc_custom_epoch(struct cmd_set *cmd UNUSED)
+{
+ msg (MM, _("EPOCH is %d"), get_epoch ());
+ return 0;
+}
+
static int
aux_stc_custom_format(struct cmd_set *cmd UNUSED)
{
}
return 1;
#else /* USE_INTERNAL_PAGER */
- if (match_id (OFF))
+ if (lex_match_id ("OFF"))
return 1;
msg (SW, "External pagers not supported.");
return 0;
return 1;
}
+/* Parses the EPOCH subcommand, which controls the epoch used for
+ parsing 2-digit years. */
+static int
+stc_custom_epoch (struct cmd_set *cmd UNUSED)
+{
+ lex_match ('=');
+ if (lex_match_id ("AUTOMATIC"))
+ set_epoch = -1;
+ else if (lex_is_integer ())
+ {
+ int new_epoch = lex_integer ();
+ lex_get ();
+ if (new_epoch < 1500)
+ {
+ msg (SE, _("EPOCH must be 1500 or later."));
+ return 0;
+ }
+ set_epoch = new_epoch;
+ }
+ else
+ {
+ lex_error (_("expecting AUTOMATIC or year"));
+ return 0;
+ }
+
+ return 1;
+}
+
static int
stc_custom_length (struct cmd_set *cmd UNUSED)
{
return (cmd.dec == STC_DOT ? '.' : ',');
}
+int
+get_epoch (void)
+{
+ if (set_epoch < 0)
+ {
+ time_t t = time (0);
+ struct tm *tm = localtime (&t);
+ if (tm != NULL)
+ set_epoch = (tm->tm_year + 1900) - 69;
+ else
+ set_epoch = 2000 - 69;
+ }
+
+ return set_epoch;
+}
char
get_grouping(void)