1BSD/s6/biorhythm.c
/*
biorhythm predictions
biorhythm mmddyy [y1] [y2]
jeff schriebman 3-75
*/
extern fout;
char *bptr;
int month,day,year,nday;
char *mon[] {
"jan",
"feb",
"mar",
"apr",
"may",
"jun",
"jul",
"aug",
"sep",
"oct",
"nov",
"dec"
};
int dy[] {
31,28,31,30,31,30,
31,31,30,31,30,31
};
main(argc,argv)
char **argv;
{
register char ph,em,in;
int i,ystart,yfin;
if (argc < 2) {
printf("bior mmddyy [yy] [yy]\n");
exit();
}
fout = dup(1);
printf("Biorhythm transition predictions\n\n");
printf("ph em in date\n");
nday = -1;
bptr = *++argv;
month = gettwo();
day = gettwo();
day =- 1;
year = gettwo();
year =+ 1900;
if (*bptr!='\0') {
printf("\n\nIllegal input data. Please enter ");
printf("mmddyy of birth\n");
exit();
}
ystart = 0;
if (argc>=3) {
bptr = *++argv;
ystart = gettwo();
ystart =+ 1900;
}
yfin = 30000;
if (argc>=4) {
bptr = *++argv;
yfin = gettwo();
yfin =+ 1900;
}
for (i=year;year<i+100;) {
update();
if (year<ystart)
continue;
if (year>yfin)
exit();
ph = ' ';
em = ' ';
in = ' ';
if(lrem(0,nday,23)==11) ph = '-';
if(lrem(0,nday,23)==0) ph = '+';
if(lrem(0,nday,28)==14) em = '-';
if(lrem(0,nday,28)==0) em = '+';
if(lrem(0,nday,33)==16) in = '-';
if(lrem(0,nday,33)==0) in = '+';
if (ph==' ' && em==' ' && in==' ')
continue;
printf("%c %c %c %s %2d %d\n",ph,em,in,mon[month-1],day,year);
}
flush();
}
update()
{
nday =+ 1;
day =+ 1;
if(day>dy[month-1]) {
if(month==2 && lrem(0,year,4)==0 && day==29)
return;
day = 1;
month =+ 1;
if (month>12) {
month = 1;
year =+ 1;
}
}
}
gettwo()
{
register int num;
num = *bptr++ - '0';
num = num*10 + *bptr++ - '0';
return(num);
}