www.ClassicTW.com
https://mail.black-squirrel.com/

date parsing snippet needed for the date on daily logs.
https://mail.black-squirrel.com/viewtopic.php?f=15&t=20368
Page 1 of 1

Author:  Parrothead [ Tue Feb 26, 2008 2:33 pm ]
Post subject:  date parsing snippet needed for the date on daily logs.

this is what i thru together but I have no way to test it.

Its for a news reader I wrote yesterday because the one thats out their doesnt work for my corpies.
btw I will release the rest of the code i soon as its debudded a little.

On another note anyone who wants to actually TEST new scripts should ICQ me.



Code:
:parse_date
cuttext $the_date $month 1 2
cuttext $the_date $day 4 2
cuttext $the_date $year 7 2

if ($day = "01")
goto :get_month_array

if ($month < 10)
setvar $month ($month - 1)
setvar $month ("0" & $month)
else
subtract $month 1
end

setvar $day $month_array[$month]
setvar $the_date ($month & "/" & $day & "/" & $year)
return
end

if ($day < 10)
setvar $day ($day - 1)
setvar $day ("0" & $day)
end
setvar $the_date ($month & "/" & ($day - 1) & "/" & $year)
return

:get_month_array
setvar $month_array[1] "31"
if ($year = "20")
setvar $month_array[2] "29"
else
setvar $month_array[2] "28"
end
setvar $month_array[3] "31"
setvar $month_array[4] "30"

setvar $month_array[5] "31"
setvar $month_array[6] "30"
setvar $month_array[7] "31"
setvar $month_array[8] "31"

setvar $month_array[9]  "30"
setvar $month_array[10] "31"
setvar $month_array[11] "30"
setvar $month_array[12] "31"
return

