#define	SEOS	1
#define	SCOMMENT	2
#define	SLABEL	3
#define	SUNKNOWN	4
#define	SHOLLERITH	5
#define	SICON	6
#define	SRCON	7
#define	SDCON	8
#define	SBITCON	9
#define	SOCTCON	10
#define	SHEXCON	11
#define	STRUE	12
#define	SFALSE	13
#define	SNAME	14
#define	SNAMEEQ	15
#define	SFIELD	16
#define	SSCALE	17
#define	SINCLUDE	18
#define	SLET	19
#define	SASSIGN	20
#define	SAUTOMATIC	21
#define	SBACKSPACE	22
#define	SBLOCK	23
#define	SCALL	24
#define	SCHARACTER	25
#define	SCLOSE	26
#define	SCOMMON	27
#define	SCOMPLEX	28
#define	SCONTINUE	29
#define	SDATA	30
#define	SDCOMPLEX	31
#define	SDIMENSION	32
#define	SDO	33
#define	SDOUBLE	34
#define	SELSE	35
#define	SELSEIF	36
#define	SEND	37
#define	SENDFILE	38
#define	SENDIF	39
#define	SENTRY	40
#define	SEQUIV	41
#define	SEXTERNAL	42
#define	SFORMAT	43
#define	SFUNCTION	44
#define	SGOTO	45
#define	SASGOTO	46
#define	SCOMPGOTO	47
#define	SARITHIF	48
#define	SLOGIF	49
#define	SIMPLICIT	50
#define	SINQUIRE	51
#define	SINTEGER	52
#define	SINTRINSIC	53
#define	SLOGICAL	54
#define	SNAMELIST	55
#define	SOPEN	56
#define	SPARAM	57
#define	SPAUSE	58
#define	SPRINT	59
#define	SPROGRAM	60
#define	SPUNCH	61
#define	SREAD	62
#define	SREAL	63
#define	SRETURN	64
#define	SREWIND	65
#define	SSAVE	66
#define	SSTATIC	67
#define	SSTOP	68
#define	SSUBROUTINE	69
#define	STHEN	70
#define	STO	71
#define	SUNDEFINED	72
#define	SWRITE	73
#define	SLPAR	74
#define	SRPAR	75
#define	SEQUALS	76
#define	SCOLON	77
#define	SCOMMA	78
#define	SCURRENCY	79
#define	SPLUS	80
#define	SMINUS	81
#define	SSTAR	82
#define	SSLASH	83
#define	SPOWER	84
#define	SCONCAT	85
#define	SAND	86
#define	SOR	87
#define	SNEQV	88
#define	SEQV	89
#define	SNOT	90
#define	SEQ	91
#define	SLT	92
#define	SGT	93
#define	SLE	94
#define	SGE	95
#define	SNE	96
#define	SENDDO	97
#define	SWHILE	98
#define	SSLASHD	99
#define	SBYTE	100

/* #line	125	"/home/dmg/h/f2c/gram.in" */
#include "defs.h"
#include "p1defs.h"

static int nstars;			/* Number of labels in an
					   alternate return CALL */
static int datagripe;
static int lasttype;
static int ndim;
static int vartype;
int new_dcl;
static ftnint varleng;
static struct Dims dims[MAXDIM+1];
extern struct Labelblock **labarray;	/* Labels in an alternate
						   return CALL */
extern int maxlablist;

/* The next two variables are used to verify that each statement might be reached
   during runtime.   lastwasbranch   is tested only in the defintion of the
   stat:   nonterminal. */

int lastwasbranch = NO;
static int thiswasbranch = NO;
extern ftnint yystno;
extern flag intonly;
static chainp datastack;
extern long laststfcn, thisstno;
extern int can_include;	/* for netlib */
extern void endcheck Argdcl((void));
extern struct Primblock *primchk Argdcl((expptr));

#define ESNULL (Extsym *)0
#define NPNULL (Namep)0
#define LBNULL (struct Listblock *)0

 static void
pop_datastack(Void) {
	chainp d0 = datastack;
	if (d0->datap)
		curdtp = (chainp)d0->datap;
	datastack = d0->nextp;
	d0->nextp = 0;
	frchain(&d0);
	}


/* #line	173	"/home/dmg/h/f2c/gram.in" */
typedef union 	{
	int ival;
	ftnint lval;
	char *charpval;
	chainp chval;
	tagptr tagval;
	expptr expval;
	struct Labelblock *labval;
	struct Nameblock *namval;
	struct Eqvchain *eqvval;
	Extsym *extval;
	} YYSTYPE;
