/* 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. */ }