Author:  Promethius [ Tue Feb 26, 2008 9:06 pm ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

I know this type of detail isn't probably justified for a script, but to calculate a leap year:

If it is evenly divisible by 4 and not evenly divisible by 100, it is a leap year.

If it is evenly divisible by 4 and is also evenly divisible by 400, it is a leap year.

If it is evenly divisible by 4 and also evenly divisible by 100 and also evenly divisible by 400, it is a leap year.

However, if it is evenly divisible by 4 and also evenly divisible by 100 and not further evenly divisible by 400, then it is not a leap year.

It is also more of a pain than it is worth.

[Edit]I forgot to say the information above is from a website and I didn't get the URL for attribution[/EDIT]

Author:  V'Ger [ Tue Feb 26, 2008 10:23 pm ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

TWX doesn't have a MOD function does it?

Author:  Promethius [ Wed Feb 27, 2008 1:09 am ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

V'Ger wrote:
TWX doesn't have a MOD function does it?


Not that I am aware of. You would have to do a work around for it. I think you could use setprecision and then check the value - prob not 100% accurate that way.

Author:  LoneStar [ Thu Feb 28, 2008 7:26 am ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

Best way to work around it, is to make a simple subroutine that essentially does what computers do anyways..

10 MOD 4 = 2

Translated into TWX-Scripting:
Code:
# 10 MOD 4
setVar $DV 4
setVar $OP 10
gosub :Mod

echo "**" $remainder "**"
halt

:mod
setVar $remainder 0
setVar $PRE 0
setVar $PST 0
:again
setVar $PST $PRE
add $PRE $DV
if ($PRE < $OP)
goto :again
end
if ($PRE = $OP)
setVar $remainder 0
return
end
if ($PRE > $OP)
setVar $remainder ($OP - $PST)
return
end


..off the top of my head. someone can prob make a better routine.

Author:  V'Ger [ Thu Feb 28, 2008 9:41 am ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

Wow, that is far much easier than what I was trying. Thanks LS.

Author:  Promethius [ Thu Feb 28, 2008 1:08 pm ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

I like LoneStar's snippet for finding mod as it gives the actual value. The setprecision method would basically return if 10 mod 4 had a remainder and is not 100% accurate since accuracy is determined by the setprecison number:

# 10 mod 4

setVar $dv 4
setVar $op 10

setprecision 4
divide $op $dv
setVar $tmpOp $op
setprecision 0
multiply $tmpOp 1
setprecision 4

if ($tmpOp <> $op)
echo "**Remainder Exists: "
else
echo "**No remainder exists:"
end

echo "*$op = " $op " $tmpOp = " $tmpOp

Author:  ElderProphet [ Thu Feb 28, 2008 7:39 pm ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

You know I'm always up for a math or script challenge, so when a thread presents both... I can't resist.

setVar $numerator 10
setVar $denominator 4
setVar $mod ($numerator - ($denominator * ($numerator / $denominator)))
echo "*" $numerator " mod " $denominator " = " $mod "*"

And incidently, I did once write a routine that calculated the number of days since a given date, including proper leap year calculations, which I could possibly dig up if there is interest. It was originally written for fig/shield/hold calculations.

+EP+

Author:  Promethius [ Fri Feb 29, 2008 1:11 am ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

ElderProphet wrote:
You know I'm always up for a math or script challenge, so when a thread presents both... I can't resist.

setVar $numerator 10
setVar $denominator 4
setVar $mod ($numerator - ($denominator * ($numerator / $denominator)))
echo "*" $numerator " mod " $denominator " = " $mod "*"

And incidently, I did once write a routine that calculated the number of days since a given date, including proper leap year calculations, which I could possibly dig up if there is interest. It was originally written for fig/shield/hold calculations.

+EP+


Very nice indeed. I know there was interest some time back on calculating what the cost of figs/shields would be in a certain number of days. I don't think that was ever really addressed at least in regards to a twx script.

Author:  Maniac [ Fri Feb 29, 2008 3:27 am ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

You know I'm always up for a math or script challenge, so when a thread presents both... I can't resist.

setVar $numerator 10
setVar $denominator 4
setVar $mod ($numerator - ($denominator * ($numerator / $denominator)))
echo "*" $numerator " mod " $denominator " = " $mod "*"

And incidently, I did once write a routine that calculated the number of days since a given date, including proper leap year calculations, which I could possibly dig up if there is interest. It was originally written for fig/shield/hold calculations.

+EP+

Come on now EP

How hard is this ?
function CmdMOD(Script : TObject; Params : array of TCmdParam) : TCmdAction;
var
F1,
F2 : Integer;
begin
// CMD: MOD var <value>
// Modula a value to a variable

ConvertToFloat(Params[0].Value, TScript(Script).DecimalPrecision, F1);
ConvertToFloat(Params[1].Value, TScript(Script).DecimalPrecision, F2);
if (TScript(Script).DecimalPrecision = 0) then
Params[0].Value := IntToStr(Trunc(F1 MOD F2))
else
Params[0].Value := FormatFloatToStr(F1 MOD F2, TScript(Script).DecimalPrecision);

Result := caNone;
end;

Hacked in less than 5 minutes straight out of your source code. This particular function used was the ADD. All I changed was the operator from + to MOD.
But I have not included a check for ZERO as this could throw a Division by zero error.

Maniac AKA StudleyManiac AKA Missing In Action due to internet connectivity problems.

Author:  Maniac [ Fri Feb 29, 2008 3:39 am ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

After thinking further down the road, about how it might be possible to change/add more commands to TWXProxy Xide has done most of the work.
The previous example I posted should NOT use the "Add" operand it should use the Divide command format as he already checks for division by zero.

Yes I know that a MOD command would primarily be used on integers but for a quick 5 minute fix I think the code posted above could be integrated into TWXProxy just by adding the appropiate AddCommand(cmdMOD......) to the TList that Xide/EP uses for lookup.

If it works already with a certain data type and all you change is the operator then the only bugs you might introduce will be in the implementation of adding a new Command to the list.

Unless your like me and pick the wrong example to begin with....

Author:  Parrothead [ Sat Mar 01, 2008 3:09 pm ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

hey everyone ...thanks for Not answering the question and/or providing and useful info.

Author:  Promethius [ Sat Mar 01, 2008 7:53 pm ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

Parrothead wrote:
hey everyone ...thanks for Not answering the question and/or providing and useful info.


Sorry PH, my fault on seeing the part in your script that caused me to post about the calculation for leap years. Kinda hijacked the thread a bit.

Author:  ElderProphet [ Sun Mar 02, 2008 7:30 pm ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

You didn't actually ask a question.

Below is my absolute date script, which may prove useful. NB: directions for use as an include are in the comments.

+EP+
Code:
# AbsoluteDate.ts by ElderProphet
#
# Here is the year basis:
# Normal year = 365 days
# 4 Years = 1461, which is (365*4)+1
# 100 Years = 36524, which is (1461*25)-1
# 400 Years = 146097, which is (36524*4)+1
#
# For include usage, set $absoluteDate~date month/day/year, E.g. 2/29/2004
#   then gosub :absoluteDate~absDate
#   The absolute date will be $absoluteDate~absDate

:start
echo ANSI_15 "*Enter Date (mm/dd/yyyy), or just press ENTER to calculate today's Absolute Date."
getConsoleInput $input
if ($input = "") or ($input = 0)
   getDate $date
else
   setVar $date $input
end
gosub :absDate
echo ANSI_10 "*" $input " : " ANSI_11 "AbsoluteDate=" $absDate "*"
goto :start

:absDate
setVar $absDate 0
replaceText $date "/" " "
getWord $date $month 1
getWord $date $day 2
getWord $date $year 3

# Determine the number of days for all completed years
while ($year > 400)
   add $absDate 146097
   subtract $year 400
end
while ($year > 100)
   add $absDate 36524
   subtract $year 100
end
while ($year > 4)
   add $absDate 1461
   subtract $year 4
end
# And for leap years, before and after 2/29
if ($year = 4) and ($month > 2)
   add $absDate 1
end
while ($year > 0)
   add $absDate 365
   subtract $year 1
end

# Determine the number of days for all completed months
if ($month = 2)
   add $absDate 31
elseif ($month = 3)
   add $absDate 59
elseif ($month = 4)
   add $absDate 90
elseif ($month = 5)
   add $absDate 120
elseif ($month = 6)
   add $absDate 151
elseif ($month = 7)
   add $absDate 181
elseif ($month = 8)
   add $absDate 212
elseif ($month = 9)
   add $absDate 243
elseif ($month = 10)
   add $absDate 273
elseif ($month = 11)
   add $absDate 304
elseif ($month = 12)
   add $absDate 334
end

# Add the days of the current month
add $absDate $day
return

Author:  the reverend [ Mon Mar 03, 2008 3:57 pm ]
Post subject:  Re: date parsing snippet needed for the date on daily logs.

ElderProphet wrote:
You didn't actually ask a question.


QFT

Page 1 of 1 All times are UTC - 5 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/