extern	int	yyerrflag;
#ifndef	YYMAXDEPTH
#define	YYMAXDEPTH	150
#endif
YYSTYPE	yylval;
YYSTYPE	yyval;
#define YYEOFCODE 1
#define YYERRCODE 2
short	yyexca[] =
{-1, 1,
	1, -1,
	-2, 0,
-1, 20,
	4, 38,
	-2, 231,
-1, 24,
	4, 42,
	-2, 231,
-1, 151,
	4, 247,
	-2, 189,
-1, 175,
	4, 269,
	81, 269,
	-2, 189,
-1, 225,
	80, 174,
	-2, 140,
-1, 246,
	77, 231,
	-2, 228,
-1, 273,
	4, 290,
	-2, 144,
-1, 277,
	4, 299,
	81, 299,
	-2, 146,
-1, 330,
	80, 175,
	-2, 142,
-1, 360,
	4, 271,
	17, 271,
	77, 271,
	81, 271,
	-2, 190,
-1, 439,
	94, 0,
	95, 0,
	96, 0,
	97, 0,
	98, 0,
	99, 0,
	-2, 154,
-1, 456,
	4, 293,
	81, 293,
	-2, 144,
-1, 458,
	4, 295,
	81, 295,
	-2, 144,
-1, 460,
	4, 297,
	81, 297,
	-2, 144,
-1, 462,
	4, 300,
	81, 300,
	-2, 145,
-1, 506,
	81, 293,
	-2, 144,
};
#define	YYNPROD	305
#define	YYPRIVATE 57344
#define	YYLAST	1455
short	yyact[] =
{
 239, 359, 474, 306, 416, 427, 299, 389, 473, 267,
 315, 231, 400, 358, 318, 415, 328, 253, 319, 100,
 224, 297, 294, 280, 402, 401, 305, 117, 185, 265,
  17, 122, 204, 275, 196, 191, 202, 203, 119, 129,
 107, 271, 200, 184, 112, 104, 338, 102, 166, 167,
 336, 337, 338, 344, 343, 342, 121, 157, 120, 345,
 347, 346, 349, 348, 350, 261, 276, 336, 337, 338,
 131, 132, 133, 134, 104, 136, 539, 158, 399, 158,
 313, 166, 167, 336, 337, 338, 344, 343, 342, 341,
 340, 311, 345, 347, 346, 349, 348, 350, 399, 398,
 105, 514, 115, 537, 166, 167, 336, 337, 338, 344,
 343, 342, 341, 340, 238, 345, 347, 346, 349, 348,
 350, 106, 130, 104, 478, 211, 187, 188, 412, 320,
 259, 260, 261, 411,  95, 166, 167, 336, 337, 338,
 186, 213, 296, 212, 194, 486, 195, 542, 245,  96,
  97,  98, 527, 104, 529, 158, 523, 449, 258, 158,
 241, 243, 484, 101, 487, 485, 216, 274, 471, 222,
 217, 472, 221, 158, 483, 465, 430, 220, 166, 167,
 259, 260, 261, 262, 158, 166, 167, 336, 337, 338,
 344, 156, 121, 156, 120, 464, 345, 347, 346, 349,
 348, 350, 463, 373, 281, 282, 283, 236, 104, 232,
 242, 242, 249, 101, 292, 301, 263, 468, 290, 302,
 279, 296, 291, 288, 289, 166, 167, 259, 260, 261,
 264, 317, 455, 335, 189, 351, 312, 310, 446, 453,
 431, 284, 425, 335, 166, 167, 259, 260, 261, 262,
 258, 466, 325, 158, 467, 450, 380,  99, 449, 158,
 158, 158, 158, 158, 258, 258, 357, 379, 269, 156,
 234, 420, 266, 156, 421, 409, 393, 335, 410, 394,
 361, 333, 323, 362, 334, 258, 378, 156, 270, 208,
 326, 101, 330, 178, 113, 332, 374, 111, 156, 375,
 376, 403, 352, 110, 109, 108, 354, 355, 385, 386,
 363, 356, 384, 225, 377, 425, 367, 368, 369, 370,
 371, 422, 223, 364, 335, 538, 391, 335, 534, 533,
 532, 335, 423, 335, 372, 413, 408, 395, 390, 166,
 167, 259, 260, 261, 262, 381, 434, 528, 531, 526,
 494, 429, 237, 335, 496, 335, 335, 335, 104, 104,
 490, 298, 138, 158, 258, 335, 448, 156, 258, 258,
 258, 258, 258, 156, 156, 156, 156, 156, 251, 192,
 451, 103, 335, 454, 309, 277, 277, 360, 287, 426,
 118, 352, 166, 167, 259, 260, 261, 262, 137, 387,
 403, 232, 435, 436, 437, 438, 439, 440, 441, 442,
 443, 444, 477, 247, 469, 406, 482, 470, 308, 269,
 452, 166, 167, 336, 337, 338, 344, 335, 479, 155,
 244, 155, 488, 228, 225, 499, 335, 335, 335, 335,
 335, 335, 335, 335, 335, 335, 383, 497, 273, 273,
 495, 502, 201, 258, 150, 151, 214, 175, 103, 103,
 103, 103, 501, 190, 475, 454, 210, 172, 193, 142,
 503, 197, 198, 199, 504, 510, 335, 156, 207, 403,
 277, 513, 507, 508, 509, 331, 277, 482, 517, 489,
 335, 520, 492, 335, 197, 218, 219, 242, 498, 335,
 525, 519, 518, 516, 515, 524, 353, 155, 404, 512,
 246, 155, 248, 104, 406, 417,  30, 535, 406, 511,
 390, 209, 213, 335, 227, 155, 268,  93,   6, 541,
 250, 335, 171, 173, 177,  82, 155, 335,   4, 475,
  81, 335,   5, 273, 543,  80, 457, 459, 461, 382,
 124,  79, 103, 174, 304, 295, 307, 522,  78,  77,
  76,  60,  49, 242,  48,  45, 424, 322,  33, 114,
 530, 118, 206, 316, 414, 321, 205, 397, 396, 300,
 197, 536, 481, 135, 215, 392, 277, 277, 277, 314,
 540, 116,  26, 406,  25, 353,  24,  23,  22,  21,
 388, 286,   9,   8,   7, 155,   2, 404, 303,  20,
 165, 155, 155, 155, 155, 155,  51, 491, 293, 268,
 230, 329, 268, 268, 166, 167, 336, 337, 338, 344,
 343, 457, 459, 461, 327, 345, 347, 346, 349, 348,
 350, 418,  92, 256,  53, 339,  19,  55,  37, 456,
 458, 460, 226,   3,   1,   0,   0,   0,   0,   0,
   0, 307,   0, 405, 197,   0,   0,   0,   0,   0,
   0, 277, 277, 277, 419,   0,   0,   0, 353,   0,
 321,   0,   0,   0,   0,   0, 404,   0,   0,   0,
 493,   0,   0,   0, 432, 166, 167, 336, 337, 338,
 344, 343, 342, 341, 340,   0, 345, 347, 346, 349,
 348, 350,   0,   0,   0, 155,   0, 500,   0,   0,
   0,   0,   0,   0,   0,   0, 268,   0,   0,   0,
   0,   0, 462,   0, 506, 458, 460, 166, 167, 336,
 337, 338, 344, 343, 342, 341, 340,   0, 345, 347,
 346, 349, 348, 350,   0,   0,   0, 295,   0,   0,
   0,   0, 405, 480,   0, 307, 405,   0,   0, 447,
   0,   0,   0,   0, 166, 167, 336, 337, 338, 344,
 343, 342, 341, 340, 316, 345, 347, 346, 349, 348,
 350,   0,   0, 445,   0,   0,   0,   0, 166, 167,
 336, 337, 338, 344, 343, 342, 341, 340, 268, 345,
 347, 346, 349, 348, 350,   0,   0,   0, 505,   0,
   0,   0,   0,   0,   0,   0, 505, 505, 505,   0,
   0,   0,   0,   0,   0,   0, 307,  12,   0,   0,
   0, 405,   0,   0,   0,   0, 505,   0,   0,   0,
 521,  10,  56,  46,  73,  86,  14,  61,  70,  91,
  38,  66,  47,  42,  68,  72,  31,  67,  35,  34,
  11,  88,  36,  18,  41,  39,  28,  16,  57,  58,
  59,  50,  54,  43,  89,  64,  40,  69,  44,  90,
  29,  62,  85,  13,   0,  83,  65,  52,  87,  27,
  74,  63,  15, 433,   0,  71,  84,   0, 166, 167,
 336, 337, 338, 344, 343, 342, 341, 340,   0, 345,
 347, 346, 349, 348, 350,   0,   0,   0,   0,   0,
  32,   0,   0,  75, 166, 167, 336, 337, 338, 344,
 343, 342, 341, 340,   0, 345, 347, 346, 349, 348,
 350,  73,   0,   0,   0,  70,   0,   0,  66,   0,
   0,  68,  72,   0,  67, 161, 162, 163, 164, 170,
 169, 168, 159, 160, 104,   0,   0,   0,   0,   0,
   0,   0,  64,   0,  69,   0,   0,   0,   0,   0,
   0,   0,   0,  65,   0,   0,   0,  74,   0,   0,
   0,   0,  71, 161, 162, 163, 164, 170, 169, 168,
 159, 160, 104,   0, 161, 162, 163, 164, 170, 169,
 168, 159, 160, 104,   0,   0,   0,   0,   0,   0,
  75,   0,   0,   0, 235,   0,   0,   0,   0,   0,
 166, 167, 365,   0, 366,   0,   0,   0,   0,   0,
 240, 161, 162, 163, 164, 170, 169, 168, 159, 160,
 104,   0, 161, 162, 163, 164, 170, 169, 168, 159,
 160, 104, 235, 229,   0,   0,   0,   0, 166, 167,
 233,   0,   0, 235,   0,   0,   0,   0, 240, 166,
 167, 476,   0,   0,   0,   0,   0,   0,   0, 240,
 161, 162, 163, 164, 170, 169, 168, 159, 160, 104,
 161, 162, 163, 164, 170, 169, 168, 159, 160, 104,
 235,   0,   0,   0,   0,   0, 166, 167, 233,   0,
   0, 235,   0,   0,   0,   0, 240, 166, 167, 428,
   0,   0,   0,   0,   0,   0,   0, 240, 161, 162,
 163, 164, 170, 169, 168, 159, 160, 104,   0, 161,
 162, 163, 164, 170, 169, 168, 159, 160, 104, 278,
   0,   0,   0, 272,   0, 166, 167,   0,   0,   0,
   0,   0,   0,   0,   0, 240, 161, 162, 163, 164,
 170, 169, 168, 159, 160, 104,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  94, 161, 162, 163, 164,
 170, 169, 168, 159, 160, 104, 257, 235,   0,   0,
   0,   0,   0, 166, 167,   0,   0,   0, 278,   0,
   0,   0,   0, 240, 166, 167,   0, 123,   0,   0,
 126, 127, 128,   0, 240,   0,   0,   0,   0,   0,
   0,   0, 139, 140,   0, 324, 141,   0, 143, 144,
 145, 166, 167, 146, 147, 148,   0, 149,   0,   0,
   0, 240,   0,   0,   0, 252,   0,   0,   0,   0,
   0, 166, 167, 254,   0, 255,   0, 179, 180, 181,
 182, 183, 161, 162, 163, 164, 170, 169, 168, 159,
 160, 104,   0, 161, 162, 163, 164, 170, 169, 168,
 159, 160, 104, 161, 162, 163, 164, 170, 169, 168,
 159, 160, 104, 161, 162, 163, 164, 170, 169, 168,
 159, 160, 104, 161, 162, 163, 164, 170, 169, 168,
 159, 160, 104,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 154,   0,   0,   0,   0,   0, 166, 167, 152,
   0, 153, 252,   0,   0,   0,   0,   0, 166, 167,
 285,   0, 154,   0,   0,   0,   0,   0, 166, 167,
 176,   0, 407,   0,   0,   0,   0,   0, 166, 167,
  56,  46, 252,  86,   0,  61,   0,  91, 166, 167,
  47,   0,   0,   0,   0,   0,   0,   0,   0,  88,
   0,   0,   0,   0,   0,   0,  57,  58,  59,  50,
   0,   0,  89,   0,   0,   0,   0,  90,   0,  62,
  85,   0,   0,  83,   0,  52,  87,   0,   0,  63,
   0, 125,   0,   0,  84
};
short	yypact[] =
{
-1000, 536, 524, 830,-1000,-1000,-1000,-1000,-1000,-1000,
 519,-1000,-1000,-1000,-1000,-1000,-1000, 210, 496,  19,
 224, 223, 222, 216,  82, 213,  16, 106,-1000,-1000,
-1000,-1000,-1000,1378,-1000,-1000,-1000,  37,-1000,-1000,
-1000,-1000,-1000,-1000,-1000, 496,-1000,-1000,-1000,-1000,
-1000, 392,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,1284, 390,1305, 390,
 212,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000, 496, 496, 496, 496,-1000,
 496,-1000, 302,-1000,-1000, 496,-1000, -30, 496, 496,
 496, 375,-1000,-1000,-1000, 496, 208,-1000,-1000,-1000,
-1000, 504, 389, 132,-1000,-1000, 379,-1000,-1000,-1000,
-1000, 106, 496, 496, 375,-1000,-1000, 243, 357, 515,
-1000, 356, 995,1140,1140, 353, 513, 496, 336, 496,
-1000,-1000,-1000,-1000,1198,-1000,-1000,  95,1325,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,1198, 191, 207,-1000,-1000,1092,1151,-1000,
-1000,-1000,-1000,1295, 311,-1000,-1000, 302, 302, 496,
-1000,-1000, 136, 284,-1000,  82,-1000, 284,-1000,-1000,
-1000, 496,-1000, 341,-1000, 307, 927,   5, 106,  -6,
 496,  82,  28,-1000,-1000,1178,-1000, 496,-1000,-1000,
-1000,-1000,-1000,1140,-1000,1140, 411,-1000,1140,-1000,
 203,-1000, 851, 513,-1000,1140,-1000,-1000,-1000,1140,
1140,-1000, 851,-1000,1140,-1000,  82, 513,-1000, 309,
 202,-1000,1325,-1000,-1000,-1000, 957,-1000,1325,1325,
1325,1325,1325, -22, 256, 122, 342,-1000,-1000, 342,
 342,-1000,1151, 205, 186, 175, 851,-1000,1151,-1000,
-1000,-1000,-1000,-1000,  95,-1000,-1000, 321,-1000,-1000,
 302,-1000,-1000, 198,-1000,-1000,-1000,  37,-1000,  -3,
1315, 496,-1000, 197,-1000,  47,-1000,-1000, 341, 498,
-1000, 496,-1000,-1000, 193,-1000, 242,  28,-1000,-1000,
-1000, 163,1140, 851,1054,-1000, 851, 273,  96, 159,
 851, 496, 825,-1000,1043,1140,1140,1140,1140,1140,
1140,1140,1140,1140,1140,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 715, 157, -41, 102, 691, 289, 177,-1000,
-1000,-1000,1198, 161, 851,-1000,-1000,  45, -22, -22,
 -22, 142,-1000, 342, 122, 151, 122,-1000,1151,1151,
1151, 654, 121, 114,  94,-1000,-1000,-1000, 173,-1000,
 138,-1000, 284,-1000,  57,-1000,  90,1006,-1000,1315,
-1000,-1000,  39,1102,-1000,-1000,-1000,1140,-1000,-1000,
 496,-1000, 341,  93,  84,-1000,  61,-1000,  83,-1000,
-1000, 496,1140,-1000, 283,1140, 612,-1000, 272, 277,
1140,1140,-1000, 513,-1000, -18, -41, -41, -41, 338,
 -35, -35, 541, 102,  52,-1000,1140,-1000, 513, 513,
  82,-1000,  95,-1000,-1000, 342,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,1151,1151,1151,-1000, 503, 502,  37,
-1000,-1000,1006,-1000,-1000,  21,-1000,-1000,1315,-1000,
-1000,-1000,-1000, 341,-1000, 498, 498, 496,-1000, 851,
1140,  75, 851, 432,-1000,-1000,1140, 271, 851,  71,
 269,  76,-1000,1140, 270, 236, 269, 252, 251, 250,
-1000,-1000,-1000,-1000,1006,-1000,-1000,  17, 247,-1000,
-1000,-1000,  -2,1140,-1000,-1000,-1000, 513,-1000,-1000,
 851,-1000,-1000,-1000,-1000,-1000, 851,-1000,-1000,-1000,
 851,  66, 513,-1000
};
short	yypgo[] =
{
   0, 654, 653,   1, 652, 167,   9,  30, 648, 647,
 646,   4,   0, 645, 644, 643,  39, 642,   3,  26,
 641, 634, 621,  18,  14, 620,  35, 618, 617,  29,
  41,  33,  20, 362,  22, 616,  34, 352,  66, 270,
  16,  57, 378,   2,  24,  25,  11, 207, 114, 610,
 609,  38,  28,  43, 608, 606, 604, 603, 602,1205,
 134, 601, 600,   7, 599, 598, 597, 596, 594, 592,
 591,  31, 589,  19, 585,  21,  37,   6, 584,   5,
  42, 583,  36, 582, 579,  12,  27,  10, 578, 577,
   8,  13,  32, 576, 574, 572,  15, 569, 516, 568,
 567, 566, 565, 564, 562, 561, 560, 454, 559, 558,
 553, 551, 545, 540,  23, 535, 530,  17
};
short	yyr1[] =
{
   0,   1,   1,  55,  55,  55,  55,  55,  55,  55,
   2,  56,  56,  56,  56,  56,  56,  56,  60,  52,
  33,  53,  53,  61,  61,  62,  62,  63,  63,  26,
  26,  26,  27,  27,  34,  34,  17,  57,  57,  57,
  57,  57,  57,  57,  57,  57,  57,  57,  57,  10,
  10,  10,  74,   7,   8,   9,   9,   9,   9,   9,
   9,   9,   9,   9,   9,   9,   9,  16,  16,  16,
  50,  50,  50,  50,  51,  51,  64,  64,  65,  65,
  66,  66,  80,  54,  54,  67,  67,  81,  82,  76,
  83,  84,  77,  77,  85,  85,  45,  45,  45,  70,
  70,  86,  86,  72,  72,  87,  36,  18,  18,  19,
  19,  75,  75,  89,  88,  88,  90,  90,  43,  43,
  91,  91,   3,  68,  68,  92,  92,  95,  93,  94,
  94,  96,  96,  11,  69,  69,  97,  20,  20,  71,
  21,  21,  22,  22,  38,  38,  38,  39,  39,  39,
  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,
  39,  12,  12,  13,  13,  13,  13,  13,  13,  37,
  37,  37,  37,  32,  40,  40,  44,  44,  48,  48,
  48,  48,  48,  48,  48,  47,  49,  49,  49,  41,
  41,  42,  42,  42,  42,  42,  42,  42,  42,  58,
  58,  58,  58,  58,  58, 100,  58,  58,  58,  99,
  23,  24, 101,  24,  98,  98,  98,  98,  98,  98,
  98,  98,  98,  98,  98,   4, 102, 103, 103, 103,
 103,  73,  73,  35,  25,  25,  46,  46,  14,  14,
  28,  28,  59,  78,  79, 104, 105, 105, 105, 105,
 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
 105, 106, 113, 113, 113, 108, 115, 115, 115, 110,
 110, 107, 107, 116, 116, 117, 117, 117, 117, 117,
 117,  15, 109, 111, 112, 112,  29,  29,   6,   6,
  30,  30,  30,  31,  31,  31,  31,  31,  31,   5,
   5,   5,   5,   5, 114
};
short	yyr2[] =
{
   0,   0,   3,   2,   2,   2,   3,   3,   2,   1,
   1,   3,   4,   3,   4,   4,   5,   3,   0,   1,
   1,   0,   1,   2,   3,   1,   3,   1,   3,   0,
   2,   3,   1,   3,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   2,   1,   5,   7,
   5,   5,   0,   2,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   0,   4,   6,
   3,   4,   5,   3,   1,   3,   3,   3,   3,   3,
   3,   3,   3,   1,   3,   3,   3,   0,   6,   0,
   0,   0,   2,   3,   1,   3,   1,   2,   1,   1,
   3,   1,   1,   1,   3,   3,   2,   1,   5,   1,
   3,   0,   3,   0,   2,   3,   1,   3,   1,   1,
   1,   3,   1,   3,   3,   4,   1,   0,   2,   1,
   3,   1,   3,   1,   1,   2,   4,   1,   3,   0,
   0,   1,   1,   3,   1,   3,   1,   1,   1,   3,
   3,   3,   3,   2,   3,   3,   3,   3,   3,   2,
   3,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   2,   4,   5,   5,   0,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   5,   1,   1,   1,   1,
   3,   1,   1,   3,   3,   3,   3,   2,   3,   1,
   5,   4,   1,   2,   2,   0,   7,   2,   2,   5,
   3,   1,   0,   5,   4,   5,   2,   1,   1,  10,
   1,   3,   4,   3,   3,   1,   1,   3,   3,   7,
   7,   0,   1,   3,   1,   3,   1,   2,   1,   1,
   1,   3,   0,   0,   0,   1,   2,   2,   2,   2,
   2,   2,   2,   3,   4,   4,   2,   3,   4,   1,
   3,   3,   1,   1,   1,   3,   1,   1,   1,   1,
   1,   3,   3,   1,   3,   1,   1,   1,   2,   2,
   2,   1,   3,   3,   4,   4,   1,   3,   1,   5,
   1,   1,   1,   3,   3,   3,   3,   3,   3,   1,
   3,   5,   5,   5,   0
};
short	yychk[] =
{
-1000,  -1, -55,  -2,   2,   6,   4, -56, -57, -58,
  21,  40,   7,  63,  26,  72,  47,  -7,  43, -10,
 -50, -64, -65, -66, -67, -68, -69,  69,  46,  60,
 -98,  36, 100, -99,  39,  38,  42,  -8,  30,  45,
  56,  44,  33,  53,  58,-102,  23,  32,-103,-104,
  51, -35,  67, -14,  52,  -9,  22,  48,  49,  50,
-105,  27,  61,  71,  55,  66,  31,  37,  34,  57,
  28,  75,  35,  24,  70, 103,-106,-108,-109,-111,
-112,-113,-115,  65,  76,  62,  25,  68,  41,  54,
  59,  29, -17,   8, -59, -60, -60, -60, -60,  47,
 -73,  81, -52, -33,  17,  81, 102, -73,  81,  81,
  81,  81, -73,  81, -97,  86, -70, -86, -33, -51,
  88,  86, -71, -59, -98,  73, -59, -59, -59, -16,
  85, -71, -71, -71, -71, -81, -71, -37, -33, -59,
 -59, -59,  77, -59, -59, -59, -59, -59, -59, -59,
-107, -42,  85,  87,  77, -37, -48, -41, -12,  15,
  16,   8,   9,  10,  11, -49,  83,  84,  14,  13,
  12,-107,  77,-107,-110, -42,  85,-107,  81, -59,
 -59, -59, -59, -59, -53, -52, -53, -52, -52, -60,
 -33, -26,  77, -33, -76, -51, -36, -33, -33, -33,
 -80,  77, -82, -76, -92, -93, -95, -33,  81,  17,
  77,  -3, -73,   9,  77, -78, -36, -51, -33, -33,
 -80, -82, -92,  79, -32,  77,  -4,   9,  77,  78,
 -25, -46, -38,  85, -39,  77, -47, -37, -48, -12,
  93, -40, -38, -40,  77,  -3, -33,  77, -33, -41,
-116, -42,  77,-117,  85,  87, -15,  18, -12,  85,
  86,  87,  88, -41, -41, -29,  81,  -6, -37,  77,
  81, -30,  81, -39,  -5, -31, -38, -47,  77, -30,
-114,-114,-114,-114, -41,  85, -61,  77, -26, -26,
 -52, -71,  78, -27, -34, -33,  85, -75,  77, -77,
 -84, -73, -75, -54, -37, -19, -18, -37,  77,  77,
  -7,  86, -86,  86, -72, -87, -33, -73, -24, -23,
 101, -33,-100, -38,  77, -36, -38, -21, -40, -22,
 -38,  74, -38,  78,  81, -12,  85,  86,  87, -13,
  92,  91,  90,  89,  88,  94,  96,  95,  98,  97,
  99,  -3, -38, -39, -38, -38, -38, -73, -91,  -3,
  78,  78,  81, -41, -38,  85,  87, -41, -41, -41,
 -41, -41,  78,  81, -29, -29, -29, -30,  81,  81,
  81, -38, -39,  -5, -31,-114,-114,  78, -62, -63,
  17, -26, -74,  78,  81, -16, -88, -89, 102,  81,
 -85, -45, -44, -12, -47, -33, -48,  77, -36,  78,
  81,  86,  81, -19, -94, -96, -11,  17, -20, -33,
  78,  81,  79, -24,-101,  79, -38, -79,  85,  78,
  80,  81, -33,  78, -46, -38, -38, -38, -38, -38,
 -38, -38, -38, -38, -38,  78,  81,  78,  77,  81,
  78,-117, -41,  78,  -6,  81, -39,  -5, -39,  -5,
 -39,  -5,  78,  81,  81,  81,  78,  81,  79, -75,
 -34,  78,  81, -90, -43, -38,  85, -85,  85, -44,
 -37, -83, -18,  81,  78,  81,  84,  81, -87, -38,
  77, -28, -38,  78,  78, -32,  77, -40, -38,  -3,
 -39, -91,  -3, -73, -23, -33, -39, -23, -23, -23,
 -63,  17, -16, -90,  80, -45, -44, -77, -23, -96,
 -11, -33, -38,  81,  73, -79,  78,  81,  78,  78,
 -38,  78,  78,  78,  78, -43, -38,  86,  78,  78,
 -38,  -3,  81,  -3
};
short	yydef[] =
{
   1,  -2,   0,   0,   9,  10,   2,   3,   4,   5,
   0, 242,   8,  18,  18,  18,  18, 231,   0,  37,
  -2,  39,  40,  41,  -2,  43,  44,  45,  47, 139,
 199, 242, 202,   0, 242, 242, 242,  67, 139, 139,
 139, 139,  87, 139, 134,   0, 242, 242, 217, 218,
 242, 220, 242, 242, 242,  54, 226, 242, 242, 242,
 245, 242, 238, 239,  55,  56,  57,  58,  59,  60,
  61,  62,  63,  64,  65,  66,   0,   0,   0,   0,
 259, 242, 242, 242, 242, 242, 262, 263, 264, 266,
 267, 268,   6,  36,   7,  21,  21,   0,   0,  18,
   0, 232,  29,  19,  20,   0,  89,   0, 232,   0,
   0,   0,  89, 127, 135,   0,  46,  99, 101, 102,
  74,   0,   0, 231, 203, 204,   0, 207, 208,  53,
 243,   0,   0,   0,   0,  89, 127,   0, 169,   0,
 216,   0,   0, 174, 174,   0,   0,   0,   0,   0,
 246,  -2, 248, 249,   0, 191, 192,   0,   0, 178,
 179, 180, 181, 182, 183, 184, 161, 162, 186, 187,
 188, 250,   0, 251, 252,  -2, 270, 256,   0, 304,
 304, 304, 304,   0,  11,  22,  13,  29,  29,   0,
 139,  17,   0, 111,  91, 231,  73, 111,  77,  79,
  81,   0,  86,   0, 124, 126,   0,   0,   0,   0,
   0, 231,   0, 122, 205,   0,  70,   0,  76,  78,
  80,  85, 123,   0, 170,  -2,   0, 225,   0, 221,
   0, 234, 236,   0, 144,   0, 146, 147, 148,   0,
   0, 223, 175, 224,   0, 227,  -2,   0, 233, 275,
   0, 189,   0, 273, 276, 277,   0, 281,   0,   0,
   0,   0,   0, 197, 275, 253,   0, 286, 288,   0,
   0, 257,   0,  -2, 291, 292,   0,  -2,   0, 260,
 261, 265, 282, 283, 304, 304,  12,   0,  14,  15,
  29,  52,  30,   0,  32,  34,  35,  67, 113,   0,
   0,   0, 106,   0,  83,   0, 109, 107,   0,   0,
 128,   0, 100,  75,   0, 103,   0,   0, 201, 211,
 212,   0,   0, 244,   0,  71, 214,   0,   0, 141,
  -2,   0,   0, 222,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0, 163, 164, 165, 166, 167,
 168, 237,   0, 144, 153, 159,   0,   0,   0, 120,
  -2, 272,   0,   0, 278, 279, 280, 193, 194, 195,
 196, 198, 271,   0, 255,   0, 254, 258,   0,   0,
   0,   0, 144,   0,   0, 284, 285,  23,   0,  25,
  27,  16, 111,  31,   0,  50,   0,   0,  51,   0,
  92,  94,  96,   0,  98, 176, 177,   0,  72,  82,
   0,  90,   0,   0,   0, 129, 131, 133, 136, 137,
  48,   0,   0, 200,   0,   0,   0,  68,   0, 171,
 174,   0, 215,   0, 235, 149, 150, 151, 152,  -2,
 155, 156, 157, 158, 160, 145,   0, 209,   0,   0,
 231, 274, 275, 190, 287,   0,  -2, 294,  -2, 296,
  -2, 298,  -2,   0,   0,   0,  24,   0,   0,  67,
  33, 112,   0, 114, 116, 119, 118,  93,   0,  97,
  84,  91, 110,   0, 125,   0,   0,   0, 104, 105,
   0, 210, 240,   0, 244, 172, 174,   0, 143,   0,
 144,   0, 121,   0,   0, 169,  -2,   0,   0,   0,
  26,  28,  49, 115,   0,  95,  96,   0,   0, 130,
 132, 138,   0,   0, 206,  69, 173,   0, 185, 229,
 230, 289, 301, 302, 303, 117, 119,  88, 108, 213,
 241,   0,   0, 219
};
short	yytok1[] =
{
   1,   4,   5,   6,   7,   8,   9,  10,  11,  12,
  13,  14,  15,  16,  17,  18,  19,  20,  21,  22,
  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,
  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,
  43,  44,  45,  46,  47,  48,  49,  50,  51,  52,
  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,
  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,
  73,  74,  75,  76,  77,  78,  79,  80,  81,  82,
  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,
  93,  94,  95,  96,  97,  98,  99, 100, 101, 102,
 103
};
short	yytok2[] =
{
   2,   3
};
long	yytok3[] =
{
   0
};
#define YYFLAG 		-1000
#define YYERROR		goto yyerrlab
#define YYACCEPT	return(0)
#define YYABORT		return(1)
#define	yyclearin	yychar = -1
#define	yyerrok		yyerrflag = 0

