Metropoli BBS
VIEWER: execindy.c MODE: TEXT (ASCII)
/* Copyright (C) 1993 by Thomas Glen Smith.  All Rights Reserved. */
/* execindy APL2 V1.0.0 ************************************************
* Called from execindx to set up the indices array.                    *
***********************************************************************/
#define INCLUDES APLTOKEN+APLCB
#include "includes.h"
Aplcb execindy(ixtok,rank)
Apltoken ixtok; /* token for indices */
int rank;
{
     Errstop; Execgetp; Getcb; Pop;
     extern int aplerr;
     Aplcb indices,*ixout;
     Apltoken ixnxt;
     int i;

     indices = getcb(NULL,rank,APLAPL + APLTEMP + APLINDX,1,NULL);
     if (aplerr == 0) {
          ixout = indices->aplptr.aplapl;
          for ( i = rank; i > 0; i--) {
               if ( aplerr == 0 && NULL ==
                    (ixnxt = pop(&(ixtok->token_ptr.token_stack))))
                    aplerr = 9; /* invalid axis */
               if (aplerr)
                    *ixout++ = NULL;
               else *ixout++ = execgetp(ixnxt);
          }
          if (NULL != ixtok->token_ptr.token_stack && aplerr == 0)
               aplerr = 9; /* invalid axis */
     }
     return(errstop(0,NULL,NULL,indices));
}
[ RETURN TO DIRECTORY ]