Metropoli BBS
VIEWER: formbtk.c MODE: TEXT (ASCII)
/* Copyright (C) 1996 by Thomas Glen Smith.	All Rights Reserved. */
/* formbtk APL2 V1.0.0 *************************************************
* Called by formatk after to do main formatting loop.				 *
***********************************************************************/
#define INCLUDES APLCB+APLCHDEF
#include "includes.h"
Aplcb formbtk(rite,out,colcb)
Aplcb rite,out,colcb;
{
	extern char *aplchar[]; /* global APL character array */
	Aplcb *cb,cc;
	int col,cols,kw,mw,row,rows;
	double *ip;
	char *ich, *och, *pch, *sch;

	rows = *(rite->apldim);
	cols = *(rite->apldim + 1);
	ip = rite->aplptr.apldata;
	och = out->aplptr.aplchar;
	for (row = 0; row < rows; row++) {
		cb = colcb->aplptr.aplapl;
		for (col = 0; col < cols; col++) {
			sch = och;
				cc = *cb++; /* real part */
			kw = *(cc->apldim + 1);
			if (*ip++ == 0e0)
				*och++ = '0';
			else {
				ich = cc->aplptr.aplchar + row * kw;
				pch = ich + kw;
				while(*ich == ' ') ich++; /* skip leading blanks */
				while(' ' != *ich && ich < pch) *och++ = *ich++;
			}
			cc = *cb++; /* imaginary part */
			mw = *(cc->apldim + 1);
			if (*ip++ != 0e0) {
				*och++ = *(aplchar[APL_J]);
				ich = cc->aplptr.aplchar + row * mw;
				pch = ich + mw;
				while(*ich == ' ') ich++; /* skip leading blanks */
				while(' ' != *ich && ich < pch) *och++ = *ich++;
			}
			sch += kw + mw + 1 + (col < (cols - 1));
			while(och < sch) *och++ = ' ';
		}
	}
}
[ RETURN TO DIRECTORY ]