Metropoli BBS
VIEWER: aplednn.c MODE: TEXT (ASCII)
/*Copyright (C) 1992, 1996 by Thomas Glen Smith.  All Rights Reserved.*/
/* aplednn APL2 V1.0.0 *************************************************
* Called from aplediz to determine the next statement number to use as *
* a prompt.                                                            * 
***********************************************************************/
#define INCLUDES APLED+APLTOKEN
#include "includes.h"
double aplednn(e)
struct apledst *e;		/* Edit common area.					*/
{
	Power; Precisn;
	double newno,nxtno;
	int i,j,k,prenew[2],prenxt[2];

	if (e->cured == NULL)
		e->cured = e->edlst; /* prior statement was last */
	if (e->cured == NULL) {
		newno = 0.0; /* statement header is next */
		e->aplstinc = 1.0; /* statement number increment */
	}
	else if (e->aplstinc == 0.0) { /* it is replacement time */
		newno = e->cured->apledst;
		e->aplstinc = 1.0; /* next increment */
	}
	else if (e->cured->aplednxt == NULL)
		newno = e->cured->apledst + (e->aplstinc = 1.0);
	else for(;;) {
		newno = e->cured->apledst + e->aplstinc;
		if (newno < (nxtno = e->cured->aplednxt->apledst))
			break; /* got correct newno */
		precisn(newno,prenew); /* Get precision for newno. */
		precisn(nxtno,prenxt); /* Get precision for nxtno. */
		i = prenew[1]; /* places to right of decimal */
		j = prenxt[1]; /* ditto */
		i = ((i > j) ? i : j) + 1; /* max places plus 1 */
		e->aplstinc = power(10.0,-(double) i); /* new incr */
	}
	return(newno);
}
[ RETURN TO DIRECTORY ]