Differences From Artifact [d48f578679]:
- File generic/tclDate.c — part of check-in [927e25a961] at 2000-01-12 23:35:52 on branch trunk — * tests/clock.test: Added tests for "next <day-of-week>" and "<day-of-week>" (user: ericm size: 53109)
To Artifact [0c152cc33b]:
- File generic/tclDate.c — part of check-in [53023d030d] at 2000-01-14 22:15:51 on branch trunk — * unix/tclUnixTime.c: New clock format format. * compat/strftime.c: New clock format format. * generic/tclGetDate.y: New clock scan format. (user: ericm size: 53870)
1 2 3 4 5 6 7 8 9 10 11 12 | /* * tclDate.c -- * * This file is generated from a yacc grammar defined in * the file tclGetDate.y. It should not be edited directly. * * Copyright (c) 1992-1995 Karl Lehenbauer and Mark Diekhans. * Copyright (c) 1995-1997 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /* * tclDate.c -- * * This file is generated from a yacc grammar defined in * the file tclGetDate.y. It should not be edited directly. * * Copyright (c) 1992-1995 Karl Lehenbauer and Mark Diekhans. * Copyright (c) 1995-1997 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * RCS: @(#) $Id: tclDate.c,v 1.15 2000/01/14 22:15:51 ericm Exp $ */ #include "tclInt.h" #include "tclPort.h" #ifdef MAC_TCL # define EPOCH 1904 |
| ︙ | ︙ | |||
33 34 35 36 37 38 39 | * some systems may have a different value. This #define should be the * same as in ../compat/strftime.c. */ #define TM_YEAR_BASE 1900 #define HOUR(x) ((int) (60 * x)) #define SECSPERDAY (24L * 60L * 60L) | | | 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
* some systems may have a different value. This #define should be the
* same as in ../compat/strftime.c.
*/
#define TM_YEAR_BASE 1900
#define HOUR(x) ((int) (60 * x))
#define SECSPERDAY (24L * 60L * 60L)
#define IsLeapYear(x) ((x % 4 == 0) && (x % 100 != 0 || x % 400 == 0))
/*
* An entry in the lexical lookup table.
*/
typedef struct _TABLE {
char *name;
int type;
|
| ︙ | ︙ | |||
125 126 127 128 129 130 131 | # define tDAY 258 # define tDAYZONE 259 # define tID 260 # define tMERIDIAN 261 # define tMINUTE_UNIT 262 # define tMONTH 263 # define tMONTH_UNIT 264 | > | | | | | | | | | | 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | # define tDAY 258 # define tDAYZONE 259 # define tID 260 # define tMERIDIAN 261 # define tMINUTE_UNIT 262 # define tMONTH 263 # define tMONTH_UNIT 264 # define tSTARDATE 265 # define tSEC_UNIT 266 # define tSNUMBER 267 # define tUNUMBER 268 # define tZONE 269 # define tEPOCH 270 # define tDST 271 # define tISOBASE 272 # define tDAY_UNIT 273 # define tNEXT 274 #if defined(__cplusplus) || defined(__STDC__) #if defined(__cplusplus) && defined(__EXTERN_C__) |
| ︙ | ︙ | |||
254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
{ "ninth", tUNUMBER, 9 },
{ "tenth", tUNUMBER, 10 },
{ "eleventh", tUNUMBER, 11 },
{ "twelfth", tUNUMBER, 12 },
#endif
{ "ago", tAGO, 1 },
{ "epoch", tEPOCH, 0 },
{ NULL }
};
/*
* The timezone table. (Note: This table was modified to not use any floating
* point constants to work around an SGI compiler bug).
*/
| > | 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
{ "ninth", tUNUMBER, 9 },
{ "tenth", tUNUMBER, 10 },
{ "eleventh", tUNUMBER, 11 },
{ "twelfth", tUNUMBER, 12 },
#endif
{ "ago", tAGO, 1 },
{ "epoch", tEPOCH, 0 },
{ "stardate", tSTARDATE, 0},
{ NULL }
};
/*
* The timezone table. (Note: This table was modified to not use any floating
* point constants to work around an SGI compiler bug).
*/
|
| ︙ | ︙ | |||
448 449 450 451 452 453 454 |
int i;
/* Figure out how many days are in February for the given year.
* Every year divisible by 4 is a leap year.
* But, every year divisible by 100 is not a leap year.
* But, every year divisible by 400 is a leap year after all.
*/
| < | | < | < | 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 |
int i;
/* Figure out how many days are in February for the given year.
* Every year divisible by 4 is a leap year.
* But, every year divisible by 100 is not a leap year.
* But, every year divisible by 400 is a leap year after all.
*/
DaysInMonth[1] = IsLeapYear(Year) ? 29 : 28;
/* Check the inputs for validity */
if (Month < 1 || Month > 12
|| Year < START_OF_TIME || Year > END_OF_TIME
|| Day < 1 || Day > DaysInMonth[(int)--Month])
return -1;
/* Start computing the value. First determine the number of days
* represented by the date, then multiply by the number of seconds/day.
*/
for (Julian = Day - 1, i = 0; i < Month; i++)
Julian += DaysInMonth[i];
if (Year >= EPOCH) {
for (i = EPOCH; i < Year; i++)
Julian += 365 + IsLeapYear(i);
} else {
for (i = Year; i < EPOCH; i++)
Julian -= 365 + IsLeapYear(i);
}
Julian *= SECSPERDAY;
/* Add the timezone offset ?? */
Julian += TclDateTimezone * 60L;
/* Add the number of seconds represented by the time component */
|
| ︙ | ︙ | |||
877 878 879 880 881 882 883 |
return 0;
}
static CONST TclDatetabelem TclDateexca[] ={
-1, 1,
0, -1,
-2, 0,
};
| | | | | | | | | | | | | | | | | | | | | > | | | | | > | < | | | | | | | | | | | | | | | | | | > | | | | | | | > | 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 |
return 0;
}
static CONST TclDatetabelem TclDateexca[] ={
-1, 1,
0, -1,
-2, 0,
};
# define YYNPROD 53
# define YYLAST 259
static CONST TclDatetabelem TclDateact[]={
23, 40, 22, 34, 26, 35, 24, 26, 36, 24,
53, 42, 55, 25, 52, 80, 25, 79, 26, 31,
24, 30, 59, 48, 75, 74, 73, 25, 49, 72,
71, 70, 28, 69, 67, 50, 47, 46, 45, 39,
37, 60, 77, 44, 78, 66, 43, 63, 58, 20,
65, 64, 54, 38, 61, 10, 9, 8, 7, 6,
5, 33, 4, 3, 2, 1, 18, 0, 0, 41,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
51, 0, 0, 0, 0, 0, 0, 0, 0, 56,
0, 0, 57, 0, 76, 0, 0, 0, 0, 0,
0, 0, 0, 68, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 17, 13, 0, 0, 0,
15, 26, 21, 24, 0, 11, 12, 16, 0, 14,
25, 19, 29, 0, 0, 27, 0, 32, 26, 0,
24, 0, 0, 0, 0, 0, 0, 25, 0, 0,
0, 0, 0, 0, 0, 0, 0, 62, 62 };
static CONST TclDatetabelem TclDatepact[]={
-10000000, -43,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,
-10000000, -26, -268,-10000000, -264, -228,-10000000, 9, -229, -257,
-214, -230,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000, -231,-10000000,
-232, -240, -233, -214,-10000000, -258,-10000000, 8,-10000000, -246,
-10000000,-10000000, -260,-10000000,-10000000, 2, -4, 0, 6, 5,
-10000000,-10000000,-10000000, -13, -234,-10000000, -214,-10000000, -235,-10000000,
-237, -238,-10000000, -239, -242, -243, -244,-10000000,-10000000,-10000000,
-10000000, -3,-10000000,-10000000,-10000000, -14,-10000000, -251, -253,-10000000,
-10000000 };
static CONST TclDatetabelem TclDatepgo[]={
0, 49, 46, 66, 22, 65, 64, 63, 62, 60,
59, 58, 57, 56, 55 };
static CONST TclDatetabelem TclDater1[]={
0, 5, 5, 6, 6, 6, 6, 6, 6, 6,
6, 7, 7, 7, 7, 7, 8, 8, 8, 10,
10, 10, 10, 10, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 12, 12, 12, 13, 11, 11,
11, 11, 11, 3, 3, 1, 1, 1, 2, 2,
14, 4, 4 };
static CONST TclDatetabelem TclDater2[]={
0, 0, 4, 3, 3, 3, 3, 3, 3, 3,
2, 5, 9, 11, 13, 15, 5, 3, 3, 3,
5, 5, 7, 5, 7, 11, 3, 11, 11, 5,
9, 5, 3, 7, 7, 15, 5, 9, 9, 7,
5, 7, 5, 3, 3, 3, 3, 3, 3, 1,
3, 1, 3 };
static CONST TclDatetabelem TclDatechk[]={
-10000000, -5, -6, -7, -8, -9, -10, -11, -12, -13,
-14, 268, 269, 259, 272, 263, 270, 258, -3, 274,
-1, 265, 45, 43, 266, 273, 264, 261, 58, 258,
47, 45, 263, -1, 271, 269, 272, 268, 44, 268,
258, -1, 268, -2, 257, 268, 268, 268, 263, 268,
268, -2, 272, 268, 44, 258, -1, -1, 46, -4,
45, 58, 261, 47, 45, 45, 58, 268, -2, 268,
268, 268, 268, 268, 268, 268, -4, 45, 58, 268,
268 };
static CONST TclDatetabelem TclDatedef[]={
1, -2, 2, 3, 4, 5, 6, 7, 8, 9,
10, 50, 17, 18, 26, 0, 32, 19, 0, 0,
49, 0, 43, 44, 45, 46, 47, 11, 0, 21,
0, 0, 31, 49, 16, 0, 36, 29, 20, 0,
23, 40, 0, 42, 48, 0, 51, 24, 0, 0,
33, 39, 34, 0, 0, 22, 49, 41, 0, 12,
0, 0, 52, 0, 0, 0, 0, 30, 38, 37,
13, 51, 25, 27, 28, 0, 14, 0, 0, 15,
35 };
typedef struct
#ifdef __cplusplus
TclDatetoktype
#endif
{ char *t_name; int t_val; } TclDatetoktype;
#ifndef YYDEBUG
# define YYDEBUG 0 /* don't allow debugging */
|
| ︙ | ︙ | |||
978 979 980 981 982 983 984 | "tDAY", 258, "tDAYZONE", 259, "tID", 260, "tMERIDIAN", 261, "tMINUTE_UNIT", 262, "tMONTH", 263, "tMONTH_UNIT", 264, | > | | | | | | | | | > | 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 |
"tDAY", 258,
"tDAYZONE", 259,
"tID", 260,
"tMERIDIAN", 261,
"tMINUTE_UNIT", 262,
"tMONTH", 263,
"tMONTH_UNIT", 264,
"tSTARDATE", 265,
"tSEC_UNIT", 266,
"tSNUMBER", 267,
"tUNUMBER", 268,
"tZONE", 269,
"tEPOCH", 270,
"tDST", 271,
"tISOBASE", 272,
"tDAY_UNIT", 273,
"tNEXT", 274,
"-unknown-", -1 /* ends search */
};
char * TclDatereds[] =
{
"-no such reduction-",
"spec : /* empty */",
"spec : spec item",
"item : time",
"item : zone",
"item : date",
"item : day",
"item : relspec",
"item : iso",
"item : trek",
"item : number",
"time : tUNUMBER tMERIDIAN",
"time : tUNUMBER ':' tUNUMBER o_merid",
"time : tUNUMBER ':' tUNUMBER '-' tUNUMBER",
"time : tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid",
"time : tUNUMBER ':' tUNUMBER ':' tUNUMBER '-' tUNUMBER",
"zone : tZONE tDST",
|
| ︙ | ︙ | |||
1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 | "date : tMONTH tUNUMBER ',' tUNUMBER", "date : tUNUMBER tMONTH", "date : tEPOCH", "date : tUNUMBER tMONTH tUNUMBER", "iso : tISOBASE tZONE tISOBASE", "iso : tISOBASE tZONE tUNUMBER ':' tUNUMBER ':' tUNUMBER", "iso : tISOBASE tISOBASE", "relspec : sign tUNUMBER unit ago", "relspec : tUNUMBER unit ago", "relspec : tNEXT unit", "relspec : tNEXT tUNUMBER unit", "relspec : unit ago", "sign : '-'", "sign : '+'", | > | 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 | "date : tMONTH tUNUMBER ',' tUNUMBER", "date : tUNUMBER tMONTH", "date : tEPOCH", "date : tUNUMBER tMONTH tUNUMBER", "iso : tISOBASE tZONE tISOBASE", "iso : tISOBASE tZONE tUNUMBER ':' tUNUMBER ':' tUNUMBER", "iso : tISOBASE tISOBASE", "trek : tSTARDATE tUNUMBER '.' tUNUMBER", "relspec : sign tUNUMBER unit ago", "relspec : tUNUMBER unit ago", "relspec : tNEXT unit", "relspec : tNEXT tUNUMBER unit", "relspec : unit ago", "sign : '-'", "sign : '+'", |
| ︙ | ︙ | |||
1591 1592 1593 1594 1595 1596 1597 |
case 7:{
TclDateHaveRel++;
} break;
case 8:{
TclDateHaveTime++;
TclDateHaveDate++;
} break;
| > > > > > | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > | | | | | | | | | | | | | | | | 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 |
case 7:{
TclDateHaveRel++;
} break;
case 8:{
TclDateHaveTime++;
TclDateHaveDate++;
} break;
case 9:{
TclDateHaveTime++;
TclDateHaveDate++;
TclDateHaveRel++;
} break;
case 11:{
TclDateHour = TclDatepvt[-1].Number;
TclDateMinutes = 0;
TclDateSeconds = 0;
TclDateMeridian = TclDatepvt[-0].Meridian;
} break;
case 12:{
TclDateHour = TclDatepvt[-3].Number;
TclDateMinutes = TclDatepvt[-1].Number;
TclDateSeconds = 0;
TclDateMeridian = TclDatepvt[-0].Meridian;
} break;
case 13:{
TclDateHour = TclDatepvt[-4].Number;
TclDateMinutes = TclDatepvt[-2].Number;
TclDateMeridian = MER24;
TclDateDSTmode = DSToff;
TclDateTimezone = (TclDatepvt[-0].Number % 100 + (TclDatepvt[-0].Number / 100) * 60);
} break;
case 14:{
TclDateHour = TclDatepvt[-5].Number;
TclDateMinutes = TclDatepvt[-3].Number;
TclDateSeconds = TclDatepvt[-1].Number;
TclDateMeridian = TclDatepvt[-0].Meridian;
} break;
case 15:{
TclDateHour = TclDatepvt[-6].Number;
TclDateMinutes = TclDatepvt[-4].Number;
TclDateSeconds = TclDatepvt[-2].Number;
TclDateMeridian = MER24;
TclDateDSTmode = DSToff;
TclDateTimezone = (TclDatepvt[-0].Number % 100 + (TclDatepvt[-0].Number / 100) * 60);
} break;
case 16:{
TclDateTimezone = TclDatepvt[-1].Number;
TclDateDSTmode = DSTon;
} break;
case 17:{
TclDateTimezone = TclDatepvt[-0].Number;
TclDateDSTmode = DSToff;
} break;
case 18:{
TclDateTimezone = TclDatepvt[-0].Number;
TclDateDSTmode = DSTon;
} break;
case 19:{
TclDateDayOrdinal = 1;
TclDateDayNumber = TclDatepvt[-0].Number;
} break;
case 20:{
TclDateDayOrdinal = 1;
TclDateDayNumber = TclDatepvt[-1].Number;
} break;
case 21:{
TclDateDayOrdinal = TclDatepvt[-1].Number;
TclDateDayNumber = TclDatepvt[-0].Number;
} break;
case 22:{
TclDateDayOrdinal = TclDatepvt[-2].Number * TclDatepvt[-1].Number;
TclDateDayNumber = TclDatepvt[-0].Number;
} break;
case 23:{
TclDateDayOrdinal = 2;
TclDateDayNumber = TclDatepvt[-0].Number;
} break;
case 24:{
TclDateMonth = TclDatepvt[-2].Number;
TclDateDay = TclDatepvt[-0].Number;
} break;
case 25:{
TclDateMonth = TclDatepvt[-4].Number;
TclDateDay = TclDatepvt[-2].Number;
TclDateYear = TclDatepvt[-0].Number;
} break;
case 26:{
TclDateYear = TclDatepvt[-0].Number / 10000;
TclDateMonth = (TclDatepvt[-0].Number % 10000)/100;
TclDateDay = TclDatepvt[-0].Number % 100;
} break;
case 27:{
TclDateDay = TclDatepvt[-4].Number;
TclDateMonth = TclDatepvt[-2].Number;
TclDateYear = TclDatepvt[-0].Number;
} break;
case 28:{
TclDateMonth = TclDatepvt[-2].Number;
TclDateDay = TclDatepvt[-0].Number;
TclDateYear = TclDatepvt[-4].Number;
} break;
case 29:{
TclDateMonth = TclDatepvt[-1].Number;
TclDateDay = TclDatepvt[-0].Number;
} break;
case 30:{
TclDateMonth = TclDatepvt[-3].Number;
TclDateDay = TclDatepvt[-2].Number;
TclDateYear = TclDatepvt[-0].Number;
} break;
case 31:{
TclDateMonth = TclDatepvt[-0].Number;
TclDateDay = TclDatepvt[-1].Number;
} break;
case 32:{
TclDateMonth = 1;
TclDateDay = 1;
TclDateYear = EPOCH;
} break;
case 33:{
TclDateMonth = TclDatepvt[-1].Number;
TclDateDay = TclDatepvt[-2].Number;
TclDateYear = TclDatepvt[-0].Number;
} break;
case 34:{
if (TclDatepvt[-1].Number != HOUR(- 7)) YYABORT;
TclDateYear = TclDatepvt[-2].Number / 10000;
TclDateMonth = (TclDatepvt[-2].Number % 10000)/100;
TclDateDay = TclDatepvt[-2].Number % 100;
TclDateHour = TclDatepvt[-0].Number / 10000;
TclDateMinutes = (TclDatepvt[-0].Number % 10000)/100;
TclDateSeconds = TclDatepvt[-0].Number % 100;
} break;
case 35:{
if (TclDatepvt[-5].Number != HOUR(- 7)) YYABORT;
TclDateYear = TclDatepvt[-6].Number / 10000;
TclDateMonth = (TclDatepvt[-6].Number % 10000)/100;
TclDateDay = TclDatepvt[-6].Number % 100;
TclDateHour = TclDatepvt[-4].Number;
TclDateMinutes = TclDatepvt[-2].Number;
TclDateSeconds = TclDatepvt[-0].Number;
} break;
case 36:{
TclDateYear = TclDatepvt[-1].Number / 10000;
TclDateMonth = (TclDatepvt[-1].Number % 10000)/100;
TclDateDay = TclDatepvt[-1].Number % 100;
TclDateHour = TclDatepvt[-0].Number / 10000;
TclDateMinutes = (TclDatepvt[-0].Number % 10000)/100;
TclDateSeconds = TclDatepvt[-0].Number % 100;
} break;
case 37:{
/*
* Offset computed year by -377 so that the returned years will
* be in a range accessible with a 32 bit clock seconds value
*/
TclDateYear = TclDatepvt[-2].Number/1000 + 2323 - 377;
TclDateDay = 1;
TclDateMonth = 1;
TclDateRelDay += ((TclDatepvt[-2].Number%1000)*(365 + IsLeapYear(TclDateYear)))/1000;
TclDateRelSeconds += TclDatepvt[-0].Number * 144 * 60;
} break;
case 38:{ *TclDateRelPointer += TclDatepvt[-3].Number * TclDatepvt[-2].Number * TclDatepvt[-1].Number * TclDatepvt[-0].Number; } break;
case 39:{ *TclDateRelPointer += TclDatepvt[-2].Number * TclDatepvt[-1].Number * TclDatepvt[-0].Number; } break;
case 40:{ *TclDateRelPointer += TclDatepvt[-0].Number; } break;
case 41:{ *TclDateRelPointer += TclDatepvt[-1].Number * TclDatepvt[-0].Number; } break;
case 42:{ *TclDateRelPointer += TclDatepvt[-1].Number * TclDatepvt[-0].Number; } break;
case 43:{ TclDateval.Number = -1; } break;
case 44:{ TclDateval.Number = 1; } break;
case 45:{ TclDateval.Number = TclDatepvt[-0].Number; TclDateRelPointer = &TclDateRelSeconds; } break;
case 46:{ TclDateval.Number = TclDatepvt[-0].Number; TclDateRelPointer = &TclDateRelDay; } break;
case 47:{ TclDateval.Number = TclDatepvt[-0].Number; TclDateRelPointer = &TclDateRelMonth; } break;
case 48:{ TclDateval.Number = -1; } break;
case 49:{ TclDateval.Number = 1; } break;
case 50:{
if (TclDateHaveTime && TclDateHaveDate && !TclDateHaveRel) {
TclDateYear = TclDatepvt[-0].Number;
} else {
TclDateHaveTime++;
if (TclDatepvt[-0].Number < 100) {
TclDateHour = TclDatepvt[-0].Number;
TclDateMinutes = 0;
} else {
TclDateHour = TclDatepvt[-0].Number / 100;
TclDateMinutes = TclDatepvt[-0].Number % 100;
}
TclDateSeconds = 0;
TclDateMeridian = MER24;
}
} break;
case 51:{
TclDateval.Meridian = MER24;
} break;
case 52:{
TclDateval.Meridian = TclDatepvt[-0].Meridian;
} break;
}
goto TclDatestack; /* reset registers in driver code */
}
|