*** INSTALL Tue Dec 3 14:20:00 1996 --- INSTALL Fri Dec 20 10:42:52 1996 *************** *** 36,43 **** /usr/local/man/man3/Date::Manip.3 ! Once it is installed, you can run the "runtests" command in the "t" ! directory to make sure everything works. TESTS --- 36,42 ---- /usr/local/man/man3/Date::Manip.3 ! To test it, cd to the "t" directory and run the "runtests" command. TESTS *************** *** 49,51 **** --- 48,71 ---- that were supposed to be the same but aren't because a measurable amount of time passed between determining the time in two different ways). I will try to get any bugs out of the test suite quickly. + + There are a few things which will almost always cause problems. If you + modify any of the default options in Manip.pm before running tests, some + tests will probably fail. Also, if you modify the DateManip.cnf file, + tests may fail. To get around this, you should probably run the following + sequence of commands using an UNMODIFIED version of Date::Manip. + + perl Makefile.PL + make + make test + + If all the tests pass, you're fine, so proceed with the installation. Modify + any defaults in Manip.pm you want and then type: + + make + make install + + So, you build Date::Manip twice. Once using an unmodified version which is + used only to run the tests and a second time using any local modifications + which you will then install. + *** Manip.pm Sat Jan 11 10:38:07 1997 --- Manip.pm Fri Jan 17 12:44:10 1997 *************** *** 322,336 **** # ParseDateDelta now returns "" rather than "+0:0:0:0:0:0" when there is # an error. # Fixed a bug where "today" was not converted to the correct timezone. # Incompatibilities or changes from older version # %s format changed # By default, the signs of stored in a different format (only minimum # number of signs stored). Backwards compatible if you set DeltaSigns=1. # Date_Init arguments changed (old method supported but depreciated) ! $Date::Manip::Version="5.07"; ######################################################################## # TODO --- 322,345 ---- # ParseDateDelta now returns "" rather than "+0:0:0:0:0:0" when there is # an error. # Fixed a bug where "today" was not converted to the correct timezone. + # + # Version 5.07p2 01/03/97 + # Added lots of timezone abbreviations. + # Can now understand PST8PDT type zones (but only in Date_TimeZone). + # Fixed some tests (good for another year). + # Fixed a bug where a delta component of "-0" would mess things up. + # Reported by Nigel Chapman . # Incompatibilities or changes from older version + # + # In 5.07 # %s format changed # By default, the signs of stored in a different format (only minimum # number of signs stored). Backwards compatible if you set DeltaSigns=1. # Date_Init arguments changed (old method supported but depreciated) ! $Date::Manip::Version="5.07.02"; ######################################################################## # TODO *************** *** 417,422 **** --- 426,440 ---- ### MISC + # Add to ParseDate (Rob Perelman) + # dofw (Friday == &Date_GetNext("today","friday",0,"00:00:00") + + # Document how you need to use the stock .DateManip.cnf file when running + # the tests. Make sure that TZ=EST is set in the sample one. + + # Add a bunch of dayofyear formats (dayofyear is a 3 digit field that + # replaces day/mon or mon/day. + # Fix Date::Manip:: Future,Past,Next,Prev # Clean up ParseDate *************** *** 441,448 **** # Check Swedish/French special characters. - # Add more timezone names. - # Change EXPORT to EXPORT_OK (message 9 by Peter Bray) # Use POSIX::tzname --- 459,464 ---- *************** *** 2066,2073 **** # $ZoneExp: regular expression # %Zone : all zones with their translation # $Zone : the current time zone ! $zonesrfc="ut +0000 utc +0000 gmt +0000 est -0500 edt -0400 cst -0600 ". ! "cdt -0500 mst -0700 mdt -0600 pst -0800 pdt -0700 z +0000 ". "a -0100 b -0200 c -0300 d -0400 e -0500 f -0600 g -0700 h -0800 ". "i -0900 k -1000 l -1100 m -1200 ". "n +0100 o +0200 p +0300 q +0400 r +0500 s +0600 t +0700 u +0800 ". --- 2082,2154 ---- # $ZoneExp: regular expression # %Zone : all zones with their translation # $Zone : the current time zone ! $zonesrfc= ! "US/Pacific -0800 ". ! "US/Mountain -0700 ". ! "US/Central -0600 ". ! "US/Eastern -0500 ". ! "idlw -1200 ". # International Date Line West ! "nt -1100 ". # Nome ! "hst -1000 ". # Hawaii Standard ! "cat -1000 ". # Central Alaska ! "ahst -1000 ". # Alaska-Hawaii Standard ! "yst -0900 ". # Yukon Standard ! "hdt -0900 ". # Hawaii Daylight ! "ydt -0800 ". # Yukon Daylight ! "pst -0800 ". # Pacific Standard ! "pdt -0700 ". # Pacific Daylight ! "mst -0700 ". # Mountain Standard ! "mdt -0600 ". # Mountain Daylight ! "cst -0600 ". # Central Standard ! "cdt -0500 ". # Central Daylight ! "est -0500 ". # Eastern Standard ! "edt -0400 ". # Eastern Daylight ! "ast -0400 ". # Atlantic Standard ! #"nst -0330 ". # Newfoundland Standard nst=North Sumatra +0630 ! "nft -0330 ". # Newfoundland ! #"gst -0300 ". # Greenland Standard gst=Guam Standard +1000 ! "bst -0300 ". # Brazil Standard bst=British Summer +0100 ! "adt -0300 ". # Atlantic Daylight ! "ndt -0230 ". # Newfoundland Daylight ! "at -0200 ". # Azores ! "wat -0100 ". # West Africa ! "gmt +0000 ". # Greenwich Mean ! "ut +0000 ". # Universal (Coordinated) ! "utc +0000 ". # Universal (Coordinated) ! "wet +0000 ". # Western European ! "cet +0100 ". # Central European ! "fwt +0100 ". # French Winter ! "met +0100 ". # Middle European ! "mewt +0100 ". # Middle European Winter ! "swt +0100 ". # Swedish Winter ! #"bst +0100 ". # British Summer bst=Brazil standard -0300 ! "eet +0200 ". # Eastern Europe, USSR Zone 1 ! "fst +0200 ". # French Summer ! "mest +0200 ". # Middle European Summer ! "sst +0200 ". # Swedish Summer sst=South Sumatra +0700 ! "bt +0300 ". # Baghdad, USSR Zone 2 ! "it +0330 ". # Iran ! "zp4 +0400 ". # USSR Zone 3 ! "zp5 +0500 ". # USSR Zone 4 ! "ist +0530 ". # Indian Standard ! "zp6 +0600 ". # USSR Zone 5 ! "nst +0630 ". # North Sumatra nst=Newfoundland Std -0330 ! "wast +0700 ". # West Australian Standard ! #"sst +0700 ". # South Sumatra, USSR Zone 6 sst=Swedish Summer +0200 ! "jt +0730 ". # Java (3pm in Cronusland!) ! "cct +0800 ". # China Coast, USSR Zone 7 ! "wadt +0800 ". # West Australian Daylight ! "jst +0900 ". # Japan Standard, USSR Zone 8 ! "cast +0930 ". # Central Australian Standard ! "east +1000 ". # Eastern Australian Standard ! "gst +1000 ". # Guam Standard, USSR Zone 9 gst=Greenland Std -0300 ! "cadt +1030 ". # Central Australian Daylight ! "eadt +1100 ". # Eastern Australian Daylight ! "idle +1200 ". # International Date Line East ! "nzst +1200 ". # New Zealand Standard ! "nzt +1200 ". # New Zealand ! "nzdt +1300 ". # New Zealand Daylight ! "z +0000 ". "a -0100 b -0200 c -0300 d -0400 e -0500 f -0600 g -0700 h -0800 ". "i -0900 k -1000 l -1100 m -1200 ". "n +0100 o +0200 p +0300 q +0400 r +0500 s +0600 t +0700 u +0800 ". *************** *** 3184,3189 **** --- 3265,3271 ---- my($name,$passwd,$uid,$gid,$quota,$comment,$gcos,$dir,$shell)=(); # ~USER/a =~ ~ USER /a if ($file =~ m% ^~ ([^\/]*) (\/.*)? %x) { + return "" if ($^O =~ /MacOS/); ($user,$file)=($1,$2); $user="" if (! defined $user); $file="" if (! defined $file); *************** *** 3617,3628 **** that, the time zone is never used. Once converted, information about the time zone is no longer stored or used. ! Timezones which are currently understood are: ! Universal: GMT, UT, UTC ! US zones : EST, EDT, CST, CDT, MST, MDT, PST, PDT ! Military : A to Z (except J) ! Other : +HHMM or -HHMM ! Others will be added in the future. Spaces in the date are almost always optional when there is absolutely no ambiguity if they are not present. Years can be entered as 2 or 4 digits, --- 3699,3706 ---- that, the time zone is never used. Once converted, information about the time zone is no longer stored or used. ! See the section below on TIMEZONEs for a list of all defined timezone ! names. Spaces in the date are almost always optional when there is absolutely no ambiguity if they are not present. Years can be entered as 2 or 4 digits, *************** *** 3735,3742 **** will not (because Jul 16, 1996 is Tuesday, not Wednesday). Note that depending on where the weekday comes, it may give unexpected results when used in array context. For example, the date ("Jun","25","Sun","1990") ! would return June 25 of the current year since only Jun 25, 1990 is not ! Sunday. The times "12:00 am", "12:00 pm", and "midnight" are not well defined. For good or bad, I use the following convention in Date::Manip: --- 3813,3819 ---- will not (because Jul 16, 1996 is Tuesday, not Wednesday). Note that depending on where the weekday comes, it may give unexpected results when used in array context. For example, the date ("Jun","25","Sun","1990") ! would return June 25 of the current year since Jun 25, 1990 is not Sunday. The times "12:00 am", "12:00 pm", and "midnight" are not well defined. For good or bad, I use the following convention in Date::Manip: *************** *** 3744,3756 **** noon = 12:00pm = 12:00:00 and the day goes from 00:00:00 to 23:59:59. In otherwords, midnight is the beginning of a day rather than the end of one. At midnight on July 5, July ! 5 has just begun. ! The date returned is YYYYMMDDHH:MM:SS. The advantage of this time ! format is that two times can be compared using simple string ! comparisons to find out which is later. Also, it is readily understood ! by a human. Alternately, the form YYYYMMDDHHMMSS can be used if that ! is more conveniant. See Date_Init below. =item UnixDate --- 3821,3833 ---- noon = 12:00pm = 12:00:00 and the day goes from 00:00:00 to 23:59:59. In otherwords, midnight is the beginning of a day rather than the end of one. At midnight on July 5, July ! 5 has just begun. The time 24:00:00 is NOT allowed. ! The format of the date returned is YYYYMMDDHH:MM:SS. The advantage of this ! time format is that two times can be compared using simple string comparisons ! to find out which is later. Also, it is readily understood by a human. ! Alternate forms can be used if that is more conveniant. See Date_Init below ! and the config variable Internal. =item UnixDate *************** *** 4136,4149 **** $tz=&Date_TimeZone ! This returns a timezone. It looks in the following places for a ! timezone in the following order: $ENV{TZ} $main::TZ /etc/TIMEZONE date '+%Z' ! If it's not found in any of those places, GMT is returned. ! Obviously, this does not guarantee the correct timezone. =item Date_Init --- 4213,4232 ---- $tz=&Date_TimeZone ! This returns a timezone. It looks in the following places for a timezone ! in the following order: ! $ENV{TZ} $main::TZ /etc/TIMEZONE date '+%Z' ! ! If it's not found in any of those places, an error occurs: ! ! ERROR: Date::Manip unable to determine TimeZone. ! ! Date_TimeZone is able to read zones of the format PST8PDT (see TIMEZONES ! documentation below). =item Date_Init *************** *** 4205,4216 **** Returns the version of Date::Manip. =back =head1 BUSINESS MODE Anyone using business mode is going to notice a few quirks about it which should be explained. When I designed business mode, I had in mind what UPS tells me when they say 2 day delivery, or what the local business which ! promises 1 business day turnaround. If you do a business day calculation (with the workday set to 9:00-5:00), you will get the following: --- 4288,4393 ---- Returns the version of Date::Manip. =back + =head1 TIMEZONES + + The following timezone names are currently understood (and can be used in + parsing dates). These are zones defined in RFC 822. + + Universal: GMT, UT + US zones : EST, EDT, CST, CDT, MST, MDT, PST, PDT + Military : A to Z (except J) + Other : +HHMM or -HHMM + + In addition, the following timezone abbreviations are also accepted. In a + few cases, the same abbreviation is used for two different timezones (for + example, NST stands for Newfoundland Standare -0330 and North Sumatra +0630). + In these cases, only 1 of the two is available. The one preceded by a "#" + sign is NOT available. + + IDLW -1200 International Date Line West + NT -1100 Nome + HST -1000 Hawaii Standard + CAT -1000 Central Alaska + AHST -1000 Alaska-Hawaii Standard + YST -0900 Yukon Standard + HDT -0900 Hawaii Daylight + YDT -0800 Yukon Daylight + PST -0800 Pacific Standard + PDT -0700 Pacific Daylight + MST -0700 Mountain Standard + MDT -0600 Mountain Daylight + CST -0600 Central Standard + CDT -0500 Central Daylight + EST -0500 Eastern Standard + EDT -0400 Eastern Daylight + AST -0400 Atlantic Standard + #NST -0330 Newfoundland Standard nst=North Sumatra +0630 + NFT -0330 Newfoundland + #GST -0300 Greenland Standard gst=Guam Standard +1000 + BST -0300 Brazil Standard bst=British Summer +0100 + ADT -0300 Atlantic Daylight + NDT -0230 Newfoundland Daylight + AT -0200 Azores + WAT -0100 West Africa + GMT +0000 Greenwich Mean + UT +0000 Universal (Coordinated) + UTC +0000 Universal (Coordinated) + WET +0000 Western European + CET +0100 Central European + FWT +0100 French Winter + MET +0100 Middle European + MEWT +0100 Middle European Winter + SWT +0100 Swedish Winter + #BST +0100 British Summer bst=Brazil standard -0300 + EET +0200 Eastern Europe, USSR Zone 1 + FST +0200 French Summer + MEST +0200 Middle European Summer + SST +0200 Swedish Summer sst=South Sumatra +0700 + BT +0300 Baghdad, USSR Zone 2 + IT +0330 Iran + ZP4 +0400 USSR Zone 3 + ZP5 +0500 USSR Zone 4 + IST +0530 Indian Standard + ZP6 +0600 USSR Zone 5 + NST +0630 North Sumatra nst=Newfoundland Std -0330 + WAST +0700 West Australian Standard + #SST +0700 South Sumatra, USSR Zone 6 sst=Swedish Summer +0200 + JT +0730 Java (3pm in Cronusland!) + CCT +0800 China Coast, USSR Zone 7 + WADT +0800 West Australian Daylight + JST +0900 Japan Standard, USSR Zone 8 + CAST +0930 Central Australian Standard + EAST +1000 Eastern Australian Standard + GST +1000 Guam Standard, USSR Zone 9 gst=Greenland Std -0300 + CADT +1030 Central Australian Daylight + EADT +1100 Eastern Australian Daylight + IDLE +1200 International Date Line East + NZST +1200 New Zealand Standard + NZT +1200 New Zealand + NZDT +1300 New Zealand Daylight + + US/Pacific -0800 + US/Mountain -0700 + US/Central -0600 + US/Eastern -0500 + + Others can be added in the future upon request. + + DateManip needs to be able to determine the local timezone. It can do this + by certain things such as the TZ environment variable (see Date_TimeZone + documentation above) or useing the TZ config variable (described below). + In either case, the timezone can be of the form STD#DST (for example + EST5EDT). Both the standard and daylight savings time abbreviations must + be in the table above in order for this to work. Also, this form may NOT + be used when parsing a date as there is no way to determine whether the + date is in daylight saving time or not. + =head1 BUSINESS MODE Anyone using business mode is going to notice a few quirks about it which should be explained. When I designed business mode, I had in mind what UPS tells me when they say 2 day delivery, or what the local business which ! promises 1 business day turnaround really means. If you do a business day calculation (with the workday set to 9:00-5:00), you will get the following: *************** *** 4251,4256 **** --- 4428,4438 ---- from Monday 17:00 to Tuesday 9:00), but Monday at 9:01 + 1 business day = Tuesday at 9:01 which is exact. + If this is not exactly what you have in mind, don't use the DateCalc + routine. You can probably get whatever behavior you want using the + routines Date_IsWorkDay, Date_NextWorkDay, and Date_PrevWorkDay described + above. + =head1 CUSTOMIZING DATE::MANIP There are a number of variables which can be used to customize the way *************** *** 4369,4382 **** Date::Manip is able to understand some timezones (and others will be added in the future). At the very least, all zones defined in RFC 822 are ! supported. Currently supported zones include: ! ! Universal: GMT, UT, UTC ! US zones : EST, EDT, CST, CDT, MST, MDT, PST, PDT ! Military : A to Z (except J) ! Other : +HHMM or -HHMM ! ! and all timezones should be entered as one of the above. Date::Manip must be able to determine the timezone the user is in. It does this by looking in the following places: --- 4551,4558 ---- Date::Manip is able to understand some timezones (and others will be added in the future). At the very least, all zones defined in RFC 822 are ! supported. Currently supported zones are listed in the TIMEZONES section ! above and all timezones should be entered as one of them. Date::Manip must be able to determine the timezone the user is in. It does this by looking in the following places: *************** *** 4386,4394 **** the file /etc/TIMEZONE the 5th element of the unix "date" command (not available on NT machines) ! At least one of these must contain a timezone in one of the supported forms. ! If it doesn't, the TZ variable must be set to contain the local timezone ! in the appropriate form. The TZ variable will override the other methods of determining the timezone, so it should probably be left blank if any of the other methods --- 4562,4570 ---- the file /etc/TIMEZONE the 5th element of the unix "date" command (not available on NT machines) ! At least one of these should contain a timezone in one of the supported ! forms. If it doesn't, the TZ variable must be set to contain the local ! timezone in the appropriate form. The TZ variable will override the other methods of determining the timezone, so it should probably be left blank if any of the other methods *** t/date.t Mon Dec 9 21:23:00 1996 --- t/date.t Fri Jan 3 14:14:45 1997 *************** *** 9,15 **** require "t/test.pl"; } ! print "1..197\n" if (! $runtests); open(IN,"date +%Y%m%d%H:%M:%S |"); $today=; --- 9,15 ---- require "t/test.pl"; } ! print "1..198\n" if (! $runtests); open(IN,"date +%Y%m%d%H:%M:%S |"); $today=; *************** *** 77,84 **** # Test weeks 22nd sunday ! >May safely fail in 1997. ! 1996060200:00:00 twenty-second sunday 1996 1996060200:00:00 --- 77,84 ---- # Test weeks 22nd sunday ! >May safely fail in 1998. ! 1997060100:00:00 twenty-second sunday 1996 1996060200:00:00 *************** *** 87,110 **** 1996060200:00:00 22nd sunday 12:00 ! >May safely fail in 1997. ! 1996060212:00:00 22nd sunday at 12:00 ! >May safely fail in 1997. ! 1996060212:00:00 22nd sunday at 12:00 EST ! >May safely fail in 1997 or when not in EST. ! 1996060212:00:00 22nd sunday in 1996 at 12:00 EST ! >May safely fail in 1997 or when not in EST. 1996060212:00:00 sunday wk 22 ! >May safely fail in 1997. ! 1996060200:00:00 sunday week twenty-second 1996 1996060200:00:00 --- 87,110 ---- 1996060200:00:00 22nd sunday 12:00 ! >May safely fail in 1998. ! 1997060112:00:00 22nd sunday at 12:00 ! >May safely fail in 1998. ! 1997060112:00:00 22nd sunday at 12:00 EST ! >May safely fail in 1998 or when not in EST. ! 1997060112:00:00 22nd sunday in 1996 at 12:00 EST ! >May safely fail when not in EST. 1996060212:00:00 sunday wk 22 ! >May safely fail in 1998. ! 1997060100:00:00 sunday week twenty-second 1996 1996060200:00:00 *************** *** 113,136 **** 1996060200:00:00 sunday wks 22 12:00 ! >May safely fail in 1997. ! 1996060212:00:00 sunday week 22 at 12:00 ! >May safely fail in 1997. ! 1996060212:00:00 sunday week 22 at 12:00 EST ! >May safely fail in 1997 or when not in EST. ! 1996060212:00:00 sunday week 22 in 1996 at 12:00 EST ! >May safely fail in 1997 or when not in EST. 1996060212:00:00 sunday 22 wk ! >May safely fail in 1997. ! 1996060200:00:00 sunday twenty-second week 1996 1996060200:00:00 --- 113,136 ---- 1996060200:00:00 sunday wks 22 12:00 ! >May safely fail in 1998. ! 1997060112:00:00 sunday week 22 at 12:00 ! >May safely fail in 1998. ! 1997060112:00:00 sunday week 22 at 12:00 EST ! >May safely fail in 1998 or when not in EST. ! 1997060112:00:00 sunday week 22 in 1996 at 12:00 EST ! >May safely fail when not in EST. 1996060212:00:00 sunday 22 wk ! >May safely fail in 1998. ! 1997060100:00:00 sunday twenty-second week 1996 1996060200:00:00 *************** *** 139,157 **** 1996060200:00:00 sunday 22 wks 12:00 ! >May safely fail in 1997. ! 1996060212:00:00 sunday 22 week at 12:00 ! >May safely fail in 1997. ! 1996060212:00:00 sunday 22 week at 12:00 EST ! >May safely fail in 1997 or when not in EST. ! 1996060212:00:00 sunday 22 week in 1996 at 12:00 EST ! >May safely fail in 1997 or when not in EST. 1996060212:00:00 # Tests 'which day in mon' formats --- 139,157 ---- 1996060200:00:00 sunday 22 wks 12:00 ! >May safely fail in 1998. ! 1997060112:00:00 sunday 22 week at 12:00 ! >May safely fail in 1998. ! 1997060112:00:00 sunday 22 week at 12:00 EST ! >May safely fail in 1998 or when not in EST. ! 1997060112:00:00 sunday 22 week in 1996 at 12:00 EST ! >May safely fail when not in EST. 1996060212:00:00 # Tests 'which day in mon' formats *************** *** 159,173 **** 1996062500:00:00 last tueSday of June ! >Needs to be fixed in 1997. ! 1996062500:00:00 first tue in Jun 1996 1996060400:00:00 1st tue in June ! >Needs to be fixed in 1997. ! 1996060400:00:00 3rd tuesday in Jun 96 1996061800:00:00 --- 159,173 ---- 1996062500:00:00 last tueSday of June ! >Needs to be fixed in 1998. ! 1997062400:00:00 first tue in Jun 1996 1996060400:00:00 1st tue in June ! >Needs to be fixed in 1998. ! 1997060300:00:00 3rd tuesday in Jun 96 1996061800:00:00 *************** *** 185,190 **** --- 185,194 ---- >May safely fail if not in EST timezone 1996061903:30:00 + 3rd tuesday in Jun 96 at 10:30 pm CET + >May safely fail if not in EST timezone + 1996061904:30:00 + # Tests YYMMDD time 1996061800:00:00 1996061800:00:00 *************** *** 675,684 **** # Test ctime formats DeCember 10 05:30:12 1996 ! $currY 121005:30:12 DeC10 05:30:12 96 ! $currY 121005:30:12 "; --- 679,688 ---- # Test ctime formats DeCember 10 05:30:12 1996 ! 1996121005:30:12 DeC10 05:30:12 96 ! 1996121005:30:12 "; *** t/date_french.t Tue Dec 10 12:23:00 1996 --- t/date_french.t Fri Jan 3 14:20:26 1997 *************** *** 39,51 **** 1996062500:00:00 dernier mar de Juin ! 1996062500:00:00 premier mar de Juin 1996 1996060400:00:00 premier mar de Juin ! 1996060400:00:00 3e mardi de Juin 96 1996061800:00:00 --- 39,51 ---- 1996062500:00:00 dernier mar de Juin ! 1997062400:00:00 premier mar de Juin 1996 1996060400:00:00 premier mar de Juin ! 1997060300:00:00 3e mardi de Juin 96 1996061800:00:00 *************** *** 85,91 **** 1965121012:00:00 Decembre/10/12:00 ! 1996121012:00:00 12:00Decembre10 1965 1965121012:00:00 --- 85,91 ---- 1965121012:00:00 Decembre/10/12:00 ! 1997121012:00:00 12:00Decembre10 1965 1965121012:00:00 *** t/delta_a.t Mon Dec 9 22:31:00 1996 --- t/delta_a.t Fri Jan 3 14:23:47 1997 *************** *** 9,15 **** require "t/test.pl"; } ! print "1..28\n" if (! $runtests); $deltas=" --- 9,15 ---- require "t/test.pl"; } ! print "1..30\n" if (! $runtests); $deltas=" *************** *** 98,103 **** --- 98,109 ---- +1:-1:-1:+1 +0:0:0:22:59:1 + + -0:1:+0:0:0:0 + -0:1:0:0:0:0 + + -0:1:+0:-0:0:0 + -0:1:0:0:0:0 "; print "Delta...\n";