/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */
/* execsped APL2 V1.0.0 ************************************************
* Called by execspec to perform specification (left arrow) *
* when it is not selective specification. *
***********************************************************************/
#define INCLUDES APLCHDEF+APLTOKEN+APLCB+TREE
#include "includes.h"
int execsped(tok, op)
Apltoken tok; /* token for next operator */
Apltoken op; /* token for next operand */
{
Axistest; Execdyah; Execfree; Execindx; Lifo;
extern Treelist treehdr;
extern int aplerr;
int noexit=1;
if (tok != NULL /* no function? */ || op == NULL /* no operand? */) {
execfree(tok);
execfree(op);
aplerr = 66; /* object to assign to not found */
return(!noexit);
}
if (axistest(treehdr->avlexec->avloprst)) {
op = execindx(op); /* do indexed assignment */
if (aplerr) return(!noexit);
op = lifo(&(treehdr->avlexec->avloprst),op);
return(aplerr == 0);
}
else return(execdyah(op)); /* do non-indexed assignment */
}