* Copyright (C) 2023 Dennis J. Darland * This file is part of Dennis J Darland's Glucose Prediction Software. * It is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with it. If not, see . DEFINE('ABS(N)') :(ABS_END) ABS ABS = LT(N,0.0) (0.0 - N) :s(RETURN) ABS = N :(RETURN) ABS_END INPUT('relate_several',2,256,'relate_several.txt') OUTPUT('relate_several_merged',3,256,'relate_several_merged.tmp') &DUMP = 0 &TRACE = 0 &STLIMIT = 50000 datechar = "0123456789/" echo = 0 dig = "0123456789.-" OUTPUT = "# DATE GLU PG CAL K STEP FAT CARB PROT FIB SUG SAT FAST" relate_several_merged = "# DATE GLU PG CAL K STEP FAT CARB PROT FIB SUG SAT FAST" cnt = 0 glu_prev = 0 first = 1 TOP LINE = INPUT :F(TOP2) LINE SPAN(dig) . yr ARB . part1 RPOS(0) part1 SPAN(' \t') SPAN(dig) . mo ARB . part2 RPOS(0) part2 SPAN(' \t') SPAN(dig) . wgt ARB . part3 RPOS(0) part3 SPAN(' \t') SPAN(dig) . wgt_cnt ARB . part4 RPOS(0) part4 SPAN(' \t') SPAN(dig) . glu_avg ARB . part5 RPOS(0) * OUTPUT = "GLU = " glu_avg LT(glu_avg,0) :s(TOP) part5 SPAN(' \t') SPAN(dig) . glu_cnt ARB . part6 RPOS(0) LT(glu_cnt,0) :s(TOP) part6 SPAN(' \t') SPAN(dig) . glu_02 ARB . part7 RPOS(0) part7 SPAN(' \t') SPAN(dig) . cnt_02 ARB . part8 RPOS(0) part8 SPAN(' \t') SPAN(dig) . glu_04 ARB . part9 RPOS(0) part9 SPAN(' \t') SPAN(dig) . cnt_04 ARB . part10 RPOS(0) part10 SPAN(' \t') SPAN(dig) . glu_06 ARB . part11 RPOS(0) part11 SPAN(' \t') SPAN(dig) . cnt_06 ARB . part12 RPOS(0) part12 SPAN(' \t') SPAN(dig) . glu_08 ARB . part13 RPOS(0) part13 SPAN(' \t') SPAN(dig) . cnt_08 ARB . part14 RPOS(0) part14 SPAN(' \t') SPAN(dig) . glu_10 ARB . part15 RPOS(0) part15 SPAN(' \t') SPAN(dig) . cnt_10 ARB . part16 RPOS(0) part16 SPAN(' \t') SPAN(dig) . glu_12 ARB . part17 RPOS(0) part17 SPAN(' \t') SPAN(dig) . cnt_12 ARB . part18 RPOS(0) part18 SPAN(' \t') SPAN(dig) . glu_other ARB . part19 RPOS(0) part19 SPAN(' \t') SPAN(dig) . cnt_other ARB . part20 RPOS(0) part20 SPAN(' \t') SPAN(dig) . sys ARB . part21 RPOS(0) part21 SPAN(' \t') SPAN(dig) . dia ARB . part22 RPOS(0) part22 SPAN(' \t') SPAN(dig) . pul ARB . part22B RPOS(0) part22B SPAN(' \t') SPAN(dig) . cnt_bp ARB . part23 RPOS(0) part23 SPAN(' \t') SPAN(dig) . bf ARB . part24 RPOS(0) part24 SPAN(' \t') SPAN(dig) . h2o ARB . part25 RPOS(0) part25 SPAN(' \t') SPAN(dig) . bone ARB . part26 RPOS(0) part26 SPAN(' \t') SPAN(dig) . bmi ARB . part27 RPOS(0) part27 SPAN(' \t') SPAN(dig) . cnt_bmi ARB . part28 RPOS(0) part28 SPAN(' \t') SPAN(dig) . cal ARB . part29 RPOS(0) * OUTPUT = "cal = " cal LT(cal,0) :s(TOP) part29 SPAN(' \t') SPAN(dig) . fat ARB . part30 RPOS(0) * OUTPUT = "fat = " fat LT(fat,0) :s(TOP) part30 SPAN(' \t') SPAN(dig) . sat ARB . part31 RPOS(0) part31 SPAN(' \t') SPAN(dig) . poly ARB . part32 RPOS(0) part32 SPAN(' \t') SPAN(dig) . mono ARB . part33 RPOS(0) part33 SPAN(' \t') SPAN(dig) . chol ARB . part34 RPOS(0) part34 SPAN(' \t') SPAN(dig) . sod ARB . part35 RPOS(0) part35 SPAN(' \t') SPAN(dig) . pot ARB . part36 RPOS(0) part36 SPAN(' \t') SPAN(dig) . carb ARB . part37 RPOS(0) part37 SPAN(' \t') SPAN(dig) . fib ARB . part38 RPOS(0) part38 SPAN(' \t') SPAN(dig) . sugar ARB . part39 RPOS(0) part39 SPAN(' \t') SPAN(dig) . prot ARB . part40 RPOS(0) part40 SPAN(' \t') SPAN(dig) . water ARB . part41 RPOS(0) part41 SPAN(' \t') SPAN(dig) . first_sleep ARB . part42 RPOS(0) part42 SPAN(' \t') SPAN(dig) . second_sleep ARB . part43 RPOS(0) part43 SPAN(' \t') SPAN(dig) . second_occurs ARB . part44 RPOS(0) part44 SPAN(' \t') SPAN(dig) . total_sleep ARB . part45 RPOS(0) part45 SPAN(' \t') SPAN(dig) . days ARB . part46 RPOS(0) part46 SPAN(' \t') SPAN(dig) . days_extra ARB . part47 RPOS(0) part47 SPAN(' \t') SPAN(dig) . days_none ARB . part48 RPOS(0) part48 SPAN(' \t') SPAN(dig) . miles_walk ARB . part49 RPOS(0) * OUTPUT = "miles = " miles * walk etc was underestimested miles_walk = miles_walk + 0.5 glu_prev = EQ(glu_prev, 0) glu_avg :s(TOP) ksteps = miles_walk * 2.0 ksteps = LE(ksteps, 0.0) 1.0 line = mo "/" yr " " line = line glu_avg " " line = line glu_prev " " glu_prev = glu_avg line = line cal " " line = line ksteps " " line = line fat " " line = line carb " " line = line prot " " line = line fib " " line = line sugar " " line = line sat " " tot_fast = (cnt_02 * 2.0) + (cnt_04 * 4.0) + (cnt_06 * 6.0) + (cnt_08 * 8.0) tot_fast = tot_fast + (cnt_10 * 10.0) + (cnt_12 * 12.0) + (cnt_other * 14.0) avg_fast = tot_fast / glu_cnt line = line avg_fast relate_several_merged = line OUTPUT = line :(TOP) * SKip HEADING TOP2 line = relate_several :f(END) TOP3 line = relate_several :f(END) relate_several_merged = line :(TOP3) END