|
|
1.1 root 1: /* Copyright Bell Telephone Laboratories Whippany, N.J.
2:
3: * ***********************************
4: * ***********************************
5: * ********** ON GOTO/GOSUB **********
6: * *** R. B. Drake WH 8C-005 X4163 ***
7: * **** Sun Aug 26 11:02:16 1979 *****
8: * ***********************************
9: * ***********************************
10:
11: */
12: /* "@(#) on.c: V 1.1 12/21/80" */
13:
14: /* routine to handle on goto */
15: #include "bas.h"
16: extern int stpflg;
17: double evalx();
18: char *prncpy();
19: extern char *expr,*eoexpr;
20: on()
21: {
22: int i,j;
23: char txtbuf[80];
24: char c;
25: if((j = evalx(expr)) <= 0)
26: {
27: error(inst.thing.linno,38);
28: return(-1);
29: }
30: if(stpflg == 1)
31: return(-1);
32: if((c= *eoexpr++) > '\003' && c != '\016')
33: {
34: error(inst.thing.linno,8); /* expression syntax */
35: return(-1);
36: }
37: for(i=0;i<j;i++)
38: {
39: eoexpr = prncpy(txtbuf,eoexpr);
40: if(*eoexpr++ == '\0' && i != (j-1))
41: {
42: error(inst.thing.linno,38); /* not enough references*/
43: return(-1);
44: }
45: }
46: expr = txtbuf;
47: if(c != '\016')
48: {
49: if(__goto() < 0)
50: return(-1);
51: return(0);
52: }
53: if(gosub() < 0)
54: return(-1);
55: return(0);
56: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.