30 lines
502 B
C
30 lines
502 B
C
/* $Header$ */
|
|
|
|
#define MAXNESTING 1000
|
|
|
|
int _gotable[MAXNESTING];
|
|
int topstk=0;
|
|
|
|
_gosub(x)
|
|
int x;
|
|
{
|
|
/* administer gosub */
|
|
#ifdef DEBUG
|
|
printf("store %d in %d\n",x,topstk);
|
|
#endif
|
|
if( topstk== MAXNESTING) error(26);
|
|
_gotable[topstk]= x;
|
|
topstk++;
|
|
}
|
|
_retstmt()
|
|
{
|
|
/* make sure that a return label index is on top
|
|
of the stack */
|
|
#ifdef DEBUG
|
|
printf("return to %d %d\n",_gotable[topstk-1],topstk-1);
|
|
#endif
|
|
if( topstk==0 || topstk==MAXNESTING)
|
|
error(1);
|
|
return( _gotable[--topstk]);
|
|
}
|