/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */ /* formdfv APL2 V1.0.0 ************************************************* * Formdfv is called by formdfu and formdfw if rite has rank > 2 to * * determine how many blank lines need to be added between adjacent * * rows to represent interdimensional spacing. Planes of a * * 3-dimensional array are separated by a blank line. For higher rank * * arrays, each successive plane is separated by an additional line. * * Formdfv s/b called once for each row of output. It will return the * * number of blank lines that should follow the current row. * ***********************************************************************/ #define INCLUDES STDIO+APLCB #include "includes.h" int formdfv(rite,cntcb) Aplcb rite,cntcb; { int *cntp,*dimp,*dims,rowspaces = 0; dims = rite->apldim; /* Start of dimension array. */ dimp = dims + rite->aplrank - 2; /* Second last dimension. */ cntp = cntcb->aplptr.aplint; /* One counter for each dimension */ /* of rite, less 1. */ while (++(*cntp) == *dimp) { /* Bump counter pointed to by */ /* *cntp, and compare to dimension */ /* pointed to by *dimp. */ rowspaces++; /* Interdimensional spacing. */ *cntp = 0; /* Reset the counter for this dimension to 0. */ if (dimp == dims) break; /* Stop loop if dimp points at 1st dim. */ dimp--; /* Point dimp to next dim, e.g. if was 2, is now 1. */ cntp++; /* Point to next counter. */ } return(rowspaces); }