/* DEC	*SubtractPercent(pDst,pSrc1,pSrc2)
 *
 * ARGUMENT
 *	DEC	*pDst, *pSrc1, pSrc2;
 *
 * DESCRIPTION
 *	Subtracts pSrc2	percent	from pSrc1, stroring the result	in pDst.
 *	pDst = pSrc1 * (1 - pSrc2/100)
 *	pDst is	rounded	two 2 decimal places.
 *
 * SIDE	EFFECTS
 *	None.
 *
 * RETURNS
 *	Returns	a pointer to the dest structure	unless overflow,
 *   when it returns a GM_NULL.
 *
 *
 * POSSIBLE ERROR CODES
 *
 *	GM_NULLPOINTER
 *	GM_OVERFLOW
 *	GM_UNDERFLOW
 *
 * AUTHOR
 *  Jared Levy
 *   Copyright (C) 1987-1990 Greenleaf Software	Inc.  All rights reserved.
 *
 * MODIFICATIONS
 *
 */

#include <stdio.h>
#include "gm.h"
#include "gmsystem.h"

DEC	*SubtractPercent(pDst,pSrc1,pSrc2)
DEC	*pDst;
DEC	*pSrc1,*pSrc2;
{
	DEC	dtemp, *temp=&dtemp;

	_MacStart(GM_PSUB);

	_MacInVarD(pSrc2);

	_MacDCopy(temp,	pSrc2);
	temp->dc.id += 2;
	(void) _SubDec80Bit(temp, &decOne, temp);
	/* overflow not	possible */

	if (_Sq5UnsTo4Uns(temp)!=GM_SUCCESS)  {
		_MacErr(GM_ARGVAL);
		_MacRet(GM_NULL);
	}
	pDst = MultiplyDecimalAndRound(pDst, pSrc1, temp, 2);
	_MacRet(pDst);
	/* error flag set by MultiplyDecimalAndRound */
}