Metropoli BBS
VIEWER: each.c MODE: TEXT (ASCII)
/* Copyright (C) 1993 by Thomas Glen Smith.  All Rights Reserved. */
/* each APL2 V1.0.0 ****************************************************
* Called by eachtran.                                                  *
* Derived function routine to handle each.                             *
***********************************************************************/
#define INCLUDES APLCHDEF+FUNSTRUC+APLDERIV+APLCB
#include "includes.h"
Aplcb each(dp,left,rite)
Aplderiv dp; /* structure describing derived function */
Aplcb left,rite; /* arguments */
{
	Aplcopy; Eachdyad; Eachmona; Errinit; Errstop;
	Aplcb out=NULL;

	if (errinit())
		out = errstop(0,left,rite,NULL);
	else {
		if (!(rite->aplflags & APLTEMP)) { /* If it's not temp, */
			rite = aplcopy(rite);	/* It could be replaced */
			rite->aplflags |= APLTEMP; /* during each. */
		}
		if (left) {
			if (!(left->aplflags & APLTEMP)) {
				left = aplcopy(left);
				left->aplflags |= APLTEMP;
			}
			out = eachdyad(dp,left,rite);
		}
		else out = eachmona(dp,rite);
	}
	return(out);
}
[ RETURN TO DIRECTORY ]