/* Copyright (C) 1992 by Thomas Glen Smith. All Rights Reserved. */ /* popnesu APL2 V1.0.0 ************************************************* * Popnesu is called from popnest when the result is to be a nested or * * mixed data type array. * ***********************************************************************/ #define INCLUDES APLCB+APLTOKEN #include "includes.h" Apltoken popnesu(hdr,out) void *hdr; /* operand stack */ Aplcb out; /* new output operand */ { Aplcopy; Endoper; Execgetp; Perm; Pop; extern int aplerr; Aplcb *op,wrk; int datacnt; op = out->aplptr.aplapl; datacnt = out->aplcount; while( datacnt-- ) { if (aplerr) wrk = NULL; else { wrk = execgetp(pop(hdr)); /* pop token, get aplcb ptr */ if (aplerr == 0) if (aplerr == 0 && !(wrk->aplflags & APLTEMP)) wrk = aplcopy(wrk); else wrk = perm(wrk); } *op++ = wrk; } }