/* Copyright (C) 1995 by Thomas Glen Smith. All Rights Reserved. */
/* formatu APL2 V1.0.0 *************************************************
* Called by formota. *
***********************************************************************/
#define INCLUDES FORM
#include "includes.h"
void formatu(fcc_final,fcc_explicit,four_switch,dpp,ch)
int *fcc_final; /* Final set of format control flags. */
int *fcc_explicit; /* Explicitly defined format control flags. */
int four_switch; /* 1 if '4' has been seen this side of d.p. */
char *dpp; /* Points to d.p. - NULL if we're left of it. */
char ch; /* New format control character. */
{
int lsw, rsw;
static int lall=(FC1L | FC2L | FC3L | FC4L),
rall=(FC1R | FC2R | FC3R | FC4R);
switch (ch) {
case '1': lsw = FC1L; rsw = FC1R; break;
case '2': lsw = FC2L; rsw = FC2R; break;
case '3': lsw = FC3L; rsw = FC3R; break;
} /* end switch */
if (dpp == NULL) { /* Left of d.p.? */
*fcc_explicit &= ~lall; /* Turn off all prior. */
*fcc_explicit |= lsw; /* Turn on new. */
*fcc_final &= ~lall; /* Turn off all prior. */
*fcc_final |= lsw; /* Turn on new. */
if (!four_switch) {
*fcc_final &= ~rall; /* Turn off all prior. */
*fcc_final |= rsw; /* Turn on new. */
}
}
else { /* Right of decimal point. */
*fcc_final &= ~rall; /* Turn off all prior. */
*fcc_final |= rsw; /* Turn on new. */
if (!four_switch)
if (!(*fcc_explicit & lall)) {
*fcc_final &= ~lall; /* Turn off all prior. */
*fcc_final |= lsw; /* Turn on new. */
}
}
}