!~Filename~:! TPARSE !& Setup TPARSE Library:! -4fo..QTimezone GMT Offsetm.vTimezone GMT Offset 0fo..QTimezone EDT Offsetm.vTimezone EDT Offset 0fo..QTimezone EST Offsetm.vTimezone EST Offset 1fo..QTimezone CDT Offsetm.vTimezone CDT Offset 1fo..QTimezone CST Offsetm.vTimezone CST Offset 2fo..QTimezone MDT Offsetm.vTimezone MDT Offset 2fo..QTimezone MST Offsetm.vTimezone MST Offset 3fo..QTimezone PDT Offsetm.vTimezone PDT Offset 3fo..QTimezone PST Offsetm.vTimezone PST Offset :i*Mondaym.vDay Monday Value :i*Mondaym.vDay Mon Value :i*Tuesdaym.vDay Tuesday Value :i*Tuesdaym.vDay Tue Value :i*Tuesdaym.vDay Tues Value :i*Wednesdaym.vDay Wednesday Value :i*Wednesdaym.vDay Wed Value :i*Thursdaym.vDay Thursday Value :i*Thursdaym.vDay Thu Value :i*Thursdaym.vDay Thurs Value :i*Fridaym.vDay Friday Value :i*Fridaym.vDay Fri Value :i*Saturdaym.vDay Saturday Value :i*Saturdaym.vDay Sat Value :i*Sundaym.vDay Sunday Value :i*Sundaym.vDay Sun Value 1m.vMonth January Value 1m.vMonth Jan Value :i*Januarym.vMonth 1 Name 2m.vMonth February Value 2m.vMonth Feb Value :i*Februarym.vMonth 2 Name 3m.vMonth March Value 3m.vMonth Mar Value :i*Marchm.vMonth 3 Name 4m.vMonth April Value 4m.vMonth Apr Value :i*Aprilm.vMonth 4 Name 5m.vMonth May Value :i*Maym.vMonth 5 Name 6m.vMonth June Value 6m.vMonth Jun Value :i*Junem.vMonth 6 Name 7m.vMonth July Value 7m.vMonth Jul Value :i*Julym.vMonth 7 Name 8m.vMonth August Value 8m.vMonth Aug Value :i*Augustm.vMonth 8 Name 9m.vMonth September Value 9m.vMonth Sep Value 9m.vMonth Sept Value :i*Septemberm.vMonth 9 Name 10m.vMonth October Value 10m.vMonth Oct Value :i*Octoberm.vMonth 10 Name 11m.vMonth November Value 11m.vMonth Nov Value :i*Novemberm.vMonth 11 Name 12m.vMonth December Value 12m.vMonth Dec Value :i*Decemberm.vMonth 12 Name !& Parse Date:! ff"nf[bbindwg()j' [0[1[2[3[S[M[H[D[O[Y[Q[W[P[N[X[R -1uS-1uM-1uH -1uD-1uO-1uY -1uN 0uX0uQ0uR0uW !Main! @f-  îl .-z"eoRet' 1a"d0,0a--"er'' 1a-("eflloMain' 1a-,"ecqO:"lqN:"lqD"l qNuD-1uN'''oMain' .uP\u1.-qP"n qN:"loSyn' q1uNoNum' fwx0fwl 0fo..QMonth 0 Valueu1 q1"nqN:"lqNuD-1uN' qX2uX q1uOoMain' 0fo..QDay 0 Valueu1 q1"nq1uWoMain' f~0PM"e!Eve! qH"lqN"loSyn'qN-12"goSyn' qNuH-1uN' "#qN:"loSyn'' qH-12"e0uH' qH+12uHoMain' f~0AM"e!Morn! qH"lqN"loSyn'qN-12"goSyn' qNuH-1uN' "#qN:"loSyn'' qH-12"e0uH' oMain' f~0the"eoMain' fq0-5"e0:g0f+-:"l1:g0"d2:g0"d3:g0"d4:g0"doTZ''''oSyn !TZ!-1*(m0)/100+qTimezone GMT Offset+qQuQoMain'' 1000fo..QTimezone 0 Offsetu1q1-1000"nq1+qQuQoMain' f~0at"eoMain' f~0in"eoMain' f~0on"eoMain' f~0st"eoDate-End' f~0nd"eoDate-End' f~0rd"eoDate-End' f~0th"eoDate-End' f~0o"eqN:"l!"!fwf~'clock"efwlqNuHqX1uX-1uNoMain''' f~0a"eoMain' f~0noon"eqX&1"noSyn'12uH0uM0uSqX1uXoMain' f~0now"eqX1uXoMain' f~0today"eoMain' f~0tomorrow"eqQ+24uQoMain' f~0yesterday"eqQ-24uQoMain' f~0hence"eqX1uX:i0after' (f~0after"'e)(f~0from"'e)"nqN:"loSyn'qR+qQuQ0uRoMain' (f~0ago"'e)(f~0before"'e)"nqN:"loSyn'-qR+qQuQ0uRoMain' f~0of"eqR:"goMain'qR/24*24-qR"noSyn' qR-24+qQuQ0uRoMain' (f~0wk"'e)(f~0wks"'e)(f~0week"'e)(f~0weeks"'e)"n qNf"lw1'*168+qRuR-1uNoMain' (f~0dy"'e)(f~0dys"'e)(f~0day"'e)(f~0days"'e)"n qNf"lw1'*24+qRuR-1uNoMain' (f~0hr"'e)(f~0hrs"'e)(f~0hour"'e)(f~0hours"'e)"n qNf"lw1'+qRuR-1uNoMain' (f~0tonight"'e)(f~0afternoon"'e)(f~0evening"'e)(f~0night"'e)(f~0late"'e)"noEve' (f~0morning"'e)(f~0early"'e)"noMorn' qN"l (f~0fifty"'e)(f~0fiftieth"'e)"n50uNoCKunits' (f~0forty"'e)(f~0fortieth"'e)"n40uNoCKunits' (f~0thirty"'e)(f~0thirtieth"'e)"n30uNoCKunits' (f~0twenty"'e)(f~0twentieth"'e)"n20uNoCKunits' oNoTens !CKunits! 0,1a--"ec0,1a"a.,(fwl.)x0oUnits''oNum !NoTens! (f~0nineteen"'e)(f~0nineteenth"'e)"n19uN' (f~0eighteen"'e)(f~0eighteenth"'e)"n18uN' (f~0seventeen"'e)(f~0seventeenth"'e)"n17uN' (f~0sixteen"'e)(f~0sixteenth"'e)"n16uN' (f~0fifteen"'e)(f~0fifteenth"'e)"n15uN' (f~0fourteen"'e)(f~0fourteenth"'e)"n14uN' (f~0thirteen"'e)(f~0thirteenth"'e)"n13uN' (f~0twelve"'e)(f~0twelfth"'e)"n12uN' (f~0eleven"'e)(f~0eleventh"'e)"n11uN' (f~0ten"'e)(f~0tenth"'e)"n10uN' !Units! (f~0nine"'e)(f~0ninth"'e)"nqN"l0uN'qN+9uN' (f~0eight"'e)(f~0eighth"'e)"nqN"l0uN'qN+8uN' (f~0seven"'e)(f~0seventh"'e)"nqN"l0uN'qN+7uN' (f~0six"'e)(f~0sixth"'e)"nqN"l0uN'qN+6uN' (f~0five"'e)(f~0fifth"'e)"nqN"l0uN'qN+5uN' (f~0four"'e)(f~0fourth"'e)"nqN"l0uN'qN+4uN' (f~0three"'e)(f~0third"'e)"nqN"l0uN'qN+3uN' (f~0two"'e)(f~0second"'e)"nqN"l0uN'qN+2uN' (f~0an"'e)(f~0a"'e)( f~0one"'e)(f~0first"'e)"nqN"l0uN'qN+1uN' qN:"loNum'' !Syn! :i*SYN Syntax error in time specfserr !Date-End! qN"gqN-32"lqNuD-1uNqX2uXoMain'' oSyn !Num! qN-1899"gqY"lqN-1900uY-1uNqX2uXoMain'' .-qP-3"l 0,1a-:"e qX&1"noSyn'qX1uX qN-24"goSyn' qNuH-1uNc\uM 0,1a-:"ec\uS'"#0uS' oMain' (0,1a-/)*(0,1a--)"e qX&2"noSyn'qX2uX c.uP\u0.-qP"eoNotDate' qN-12"goSyn' qNuO-1uNq0uD (0,1a-/)*(0,1a--)"ec\uY'"#0uY' oMain'' !NotDate! qD:"lqO:"lqY"lqN-24"gqNuYqX2uX-1uNoMain'''' qY:"lqO:"lqD:"l qX&1"e.-qP-2:"gqN-25"loMain'' qN/100uHqN-(qH*100)uM0uSqX2uX-1uNoMain'''' qO:"lqD"l(qX&1"'n)*((qH:"'l)*(qM:"'l)*(qS:"'l)"'e)"e qNuDqX2uX-1uNoMain''' oMain !Ret! qN:"l qD"lqNuD-1uNqX2uXoDefaults' qY"lqY-24"gqNuY-1uNqX2uXoDefaults'' qH"lqNuH-1uNqX1uXoDefaults' :i*NOP Number out of placefserr' !Defaults! f[bbind fsdatefsfdconv qX&1"nqH"lqM"lqS"l 9j\uHc\uMc\uS'''' qS"l0uS'qM"l0uM'qH"l0uH' qY"lqO"lqD"lqX&2"noToday'''' qX&2"e !Today!j\uOc\uDc\uY' qY"l6j\uY' qO"lqD:"lj\uO' "#1uO'' qD"l1uD' hk qQ"n 1+(2*(qQ"'g))u0 qH+qQuH <1,m(m.m& Normalize Date) qH:"lqH-24"l0;'' 24*q0+qHuH qD-q0uD0uW>' qO-10"li0'gOi/qD-10"li0'gDi/qY-10"li0'gY i qH-10"li0'gHi:qM-10"li0'gMi:qS-10"li0'gS m(m.m& Date to DOW)[X qW"eqXuW' "#0,3:gW[0f~X0"n hx*[1 !"! :i*DDM Day/Date Mismatch: Isn't it X, 1 rather than 0fserr'' qW,(hx*) !& Normalize Date:! qD"gqD-29"l0'' m(m.m& Date to DOW)[TuT [X qD:"g qO-1uO28uD qO"e12uOqY-1uY' m(m.m& Date to DOW)uXuX qT-qX"lqT+7uT' qD+qT-qXuD' "#[Y[O[D 1uDqO+1uOqO-13"e1uOqY+1uY' m(m.m& Date to DOW)uXuX qX-qT"e]*]*]*''  !& Compare Dates:! f[bbind [1[2 hkg()j m(m.m& Parse Date)u1 hkg1jfsfdconvu1 hkg()j m(m.m& Parse Date)u2 hkg2jfsfdconvu2 q2-q1"e0' q2-q1"g1' -1 !& Date to DOW:! qO-14/12+(1900+qY)[A qO+10/(-13)*12+10+qO*13-1/5+qD+77[B qA-(qA/100*100)*5/4[C qA/(-2000)+(qA/400)+(qA/(-100)*2)+qC+qBuB qB-(qB/7*7)uB qB,(qB*3uBqB,(qB+3):g(:i*SunMonTueWedThuFriSat)) !~DOC~ ~Filename~:! Time parser macros !~DOC~ & Setup TPARSE Library:! S Setup TPARSE runtime environment !~DOC~ & Parse Date:! S Parses a date/time string With no precomma arg, uses current point to end of buffer. With a precomma arg, uses that string. Returns a string which is a parse of the given time. An additional value (precomma) is returned which is 0 or a day of week string if possible to determine !~DOC~ & Normalize Date:! & Correct for date underflow/overflow. Expects date in qY,qO,qD and day of week (if any) in qW !~DOC~ & Compare Dates:! S Compares two date strings as numeric arg1 and arg2. Returns 0 if the dates are the same, 1 if in the right order, and -1 if they are in reverse order !~DOC~ & Date to DOW:! & Returns a day index and day of week string for a date Expects its arguments to be set up in qY (Year), qO (Month), and qD (Date) !~DIRECTORY~:! & Setup TPARSE Library & Parse Date & Normalize Date & Compare Dates & Date to DOW