Metropoli BBS
VIEWER: formscj.c MODE: TEXT (ASCII)
/* Copyright (C) 1995 by Thomas Glen Smith.	All Rights Reserved. */
/* formscj APL2 V1.0.0 *************************************************
* Called by formsci if an adjustment m/b made to the exponent.		 *
***********************************************************************/
#define INCLUDES STDIO+STRING+FORM
#include "includes.h"
void formscj(bufptr,bufint,buffer,expadj,eptr)
char	**bufptr;	/* Ptr to array of ptrs into value to format. */
int	*bufint;	/* Ptr to array of int describing value to format. */
char *buffer;	/* Work buffer in which to format value. */
int expadj;	/* Amount to adjust exponent. */
char *eptr;	/* Pointer to "e" in e-notation. */
{
	Formats;
	int expwrk,incr;
	char *dp;

	dp = DECIMAL_POINT(bufptr); /* Address of d.p. */
	expwrk = expadj; /* Copy adjustment. */
	incr = expwrk > 0 ? 1 : -1; /* Increment. */
	while(expwrk) { /* Now adjust d.p. in base. */
		*dp = *(dp - incr); /* Shift digit. */
		*(dp -= incr) = '.'; /* Shift d.p. and d.p. ptr. */
		expwrk -= incr;
	}
	formats(buffer,bufptr,bufint); /* Stats on base. */
	sscanf(eptr+1, "%d", &expwrk); /* Input formatted exponent. */
	expwrk += expadj; /* Adjust exponent. */
	if (expwrk >= 0) { /* Exponent positive? */
		*(eptr+1) = '+'; /* Sign of exponent. */
	} else { /* Exponent is negative. */
		*(eptr+1) = '-'; /* Sign of exponent. */
		expwrk = -expwrk; /* Absolute value of exponent. */
	}
	sprintf(eptr+2,"%d",expwrk); /* Format exponent. */
}
[ RETURN TO DIRECTORY ]