309: if (token <= tEOC) return 0;
310: return_er(E_PAR);
311: }
325: if (isDLM()) return 0;
326: return_er(E_LESS);
327: }
351: } else if (token != tNUM) {
352: return_er(E_LESS); // non-numeric value
353: }
363: while (getToken(defbase) == tOPIND) {
364: if (readMem(*val, &v, 4, 4) != 4) return_er(E_MACV);
365: *val = v;
372: }
373: if (token > tDLM) return_er(E_LESS);
374: return 0;
393: } else {
394: if (flg & 0x01) return_er(E_LESS); // cannot be omitted
395: }
415: } else {
416: if (flg & 0x02) return_er(E_LESS); // cannot be omitted
417: }
419: // validate address range
420: if (cLen <= 0 || cLen > MAX_RANGE) return_er(E_RANGE);
421: if (((cLen + cAddr - 1) ^ cAddr) & 0x80000000) {
422: cLen = (0x80000000 - (cAddr & 0x7fffffff)) / unit;
423: if ((cLen *= unit) == 0) return_er(E_RANGE);
424: }
438: if (token == tSTR) { // character string
439: if (tokenLen == 0) return_er(E_EMPTY);
440:
442: k = ALIGN_U(tokenLen, unit);
443: if (n + k > SETDT_SZ) return_er(E_LIMIT);
444: memcpy(&buf[n], tokenStr, tokenLen);
449: } else { // numeric parameter
450: if (n + unit > SETDT_SZ) return_er(E_LIMIT);
451: if (getNumber(0, &num)) return E_LESS;
461: }
462: if (n == 0) return_er(E_EMPTY);
463: return n; // data length