+/*
+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);
+}