|
|
1.1 ! root 1: /* Copyright Bell Telephone Laboratories Whippany, N.J. ! 2: ! 3: * ///////////////////////////////////// ! 4: * ///////////////////////////////////// ! 5: * /////////////// let.c /////////////// ! 6: * /// J. P. Hawkins WH X4610 8C-001 /// ! 7: * ///// Sun Aug 26 06:06:16 1979 ////// ! 8: * ///////////////////////////////////// ! 9: * ///////////////////////////////////// ! 10: ! 11: * ! 12: * VARIABLE ASSIGNMENT ROUTINE for ! 13: * LET command ! 14: */ ! 15: /* "@(#) let.c: V 1.4 3/4/81" */ ! 16: ! 17: #include "bas.h" ! 18: /* ! 19: #define skip00() {while(*lexptr == ' ' || *lexptr == '\t') *lexptr++;} ! 20: */ ! 21: #define skip00() {} /* does nothing */ ! 22: ! 23: let() ! 24: { ! 25: int type; /* field type */ ! 26: char varnam[40]; ! 27: double evalx(); ! 28: double value; ! 29: #ifdef STRINGS ! 30: char field[512]; ! 31: #else ! 32: char field[40]; ! 33: #endif ! 34: char *lexptr; /* string pointer for let */ ! 35: ! 36: lexptr = expr; /* set text pointer */ ! 37: ! 38: type = class(&lexptr,field); /* get field type */ ! 39: ! 40: switch(type) ! 41: { ! 42: case VRCLASS: ! 43: case VACLASS: ! 44: #ifdef STRINGS ! 45: case SVCLASS: ! 46: case SACLASS: ! 47: #endif ! 48: break; ! 49: default: ! 50: error(inst.thing.linno, 3); /* ill var name */ ! 51: return(-1); ! 52: break; ! 53: } ! 54: strcpy(varnam, field); /* copy variable name */ ! 55: ! 56: skip00(); ! 57: if(*lexptr++ == '\15') /* if code for '=' */ ! 58: { ! 59: switch(type) ! 60: { ! 61: case VRCLASS: /* regular variable name */ ! 62: value = evalx(lexptr); /* eval right side */ ! 63: putvar(varnam, value); ! 64: return(0); ! 65: break; ! 66: case VACLASS: /* subscripted var field */ ! 67: value = evalx(lexptr); /* eval right side */ ! 68: aputvar(varnam, value); ! 69: return(0); ! 70: break; ! 71: #ifdef STRINGS ! 72: case SVCLASS: /* String variable */ ! 73: evals(lexptr,field); /* expand expression */ ! 74: sputvar(varnam,field); /* Store the string */ ! 75: break; ! 76: case SACLASS: /* String array variable */ ! 77: evals(lexptr,field); ! 78: saputvar(varnam,field); ! 79: break; ! 80: #endif ! 81: default: ! 82: break; ! 83: } ! 84: } ! 85: else ! 86: { ! 87: error(inst.thing.linno, 8); /* missing = */ ! 88: return(-1); ! 89: } ! 90: return 0; ! 91: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.