/* Copyright (C) 1992 by Thomas Glen Smith. All Rights Reserved. */
/* execopck APL2 V1.0.0 ************************************************
* Called by execexee when it has an operand. Execopck will take care *
* of any operand indexing indicated on the operand stack, and will *
* invoke execdyad if a dyadic function is available to perform. *
***********************************************************************/
#define INCLUDES STDIO+APLTOKEN+APLCB+TREE
#include "includes.h"
Apltoken execopck(op)
Apltoken op; /* current token */
{
Axistest; Execdyad; Execindx; Popnest;
extern Treelist treehdr;
extern int aplerr;
Apltoken ritetok;
while (axistest(treehdr->avlexec->avloprst))
op = execindx(op); /* indexing */
if (NULL != treehdr->avlexec->avlfunst &&
NULL != (ritetok = popnest(&(treehdr->avlexec->avloprst))))
op = execdyad(op,ritetok);
return(op);
}