/* 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++ = ' '; } } }