+ tt = getalpha (str, MAXTOK);
+ if (tt == TT_ERROR) {
+ sys_error (ERR_WARNING, "Error in POL parameter command");
+ reader();
+ return(false);
+ }
+ if ((cmd = cmdtable.lookup (str)) == NULL) {
+ sys_error (ERR_WARNING, "POL: Unrecognized command %s", cmd);
+ reader();
+ return (false);
+ } else {
+ found = false;
+ switch (cmd->getCode()) {
+ case PC_TRON:
+ m_bTrace = true;
+ found = true;
+ break;
+ case PC_TROFF:
+ m_bTrace = false;
+ found = true;
+ break;
+ case PC_FILE:
+ found = true;
+ tt = gettok (&tok);
+ usefile (P_USE_FILE, tok.tokstr);
+ break;
+ case PC_NL_EOC:
+ found = true;
+ m_bNewlineIsEOC = true;
+ break;
+ case PC_NL_NEOC:
+ found = true;
+ m_bNewlineIsEOC = false;
+ break;
+ case PC_DUMP:
+ found = true;
+ printf("eoc = %c str = %c com = %c cmd = %c prg = %c\n",
+ meta.eoc, meta.str, meta.com, meta.cmd, meta.prg);
+ printf("con = %c out = %c ter = %c inb = %c\n",
+ meta.con, meta.out, meta.ter, meta.inb);
+ break;
+ }
+ if (found == false) {
+ tt = gettok (&tok);
+ if (tt != TT_SPECLCHAR) {
+ sys_error (ERR_SEVERE, "POL: Illegal command character");
+ return (false);
+ }
+ switch(cmd->getCode()) {
+ case PC_EOC:
+ meta.eoc = tok.tokstr[0];
+ break;
+ case PC_STR:
+ meta.str = tok.tokstr[0];
+ break;
+ case PC_COM:
+ meta.com = tok.tokstr[0];
+ break;
+ case PC_CMD:
+ meta.cmd = tok.tokstr[0];
+ break;
+ case PC_PRG:
+ meta.prg = tok.tokstr[0];
+ break;
+ case PC_CON:
+ meta.con = tok.tokstr[0];
+ break;
+ case PC_OUT:
+ meta.out = tok.tokstr[0];
+ break;
+ case PC_TER:
+ meta.ter = tok.tokstr[0];
+ break;
+ case PC_INB:
+ meta.inb = tok.tokstr[0];
+ break;
+ default:
+ printf("command not implemented\n");
+ break;
+ } /* switch (tok->type) */
+ } /* if (found == false) */
+ reader(); /* clean up command */
+ } /* if legal command */
+
+ return (true);
+}
+
+
+int
+POL::gettok (TOKEN *tok)
+{
+ int c, toktype;
+ int inum;
+ double fnum;
+ int toksiz = MAXTOK; /* maximum length of token string */
+
+ while ((c = inchar()) == BLANK || c == TAB)
+ ;
+ ungetch (c);
+
+ c = lookchar();
+ toktype = type(c);
+
+ fnum = 0.0;
+ inum = 0;
+
+ if (c == BLANK || c == TAB) { /* skip white space */
+ getblank(tok->tokstr, toksiz);
+ toktype = TT_BLANK;
+ } else if (toktype == LETTER) {
+ toktype = getalpha (tok->tokstr, toksiz);
+ } else if (c == meta.str) { /* quoted string */
+ getquote (tok->tokstr, toksiz);
+ toktype = TT_STRING;
+ } else if (type(c) == DIGIT || c == PLUS || c == HYPHEN || c == PERIOD) {
+ toktype = getnumber (tok->tokstr, toksiz, &fnum, &inum);
+ } else if (c == EOF) {
+ tok->tokstr[0] = EOS;
+ toktype = TT_EOF;
+ } else {
+ c = inchar();
+ tok->tokstr[0] = c;
+ tok->tokstr[1] = EOS;
+ toktype = TT_SPECLCHAR;
+ }