/*Copyright (C) 1992, 1995 by Thomas Glen Smith. All Rights Reserved.*/ /* aplgrps APL2 V1.0.0 ************************************************* * Called from aplwksp to do )FNS, )GRPS, and )VARS. * ***********************************************************************/ #define INCLUDES APLCB+APLTOKEN+STRING+TREE #include "includes.h" void aplgrps(rite,cp,cpend,code) Aplcb rite; /* aplcb for command text */ char *cp; /* Pointer to char immediately after right parenthesis */ char *cpend; /* Pointer to end of command text */ int code; /* 1=groups, 2=variables, 3=functions, 4=all */ { Aplgrpsb; Execpop; Execpars; extern int aplerr; extern Treelist treehdr; /* variable tree stack */ Apltoken tok; Treelist workhdr; char *ch,con[] = {'\001','\0'}; /* lowest character value */ if (treehdr == NULL) return; /* nothing to report */ if (NULL != (tok = execpars(cp,cpend-cp))) { ch = tok->token_ptr.token_string; if (tok->token_code != OPERAND_TOKEN || tok->token_queue.token_next_ptr != NULL || 1 != strlen(ch)) aplerr = 58; /* syntax error */ } else ch = con; if (aplerr == 0) for (workhdr = (Treelist) treehdr; workhdr != NULL; workhdr = workhdr->treenext) aplgrpsb(ch,code,workhdr->avlhdr); execpop(&tok); }