#ifdef	yydebug
#include	"y.debug"
#else
#define	yydebug		0
char*	yytoknames[1];		/* for debugging */
char*	yystates[1];		/* for debugging */
#endif

/*	parser for yacc output	*/

int	yynerrs = 0;		/* number of errors */
int	yyerrflag = 0;		/* error recovery flag */

char*
yytokname(int yyc)
{
	static char x[10];

	if(yyc > 0 && yyc <= (int)(sizeof(yytoknames)/sizeof(yytoknames[0])))
	if(yytoknames[yyc-1])
		return yytoknames[yyc-1];
	sprintf(x, "<%d>", yyc);
	return x;
}

char*
yystatname(int yys)
{
	static char x[10];

	if(yys >= 0 && yys < (int)(sizeof(yystates)/sizeof(yystates[0])))
	if(yystates[yys])
		return yystates[yys];
	sprintf(x, "<%d>\n", yys);
	return x;
}

long
yylex1(void)
{
	long yychar;
	long *t3p;
	int c;

	yychar = yylex();
	if(yychar <= 0) {
		c = yytok1[0];
		goto out;
	}
	if(yychar < (long)(sizeof(yytok1)/sizeof(yytok1[0]))) {
		c = yytok1[yychar];
		goto out;
	}
	if(yychar >= YYPRIVATE)
		if(yychar < YYPRIVATE+(long)(sizeof(yytok2)/sizeof(yytok2[0]))) {
			c = yytok2[yychar-YYPRIVATE];
			goto out;
		}
	for(t3p=yytok3;; t3p+=2) {
		c = t3p[0];
		if(c == yychar) {
			c = t3p[1];
			goto out;
		}
		if(c == 0)
			break;
	}
	c = 0;

out:
	if(c == 0)
		c = yytok2[1];	/* unknown char */
	if(yydebug >= 3)
		printf("lex %.4lX %s\n", yychar, yytokname(c));
	return c;
}

