/*Copyright (C) 1993, 1996 by Thomas Glen Smith. All Rights Reserved. */ /* dublins.h APL2 V1.0.0 ************************************************ * This text is included in dublin.c to determine the sign of the * * current constant. Val will contain the constant, converted from ASCII * * to double floating point, and will be a whole number. Div will * * contain the factor by which to divide val to obtain the true real * * number constant. * ************************************************************************/ sw=0; /* set=1 if constant found */ for (s = a; s < e && *s == *(aplchar[SPACE]) || *s == '\n' || *s == '\t'; s++); /* white space */ sign=1; /* default sign is plus */ if (s < e && *s == *(aplchar[OVERBAR])) { sign = -1; s++; } for (val = 0.0; s < e && *s >= *(aplchar[APL_0]) && *s <= *(aplchar[APL_9]); s++) { sw=1; /* constant found */ val = 10.0 * val + (*s - *(aplchar[APL_0])); } if (s < e && *s == *(aplchar[DOT])) { s++; if (sw == 1) sw = 2; /* real number */ } if ((sign == +1 && val > MAXINT) || (sign == -1 && val > MININT)) sw = 2; /* real number */ for (div = 1.0; s < e && *s >= *(aplchar[APL_0]) && *s <= *(aplchar[APL_9]); s++) { sw=2; /* constant found */ val = 10.0 * val + (*s - *(aplchar[APL_0])); div *= 10.0; } if (sw==0) return(0); /* no constant */ t=s; /* save for later */ /* end of dublins.h **********************************************/