Metropoli BBS
VIEWER: ravel2a.c MODE: TEXT (ASCII)
/* Copyright (C) 1993 by Thomas Glen Smith.	All Rights Reserved. */
/* ravel2a APL2 V1.0.0 *************************************************
* Called by ravel2 to get the output aplcb.                            *
***********************************************************************/
#define INCLUDES APLCHDEF+FUNSTRUC+APLCB
#include "includes.h"
Aplcb ravel2a(rite, axes, lodim, comcnt, newaxis)
Aplcb axes,rite; /* Original arguments.                               */
int	lodim,      /* Index (org 0) of lowest dimension being combined. */
	comcnt,     /* Count of dimensions being combined.               */
	newaxis;    /* New axis value.                                   */
{
	Dtacopy; Errstop; Getcb; Intcopy;
	extern int aplerr;
	Aplcb out;
	int datatyp,i,*ip;
     void *dataptr;

	for (;;) {
     	if (aplerr) break;
		datatyp = rite->aplflags & (APLMASK + APLAPL);
		out = getcb(NULL,rite->aplcount,datatyp + APLTEMP,
          	rite->aplrank-comcnt+1,NULL);
		if (aplerr) break;
		dataptr=dtacopy(out->aplptr.apldata,rite->aplptr.apldata,
			out->aplcount,1,datatyp);
		if (aplerr) break;
		if (lodim)
			ip = intcopy(out->apldim,rite->apldim,lodim,1);
		else ip = out->apldim;
		*ip++ = newaxis; /* new dimension */
		if ((i = lodim + comcnt) < rite->aplrank)
			ip = intcopy(ip,rite->apldim+i,rite->aplrank-i,1);
		break;
	}
	return(errstop(0,axes,rite,out));
}
[ RETURN TO DIRECTORY ]