typedef struct { YYSTYPE yyv; int yys; } YYSTACK;
static YYSTACK yys0[YYMAXDEPTH];
static YYSTACK *yys = yys0, *yysend = &yys0[YYMAXDEPTH];

int
yyparse(void)
{
	YYSTACK *yyp, *yypt;
	short *yyxi;
	int yyj, yym, yystate, yyn, yyg;
	YYSTYPE save1, save2;
	int save3, save4;
	long yychar;
#ifdef Use_Malloc
	YYSTACK *yysnew;
	size_t yyslen, yyslen2;
#endif

	save1 = yylval;
	save2 = yyval;
	save3 = yynerrs;
	save4 = yyerrflag;

	yystate = 0;
	yychar = -1;
	yynerrs = 0;
	yyerrflag = 0;
	yyp = &yys[-1];
	goto yystack;

ret0:
	yyn = 0;
	goto ret;

ret1:
	yyn = 1;
	goto ret;

ret:
	yylval = save1;
	yyval = save2;
	yynerrs = save3;
	yyerrflag = save4;
	return yyn;

yystack:
	/* put a state and value onto the stack */
	if(yydebug >= 4)
		printf("char %s in %s", yytokname(yychar), yystatname(yystate));

	yyp++;
	if(yyp >= yysend) {
#ifdef Use_Malloc
		yyslen = yysend - yys;
		yyslen2 = 2*yyslen;
		if (yyslen2 < 2048)
			yyslen2 = 2048;
		yysnew = (YYSTACK*)Malloc(yyslen2*sizeof(YYSTACK));
		memcpy(yysnew, yys, yyslen*sizeof(YYSTACK));
		if (yys != yys0)
			free(yys);
		yys = yysnew;
		yysend = &yysnew[yyslen2];
		yyp = yys + yyslen;
#else	
		yyerror("yacc stack overflow");
		goto ret1;
#endif
	}
	yyp->yys = yystate;
	yyp->yyv = yyval;

yynewstate:
	yyn = yypact[yystate];
	if(yyn <= YYFLAG)
		goto yydefault; /* simple state */
	if(yychar < 0)
		yychar = yylex1();
	yyn += yychar;
	if(yyn < 0 || yyn >= YYLAST)
		goto yydefault;
	yyn = yyact[yyn];
	if(yychk[yyn] == yychar) { /* valid shift */
		yychar = -1;
		yyval = yylval;
		yystate = yyn;
		if(yyerrflag > 0)
			yyerrflag--;
		goto yystack;
	}

yydefault:
	/* default state action */
	yyn = yydef[yystate];
	if(yyn == -2) {
		if(yychar < 0)
			yychar = yylex1();

		/* look through exception table */
		for(yyxi=yyexca;; yyxi+=2)
			if(yyxi[0] == -1 && yyxi[1] == yystate)
				break;
		for(yyxi += 2;; yyxi += 2) {
			yyn = yyxi[0];
			if(yyn < 0 || yyn == yychar)
				break;
		}
		yyn = yyxi[1];
		if(yyn < 0)
			goto ret0;
	}
	if(yyn == 0) {
		/* error ... attempt to resume parsing */
		switch(yyerrflag) {
		case 0:   /* brand new error */
			yyerror("syntax error");
			if(yydebug >= 1) {
				printf("%s", yystatname(yystate));
				printf("saw %s\n", yytokname(yychar));
			}
yyerrlab:
			yynerrs++;

		case 1:
		case 2: /* incompletely recovered error ... try again */
			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */
			while(yyp >= yys) {
				yyn = yypact[yyp->yys] + YYERRCODE;
				if(yyn >= 0 && yyn < YYLAST) {
					yystate = yyact[yyn];  /* simulate a shift of "error" */
					if(yychk[yystate] == YYERRCODE)
						goto yystack;
				}

				/* the current yyp has no shift onn "error", pop stack */
				if(yydebug >= 2)
					printf("error recovery pops state %d, uncovers %d\n",
						yyp->yys, (yyp-1)->yys );
				yyp--;
			}
			/* there is no state on the stack with an error shift ... abort */
			goto ret1;

		case 3:  /* no shift yet; clobber input char */
			if(yydebug >= YYEOFCODE)
				printf("error recovery discards %s\n", yytokname(yychar));
			if(yychar == YYEOFCODE)
				goto ret1;
			yychar = -1;
			goto yynewstate;   /* try again in the same state */
		}
	}

	/* reduction by production yyn */
	if(yydebug >= 2)
		printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));

	yypt = yyp;
	yyp -= yyr2[yyn];
	yyval = (yyp+1)->yyv;
	yym = yyn;

	/* consult goto table to find next state */
	yyn = yyr1[yyn];
	yyg = yypgo[yyn];
	yyj = yyg + yyp->yys + 1;

	if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
		yystate = yyact[yyg];
	switch(yym) {
		
case 3:
/* #line	221	"/home/dmg/h/f2c/gram.in" */
{
/* stat:   is the nonterminal for Fortran statements */

		  lastwasbranch = NO; } break;
case 5:
/* #line	227	"/home/dmg/h/f2c/gram.in" */
{ /* forbid further statement function definitions... */
		  if (parstate == INDATA && laststfcn != thisstno)
			parstate = INEXEC;
		  thisstno++;
		  if(yypt[-1].yyv.labval && (yypt[-1].yyv.labval->labelno==dorange))
			enddo(yypt[-1].yyv.labval->labelno);
		  if(lastwasbranch && thislabel==NULL)
			warn("statement cannot be reached");
		  lastwasbranch = thiswasbranch;
		  thiswasbranch = NO;
		  if(yypt[-1].yyv.labval)
			{
			if(yypt[-1].yyv.labval->labtype == LABFORMAT)
				err("label already that of a format");
			else
				yypt[-1].yyv.labval->labtype = LABEXEC;
			}
		  freetemps();
		} break;
case 6:
/* #line	247	"/home/dmg/h/f2c/gram.in" */
{ if (can_include)
			doinclude( yypt[-0].yyv.charpval );
		  else {
			fprintf(diagfile, "Cannot open file %s\n", yypt[-0].yyv.charpval);
			done(1);
			}
		} break;
case 7:
/* #line	255	"/home/dmg/h/f2c/gram.in" */
{ if (yypt[-2].yyv.labval)
			lastwasbranch = NO;
		  endcheck();
		  endproc(); /* lastwasbranch = NO; -- set in endproc() */
		} break;
case 8:
/* #line	261	"/home/dmg/h/f2c/gram.in" */
{ unclassifiable();

/* flline flushes the current line, ignoring the rest of the text there */

		  flline(); } break;
case 9:
/* #line	267	"/home/dmg/h/f2c/gram.in" */
{ flline();  needkwd = NO;  inioctl = NO;
		  yyerrok; yyclearin; } break;
case 10:
/* #line	272	"/home/dmg/h/f2c/gram.in" */
{
		if(yystno != 0)
			{
			yyval.labval = thislabel =  mklabel(yystno);
			if( ! headerdone ) {
				if (procclass == CLUNKNOWN)
					procclass = CLMAIN;
				puthead(CNULL, procclass);
				}
			if(thislabel->labdefined)
				execerr("label %s already defined",
					convic(thislabel->stateno) );
			else	{
				if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
				    && thislabel->labtype!=LABFORMAT)
					warn1("there is a branch to label %s from outside block",
					      convic( (ftnint) (thislabel->stateno) ) );
				thislabel->blklevel = blklevel;
				thislabel->labdefined = YES;
				if(thislabel->labtype != LABFORMAT)
					p1_label((long)(thislabel - labeltab));
				}
			}
		else    yyval.labval = thislabel = NULL;
		} break;
