Metropoli BBS
VIEWER: formota.c MODE: TEXT (ASCII)
/* 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 */
}
[ RETURN TO DIRECTORY ]