* -LIST
GOAL_NAMES = TABLE()
GOALS = TABLE()
GOAL_CNT = 0
initial_date = INPUT
cfg_title = INPUT
INPUT_FILE_NAME = INPUT
OUTPUT('OUTPUT',6,4096)
INPUT('INPUT_IN',8,4096,INPUT_FILE_NAME)
OUTPUT('DEBUG',10,2048,'act.dbg')
goal_loop goal = INPUT :F(endgoals)
DEBUG = goal
GOAL_CNT = GOAL_CNT + 1
goal break(' ') . lhs ' = ' span('01234567890.') . rhs1 break('|') '|' break('|') . rhs2
DEBUG = 'set GOALS[' lhs '] <= ' rhs1
DEBUG = 'set GOALNAME[' lhs '] <= ' rhs2
GOALS[lhs] = rhs1
GOAL_NAMES[lhs] = rhs2 :s(goal_loop)
endgoals date_saved = DATE()
GOAL_NAMES_ARRAY = CONVERT(GOAL_NAMES,'ARRAY')
GOALS_ARRAY = CONVERT(GOALS,'ARRAY')
OUTPUT = " Dennis J. Darland's " cfg_title " Since " initial_date " as of " date_saved
DEFINE('GET_FIELD(FIELD_NAME,LINE_IN)','FIELDENTRY')
DEFINE('GET_TITLE(LINE_IN)','TITLEENTRY')
DEFINE('RANGE(START,FINISH),NDAYS,days_s,days_f','RANGEENTRY')
DEFINE('SHRINK(STR)','SHRINKENTRY')
DEFINE('SHRINK_H(STR)','SHRINKHENTRY')
DEFINE('CVT_DAYS(yr,mo,da),I,ndays','CVT_DAYSENTRY')
DEFINE('MOD_DJD(M,N)','MOD_ENTRY')
DEFINE('HEADER()','HEADER_ENTRY')
DEFINE('TRAILER()','TRAILER_ENTRY')
total_cat = TABLE()
total_time = 0.0
ualpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
lalpha = 'abcdefghijklmnopqrstuvwxyz'
numer = '1234567890'
numer2 = '1234567890.'
ws = ' '
alpha = lalpha ualpha
alphanum = alpha numer
spec = ' '
loop1 line = INPUT_IN :F(sk2)
title = get_title(line) :F(loop1)
item_time = get_field('Time Spent: ',line) :F(err2)S(noerr2)
err2 item_time = '0'
noerr2
item_cat = get_field('Category: ',line)
DEBUG = 'loop1 time = ' item_time
DEBUG = ' cat = ' item_cat
item_time FENCE SPAN(numer2) $ item_time2 ' H' RPOS(0)
total_cat[item_cat] = total_cat[item_cat] + item_time2
total_time = total_time + item_time2 :(loop1)
sk2 REWIND(8)
HEADER()
loop2 line = INPUT_IN :F(sk5)
title = get_title(line) :F(loop2)
item_time = get_field('Time Spent: ',line) :F(err2B)S(noerr2B)
err2B item_time = '0'
noerr2B
item_time FENCE SPAN(numer2) $ item_time2 ' H' RPOS(0)
DEBUG = 'loop2 time = ' item_time
created = get_field('Start Date: ',line) :F(err3)
created break('/') $ item_beg_mo '/' break('/') $ item_beg_da '/' break(' ') $ item_beg_yr ' ' break(':') $ item_beg_hr ':' break(' ') $ item_beg_min ' ' len(2) $ am_pm
am_pm 'AM' ne(item_beg_hr,12) :s(sk_am2A)
am_pm 'PM' eq(item_beg_hr,12) :s(sk_am2A)
item_beg_hr = eq(item_beg_hr,12) item_beg_hr - 12 :s(sk_am2A)
item_beg_hr = item_beg_hr + 12
sk_am2A beg_tm = ' ' item_beg_hr ':' item_beg_min
beg_tm_fixed = item_beg_mo '/' item_beg_da '/' item_beg_yr ' ' item_beg_hr ':' item_beg_min ":00"
completion = get_field('Completed Date: ',line) :F(done2)
completion break('/') $ item_com_mo '/' break('/') $ item_com_da '/' break(' ') $ item_com_yr ' ' break(':') $ item_com_hr ':' break(' ') $ item_com_min ' ' len(2) $ am_pm
am_pm 'AM' ne(item_com_hr,12) :s(sk_am2B)
am_pm 'PM' eq(item_com_hr,12) :s(sk_am2B)
item_com_hr = eq(item_com_hr,12) item_com_hr - 12 :s(sk_am2B)
item_com_hr = item_com_hr + 12
sk_amB com_tm = ' ' item_com_hr ':' item_com_min
com_tm_fixed = item_com_mo '/' item_com_da '/' item_com_yr ' ' item_com_hr ':' item_com_min ":00"
ave_cc = item_time2 / RANGE(beg_tm_fixed,com_tm_fixed) :(done3)
done2 ave_cc = 'NA'
done3 ave_cn = item_time2 / RANGE(beg_tm_fixed,DATE())
item_time FENCE SPAN(numer2) $ item_time2 ' H' RPOS(0)
eq(total_time,0) :s(skzer)
percent = item_time2 * 100.0 / total_time :(noskzer)
skzer percent = 'NA'
noskzer ave = item_time2 / RANGE(initial_date,DATE())
* line FENCE BREAK('(') $ title '(' BREAK(')') $ priority ') (' BREAK(')') $ item_time ') (' BREAK(')') $ created ')' :F(loop2)
* item_time FENCE 'Time Spent: ' SPAN(numer2) $ item_time2 ' H' RPOS(0)
* percent = item_time2 * 100.0 / total_time
* ave = item_time2 / RANGE(initial_date,date_saved)
OUTPUT = '
' title ' | ' shrink_H(item_time2) ' | ' shrink(percent) '% | ' shrink_H(ave) ' |
' :(loop2)
sk5 ave = total_time / RANGE(initial_date,date_saved)
OUTPUT = 'Overall | ' shrink_H(total_time) ' | 100.0 % | ' shrink_H(ave) ' |
'
TRAILER() :(END)
RANGEENTRY START FENCE BREAK('/') $ mo_s '/' BREAK('/') $ da_s '/' break(' ') $ yr_s ' ' break(':') $ hr_s ':' break(':') $ min_s
FINISH FENCE BREAK('/') $ mo_f '/' BREAK('/') $ da_f '/' break(' ') $ yr_f ' ' break(':') $ hr_f ':' break(':') $ min_f
days_s = CVT_DAYS(yr_s, mo_s, da_s)
days_f = CVT_DAYS(yr_f, mo_f, da_f)
rng = (days_f - days_s) + (hr_f - hr_s) / 24.0 + (min_f - min_s) / (24.0 * 60.0)
rng = LT(rng,1.0) 1.0
RANGE = rng
:(return)
CVT_DAYSENTRY I = 2010
ndays = 0
cvtloop EQ(I,YR) :s(cvtsk5)
it = MOD_DJD(I,4)
* ERROR NEXT SECTION - FIXED 2/7/2020
EQ(it,0) :f(cvtsk1)
ndays = ndays + 366
I = LT(I, yr) I + 1 :s(cvtloop)f(cvtsk5)
cvtsk1 ndays = ndays + 365
I = LT(I, yr) I + 1 :s(cvtloop)f(cvtsk5)
cvtsk5 it = MOD_DJD(yr,4)
EQ(it,0) :f(cvtsk6)
eq(mo,1) :f(lp_mo2)
ndays = ndays + da :(retcvt)
lp_mo2 eq(mo,2) :f(lp_mo3)
ndays = ndays + da + 31 :(retcvt)
lp_mo3 eq(mo,3) :f(lp_mo4)
ndays = ndays + da + 31 + 29 :(retcvt)
lp_mo4 eq(mo,4) :f(lp_mo5)
ndays = ndays + da + 31 + 29 + 31 :(retcvt)
lp_mo5 eq(mo,5) :f(lp_mo6)
ndays = ndays + da + 31 + 29 + 31 + 30 :(retcvt)
lp_mo6 eq(mo,6) :f(lp_mo7)
ndays = ndays + da + 31 + 29 + 31 + 30 + 31 :(retcvt)
lp_mo7 eq(mo,7) :f(lp_mo8)
ndays = ndays + da + 31 + 29 + 31 + 30 + 31 + 30 :(retcvt)
lp_mo8 eq(mo,8) :f(lp_mo9)
ndays = ndays + da + 31 + 29 + 31 + 30 + 31 + 30 + 31 :(retcvt)
lp_mo9 eq(mo,9) :f(lp_mo10)
ndays = ndays + da + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 :(retcvt)
lp_mo10 eq(mo,10) :f(lp_mo11)
ndays = ndays + da + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 :(retcvt)
lp_mo11 eq(mo,11) :f(lp_mo12)
ndays = ndays + da + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 :(retcvt)
lp_mo12 ndays = ndays + da + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 :(retcvt)
cvtsk6 eq(mo,1) :f(rg_mo2)
ndays = ndays + da :(retcvt)
rg_mo2 eq(mo,2) :f(rg_mo3)
ndays = ndays + da + 31 :(retcvt)
rg_mo3 eq(mo,3) :f(rg_mo4)
ndays = ndays + da + 31 + 28 :(retcvt)
rg_mo4 eq(mo,4) :f(rg_mo5)
ndays = ndays + da + 31 + 28 + 31 :(retcvt)
rg_mo5 eq(mo,5) :f(rg_mo6)
ndays = ndays + da + 31 + 28 + 31 + 30 :(retcvt)
rg_mo6 eq(mo,6) :f(rg_mo7)
ndays = ndays + da + 31 + 28 + 31 + 30 + 31 :(retcvt)
rg_mo7 eq(mo,7) :f(rg_mo8)
ndays = ndays + da + 31 + 28 + 31 + 30 + 31 + 30 :s(retcvt)
rg_mo8 eq(mo,8) :f(rg_mo9)
ndays = ndays + da + 31 + 28 + 31 + 30 + 31 + 30 + 31 :(retcvt)
rg_mo9 eq(mo,9) :f(rg_mo10)
ndays = ndays + da + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 :s(retcvt)
rg_mo10 eq(mo,10) :f(rg_mo11)
ndays = ndays + da + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 :(retcvt)
rg_mo11 eq(mo,11) :f(rg_mo12)
ndays = ndays + da + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 :(retcvt)
rg_mo12 ndays = ndays + da + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 :(retcvt)
retcvt cvt_days = ndays :(return)
TITLEENTRY LINE_IN POS(0) BREAK('(') . GET_TITLE :S(RETURN)F(FRETURN)
FIELDENTRY LINE_IN '(' FIELD_NAME ARB . GET_FIELD ')' :S(RETURN)F(FRETURN)
SHRINKENTRY STR = STR '000000'
STR LEN(6) . STR2
SHRINK = STR2 :(RETURN)
SHRINKHENTRY str FENCE "NA" rpos(0) :s(shH_ret2)
STR FENCE SPAN(numer) . hours len(1) SPAN(numer) . hund :f(no_dec)
hund = hund '00'
hund FENCE LEN(2) . hund2
minutes = hund2 * 60 / 100
STR2 = hours ' H ' minutes ' M'
SHRINK_H = STR2 :(RETURN)
shH_ret2 SHRINK_H = "NA" :(RETURN)
no_dec shrink_h = str ' H 0 M' :(return)
MOD_ENTRY MOD_DJD = M - (M / N) * N
:(RETURN)
* NOT CORRECT FOR NEG M - BUT I'M NOT USING THAT
* MOD_ENTRY MOD_DJD = M
*MOD_LOOP LT(MOD_DJD,N) :S(RETURN)
* MOD_DJD = MOD_DJD - N :(MOD_LOOP)
TRAILER_ENTRY OUTPUT = ''
EQ(total_time,0) :S(NOTABLE)
OUTPUT = ''
OUTPUT = 'Activity Category | Total Time | Percent Time | Average Time | Goal | Percent Goal |
'
CNT = 0
GOALS_LOOP CNT = CNT + 1
DEBUG = 'GGGGG 1 = ' GOALS_ARRAY[CNT,2]
OUTPUT = '' GOAL_NAMES_ARRAY[CNT,2] ' | ' shrink_H(total_cat[GOAL_NAMES_ARRAY[CNT,1]]) ' | ' shrink(total_cat[GOAL_NAMES_ARRAY[CNT,1]] * 100.0 / total_time) ' | ' shrink_H(total_cat[GOAL_NAMES_ARRAY[CNT,1]] / RANGE(initial_date,DATE())) ' | ' shrink_H(GOALS_ARRAY[CNT,2]) ' | ' shrink(100.0 * total_cat[GOAL_NAMES_ARRAY[CNT,1]] / GOALS_ARRAY[CNT,2] / RANGE(initial_date,DATE())) ' |
'
LE(CNT,GOAL_CNT) :S(GOALS_LOOP)
OUTPUT = '
'
NOTABLE
OUTPUT = 'Note: I am trying to classify what I am doing while listening to music. - Rather than classify as music.'
OUTPUT = 'Often, I do have the Music (or Fiction or Sports) on, simultaniously.
'
OUTPUT = 'I am using:
'
OUTPUT = 'Abstract Spoon ToDo List to gather the data.
'
OUTPUT = 'Then a snobol4 program I wrote to add percentages, averages and html formatting.
'
OUTPUT = 'The snobol program is HERE.
'
OUTPUT = '