case 11:
/* #line	300	"/home/dmg/h/f2c/gram.in" */
{startproc(yypt[-0].yyv.extval, CLMAIN); } break;
case 12:
/* #line	302	"/home/dmg/h/f2c/gram.in" */
{	warn("ignoring arguments to main program");
			/* hashclear(); */
			startproc(yypt[-1].yyv.extval, CLMAIN); } break;
case 13:
/* #line	306	"/home/dmg/h/f2c/gram.in" */
{ if(yypt[-0].yyv.extval) NO66("named BLOCKDATA");
		  startproc(yypt[-0].yyv.extval, CLBLOCK); } break;
case 14:
/* #line	309	"/home/dmg/h/f2c/gram.in" */
{ entrypt(CLPROC, TYSUBR, (ftnint) 0,  yypt[-1].yyv.extval, yypt[-0].yyv.chval); } break;
case 15:
/* #line	311	"/home/dmg/h/f2c/gram.in" */
{ entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypt[-1].yyv.extval, yypt[-0].yyv.chval); } break;
case 16:
/* #line	313	"/home/dmg/h/f2c/gram.in" */
{ entrypt(CLPROC, yypt[-4].yyv.ival, varleng, yypt[-1].yyv.extval, yypt[-0].yyv.chval); } break;
case 17:
/* #line	315	"/home/dmg/h/f2c/gram.in" */
{ if(parstate==OUTSIDE || procclass==CLMAIN
			|| procclass==CLBLOCK)
				execerr("misplaced entry statement", CNULL);
		  entrypt(CLENTRY, 0, (ftnint) 0, yypt[-1].yyv.extval, yypt[-0].yyv.chval);
		} break;
case 18:
/* #line	323	"/home/dmg/h/f2c/gram.in" */
{ newproc(); } break;
case 19:
/* #line	327	"/home/dmg/h/f2c/gram.in" */
{ yyval.extval = newentry(yypt[-0].yyv.namval, 1); } break;
case 20:
/* #line	331	"/home/dmg/h/f2c/gram.in" */
{ yyval.namval = mkname(token); } break;
case 21:
/* #line	334	"/home/dmg/h/f2c/gram.in" */
{ yyval.extval = NULL; } break;
case 29:
/* #line	352	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = 0; } break;
case 30:
/* #line	354	"/home/dmg/h/f2c/gram.in" */
{ NO66(" () argument list");
		  yyval.chval = 0; } break;
case 31:
/* #line	357	"/home/dmg/h/f2c/gram.in" */
{yyval.chval = yypt[-1].yyv.chval; } break;
case 32:
/* #line	361	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = (yypt[-0].yyv.namval ? mkchain((char *)yypt[-0].yyv.namval,CHNULL) : CHNULL ); } break;
case 33:
/* #line	363	"/home/dmg/h/f2c/gram.in" */
{ if(yypt[-0].yyv.namval) yypt[-2].yyv.chval = yyval.chval = mkchain((char *)yypt[-0].yyv.namval, yypt[-2].yyv.chval); } break;
case 34:
/* #line	367	"/home/dmg/h/f2c/gram.in" */
{ if(yypt[-0].yyv.namval->vstg!=STGUNKNOWN && yypt[-0].yyv.namval->vstg!=STGARG)
			dclerr("name declared as argument after use", yypt[-0].yyv.namval);
		  yypt[-0].yyv.namval->vstg = STGARG;
		} break;
case 35:
/* #line	372	"/home/dmg/h/f2c/gram.in" */
{ NO66("altenate return argument");

/* substars   means that '*'ed formal parameters should be replaced.
   This is used to specify alternate return labels; in theory, only
   parameter slots which have '*' should accept the statement labels.
   This compiler chooses to ignore the '*'s in the formal declaration, and
   always return the proper value anyway.

   This variable is only referred to in   proc.c   */

		  yyval.namval = 0;  substars = YES; } break;
case 36:
/* #line	388	"/home/dmg/h/f2c/gram.in" */
{
		char *s;
		s = copyn(toklen+1, token);
		s[toklen] = '\0';
		yyval.charpval = s;
		} break;
case 45:
/* #line	404	"/home/dmg/h/f2c/gram.in" */
{ NO66("SAVE statement");
		  saveall = YES; } break;
case 46:
/* #line	407	"/home/dmg/h/f2c/gram.in" */
{ NO66("SAVE statement"); } break;
case 47:
/* #line	409	"/home/dmg/h/f2c/gram.in" */
{ fmtstmt(thislabel); setfmt(thislabel); } break;
case 48:
/* #line	411	"/home/dmg/h/f2c/gram.in" */
{ NO66("PARAMETER statement"); } break;
case 49:
/* #line	415	"/home/dmg/h/f2c/gram.in" */
{ settype(yypt[-4].yyv.namval, yypt[-6].yyv.ival, yypt[-0].yyv.lval);
		  if(ndim>0) setbound(yypt[-4].yyv.namval,ndim,dims);
		} break;
case 50:
/* #line	419	"/home/dmg/h/f2c/gram.in" */
{ settype(yypt[-2].yyv.namval, yypt[-4].yyv.ival, yypt[-0].yyv.lval);
		  if(ndim>0) setbound(yypt[-2].yyv.namval,ndim,dims);
		} break;
case 51:
/* #line	423	"/home/dmg/h/f2c/gram.in" */
{ if (new_dcl == 2) {
			err("attempt to give DATA in type-declaration");
			new_dcl = 1;
			}
		} break;
case 52:
/* #line	430	"/home/dmg/h/f2c/gram.in" */
{ new_dcl = 2; } break;
case 53:
/* #line	433	"/home/dmg/h/f2c/gram.in" */
{ varleng = yypt[-0].yyv.lval; } break;
case 54:
/* #line	437	"/home/dmg/h/f2c/gram.in" */
{ varleng = (yypt[-0].yyv.ival<0 || ONEOF(yypt[-0].yyv.ival,M(TYLOGICAL)|M(TYLONG))
				? 0 : typesize[yypt[-0].yyv.ival]);
		  vartype = yypt[-0].yyv.ival; } break;
case 55:
/* #line	442	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = lasttype = TYLONG; } break;
case 56:
/* #line	443	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = lasttype = tyreal; } break;
case 57:
/* #line	444	"/home/dmg/h/f2c/gram.in" */
{ ++complex_seen; yyval.ival = lasttype = tycomplex; } break;
case 58:
/* #line	445	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = lasttype = TYDREAL; } break;
case 59:
/* #line	446	"/home/dmg/h/f2c/gram.in" */
{ ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = lasttype = TYDCOMPLEX; } break;
case 60:
/* #line	447	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = lasttype = TYLOGICAL; } break;
case 61:
/* #line	448	"/home/dmg/h/f2c/gram.in" */
{ NO66("CHARACTER statement"); yyval.ival = lasttype = TYCHAR; } break;
case 62:
/* #line	449	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = TYUNKNOWN; } break;
case 63:
/* #line	450	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = TYUNKNOWN; } break;
case 64:
/* #line	451	"/home/dmg/h/f2c/gram.in" */
{ NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; } break;
case 65:
/* #line	452	"/home/dmg/h/f2c/gram.in" */
{ NOEXT("STATIC statement"); yyval.ival = - STGBSS; } break;
case 66:
/* #line	453	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = TYINT1; } break;
case 67:
/* #line	457	"/home/dmg/h/f2c/gram.in" */
{ yyval.lval = varleng; } break;
case 68:
/* #line	459	"/home/dmg/h/f2c/gram.in" */
{
		expptr p;
		p = yypt[-1].yyv.expval;
		NO66("length specification *n");
		if( ! ISICON(p) || p->constblock.Const.ci <= 0 )
			{
			yyval.lval = 0;
			dclerr("length must be a positive integer constant",
				NPNULL);
			}
		else {
			if (vartype == TYCHAR)
				yyval.lval = p->constblock.Const.ci;
			else switch((int)p->constblock.Const.ci) {
				case 1:	yyval.lval = 1; break;
				case 2: yyval.lval = typesize[TYSHORT];	break;
				case 4: yyval.lval = lasttype == TYREAL ? typesize[TYREAL] : typesize[TYLONG];
					break;
				case 8: yyval.lval = typesize[TYDREAL];	break;
				case 16: yyval.lval = typesize[TYDCOMPLEX]; break;
				default:
					dclerr("invalid length",NPNULL);
					yyval.lval = varleng;
				}
			}
		} break;
