Metropoli BBS
VIEWER: popnesc.c MODE: TEXT (ASCII)
/* Copyright (C) 1992 by Thomas Glen Smith.  All Rights Reserved. */
/* popnesc APL2 V1.0.0 *************************************************
* Popnesc is called from popnest when the result is to be a simple     *
* array of data type APLCPLX.                                          *
***********************************************************************/
#define INCLUDES APLCB+APLTOKEN
#include "includes.h"
void popnesc(hdr,out)
void *hdr; /* Operand stack */
Aplcb out; /* new output operand */
{
     Endoper; Execgetp; Pop; Value;
     extern int aplerr;
     Aplcb wrk;
     int datacnt;
     double *op;


     op = out->aplptr.apldata;
     datacnt = out->aplcount;
     while( datacnt-- && aplerr == 0) {
          wrk = execgetp(pop(hdr)); /* pop token, get aplcb ptr */
          switch (wrk->aplflags & APLMASK) {
          	case APLINT:
               	*op++ = *(wrk->aplptr.aplint);
                    *op++ = 0e0;
                    break;
          	case APLNUMB:
               	*op++ = *(wrk->aplptr.apldata);
                    *op++ = 0e0;
                    break;
          	case APLCPLX:
               	*op++ = *(wrk->aplptr.apldata);
               	*op++ = *(wrk->aplptr.apldata + 1);
                    break;
               default:
               	aplerr = 123; /* item out of place */
                    break;
          } /* end switch */
          endoper(wrk);
     }
}
[ RETURN TO DIRECTORY ]