digit = '0123456789' digit2 = digit '.' miles_day = 0.0 DEFINE('CVT_DAYS(yr,mo,da),I,ndays','CVT_DAYSENTRY') DEFINE('MOD_DJD(M,N)','MOD_ENTRY') DEFINE('fix(miles_day)','fix_entry') loop line = input :f(end) line date_in span(digit) . mo '/' span(digit) . da '/' span(digit) . yr = :f(loop) le(yr,2010) :s(loop) ne(da,da_old) :s(sk2) line "walked" span(" ") span(digit2) . mi :s(sk1) line "stationary bike" span(" -") span(digit2) . mi :f(loop)s(sk1) sk1 miles_day = miles_day + mi :(loop) sk2 output = mo_old '/' da_old '/' yr_old " " cvt_days(yr_old,mo_old,da_old) " " fix(miles_day) " miles" mo_old = mo da_old = da yr_old = yr miles_day = 0.0 :(loop) fix_entry miles_day break('.') '.' span(digit) :s(fixout) fix = miles_day '0' :(return) fixout fix = miles_day :(return) MOD_ENTRY MOD_DJD = M - (M / N) * N :(RETURN) CVT_DAYSENTRY I = 2010 ndays = 0 cvtloop EQ(I,YR) :s(cvtsk5) it = MOD_DJD(yr,4) 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 :(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) end