1BSD/s6/biorhythm.c

Compare this file to the similar file:
Show the results in this format:

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