/*Copyright (C) 1992, 1995 by Thomas Glen Smith. All Rights Reserved.*/ /* apledqu APL2 V1.0.0 ************************************************* * Called from aplediy to display statements, e.g. [L]. * ***********************************************************************/ #define INCLUDES APLCB+APLCHDEF+APLED+APLFUNCI+APLMEM+APLTOKEN+STRING+TREE #include "includes.h" void apledqu(e,cp,stmtlen,tokcnt) Apledst e; /* Edit common area. */ char *cp; /* Pointer to current input. */ int stmtlen; /* Length of current input. */ int tokcnt; /* Tokens remaining to process. */ { Apledno; Apledpf; Apledpr; Execmsg; Execqfxe; Value; extern int aplerr; Aplcb in; Apltoken curtok,tokhdr; Apled ed; double disno; int tempsave; char *line,pf[50]; tokhdr = *(e->fp->functokp); /* token list from temp. hdr. */ if (tokcnt > 4 || tokhdr->token_code != RIGHT_BRACKET) { execmsg(cp,stmtlen,0,"Bad syntax for DEL display."); return; } if (tokcnt == 3) disno = 0.0; /* wants display of everything */ else { disno = apledno(tokhdr + tokcnt - 2,cp,stmtlen); /* get number */ if (disno == -1.0) return; /* apledno will have printed message */ } for (ed = e->edhdr; ed != NULL && disno > ed->apledst; ed = ed->aplednxt); if (ed == NULL) { execmsg(cp,stmtlen,0,"Statement to display not found."); return; } for (e->cured = ed; e->cured != NULL; e->cured = e->cured->aplednxt) { line = apledpr(e->cured,1); /* Go format statement. */ execmsg(line,strlen(line),0,NULL); /* Now print it. */ if (tokcnt > 3) { /* display single statement only */ e->aplstinc = 0.0; /* display this stmtno next */ return; } } e->aplstinc = 1.0; e->cured = e->edlst; apledpf(0.0,pf,1); /* format trailing DEL */ execmsg(pf,strlen(pf),0,NULL); /* Now print it. */ }