Metropoli BBS
VIEWER: execdyam.c MODE: TEXT (ASCII)
/* Copyright (C) 1993 by Thomas Glen Smith.  All Rights Reserved. */
/* execdyam APL2 V1.0.0 ************************************************
* The entry point to execdyam is returned by execdyap to execdyas when *
* the function is type SCMD or SCDO. Execdyas stores the entry point to*
* execdyam in argument *pep.                                           *
*      If slashtrc is execdyam's caller, pep will've been set to the   *
* address of dp->deriv_left.func. Later redscan tests for              *
* dp->deriv_left.func equal to either execdyal or execdyam, and if so, *
* and the data type is other than APLAPL, it processes the current     *
* operation as a primitive dyadic scalar.                              *
*      Execdyak may also be the caller.                                *
***********************************************************************/
#define INCLUDES APLCB+FUNSTRUC
#include "includes.h"
Aplcb execdyam(pfun,left,rite)
void *pfun; /* function structure - see funstruc.h */
Aplcb left,rite; /* function arguments */
{
	Dyadicp; Errstop; Execdyat;
	int lefttype,ritetype;

	if (left == NULL || rite == NULL)
		return(errstop(44,left,rite,NULL));
	lefttype = left->aplflags & (APLMASK + APLAPL); /* data type */
	ritetype = rite->aplflags & (APLMASK + APLAPL); /* data type */
	if (lefttype == APLAPL || ritetype == APLAPL)
		return(execdyat(pfun,left,rite,execdyam));
	else return(dyadicp(pfun,left,rite));
}
[ RETURN TO DIRECTORY ]