/* Copyright (C) 1996 by Thomas Glen Smith. All Rights Reserved. */ /* formota APL2 V1.0.0 ************************************************* * Called by formato when the current format character is '0' to '9'. * ***********************************************************************/ #define INCLUDES STRING+FORM #include "includes.h" void formota(cc,ch,bca,bia,four_switch,seven_switch,fcc_local) char *cc; /* Pointer to current format character. */ char ch; /* Copy of current format character. */ char **bca; /* Array of character pointers. */ int *bia; /* Array of integers */ int *four_switch; /* 1 if '4' format character was seen. */ int *seven_switch; /* 1 if '7' format character was seen. */ int *fcc_local; /* Format Control work area. */ { Formatu; int i=0; switch(ch) { case '1': case '2': case '3': formatu(&Fccflags,fcc_local,*four_switch,Decimal_Point,ch); break; case '4': *four_switch = 1; if (Decimal_Point == NULL) { /* Left of d.p. */ if (Fccflags & FC1R) Fccflags &= ~FC1R; if (Fccflags & FC2R) Fccflags &= ~FC2R; if (Fccflags & FC3R) Fccflags &= ~FC3R; } else { /* Right of decimal point. */ if (!(*fcc_local & FC1L) && (Fccflags & FC1L)) Fccflags &= ~FC1L; if (!(*fcc_local & FC2L) && (Fccflags & FC2L)) Fccflags &= ~FC2L; if (!(*fcc_local & FC3L) && (Fccflags & FC3L)) Fccflags &= ~FC3L; } break; case '5': case '6': break; case '7': /* Signals E-format */ *seven_switch = 1; break; case '8': /* Fill empty parts with Lfc[3] */ Fccflags |= FC8; break; case '9': case '0': if (ch == '0') Fccflags |= FC0; else Fccflags |= FC9; if (Decimal_Point != NULL) Right_Pad_Zeros = cc; else if (Left_Pad_Zeros == NULL) Left_Pad_Zeros = cc; break; } /* end switch */ }