/*---------------------------------------------------------------------*/ /* File: c01.cpp Created: 10/18/99 */ /* from c01x, m03, & cdr .cpp files at 11:37am */ /* orig from ...For general calendar ....... */ /* zs.cpp ...program ........ */ /* moded: 10/18/99 11:35am->11:41am 10/20/99 7:30am-> 7:50am */ /* 10/30/99 2:01pm-> 2:38pm 10/31/99 7:15am-> 9:15am */ /* 11/ 4/99 7:00am-> 9:25am 11/ 9/99 7:45am-> 8:30am */ /* 11/11/99 7:20am-> 8:15am 11/12/99 6:30am-> : am */ /* 11/13/99 7:55am-> 8:45am 11/14/99 7:45am-> 8:30am */ /* 11/15/99 8:17am-> 8:45am 11/17/99 6:31am-> 9:35am */ /* 11/18/99 6:32am-> 9:15am 11/19/99 7:43am-> 8: am */ /* 11/20/99 8:10am-> 9: am 11/28/99 8:05am-> 9:30am */ /* 11/30/99 6:36am-> 8: am 12/ 1/99 6:32am-> 9:25am */ /* 12/ 2/99 6:53am-> 8: am 12/ 3/99 6:59am-> : am */ /* 12/ 4/99 8:22am-> 8: am 12/ 8/99 8:43am-> 2:15pm */ /* 12/ 9/99 8:47am-> : am 12/14/99 2:18pm-> 2:45pm */ /* 12/15/99 6:30am-> 2:35pm 12/22/99 8:21am-> 8:35am */ /* 1/ 5/00 11:37am->11:40am 3/10/00 9:35am->10:00am */ /* 3/12/00 1:50pm-> 2:05pm 3/13/00 8:50am-> 9:10am */ /* 3/13/00 12:55pm-> 1:20pm 3/14/00 6:20am-> 6:50am */ /* 1/ 2/01 9:15am-> 9:40am 1/ 3/01 6:29am-> 8:00am */ /* 1/ 3/01 10:36am->11:09am 1/ 3/01 1:41pm-> 1:53pm */ /* 1/ 4/01 8:14am-> 8:20am / /01 : pm-> : pm */ /* / /01 : am-> : am / /01 : pm-> : pm */ /*---------------------------------------------------------------------*/ //.da_year.da_day.da_mon #include #include #include #include #include #include FILE *fle; int gti(void); void diffdt(void); void gtdts(void); void rddt(char *msg); void gtd(void); void prtbx(int x, int y, int xr, int yl, int clr, int clr2, char *ms); void prtln(void); int gts(char *msg, char *ch); struct dosdate_t crdt; // vars-> crdt.year crdt.day crdt.month // crdt.dayofweek int i, j, k, m, o, y, d, mrd, drd, yrd, b, e, secs, em, ed, yp, pd, r, ii, bgn, scr, txt2, txt3, txt4, txt5, txt6, scr2; int db, mb, yb, dd, md, yd, de, me, ye, dm=55, dm1=55; unsigned int total; unsigned char clrchg, crr=1, hlp; char *bsp, *fdp, *spt, xs[81], rs[86], bs[86]; int reffm[15] = { 0, 25, 5, 14, 24, 3, 13, 22, 31, 10, 20, 29, 10, 19, 28 }; char wkdys[ 8][10] = { " ", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; char mnths[13][22] = { " ", "J A N U A R Y", "F E B R U A R Y", "M A R C H", "A P R I L", "M A Y", "J U N E", "J U L Y", "A U G U S T", "S E P T E M B E R", "O C T O B E R", "N O V E M B E R", "D E C E M B E R" }, smnths[13][4] = { " ", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; char msg[32][12], ybuf[5], yprt[8] = "1 3 5 7"; char days[32][3] = { " ", " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", }; // Â Á ÚÄ¿ ÀÙ char tpbx[81] = { "+---------------------------------------" "----------------------------------------" }, sdbx[81] = { "| " " " }, btbx[80] = { "+---------------------------------------" "---------------------------------------" }, top1[66] = { " " "ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß" }; char tpln[] = " ÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ" "ÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ ", lsln[] = " - - Á - - Á - - Á - - " "Á - - Á - - Á - - "; char hrzn[] = " ÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ" "ÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ", vert[] = " ³ ³ ³ " "³ ³ ³ "; char dts[71], tme[13], tme2[18]; int stof[13] = { 0, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 }, mof[13], dofm[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }, gggg[6] = { 6, 9, 12, 15, 18, 21 }; long double mp=29.53058773148148, kmns, xx, yy; //===================================================// void main() { bgn = time(NULL); if ((fle=fopen("c01clrs.txt", "r")) == NULL) goto nofile; fgets(bs, 25, fle); fclose(fle); rs[2] = 0; rs[0] = bs[ 1]; rs[1] = bs[ 2]; scr = atoi(rs); rs[0] = bs[ 4]; rs[1] = bs[ 5]; txt2 = atoi(rs); rs[0] = bs[ 7]; rs[1] = bs[ 8]; txt3 = atoi(rs); rs[0] = bs[10]; rs[1] = bs[11]; txt4 = atoi(rs); rs[0] = bs[13]; rs[1] = bs[14]; txt5 = atoi(rs); rs[0] = bs[16]; rs[1] = bs[17]; txt6 = atoi(rs); rs[0] = bs[19]; rs[1] = bs[20]; scr2 = atoi(rs); goto initial; nofile: scr=7; txt2=0; txt3=1; txt5=8; txt4=11; txt6=7; scr2=0; initial: gtd(); gtdts(); clrscrn: window( 1, 2, 80, 23); textcolor(txt2); textbackground(scr); clrscr(); begin: window( 1, 1, 80, 1); textcolor(txt5); textbackground(scr); cprintf("%s", top1); clreol(); start: prtln(); //===================================================// //---------------- cal2: if (crr) { y = crdt.year; m = crdt.month; d = crdt.day; crr = 0; } if (y<10) y = 2000 + y; else if (y<100) y = 1900 + y; adjust: _setcursortype(0); if (y<1910) y = 1910; if (y>2050) y = 2050; dofm[2] = 28; if (4*(y/4)==y) dofm[2] = 29; o = y - 1905; o = o + o/4 ; k = (y / 10); for (i=1;i<=12;i++) { if (4*(y/4)==y && i>2) j = o + 1; else j = o; mof[i] = (stof[i] + j) % 7; } // mof declared yb = 10 * k; mb = 1; db = reffm[k-190]; ye = y; me = 3; de = 20; diffdt(); kmns = double(total) / mp; xx = double(1) - (kmns - double(int(kmns))); yy = (mp * xx) + double(1.1); i = yy; if (i<12) { em = 3; ed = 20 + i; } else { em = 4; ed = i - 11; } i = (mof[em] + ed - 1) % 7; if (i>0) ed = ed + 7 - i; else ed = ed + 7; if (ed>31) { em = 4; ed = ed -31; } itoa(y, ybuf, 10); for (i=0;i<4;i++) yprt[i+i] = ybuf[i]; adjmnth: hlp = 0; for (i=1;i<32;i++) msg[i][0] = 0; switch (m) {case 1 : strcpy(msg[ 1], "newyrs dy "); if (y>1985) strcpy(msg[15], "mlk br dy"); break; case 2 : strcpy(msg[14], "Vlntns dy "); if (y<1977) { strcpy(msg[17], "Wash br dy"); break; } if (mof[m]<2) strcpy(msg[16-mof[m]], "presdnt dy"); else strcpy(msg[23-mof[m]], "presdnt dy"); break; case 3 : strcpy(msg[17], "StPats dy "); break; case 5 : strcpy(msg[30], "mem dy"); break; case 6 : strcpy(msg[14], "flg dy"); break; case 7 : strcpy(msg[ 4], "indpnce dy"); break; case 9 : if (mof[m]<2) strcpy(msg[2-mof[m]], "labor dy "); else strcpy(msg[9-mof[m]], "labor dy "); break; case 10 : strcpy(msg[31], "Halloween"); break; case 11 : strcpy(msg[11], "vtrns dy"); if (mof[m]<5) strcpy(msg[26-mof[m]], "thnksgvng"); else strcpy(msg[33-mof[m]], "thnksgvng"); break; case 12 : strcpy(msg[25], "Christmas"); strcpy(msg[31], "newyrs eve"); } if (m==em) strcpy(msg[ed], "Easter"); k = (y / 10); yb = 10 * k; mb = 1; db = reffm[k-190]; ye = y; me = m; de = 0; if (yb==ye && me==1) { dm = db; goto prtcal; } diffdt(); kmns = double(total) / mp; xx = double(1) - (kmns - double(int(kmns))); yy = (mp * xx) + double(1.1); dm = yy; dm1 = 55; k = int(yy + mp); if (k<=dofm[m]) dm1 = k; prtcal: window( 1, 2, 80, 23); textcolor(txt2); textbackground(scr); cprintf(" %-22s %51s\r\n", mnths[m], yprt); textcolor(txt5); cprintf("%s\r\n", tpln); textcolor(txt2); cprintf( " Sunday Monday Tuesday " " Wednesday Thursday Friday Saturday " "\r"); textcolor(txt5); cprintf(" ³"); for (i=1;i<=7;i++) { gotoxy( 9+wherex(), wherey()); cprintf(" ³"); } cprintf("\r\n"); k = 0; o = (6 + mof[m] + dofm[m]) / 7; i = 1; prtcallp: pd = i - mof[m]; if (pd>dofm[m]) goto endprtcal; textcolor(txt5); if (k==0) { cprintf("%s\r\n", hrzn); cprintf("%s\r\n%s", vert, vert); gotoxy( 2, -1+wherey()); }//end if block gotoxy(wherex()+1, wherey()); textcolor(txt3); if (d>0 && d==pd) textcolor(txt4);//textbackground(scr); if (pd<0) cprintf(" "); else if (pd<=dofm[m]) cprintf(" %s", days[pd]); textcolor(txt2); if (dm==pd || dm1==pd) cprintf(" fm "); else cprintf(" "); gotoxy(wherex()-10, 1+wherey()); if (pd>0) cprintf("%-10s", msg[pd]); else cprintf(" "); gotoxy(wherex(), -1+wherey()); k = k + 1; if (k>6) { if (pd>=dofm[m]) goto endprtcal; k = 0; cprintf("\r\n\r\n"); }//end if block \r\n i = i +1; goto prtcallp; //end i loop endprtcal: textcolor(txt5); cprintf("\r\n\n%s", lsln); if (o<6) { window( 1, gggg[o], 80, 23); clrscr(); } //============================== tmeloop: if (kbhit()==0) goto fgretme; i = getch(); if (i==0) i = getch() + 100; switch (i) {case 177 : { m = m + 1; d = 0; if (m>12) { m = 1; y = y + 1; goto adjust; } goto adjmnth; } case 175 : { m = m - 1; d = 0; if (m<1) { m = 12; y = y - 1; goto adjust; } goto adjmnth; } case 'x' : goto ortn; case 'y' : d = 0; prtbx( 1, 21, 18, 23, 7, 7, " change year "); y = gts(" year: ", rs); if (rs[0]==0) crr = 1; goto start; case 'p' : crr = 1; goto start; case 'd' : goto off; case 159 : scr = scr + 1; if (scr>7) scr = 0; clrchg = 1; goto clrscrn; case 160 : txt2 = txt2 + 1; if (txt2>15) txt2 = 0; clrchg = 1; goto prtcal; case 161 : txt3 = txt3 + 1; if (txt3>15) txt3 = 0; clrchg = 1; goto prtcal; case 162 : txt4 = txt4 + 1; if (txt4>15) txt4 = 0; crr = 1; clrchg = 1; goto cal2; case 163 : txt5 = txt5 + 1; if (txt5>15) txt5 = 0; clrchg = 1; goto begin; case 164 : txt6 = txt6 + 1; if (txt6>15) txt6 = 0; clrchg = 1; prtln(); goto tmeloop; case 165 : scr2 = scr2 + 1; if (scr2>7) scr2 = 0; clrchg = 1; prtln(); goto tmeloop; case '-' : bgn = time(NULL); goto tmeloop; }//end sw list if (47 next month\r\n"); cprintf(" <- previous month\r\n"); cprintf(" F1 cycle thru screen background colors\r\n"); cprintf(" F2 cycle thru regular text colors\r\n"); cprintf(" F3 cycle thru days-of-month colors\r\n"); cprintf(" F4 cycle thru current day colors\r\n"); cprintf(" F5 cycle thru calendar grid colors\r\n"); cprintf(" F6 cycle thru date/time text colors\r\n"); cprintf(" F7 cycle thru date/time background colors\r\n"); cprintf(" d calc difference between two dates\r\n"); cprintf(" - zero clock counter\r\n"); cprintf(" p return to present month\r\n"); cprintf(" y change year of the month on screen\r\n"); cprintf(" 0->9 change year of the month on screen\r\n"); cprintf(" x exit c01"); } else goto prtcal; goto tmeloop; fgretme: gtd(); gtdts(); prtln(); goto tmeloop; //-------------------- off: prtbx( 21, 2, 65, 23, 120, 112, "--- Calculate Differences "); again: rddt(" enter Begin date: "); cprintf(" %2i/%2i/%4i", mrd, drd, yrd); yb = yrd; mb = mrd; db = drd; rddt("\r\n enter End date: "); cprintf(" %2i/%2i/%4i", mrd, drd, yrd); ye = yrd; me = mrd; de = drd; if (yb51100) { cprintf("\r\n dates wrong..."); goto badyrs; } cprintf("\r\n Total Diff = %u days \r\n", total); badyrs: cprintf(" another interval(y)? "); i = getch(); if (i==121) { cprintf("\r"); clreol(); goto again; } goto start; //---------------- ortn: if (!clrchg) goto nooutput; if ((fle=fopen("c01clrs.txt", "w")) == NULL) { printf("err in open"); return; } bs[0] = 0; sprintf(rs, "%3i", scr); strcat( bs, rs); sprintf(rs, "%3i", txt2); strcat( bs, rs); sprintf(rs, "%3i", txt3); strcat( bs, rs); sprintf(rs, "%3i", txt4); strcat( bs, rs); sprintf(rs, "%3i", txt5); strcat( bs, rs); sprintf(rs, "%3i", txt6); strcat( bs, rs); sprintf(rs, "%3i", scr2); strcat( bs, rs); fputs(bs, fle); fclose(fle); nooutput: window( 1, 1, 80, 25); gotoxy( 1, 11); _setcursortype(2); return; } //end Main //--------------------------------------------- //==get chr string for rtns==// int gts(char *msg, char *ch) { char bs[80], *cpt; cprintf("%s", msg); bs[0] = 79; cpt = cgets(bs); strcpy( ch, cpt); return(atoi(ch)); } //------------------// void diffdt(void) {dofm[2] = 28; if (4*(yb/4)==yb) dofm[2] = 29; yd = ye - yb; total = dofm[mb] - db + de; if (yd==0) { md = me - mb; if (md==0) { total = de - db; goto fndtotal; } if (md==1) goto fndtotal; for (i=mb+1;istrlen(bs)-5) break; bs[ii+2] = ms[ii]; } cprintf("%s", bs); for (ii=0;ii49) { strcpy(bs, "pm"); rs[2] = 0; rs[0] = tme[0]; rs[1] = tme[1]; k = atoi(rs) - 12; sprintf(rs, "%2i", k); tme[0] = rs[0]; tme[1] = rs[1]; }//end pm block strcat(tme, bs); return; } //end gtd rtn //--get dts strng---// void gtdts(void) { strcpy(bs, wkdys[1+crdt.dayofweek]); bs[3] = 0; j = crdt.day; sprintf(dts, " %s %2i, %4u %s ", smnths[crdt.month], j, crdt.year, bs ); return; } //end gtdts rtn //--print report----// void prtln(void) { window( 1, 24, 80, 25); e = time(NULL); mrd = int(difftime(e, bgn)); drd = mrd / 60; mrd = mrd % 60; sprintf(tme2, "%4i mins%3i secs", drd, mrd); textattr(scr2*16 + scr); cprintf("ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß" "ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß"); textattr(scr2*16 + txt6); cprintf(" °°°%s°°° %s °°°°°°°°°°°°°°°°°°°°%s °°°", dts, tme, tme2); clreol(); window( 1, 2, 80, 23); return; } //end prtln rtn //------------------// //----end of program-------//