/* int	DaysBetweenDates365NoLeapYear(m1,d1,y1,	m2,d2,y2)
 *
 * ARGUMENT
 *  int	m1,d1,y1;		- Base Date
 *  int	m2,d2,y2;		- Date to compare with base
 *
 * DESCRIPTION
 *  Compares two dates in date args format, forming the	difference in
 *  whole days.	 The result is a signed	number:
 *
 *	0 if dates are same,
 *	+n if date1 > date2
 *	-n if date1 < date2
 *
 *  A 365 day calendar without leap years is used.
 *
 * SIDE	EFFECTS
 *	None.
 *
 * RETURNS
 *  +,-, or 0 days.  0 can indicate an error.
 *
 * POSSIBLE ERROR CODES
 *	GM_ARGVAL
 *	GM_OVERFLOW
 *
 * AUTHOR
 *     05-Aug-1987  12:43:39
 *   Copyright (C) 1987-1990 Greenleaf Software	Inc.  All rights reserved.
 *
 * MODIFICATIONS
 */
#include <stdio.h>
#include "gmsystem.h"

int DaysBetweenDates365NoLeapYear(m1,d1,y1,m2,d2,y2)
int m1,d1,y1,m2,d2,y2;
{
	long	n1, n2,	n;
	int	x;

	_MacStart(GM_DBDNLY);

	if (m1<1||m1>12||d1<1||d1>31||y1<0||y1>9999||
			m2<1||m2>12||d2<1||d2>31||y2<0||y2>9999) {
		_MacErr(GM_ARGVAL);
		_MacRet(GM_ARGVAL);
	}

	if (m1<=2)  {
		x=0;
	}
	else  {
		x=(4*m1	+ 23) /	10;
	}
	n1 = (long) y1 * 365L +	(long) (31*(m1-1) + d1 - x);

	if (m2<=2)  {
		x=0;
	}
	else  {
		x=(4*m2	+ 23) /	10;
	}
	n2 = (long) y2 * 365L +	(long) (31*(m2-1) + d2 - x);

	n = n1 - n2;

	if (n<-32768L||n>32767L)  {
		_MacErr(GM_OVERFLOW);
		_MacRet(GM_OVERFLOW);
	}

	_MacRet((int) n);
}