case 69:
/* #line	486	"/home/dmg/h/f2c/gram.in" */
{ NO66("length specification *(*)"); yyval.lval = -1; } break;
case 70:
/* #line	490	"/home/dmg/h/f2c/gram.in" */
{ incomm( yyval.extval = comblock("") , yypt[-0].yyv.namval ); } break;
case 71:
/* #line	492	"/home/dmg/h/f2c/gram.in" */
{ yyval.extval = yypt[-1].yyv.extval;  incomm(yypt[-1].yyv.extval, yypt[-0].yyv.namval); } break;
case 72:
/* #line	494	"/home/dmg/h/f2c/gram.in" */
{ yyval.extval = yypt[-2].yyv.extval;  incomm(yypt[-2].yyv.extval, yypt[-0].yyv.namval); } break;
case 73:
/* #line	496	"/home/dmg/h/f2c/gram.in" */
{ incomm(yypt[-2].yyv.extval, yypt[-0].yyv.namval); } break;
case 74:
/* #line	500	"/home/dmg/h/f2c/gram.in" */
{ yyval.extval = comblock(""); } break;
case 75:
/* #line	502	"/home/dmg/h/f2c/gram.in" */
{ yyval.extval = comblock(token); } break;
case 76:
/* #line	506	"/home/dmg/h/f2c/gram.in" */
{ setext(yypt[-0].yyv.namval); } break;
case 77:
/* #line	508	"/home/dmg/h/f2c/gram.in" */
{ setext(yypt[-0].yyv.namval); } break;
case 78:
/* #line	512	"/home/dmg/h/f2c/gram.in" */
{ NO66("INTRINSIC statement"); setintr(yypt[-0].yyv.namval); } break;
case 79:
/* #line	514	"/home/dmg/h/f2c/gram.in" */
{ setintr(yypt[-0].yyv.namval); } break;
case 82:
/* #line	522	"/home/dmg/h/f2c/gram.in" */
{
		struct Equivblock *p;
		if(nequiv >= maxequiv)
			many("equivalences", 'q', maxequiv);
		p  =  & eqvclass[nequiv++];
		p->eqvinit = NO;
		p->eqvbottom = 0;
		p->eqvtop = 0;
		p->equivs = yypt[-1].yyv.eqvval;
		} break;
case 83:
/* #line	535	"/home/dmg/h/f2c/gram.in" */
{ yyval.eqvval=ALLOC(Eqvchain);
		  yyval.eqvval->eqvitem.eqvlhs = primchk(yypt[-0].yyv.expval);
		} break;
case 84:
/* #line	539	"/home/dmg/h/f2c/gram.in" */
{ yyval.eqvval=ALLOC(Eqvchain);
		  yyval.eqvval->eqvitem.eqvlhs = primchk(yypt[-0].yyv.expval);
		  yyval.eqvval->eqvnextp = yypt[-2].yyv.eqvval;
		} break;
case 87:
/* #line	550	"/home/dmg/h/f2c/gram.in" */
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(ESNULL, CLMAIN);
			}
		  if(parstate < INDATA)
			{
			enddcl();
			parstate = INDATA;
			datagripe = 1;
			}
		} break;
case 88:
/* #line	565	"/home/dmg/h/f2c/gram.in" */
{ ftnint junk;
		  if(nextdata(&junk) != NULL)
			err("too few initializers");
		  frdata(yypt[-4].yyv.chval);
		  frrpl();
		} break;
case 89:
/* #line	573	"/home/dmg/h/f2c/gram.in" */
{ frchain(&datastack); curdtp = 0; } break;
case 90:
/* #line	575	"/home/dmg/h/f2c/gram.in" */
{ pop_datastack(); } break;
case 91:
/* #line	577	"/home/dmg/h/f2c/gram.in" */
{ toomanyinit = NO; } break;
case 94:
/* #line	582	"/home/dmg/h/f2c/gram.in" */
{ dataval(ENULL, yypt[-0].yyv.expval); } break;
case 95:
/* #line	584	"/home/dmg/h/f2c/gram.in" */
{ dataval(yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 97:
/* #line	589	"/home/dmg/h/f2c/gram.in" */
{ if( yypt[-1].yyv.ival==OPMINUS && ISCONST(yypt[-0].yyv.expval) )
			consnegop((Constp)yypt[-0].yyv.expval);
		  yyval.expval = yypt[-0].yyv.expval;
		} break;
case 101:
/* #line	601	"/home/dmg/h/f2c/gram.in" */
{ int k;
		  yypt[-0].yyv.namval->vsave = YES;
		  k = yypt[-0].yyv.namval->vstg;
		if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
			dclerr("can only save static variables", yypt[-0].yyv.namval);
		} break;
case 105:
/* #line	615	"/home/dmg/h/f2c/gram.in" */
{ if(yypt[-2].yyv.namval->vclass == CLUNKNOWN)
			make_param((struct Paramblock *)yypt[-2].yyv.namval, yypt[-0].yyv.expval);
		  else dclerr("cannot make into parameter", yypt[-2].yyv.namval);
		} break;
case 106:
/* #line	622	"/home/dmg/h/f2c/gram.in" */
{ if(ndim>0) setbound(yypt[-1].yyv.namval, ndim, dims); } break;
case 107:
/* #line	626	"/home/dmg/h/f2c/gram.in" */
{ Namep np;
		  struct Primblock *pp = (struct Primblock *)yypt[-0].yyv.expval;
		  int tt = yypt[-0].yyv.expval->tag;
		  if (tt != TPRIM) {
			if (tt == TCONST)
				err("parameter in data statement");
			else
				erri("tag %d in data statement",tt);
			yyval.chval = 0;
			err_lineno = lineno;
			break;
			}
		  np = pp -> namep;
		  vardcl(np);
		  if ((pp->fcharp || pp->lcharp)
		   && (np->vtype != TYCHAR || np->vdim && !pp->argsp))
			sserr(np);
		  if(np->vstg == STGCOMMON)
			extsymtab[np->vardesc.varno].extinit = YES;
		  else if(np->vstg==STGEQUIV)
			eqvclass[np->vardesc.varno].eqvinit = YES;
		  else if(np->vstg!=STGINIT && np->vstg!=STGBSS) {
			errstr(np->vstg == STGARG
				? "Dummy argument \"%.60s\" in data statement."
				: "Cannot give data to \"%.75s\"",
				np->fvarname);
			yyval.chval = 0;
			err_lineno = lineno;
			break;
			}
		  yyval.chval = mkchain((char *)yypt[-0].yyv.expval, CHNULL);
		} break;
case 108:
/* #line	659	"/home/dmg/h/f2c/gram.in" */
{ chainp p; struct Impldoblock *q;
		pop_datastack();
		q = ALLOC(Impldoblock);
		q->tag = TIMPLDO;
		(q->varnp = (Namep) (yypt[-1].yyv.chval->datap))->vimpldovar = 1;
		p = yypt[-1].yyv.chval->nextp;
		if(p)  { q->implb = (expptr)(p->datap); p = p->nextp; }
		if(p)  { q->impub = (expptr)(p->datap); p = p->nextp; }
		if(p)  { q->impstep = (expptr)(p->datap); }
		frchain( & (yypt[-1].yyv.chval) );
		yyval.chval = mkchain((char *)q, CHNULL);
		q->datalist = hookup(yypt[-3].yyv.chval, yyval.chval);
		} break;
case 109:
/* #line	675	"/home/dmg/h/f2c/gram.in" */
{ if (!datastack)
			curdtp = 0;
		  datastack = mkchain((char *)curdtp, datastack);
		  curdtp = yypt[-0].yyv.chval; curdtelt = 0;
		  } break;
case 110:
/* #line	681	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = hookup(yypt[-2].yyv.chval, yypt[-0].yyv.chval); } break;
case 111:
/* #line	685	"/home/dmg/h/f2c/gram.in" */
{ ndim = 0; } break;
case 113:
/* #line	689	"/home/dmg/h/f2c/gram.in" */
{ ndim = 0; } break;
case 116:
/* #line	694	"/home/dmg/h/f2c/gram.in" */
{
		  if(ndim == maxdim)
			err("too many dimensions");
		  else if(ndim < maxdim)
			{ dims[ndim].lb = 0;
			  dims[ndim].ub = yypt[-0].yyv.expval;
			}
		  ++ndim;
		} break;
case 117:
/* #line	704	"/home/dmg/h/f2c/gram.in" */
{
		  if(ndim == maxdim)
			err("too many dimensions");
		  else if(ndim < maxdim)
			{ dims[ndim].lb = yypt[-2].yyv.expval;
			  dims[ndim].ub = yypt[-0].yyv.expval;
			}
		  ++ndim;
		} break;
case 118:
/* #line	716	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = 0; } break;
case 120:
/* #line	721	"/home/dmg/h/f2c/gram.in" */
{ nstars = 1; labarray[0] = yypt[-0].yyv.labval; } break;
case 121:
/* #line	723	"/home/dmg/h/f2c/gram.in" */
{ if(nstars < maxlablist)  labarray[nstars++] = yypt[-0].yyv.labval; } break;
case 122:
/* #line	727	"/home/dmg/h/f2c/gram.in" */
{ yyval.labval = execlab( convci(toklen, token) ); } break;
case 123:
/* #line	731	"/home/dmg/h/f2c/gram.in" */
{ NO66("IMPLICIT statement"); } break;
case 126:
/* #line	737	"/home/dmg/h/f2c/gram.in" */
{ if (vartype != TYUNKNOWN)
			dclerr("-- expected letter range",NPNULL);
		  setimpl(vartype, varleng, 'a', 'z'); } break;
case 127:
/* #line	742	"/home/dmg/h/f2c/gram.in" */
{ needkwd = 1; } break;
case 131:
/* #line	751	"/home/dmg/h/f2c/gram.in" */
{ setimpl(vartype, varleng, yypt[-0].yyv.ival, yypt[-0].yyv.ival); } break;
case 132:
/* #line	753	"/home/dmg/h/f2c/gram.in" */
{ setimpl(vartype, varleng, yypt[-2].yyv.ival, yypt[-0].yyv.ival); } break;
case 133:
/* #line	757	"/home/dmg/h/f2c/gram.in" */
{ if(toklen!=1 || token[0]<'a' || token[0]>'z')
			{
			dclerr("implicit item must be single letter", NPNULL);
			yyval.ival = 0;
			}
		  else yyval.ival = token[0];
		} break;
case 136:
/* #line	771	"/home/dmg/h/f2c/gram.in" */
{
		if(yypt[-2].yyv.namval->vclass == CLUNKNOWN)
			{
			yypt[-2].yyv.namval->vclass = CLNAMELIST;
			yypt[-2].yyv.namval->vtype = TYINT;
			yypt[-2].yyv.namval->vstg = STGBSS;
			yypt[-2].yyv.namval->varxptr.namelist = yypt[-0].yyv.chval;
			yypt[-2].yyv.namval->vardesc.varno = ++lastvarno;
			}
		else dclerr("cannot be a namelist name", yypt[-2].yyv.namval);
		} break;
case 137:
/* #line	785	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.namval, CHNULL); } break;
case 138:
/* #line	787	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = hookup(yypt[-2].yyv.chval, mkchain((char *)yypt[-0].yyv.namval, CHNULL)); } break;
case 139:
/* #line	791	"/home/dmg/h/f2c/gram.in" */
{ switch(parstate)
			{
			case OUTSIDE:	newproc();
					startproc(ESNULL, CLMAIN);
			case INSIDE:	parstate = INDCL;
			case INDCL:	break;

			case INDATA:
				if (datagripe) {
					errstr(
				"Statement order error: declaration after DATA",
						CNULL);
					datagripe = 0;
					}
				break;

			default:
				dclerr("declaration among executables", NPNULL);
			}
		} break;
case 140:
/* #line	813	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = 0; } break;
case 141:
/* #line	815	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = revchain(yypt[-0].yyv.chval); } break;
case 142:
/* #line	819	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.expval, CHNULL); } break;
case 143:
/* #line	821	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.expval, yypt[-2].yyv.chval); } break;
case 145:
/* #line	826	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = yypt[-1].yyv.expval; if (yyval.expval->tag == TPRIM)
					paren_used(&yyval.expval->primblock); } break;
case 149:
/* #line	834	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(yypt[-1].yyv.ival, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 150:
/* #line	836	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPSTAR, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 151:
/* #line	838	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPSLASH, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 152:
/* #line	840	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPPOWER, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 153:
/* #line	842	"/home/dmg/h/f2c/gram.in" */
{ if(yypt[-1].yyv.ival == OPMINUS)
			yyval.expval = mkexpr(OPNEG, yypt[-0].yyv.expval, ENULL);
		  else {
			yyval.expval = yypt[-0].yyv.expval;
			if (yyval.expval->tag == TPRIM)
				paren_used(&yyval.expval->primblock);
			}
		} break;
case 154:
/* #line	851	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(yypt[-1].yyv.ival, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 155:
/* #line	853	"/home/dmg/h/f2c/gram.in" */
{ NO66(".EQV. operator");
		  yyval.expval = mkexpr(OPEQV, yypt[-2].yyv.expval,yypt[-0].yyv.expval); } break;
case 156:
/* #line	856	"/home/dmg/h/f2c/gram.in" */
{ NO66(".NEQV. operator");
		  yyval.expval = mkexpr(OPNEQV, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 157:
/* #line	859	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPOR, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 158:
/* #line	861	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPAND, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 159:
/* #line	863	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPNOT, yypt[-0].yyv.expval, ENULL); } break;
case 160:
/* #line	865	"/home/dmg/h/f2c/gram.in" */
{ NO66("concatenation operator //");
		  yyval.expval = mkexpr(OPCONCAT, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 161:
/* #line	869	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = OPPLUS; } break;
case 162:
/* #line	870	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = OPMINUS; } break;
case 163:
/* #line	873	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = OPEQ; } break;
case 164:
/* #line	874	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = OPGT; } break;
case 165:
/* #line	875	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = OPLT; } break;
case 166:
/* #line	876	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = OPGE; } break;
case 167:
/* #line	877	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = OPLE; } break;
case 168:
/* #line	878	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = OPNE; } break;
case 169:
/* #line	882	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkprim(yypt[-0].yyv.namval, LBNULL, CHNULL); } break;
case 170:
/* #line	884	"/home/dmg/h/f2c/gram.in" */
{ NO66("substring operator :");
		  yyval.expval = mkprim(yypt[-1].yyv.namval, LBNULL, yypt[-0].yyv.chval); } break;
case 171:
/* #line	887	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkprim(yypt[-3].yyv.namval, mklist(yypt[-1].yyv.chval), CHNULL); } break;
case 172:
/* #line	889	"/home/dmg/h/f2c/gram.in" */
{ NO66("substring operator :");
		  yyval.expval = mkprim(yypt[-4].yyv.namval, mklist(yypt[-2].yyv.chval), yypt[-0].yyv.chval); } break;
case 173:
/* #line	894	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-3].yyv.expval, mkchain((char *)yypt[-1].yyv.expval,CHNULL)); } break;
case 174:
/* #line	898	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = 0; } break;
case 176:
/* #line	903	"/home/dmg/h/f2c/gram.in" */
{ if(yypt[-0].yyv.namval->vclass == CLPARAM)
			yyval.expval = (expptr) cpexpr(
				( (struct Paramblock *) (yypt[-0].yyv.namval) ) -> paramval);
		} break;
case 178:
/* #line	910	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mklogcon(1); } break;
case 179:
/* #line	911	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mklogcon(0); } break;
case 180:
/* #line	912	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkstrcon(toklen, token); } break;
case 181:
/* #line	913	"/home/dmg/h/f2c/gram.in" */
 { yyval.expval = mkintqcon(toklen, token); } break;
case 182:
/* #line	914	"/home/dmg/h/f2c/gram.in" */
 { yyval.expval = mkrealcon(tyreal, token); } break;
case 183:
/* #line	915	"/home/dmg/h/f2c/gram.in" */
 { yyval.expval = mkrealcon(TYDREAL, token); } break;
case 185:
/* #line	920	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkcxcon(yypt[-3].yyv.expval,yypt[-1].yyv.expval); } break;
case 186:
/* #line	924	"/home/dmg/h/f2c/gram.in" */
{ NOEXT("hex constant");
		  yyval.expval = mkbitcon(4, toklen, token); } break;
case 187:
/* #line	927	"/home/dmg/h/f2c/gram.in" */
{ NOEXT("octal constant");
		  yyval.expval = mkbitcon(3, toklen, token); } break;
case 188:
/* #line	930	"/home/dmg/h/f2c/gram.in" */
{ NOEXT("binary constant");
		  yyval.expval = mkbitcon(1, toklen, token); } break;
case 190:
/* #line	936	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = yypt[-1].yyv.expval; } break;
case 193:
/* #line	942	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(yypt[-1].yyv.ival, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 194:
/* #line	944	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPSTAR, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 195:
/* #line	946	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPSLASH, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 196:
/* #line	948	"/home/dmg/h/f2c/gram.in" */
{ yyval.expval = mkexpr(OPPOWER, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 197:
/* #line	950	"/home/dmg/h/f2c/gram.in" */
{ if(yypt[-1].yyv.ival == OPMINUS)
			yyval.expval = mkexpr(OPNEG, yypt[-0].yyv.expval, ENULL);
		  else yyval.expval = yypt[-0].yyv.expval;
		} break;
case 198:
/* #line	955	"/home/dmg/h/f2c/gram.in" */
{ NO66("concatenation operator //");
		  yyval.expval = mkexpr(OPCONCAT, yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 200:
/* #line	960	"/home/dmg/h/f2c/gram.in" */
{
		if(yypt[-2].yyv.labval->labdefined)
			execerr("no backward DO loops", CNULL);
		yypt[-2].yyv.labval->blklevel = blklevel+1;
		exdo(yypt[-2].yyv.labval->labelno, NPNULL, yypt[-0].yyv.chval);
		} break;
case 201:
/* #line	967	"/home/dmg/h/f2c/gram.in" */
{
		exdo((int)(ctls - ctlstack - 2), NPNULL, yypt[-0].yyv.chval);
		NOEXT("DO without label");
		} break;
case 202:
/* #line	972	"/home/dmg/h/f2c/gram.in" */
{ exenddo(NPNULL); } break;
case 203:
/* #line	974	"/home/dmg/h/f2c/gram.in" */
{ exendif();  thiswasbranch = NO; } break;
case 205:
/* #line	976	"/home/dmg/h/f2c/gram.in" */
{westart(1);} break;
case 206:
/* #line	977	"/home/dmg/h/f2c/gram.in" */
{ exelif(yypt[-2].yyv.expval); lastwasbranch = NO; } break;
case 207:
/* #line	979	"/home/dmg/h/f2c/gram.in" */
{ exelse(); lastwasbranch = NO; } break;
case 208:
/* #line	981	"/home/dmg/h/f2c/gram.in" */
{ exendif(); lastwasbranch = NO; } break;
case 209:
/* #line	985	"/home/dmg/h/f2c/gram.in" */
{ exif(yypt[-1].yyv.expval); } break;
case 210:
/* #line	989	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-2].yyv.namval, yypt[-0].yyv.chval); } break;
case 212:
/* #line	993	"/home/dmg/h/f2c/gram.in" */
{westart(0);} break;
case 213:
/* #line	994	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain(CNULL, (chainp)yypt[-1].yyv.expval); } break;
case 214:
/* #line	998	"/home/dmg/h/f2c/gram.in" */
{ exequals((struct Primblock *)yypt[-2].yyv.expval, yypt[-0].yyv.expval); } break;
case 215:
/* #line	1000	"/home/dmg/h/f2c/gram.in" */
{ exassign(yypt[-0].yyv.namval, yypt[-2].yyv.labval); } break;
case 218:
/* #line	1004	"/home/dmg/h/f2c/gram.in" */
{ inioctl = NO; } break;
case 219:
/* #line	1006	"/home/dmg/h/f2c/gram.in" */
{ exarif(yypt[-6].yyv.expval, yypt[-4].yyv.labval, yypt[-2].yyv.labval, yypt[-0].yyv.labval);  thiswasbranch = YES; } break;
case 220:
/* #line	1008	"/home/dmg/h/f2c/gram.in" */
{ excall(yypt[-0].yyv.namval, LBNULL, 0, labarray); } break;
case 221:
/* #line	1010	"/home/dmg/h/f2c/gram.in" */
{ excall(yypt[-2].yyv.namval, LBNULL, 0, labarray); } break;
case 222:
/* #line	1012	"/home/dmg/h/f2c/gram.in" */
{ if(nstars < maxlablist)
			excall(yypt[-3].yyv.namval, mklist(revchain(yypt[-1].yyv.chval)), nstars, labarray);
		  else
			many("alternate returns", 'l', maxlablist);
		} break;
case 223:
/* #line	1018	"/home/dmg/h/f2c/gram.in" */
{ exreturn(yypt[-0].yyv.expval);  thiswasbranch = YES; } break;
case 224:
/* #line	1020	"/home/dmg/h/f2c/gram.in" */
{ exstop(yypt[-2].yyv.ival, yypt[-0].yyv.expval);  thiswasbranch = yypt[-2].yyv.ival; } break;
case 225:
/* #line	1024	"/home/dmg/h/f2c/gram.in" */
{ yyval.labval = mklabel( convci(toklen, token) ); } break;
case 226:
/* #line	1028	"/home/dmg/h/f2c/gram.in" */
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(ESNULL, CLMAIN);
			}
		} break;
case 227:
/* #line	1037	"/home/dmg/h/f2c/gram.in" */
{ exgoto(yypt[-0].yyv.labval);  thiswasbranch = YES; } break;
case 228:
/* #line	1039	"/home/dmg/h/f2c/gram.in" */
{ exasgoto(yypt[-0].yyv.namval);  thiswasbranch = YES; } break;
case 229:
/* #line	1041	"/home/dmg/h/f2c/gram.in" */
{ exasgoto(yypt[-4].yyv.namval);  thiswasbranch = YES; } break;
case 230:
/* #line	1043	"/home/dmg/h/f2c/gram.in" */
{ if(nstars < maxlablist)
			putcmgo(putx(fixtype(yypt[-0].yyv.expval)), nstars, labarray);
		  else
			many("labels in computed GOTO list", 'l', maxlablist);
		} break;
case 233:
/* #line	1055	"/home/dmg/h/f2c/gram.in" */
{ nstars = 0; yyval.namval = yypt[-0].yyv.namval; } break;
case 234:
/* #line	1059	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = yypt[-0].yyv.expval ? mkchain((char *)yypt[-0].yyv.expval,CHNULL) : CHNULL; } break;
case 235:
/* #line	1061	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = yypt[-0].yyv.expval ? mkchain((char *)yypt[-0].yyv.expval, yypt[-2].yyv.chval) : yypt[-2].yyv.chval; } break;
case 237:
/* #line	1066	"/home/dmg/h/f2c/gram.in" */
{ if(nstars < maxlablist) labarray[nstars++] = yypt[-0].yyv.labval; yyval.expval = 0; } break;
case 238:
/* #line	1070	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = 0; } break;
case 239:
/* #line	1072	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = 2; } break;
case 240:
/* #line	1076	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.expval, CHNULL); } break;
case 241:
/* #line	1078	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = hookup(yypt[-2].yyv.chval, mkchain((char *)yypt[-0].yyv.expval,CHNULL) ); } break;
case 242:
/* #line	1082	"/home/dmg/h/f2c/gram.in" */
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(ESNULL, CLMAIN);
			}

/* This next statement depends on the ordering of the state table encoding */

		  if(parstate < INDATA) enddcl();
		} break;
case 243:
/* #line	1095	"/home/dmg/h/f2c/gram.in" */
{ intonly = YES; } break;
case 244:
/* #line	1099	"/home/dmg/h/f2c/gram.in" */
{ intonly = NO; } break;
case 245:
/* #line	1104	"/home/dmg/h/f2c/gram.in" */
{ endio(); } break;
case 247:
/* #line	1109	"/home/dmg/h/f2c/gram.in" */
{ ioclause(IOSUNIT, yypt[-0].yyv.expval); endioctl(); } break;
case 248:
/* #line	1111	"/home/dmg/h/f2c/gram.in" */
{ ioclause(IOSUNIT, ENULL); endioctl(); } break;
case 249:
/* #line	1113	"/home/dmg/h/f2c/gram.in" */
{ ioclause(IOSUNIT, IOSTDERR); endioctl(); } break;
case 251:
/* #line	1116	"/home/dmg/h/f2c/gram.in" */
{ doio(CHNULL); } break;
case 252:
/* #line	1118	"/home/dmg/h/f2c/gram.in" */
{ doio(CHNULL); } break;
case 253:
/* #line	1120	"/home/dmg/h/f2c/gram.in" */
{ doio(revchain(yypt[-0].yyv.chval)); } break;
case 254:
/* #line	1122	"/home/dmg/h/f2c/gram.in" */
{ doio(revchain(yypt[-0].yyv.chval)); } break;
case 255:
/* #line	1124	"/home/dmg/h/f2c/gram.in" */
{ doio(revchain(yypt[-0].yyv.chval)); } break;
case 256:
/* #line	1126	"/home/dmg/h/f2c/gram.in" */
{ doio(CHNULL); } break;
case 257:
/* #line	1128	"/home/dmg/h/f2c/gram.in" */
{ doio(revchain(yypt[-0].yyv.chval)); } break;
case 258:
/* #line	1130	"/home/dmg/h/f2c/gram.in" */
{ doio(revchain(yypt[-0].yyv.chval)); } break;
case 259:
/* #line	1132	"/home/dmg/h/f2c/gram.in" */
{ doio(CHNULL); } break;
case 260:
/* #line	1134	"/home/dmg/h/f2c/gram.in" */
{ doio(revchain(yypt[-0].yyv.chval)); } break;
case 262:
/* #line	1141	"/home/dmg/h/f2c/gram.in" */
{ iostmt = IOBACKSPACE; } break;
case 263:
/* #line	1143	"/home/dmg/h/f2c/gram.in" */
{ iostmt = IOREWIND; } break;
case 264:
/* #line	1145	"/home/dmg/h/f2c/gram.in" */
{ iostmt = IOENDFILE; } break;
case 266:
/* #line	1152	"/home/dmg/h/f2c/gram.in" */
{ iostmt = IOINQUIRE; } break;
case 267:
/* #line	1154	"/home/dmg/h/f2c/gram.in" */
{ iostmt = IOOPEN; } break;
case 268:
/* #line	1156	"/home/dmg/h/f2c/gram.in" */
{ iostmt = IOCLOSE; } break;
case 269:
/* #line	1160	"/home/dmg/h/f2c/gram.in" */
{
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, yypt[-0].yyv.expval);
		endioctl();
		} break;
case 270:
/* #line	1166	"/home/dmg/h/f2c/gram.in" */
{
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, ENULL);
		endioctl();
		} break;
case 271:
/* #line	1174	"/home/dmg/h/f2c/gram.in" */
{
		  ioclause(IOSUNIT, yypt[-1].yyv.expval);
		  endioctl();
		} break;
case 272:
/* #line	1179	"/home/dmg/h/f2c/gram.in" */
{ endioctl(); } break;
case 275:
/* #line	1187	"/home/dmg/h/f2c/gram.in" */
{ ioclause(IOSPOSITIONAL, yypt[-0].yyv.expval); } break;
case 276:
/* #line	1189	"/home/dmg/h/f2c/gram.in" */
{ ioclause(IOSPOSITIONAL, ENULL); } break;
case 277:
/* #line	1191	"/home/dmg/h/f2c/gram.in" */
{ ioclause(IOSPOSITIONAL, IOSTDERR); } break;
case 278:
/* #line	1193	"/home/dmg/h/f2c/gram.in" */
{ ioclause(yypt[-1].yyv.ival, yypt[-0].yyv.expval); } break;
case 279:
/* #line	1195	"/home/dmg/h/f2c/gram.in" */
{ ioclause(yypt[-1].yyv.ival, ENULL); } break;
case 280:
/* #line	1197	"/home/dmg/h/f2c/gram.in" */
{ ioclause(yypt[-1].yyv.ival, IOSTDERR); } break;
case 281:
/* #line	1201	"/home/dmg/h/f2c/gram.in" */
{ yyval.ival = iocname(); } break;
case 282:
/* #line	1205	"/home/dmg/h/f2c/gram.in" */
{ iostmt = IOREAD; } break;
case 283:
/* #line	1209	"/home/dmg/h/f2c/gram.in" */
{ iostmt = IOWRITE; } break;
case 284:
/* #line	1213	"/home/dmg/h/f2c/gram.in" */
{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, yypt[-1].yyv.expval);
		endioctl();
		} break;
case 285:
/* #line	1220	"/home/dmg/h/f2c/gram.in" */
{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, ENULL);
		endioctl();
		} break;
case 286:
/* #line	1229	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, CHNULL); } break;
case 287:
/* #line	1231	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, yypt[-2].yyv.chval); } break;
case 288:
/* #line	1235	"/home/dmg/h/f2c/gram.in" */
{ yyval.tagval = (tagptr) yypt[-0].yyv.expval; } break;
case 289:
/* #line	1237	"/home/dmg/h/f2c/gram.in" */
{ yyval.tagval = (tagptr) mkiodo(yypt[-1].yyv.chval,revchain(yypt[-3].yyv.chval)); } break;
case 290:
/* #line	1241	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.expval, CHNULL); } break;
case 291:
/* #line	1243	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, CHNULL); } break;
case 293:
/* #line	1248	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.expval, mkchain((char *)yypt[-2].yyv.expval, CHNULL) ); } break;
case 294:
/* #line	1250	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, mkchain((char *)yypt[-2].yyv.expval, CHNULL) ); } break;
case 295:
/* #line	1252	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.expval, mkchain((char *)yypt[-2].yyv.tagval, CHNULL) ); } break;
case 296:
/* #line	1254	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, mkchain((char *)yypt[-2].yyv.tagval, CHNULL) ); } break;
case 297:
/* #line	1256	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.expval, yypt[-2].yyv.chval); } break;
case 298:
/* #line	1258	"/home/dmg/h/f2c/gram.in" */
{ yyval.chval = mkchain((char *)yypt[-0].yyv.tagval, yypt[-2].yyv.chval); } break;
case 299:
/* #line	1262	"/home/dmg/h/f2c/gram.in" */
{ yyval.tagval = (tagptr) yypt[-0].yyv.expval; } break;
case 300:
/* #line	1264	"/home/dmg/h/f2c/gram.in" */
{ yyval.tagval = (tagptr) yypt[-1].yyv.expval; } break;
case 301:
/* #line	1266	"/home/dmg/h/f2c/gram.in" */
{ yyval.tagval = (tagptr) mkiodo(yypt[-1].yyv.chval, mkchain((char *)yypt[-3].yyv.expval, CHNULL) ); } break;
case 302:
/* #line	1268	"/home/dmg/h/f2c/gram.in" */
{ yyval.tagval = (tagptr) mkiodo(yypt[-1].yyv.chval, mkchain((char *)yypt[-3].yyv.tagval, CHNULL) ); } break;
case 303:
/* #line	1270	"/home/dmg/h/f2c/gram.in" */
{ yyval.tagval = (tagptr) mkiodo(yypt[-1].yyv.chval, revchain(yypt[-3].yyv.chval)); } break;
case 304:
/* #line	1274	"/home/dmg/h/f2c/gram.in" */
{ startioctl(); } break;
	}
	goto yystack;  /* stack new state and value */
}
