diff -c ORIG-src/gram.c src/gram.c
*** ORIG-src/gram.c	Wed Apr 28 07:07:31 1993
--- src/gram.c	Wed Nov 17 11:44:08 1993
***************
*** 1,104 ****
- # 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
  
! /* # line 124 "gram.in" */
  #include "defs.h"
  #include "p1defs.h"
  
--- 1,111 ----
  
! /*  A Bison parser, made from gram.y with Bison version GNU Bison version 1.21
!   */
! 
! #define YYBISON 1  /* Identify Bison output.  */
! 
! #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
! 
! #line 123 "gram.y"
! 
  #include "defs.h"
  #include "p1defs.h"
  
***************
*** 150,157 ****
  	}
  
  
! /* # line 178 "gram.in" */
! typedef union 	{
  	int ival;
  	ftnint lval;
  	char *charpval;
--- 157,164 ----
  	}
  
  
! #line 178 "gram.y"
! typedef union	{
  	int ival;
  	ftnint lval;
  	char *charpval;
***************
*** 163,875 ****
  	struct Eqvchain *eqvval;
  	Extsym *extval;
  	} YYSTYPE;
! #define yyclearin yychar = -1
! #define yyerrok yyerrflag = 0
! extern int yychar;
! typedef int yytabelem;
! extern yytabelem yyerrflag;
! #ifndef YYMAXDEPTH
! #define YYMAXDEPTH 150
  #endif
- YYSTYPE yylval, yyval;
- # define YYERRCODE 256
- yytabelem yyexca[] ={
- -1, 1,
- 	0, -1,
- 	-2, 0,
- -1, 20,
- 	1, 38,
- 	-2, 228,
- -1, 24,
- 	1, 42,
- 	-2, 228,
- -1, 122,
- 	6, 240,
- 	-2, 228,
- -1, 150,
- 	1, 244,
- 	-2, 188,
- -1, 174,
- 	1, 265,
- 	78, 265,
- 	-2, 188,
- -1, 223,
- 	77, 173,
- 	-2, 139,
- -1, 245,
- 	74, 228,
- 	-2, 225,
- -1, 271,
- 	1, 286,
- 	-2, 143,
- -1, 275,
- 	1, 295,
- 	78, 295,
- 	-2, 145,
- -1, 328,
- 	77, 174,
- 	-2, 141,
- -1, 358,
- 	1, 267,
- 	14, 267,
- 	74, 267,
- 	78, 267,
- 	-2, 189,
- -1, 436,
- 	91, 0,
- 	92, 0,
- 	93, 0,
- 	94, 0,
- 	95, 0,
- 	96, 0,
- 	-2, 153,
- -1, 453,
- 	1, 289,
- 	78, 289,
- 	-2, 143,
- -1, 455,
- 	1, 291,
- 	78, 291,
- 	-2, 143,
- -1, 457,
- 	1, 293,
- 	78, 293,
- 	-2, 143,
- -1, 459,
- 	1, 296,
- 	78, 296,
- 	-2, 144,
- -1, 504,
- 	78, 289,
- 	-2, 143,
- 	};
- # define YYNPROD 301
- # define YYLAST 1346
- yytabelem yyact[]={
- 
-  237, 274, 471, 317, 316, 412, 420, 297, 470, 399,
-  413, 397, 386, 357, 398, 266, 128, 356, 273, 252,
-  292,   5, 116, 295, 326, 303, 222,  99, 184, 121,
-  195, 229,  17, 203, 270, 304, 313, 199, 201, 118,
-   94, 202, 396, 104, 210, 183, 236, 101, 106, 234,
-  264, 103, 111, 336, 260,  95,  96,  97, 165, 166,
-  334, 335, 336, 395, 105, 311, 309, 190, 130, 131,
-  132, 133, 120, 135, 119, 114, 157, 129, 157, 475,
-  103, 272, 334, 335, 336, 396, 521, 103, 278, 483,
-  535, 165, 166, 334, 335, 336, 342, 341, 340, 339,
-  338, 137, 343, 345, 344, 347, 346, 348, 450, 258,
-  259, 260, 539, 165, 166, 258, 259, 260, 261, 525,
-  102, 522, 155, 409, 155, 186, 187, 103, 408, 117,
-  165, 166, 258, 259, 260, 318, 100, 527, 484, 188,
-  446, 185, 480, 230, 240, 240, 194, 193, 290, 120,
-  211, 119, 462, 481, 157, 294, 482, 257, 157, 243,
-  468, 214, 463, 469, 461, 464, 460, 239, 241, 220,
-  215, 218, 157, 219, 213, 165, 166, 334, 335, 336,
-  342, 341, 340, 157, 371, 452, 343, 345, 344, 347,
-  346, 348, 443, 428, 377, 294, 102, 102, 102, 102,
-  155, 189, 447, 149, 155, 446, 192, 103,  98, 196,
-  197, 198, 277, 376, 320, 321, 206, 288, 155, 289,
-  300, 375, 299, 324, 315, 328, 275, 275, 330, 155,
-  310, 333, 196, 216, 217, 350, 269, 207, 308, 352,
-  353, 333, 100, 177, 354, 349, 323, 112, 245, 257,
-  247, 110, 157, 417, 286, 287, 418, 362, 157, 157,
-  157, 157, 157, 257, 257, 109, 108, 268, 279, 280,
-  281, 265, 107, 355,   4, 333, 427, 465, 378, 370,
-  170, 172, 176, 257, 165, 166, 258, 259, 260, 261,
-  102, 406, 232, 293, 407, 381, 422, 390, 155, 400,
-  391, 223, 419, 422, 155, 155, 155, 155, 155, 117,
-  221, 314, 392, 319, 387, 359, 372, 196, 360, 373,
-  374, 333, 333, 536, 350, 333, 275, 250, 424, 333,
-  405, 333, 410, 532, 230, 432, 433, 434, 435, 436,
-  437, 438, 439, 440, 441, 403, 331, 156, 401, 332,
-  531, 333, 530, 333, 333, 333, 388, 526, 380, 529,
-  524, 157, 257, 333, 431, 492, 257, 257, 257, 257,
-  257, 382, 383, 235, 426, 384, 358, 494, 296, 333,
-  448, 165, 166, 258, 259, 260, 261, 451, 165, 166,
-  258, 259, 260, 261, 103, 445, 472, 400, 421, 191,
-  402, 196, 103, 150, 307, 174, 285, 155, 474, 246,
-  476, 416, 467, 466, 242, 226, 223, 200, 212, 136,
-  209, 486, 171, 488, 490, 275, 275, 275, 141, 240,
-  496, 429, 329, 333, 333, 333, 333, 333, 333, 333,
-  333, 333, 333, 403, 497, 479, 401, 403, 487, 154,
-  257, 154, 495, 493, 306, 485, 502, 454, 456, 458,
-  500, 491, 268, 499, 505, 506, 507, 103, 451, 271,
-  271, 472,  30, 333, 414, 501, 400, 508, 511, 509,
-  387, 244, 208, 510, 516, 514, 515, 333, 517, 333,
-  513, 333, 520, 293, 518, 225, 240, 333, 402, 523,
-   92, 248, 402, 528,   6, 262, 123, 249,  81,  80,
-  275, 275, 275,  79, 534, 533, 479,  78, 173, 263,
-  314,  77, 403,  76, 537, 401, 351, 154,  75, 333,
-  282, 154,  60,  49,  48, 333,  45,  33, 333, 538,
-  113, 205, 454, 456, 458, 154, 267, 165, 166, 334,
-  335, 336, 342, 540, 503, 411, 154, 204, 394, 393,
-  298, 478, 503, 503, 503, 134, 389, 312, 115, 379,
-   26,  25,  24,  23, 302,  22, 305, 402,  21, 385,
-  284,   9, 503,   8,   7,   2, 519, 301,  20, 319,
-  164,  51, 489, 291, 228, 327, 325, 415,  91, 361,
-  255,  53, 337,  19,  55, 365, 366, 367, 368, 369,
-   37, 224,   3,   1,   0, 351,   0,   0,   0,   0,
-    0,   0,   0,   0,   0, 154,   0,   0,   0,   0,
-    0, 154, 154, 154, 154, 154,   0,   0,   0, 267,
-    0, 512, 267, 267, 165, 166, 334, 335, 336, 342,
-  341, 340, 339, 338,   0, 343, 345, 344, 347, 346,
-  348, 165, 166, 334, 335, 336, 342, 341, 453, 455,
-  457,   0, 343, 345, 344, 347, 346, 348,   0,   0,
-  305,   0, 459,   0,   0,   0,   0, 165, 166, 334,
-  335, 336, 342, 341, 340, 339, 338, 351, 343, 345,
-  344, 347, 346, 348, 444,   0,   0,   0, 449, 165,
-  166, 334, 335, 336, 342, 341, 340, 339, 338,   0,
-  343, 345, 344, 347, 346, 348, 165, 166, 334, 335,
-  336, 342,   0,   0, 154,   0, 498, 343, 345, 344,
-  347, 346, 348,   0,   0, 267,   0,   0,   0,   0,
-    0, 442,   0, 504, 455, 457, 165, 166, 334, 335,
-  336, 342, 341, 340, 339, 338,   0, 343, 345, 344,
-  347, 346, 348,   0,   0,   0,   0,   0,   0, 430,
-    0, 477,   0, 305, 165, 166, 334, 335, 336, 342,
-  341, 340, 339, 338,   0, 343, 345, 344, 347, 346,
-  348, 423,   0,   0,   0,   0, 165, 166, 334, 335,
-  336, 342, 341, 340, 339, 338,   0, 343, 345, 344,
-  347, 346, 348,   0,   0,   0, 267,   0,   0,   0,
-    0, 165, 166, 334, 335, 336, 342, 341, 340, 339,
-  338,  12, 343, 345, 344, 347, 346, 348,   0,   0,
-    0,   0,   0,   0, 305,  10,  56,  46,  73,  85,
-   14,  61,  70,  90,  38,  66,  47,  42,  68,  72,
-   31,  67,  35,  34,  11,  87,  36,  18,  41,  39,
-   28,  16,  57,  58,  59,  50,  54,  43,  88,  64,
-   40,  69,  44,  89,  29,  62,  84,  13,   0,  82,
-   65,  52,  86,  27,  74,  63,  15,   0,   0,  71,
-   83, 160, 161, 162, 163, 169, 168, 167, 158, 159,
-  103,   0, 160, 161, 162, 163, 169, 168, 167, 158,
-  159, 103,   0,   0,  32, 160, 161, 162, 163, 169,
-  168, 167, 158, 159, 103,   0, 160, 161, 162, 163,
-  169, 168, 167, 158, 159, 103,   0, 160, 161, 162,
-  163, 169, 168, 167, 158, 159, 103,   0, 160, 161,
-  162, 163, 169, 168, 167, 158, 159, 103,   0,   0,
-  233,   0,   0,   0,   0,   0, 165, 166, 363,   0,
-  364, 233, 227,   0,   0,   0, 238, 165, 166, 231,
-    0,   0,   0,   0, 233,   0,   0, 238,   0,   0,
-  165, 166, 473,   0,   0, 233,   0,   0,   0,   0,
-  238, 165, 166, 231,   0,   0, 233,   0,   0,   0,
-    0, 238, 165, 166, 425,   0,   0, 233,   0,   0,
-    0,   0, 238, 165, 166,   0,   0,   0,   0,   0,
-    0,   0,   0, 238, 160, 161, 162, 163, 169, 168,
-  167, 158, 159, 103,   0, 160, 161, 162, 163, 169,
-  168, 167, 158, 159, 103, 160, 161, 162, 163, 169,
-  168, 167, 158, 159, 103,   0,   0,   0, 160, 161,
-  162, 163, 169, 168, 167, 158, 159, 103, 256,   0,
-   93, 160, 161, 162, 163, 169, 168, 167, 158, 159,
-  103,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0, 276,   0,   0,   0,   0,   0, 165,
-  166,   0, 122,   0, 322, 125, 126, 127,   0, 238,
-  165, 166,   0,   0,   0,   0,   0, 138, 139,   0,
-  238, 140,   0, 142, 143, 144,   0, 251, 145, 146,
-  147,   0, 148, 165, 166, 253,   0, 254,   0,   0,
-  153,   0,   0,   0,   0,   0, 165, 166, 151,   0,
-  152, 178, 179, 180, 181, 182, 160, 161, 162, 163,
-  169, 168, 167, 158, 159, 103, 160, 161, 162, 163,
-  169, 168, 167, 158, 159, 103, 160, 161, 162, 163,
-  169, 168, 167, 158, 159, 103, 160, 161, 162, 163,
-  169, 168, 167, 158, 159, 103,   0,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,   0, 251,   0,   0,   0,   0,
-    0, 165, 166, 283,   0, 153,   0,   0,   0,   0,
-    0, 165, 166, 175,   0, 404,   0,   0,   0,   0,
-    0, 165, 166,  56,  46, 251,  85,   0,  61,   0,
-   90, 165, 166,  47,  73,   0,   0,   0,  70,   0,
-    0,  66,  87,   0,  68,  72,   0,  67,   0,  57,
-   58,  59,  50,   0,   0,  88,   0,   0,   0,   0,
-   89,   0,  62,  84,   0,  64,  82,  69,  52,  86,
-    0,   0,  63,   0, 124,   0,  65,  83,   0,   0,
-   74,   0,   0,   0,   0,  71 };
- yytabelem yypact[]={
- 
- -1000,  18, 503, 837,-1000,-1000,-1000,-1000,-1000,-1000,
-  495,-1000,-1000,-1000,-1000,-1000,-1000, 164, 453, -35,
-  194, 188, 187, 173,  58, 169,  -8,  66,-1000,-1000,
- -1000,-1000,-1000,1264,-1000,-1000,-1000,  -5,-1000,-1000,
- -1000,-1000,-1000,-1000,-1000, 453,-1000,-1000,-1000,-1000,
- -1000, 354,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
- -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
- -1000,-1000,-1000,-1000,-1000,1096, 348,1191, 348, 165,
- -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
- -1000,-1000,-1000,-1000, 453, 453, 453, 453,-1000, 453,
- -1000, 325,-1000,-1000, 453,-1000, -11, 453, 453, 453,
-  343,-1000,-1000,-1000, 453, 159,-1000,-1000,-1000,-1000,
-  468, 346,  58,-1000,-1000, 344,-1000,-1000,-1000,-1000,
-   66, 453, 453, 343,-1000,-1000, 234, 342, 489,-1000,
-  341, 917, 963, 963, 340, 475, 453, 335, 453,-1000,
- -1000,-1000,-1000,1083,-1000,-1000, 308,1211,-1000,-1000,
- -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
- -1000,1083, 193, 158,-1000,-1000,1049,1049,-1000,-1000,
- -1000,-1000,1181, 332,-1000,-1000, 325, 325, 453,-1000,
- -1000,  73, 304,-1000,  58,-1000, 304,-1000,-1000,-1000,
-  453,-1000, 380,-1000, 330,1273, -17,  66, -18, 453,
-  475,  37, 963,1060,-1000, 453,-1000,-1000,-1000,-1000,
- -1000, 963,-1000, 963, 361,-1000, 963,-1000, 271,-1000,
-  751, 475,-1000, 963,-1000,-1000,-1000, 963, 963,-1000,
-  751,-1000, 963,-1000,-1000,  58, 475,-1000, 301, 240,
- -1000,1211,-1000,-1000,-1000, 906,-1000,1211,1211,1211,
- 1211,1211, -30, 204, 106, 388,-1000,-1000, 388, 388,
- -1000, 143, 135, 116, 751,-1000,1049,-1000,-1000,-1000,
- -1000,-1000, 308,-1000,-1000, 300,-1000,-1000, 325,-1000,
- -1000, 222,-1000,-1000,-1000,  -5,-1000, -36,1201, 453,
- -1000, 216,-1000,  45,-1000,-1000, 380, 460,-1000, 453,
- -1000,-1000, 178,-1000, 226,-1000,-1000,-1000, 324, 220,
-  726, 751, 952,-1000, 751, 299, 199, 115, 751, 453,
-  704,-1000, 941, 963, 963, 963, 963, 963, 963, 963,
-  963, 963, 963,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-  676, 114, -31, 646, 629, 321, 127,-1000,-1000,-1000,
- 1083,  33, 751,-1000,-1000,  27, -30, -30, -30,  50,
- -1000, 388, 106, 107, 106,1049,1049,1049, 607,  88,
-   86,  74,-1000,-1000,-1000,  87,-1000, 201,-1000, 304,
- -1000, 113,-1000,  85, 930,-1000,1201,-1000,-1000,  -3,
- 1070,-1000,-1000,-1000, 963,-1000,-1000, 453,-1000, 380,
-   64,  78,-1000,   8,-1000,  60,-1000,-1000, 453, 963,
-   58, 963, 963, 391,-1000, 290, 303, 963, 963,-1000,
-  475,-1000,   0, -31, -31, -31, 467,  95,  95, 581,
-  646, -22,-1000, 963,-1000, 475, 475,  58,-1000, 308,
- -1000,-1000, 388,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
- 1049,1049,1049,-1000, 466, 465,  -5,-1000,-1000, 930,
- -1000,-1000, 564,-1000,-1000,1201,-1000,-1000,-1000,-1000,
-  380,-1000, 460, 460, 453,-1000, 751,  37,  11,  43,
-  751,-1000,-1000,-1000, 963, 285, 751,  41, 282,  62,
- -1000, 963, 284, 227, 282, 277, 275, 258,-1000,-1000,
- -1000,-1000, 930,-1000,-1000,   7, 248,-1000,-1000,-1000,
- -1000,-1000, 963,-1000,-1000, 475,-1000,-1000, 751,-1000,
- -1000,-1000,-1000,-1000, 751,-1000,-1000, 751,  34, 475,
- -1000 };
- yytabelem yypgo[]={
- 
-    0, 613, 612,  13, 611,  81,  15,  32, 610, 604,
-  603,  10,   0, 602, 601, 600,  16, 598,  35,  25,
-  597, 596, 595,   3,   4, 594,  67, 593, 592,  50,
-   34,  18,  26, 101,  20, 591,  30, 373,   1, 292,
-   24, 347, 327,   2,   9,  14,  31,  49,  46, 590,
-  588,  39,  28,  45, 587, 585, 584, 583, 581,1100,
-   40, 580, 579,  12, 578, 575, 573, 572, 571, 570,
-  568,  29, 567,  27, 566,  23,  41,   7,  44,   6,
-   37, 565,  38, 561, 560,  11,  22,  36, 559, 558,
-    8,  17,  33, 557, 555, 541,   5, 540, 472, 537,
-  536, 534, 533, 532, 528, 203, 523, 521, 518, 517,
-  513, 509,  88, 508, 507,  19 };
- yytabelem 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,  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,  58,  58,  58,  99,  23,  24,
-   24,  98,  98,  98,  98,  98,  98,  98,  98,  98,
-   98,  98,   4, 100, 101, 101, 101, 101,  73,  73,
-   35,  25,  25,  46,  46,  14,  14,  28,  28,  59,
-   78,  79, 102, 103, 103, 103, 103, 103, 103, 103,
-  103, 103, 103, 103, 103, 103, 103, 104, 111, 111,
-  111, 106, 113, 113, 113, 108, 108, 105, 105, 114,
-  114, 115, 115, 115, 115, 115, 115,  15, 107, 109,
-  110, 110,  29,  29,   6,   6,  30,  30,  30,  31,
-   31,  31,  31,  31,  31,   5,   5,   5,   5,   5,
-  112 };
- yytabelem 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,   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,   7,
-    4,   1,   2,   2,   6,   2,   2,   5,   3,   1,
-    4,   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,   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 };
- yytabelem yychk[]={
- 
- -1000,  -1, -55,  -2, 256,   3,   1, -56, -57, -58,
-   18,  37,   4,  60,  23,  69,  44,  -7,  40, -10,
-  -50, -64, -65, -66, -67, -68, -69,  66,  43,  57,
-  -98,  33,  97, -99,  36,  35,  39,  -8,  27,  42,
-   53,  41,  30,  50,  55,-100,  20,  29,-101,-102,
-   48, -35,  64, -14,  49,  -9,  19,  45,  46,  47,
- -103,  24,  58,  68,  52,  63,  28,  34,  31,  54,
-   25,  72,  32,  21,  67,-104,-106,-107,-109,-110,
- -111,-113,  62,  73,  59,  22,  65,  38,  51,  56,
-   26, -17,   5, -59, -60, -60, -60, -60,  44, -73,
-   78, -52, -33,  14,  78,  99, -73,  78,  78,  78,
-   78, -73,  78, -97,  83, -70, -86, -33, -51,  85,
-   83, -71, -59, -98,  70, -59, -59, -59, -16,  82,
-  -71, -71, -71, -71, -81, -71, -37, -33, -59, -59,
-  -59,  74, -59, -59, -59, -59, -59, -59, -59,-105,
-  -42,  82,  84,  74, -37, -48, -41, -12,  12,  13,
-    5,   6,   7,   8, -49,  80,  81,  11,  10,   9,
- -105,  74,-105,-108, -42,  82,-105,  78, -59, -59,
-  -59, -59, -59, -53, -52, -53, -52, -52, -60, -33,
-  -26,  74, -33, -76, -51, -36, -33, -33, -33, -80,
-   74, -82, -76, -92, -93, -95, -33,  78,  14,  74,
-  -78, -73,  74, -78, -36, -51, -33, -33, -80, -82,
-  -92,  76, -32,  74,  -4,   6,  74,  75, -25, -46,
-  -38,  82, -39,  74, -47, -37, -48, -12,  90, -40,
-  -38, -40,  74,  -3,   6, -33,  74, -33, -41,-114,
-  -42,  74,-115,  82,  84, -15,  15, -12,  82,  83,
-   84,  85, -41, -41, -29,  78,  -6, -37,  74,  78,
-  -30, -39,  -5, -31, -38, -47,  74, -30,-112,-112,
- -112,-112, -41,  82, -61,  74, -26, -26, -52, -71,
-   75, -27, -34, -33,  82, -75,  74, -77, -84, -73,
-  -75, -54, -37, -19, -18, -37,  74,  74,  -7,  83,
-  -86,  83, -72, -87, -33,  -3, -24, -23,  98, -33,
-  -38, -38,  74, -36, -38, -21, -40, -22, -38,  71,
-  -38,  75,  78, -12,  82,  83,  84, -13,  89,  88,
-   87,  86,  85,  91,  93,  92,  95,  94,  96,  -3,
-  -38, -39, -38, -38, -38, -73, -91,  -3,  75,  75,
-   78, -41, -38,  82,  84, -41, -41, -41, -41, -41,
-   75,  78, -29, -29, -29,  78,  78,  78, -38, -39,
-   -5, -31,-112,-112,  75, -62, -63,  14, -26, -74,
-   75,  78, -16, -88, -89,  99,  78, -85, -45, -44,
-  -12, -47, -33, -48,  74, -36,  75,  78,  83,  78,
-  -19, -94, -96, -11,  14, -20, -33,  75,  78,  76,
-  -79,  74,  76,  75, -79,  82,  75,  77,  78, -33,
-   75, -46, -38, -38, -38, -38, -38, -38, -38, -38,
-  -38, -38,  75,  78,  75,  74,  78,  75,-115, -41,
-   75,  -6,  78, -39,  -5, -39,  -5, -39,  -5,  75,
-   78,  78,  78,  75,  78,  76, -75, -34,  75,  78,
-  -90, -43, -38,  82, -85,  82, -44, -37, -83, -18,
-   78,  75,  78,  81,  78, -87, -38, -73, -38, -28,
-  -38,  70,  75, -32,  74, -40, -38,  -3, -39, -91,
-   -3, -73, -23, -33, -39, -23, -23, -23, -63,  14,
-  -16, -90,  77, -45, -44, -77, -23, -96, -11, -33,
-  -24,  75,  78, -79,  75,  78,  75,  75, -38,  75,
-   75,  75,  75, -43, -38,  83,  75, -38,  -3,  78,
-   -3 };
- yytabelem yydef[]={
- 
-    1,  -2,   0,   0,   9,  10,   2,   3,   4,   5,
-    0, 239,   8,  18,  18,  18,  18, 228,   0,  37,
-   -2,  39,  40,  41,  -2,  43,  44,  45,  47, 138,
-  198, 239, 201,   0, 239, 239, 239,  66, 138, 138,
-  138, 138,  86, 138, 133,   0, 239, 239, 214, 215,
-  239, 217, 239, 239, 239,  54, 223, 239, 239, 239,
-  242, 239, 235, 236,  55,  56,  57,  58,  59,  60,
-   61,  62,  63,  64,  65,   0,   0,   0,   0, 255,
-  239, 239, 239, 239, 239, 258, 259, 260, 262, 263,
-  264,   6,  36,   7,  21,  21,   0,   0,  18,   0,
-  229,  29,  19,  20,   0,  88,   0, 229,   0,   0,
-    0,  88, 126, 134,   0,  46,  98, 100, 101,  73,
-    0,   0,  -2, 202, 203,   0, 205, 206,  53, 240,
-    0,   0,   0,   0,  88, 126,   0, 168,   0, 213,
-    0,   0, 173, 173,   0,   0,   0,   0,   0, 243,
-   -2, 245, 246,   0, 190, 191,   0,   0, 177, 178,
-  179, 180, 181, 182, 183, 160, 161, 185, 186, 187,
-  247,   0, 248, 249,  -2, 266, 253,   0, 300, 300,
-  300, 300,   0,  11,  22,  13,  29,  29,   0, 138,
-   17,   0, 110,  90, 228,  72, 110,  76,  78,  80,
-    0,  85,   0, 123, 125,   0,   0,   0,   0,   0,
-    0,   0,   0,   0,  69,   0,  75,  77,  79,  84,
-  122,   0, 169,  -2,   0, 222,   0, 218,   0, 231,
-  233,   0, 143,   0, 145, 146, 147,   0,   0, 220,
-  174, 221,   0, 224, 121,  -2,   0, 230, 271,   0,
-  188,   0, 269, 272, 273,   0, 277,   0,   0,   0,
-    0,   0, 196, 271, 250,   0, 282, 284,   0,   0,
-  254,  -2, 287, 288,   0,  -2,   0, 256, 257, 261,
-  278, 279, 300, 300,  12,   0,  14,  15,  29,  52,
-   30,   0,  32,  34,  35,  66, 112,   0,   0,   0,
-  105,   0,  82,   0, 108, 106,   0,   0, 127,   0,
-   99,  74,   0, 102,   0, 241, 200, 209,   0,   0,
-    0, 241,   0,  70, 211,   0,   0, 140,  -2,   0,
-    0, 219,   0,   0,   0,   0,   0,   0,   0,   0,
-    0,   0,   0, 162, 163, 164, 165, 166, 167, 234,
-    0, 143, 152, 158,   0,   0,   0, 119,  -2, 268,
-    0,   0, 274, 275, 276, 192, 193, 194, 195, 197,
-  267,   0, 252,   0, 251,   0,   0,   0,   0, 143,
-    0,   0, 280, 281,  23,   0,  25,  27,  16, 110,
-   31,   0,  50,   0,   0,  51,   0,  91,  93,  95,
-    0,  97, 175, 176,   0,  71,  81,   0,  89,   0,
-    0,   0, 128, 130, 132, 135, 136,  48,   0,   0,
-  228,   0,   0,   0,  67,   0, 170, 173,   0, 212,
-    0, 232, 148, 149, 150, 151,  -2, 154, 155, 156,
-  157, 159, 144,   0, 207,   0,   0, 228, 270, 271,
-  189, 283,   0,  -2, 290,  -2, 292,  -2, 294,  -2,
-    0,   0,   0,  24,   0,   0,  66,  33, 111,   0,
-  113, 115, 118, 117,  92,   0,  96,  83,  90, 109,
-    0, 124,   0,   0,   0, 103, 104,   0,   0, 208,
-  237, 204, 241, 171, 173,   0, 142,   0, 143,   0,
-  120,   0,   0, 168,  -2,   0,   0,   0,  26,  28,
-   49, 114,   0,  94,  95,   0,   0, 129, 131, 137,
-  199, 210,   0,  68, 172,   0, 184, 226, 227, 285,
-  297, 298, 299, 116, 118,  87, 107, 238,   0,   0,
-  216 };
- # ifdef YYDEBUG
- # include "y.debug"
- # endif
- 
- # define YYFLAG -1000
- # define YYERROR goto yyerrlab
- # define YYACCEPT return(0)
- # define YYABORT return(1)
- 
- /*	parser for yacc output	*/
- 
- #ifdef YYDEBUG
- int yydebug = 0; /* 1 for debugging */
- #endif
- YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
- int yychar = -1; /* current input token number */
- int yynerrs = 0;  /* number of errors */
- yytabelem yyerrflag = 0;  /* error recovery flag */
  
! yyparse()
! {	yytabelem yys[YYMAXDEPTH];
! 	int yyj, yym;
! 	register YYSTYPE *yypvt;
! 	register int yystate, yyn;
! 	register yytabelem *yyps;
! 	register YYSTYPE *yypv;
! 	register yytabelem *yyxi;
! 
! 	yystate = 0;
! 	yychar = -1;
! 	yynerrs = 0;
! 	yyerrflag = 0;
! 	yyps= &yys[-1];
! 	yypv= &yyv[-1];
! 
! yystack:    /* put a state and value onto the stack */
! #ifdef YYDEBUG
! 	if(yydebug >= 3)
! 		if(yychar < 0 || yytoknames[yychar] == 0)
! 			printf("char %d in %s", yychar, yystates[yystate]);
! 		else
! 			printf("%s in %s", yytoknames[yychar], yystates[yystate]);
  #endif
- 	if( ++yyps >= &yys[YYMAXDEPTH] ) {
- 		yyerror( "yacc stack overflow" );
- 		return(1);
- 	}
- 	*yyps = yystate;
- 	++yypv;
- 	*yypv = yyval;
- yynewstate:
- 	yyn = yypact[yystate];
- 	if(yyn <= YYFLAG) goto yydefault; /* simple state */
- 	if(yychar<0) {
- 		yychar = yylex();
- #ifdef YYDEBUG
- 		if(yydebug >= 2) {
- 			if(yychar <= 0)
- 				printf("lex EOF\n");
- 			else if(yytoknames[yychar])
- 				printf("lex %s\n", yytoknames[yychar]);
- 			else
- 				printf("lex (%c)\n", yychar);
- 		}
  #endif
! 		if(yychar < 0)
! 			yychar = 0;
! 	}
! 	if((yyn += yychar) < 0 || yyn >= YYLAST)
! 		goto yydefault;
! 	if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
! 		yychar = -1;
! 		yyval = yylval;
! 		yystate = yyn;
! 		if( yyerrflag > 0 ) --yyerrflag;
! 		goto yystack;
! 	}
! yydefault:
! 	/* default state action */
! 	if( (yyn=yydef[yystate]) == -2 ) {
! 		if(yychar < 0) {
! 			yychar = yylex();
! #ifdef YYDEBUG
! 			if(yydebug >= 2)
! 				if(yychar < 0)
! 					printf("lex EOF\n");
! 				else
! 					printf("lex %s\n", yytoknames[yychar]);
  #endif
! 			if(yychar < 0)
! 				yychar = 0;
! 		}
! 		/* look through exception table */
! 		for(yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate);
! 			yyxi += 2 ) ; /* VOID */
! 		while( *(yyxi+=2) >= 0 ){
! 			if( *yyxi == yychar ) break;
! 		}
! 		if( (yyn = yyxi[1]) < 0 ) return(0);   /* accept */
! 	}
! 	if( yyn == 0 ){ /* error */
! 		/* error ... attempt to resume parsing */
! 		switch( yyerrflag ){
! 		case 0:   /* brand new error */
! #ifdef YYDEBUG
! 			yyerror("syntax error\n%s", yystates[yystate]);
! 			if(yytoknames[yychar])
! 				yyerror("saw %s\n", yytoknames[yychar]);
! 			else if(yychar >= ' ' && yychar < '\177')
! 				yyerror("saw `%c'\n", yychar);
! 			else if(yychar == 0)
! 				yyerror("saw EOF\n");
! 			else
! 				yyerror("saw char 0%o\n", yychar);
! #else
! 			yyerror( "syntax error" );
  #endif
! yyerrlab:
! 			++yynerrs;
! 		case 1:
! 		case 2: /* incompletely recovered error ... try again */
! 			yyerrflag = 3;
! 			/* find a state where "error" is a legal shift action */
! 			while ( yyps >= yys ) {
! 				yyn = yypact[*yyps] + YYERRCODE;
! 				if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
! 					yystate = yyact[yyn];  /* simulate a shift of "error" */
! 					goto yystack;
! 				}
! 				yyn = yypact[*yyps];
! 				/* the current yyps has no shift onn "error", pop stack */
! #ifdef YYDEBUG
! 				if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
  #endif
- 				--yyps;
- 				--yypv;
- 			}
- 			/* there is no state on the stack with an error shift ... abort */
- yyabort:
- 			return(1);
- 		case 3:  /* no shift yet; clobber input char */
- #ifdef YYDEBUG
- 			if( yydebug ) {
- 				printf("error recovery discards ");
- 				if(yytoknames[yychar])
- 					printf("%s\n", yytoknames[yychar]);
- 				else if(yychar >= ' ' && yychar < '\177')
- 					printf("`%c'\n", yychar);
- 				else if(yychar == 0)
- 					printf("EOF\n");
- 				else
- 					printf("char 0%o\n", yychar);
- 			}
  #endif
! 			if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
! 			yychar = -1;
! 			goto yynewstate;   /* try again in the same state */
! 		}
! 	}
! 	/* reduction by production yyn */
! #ifdef YYDEBUG
! 	if(yydebug) {	char *s;
! 		printf("reduce %d in:\n\t", yyn);
! 		for(s = yystates[yystate]; *s; s++) {
! 			putchar(*s);
! 			if(*s == '\n' && *(s+1))
! 				putchar('\t');
! 		}
! 	}
  #endif
- 	yyps -= yyr2[yyn];
- 	yypvt = yypv;
- 	yypv -= yyr2[yyn];
- 	yyval = yypv[1];
- 	yym=yyn;
- 	/* consult goto table to find next state */
- 	yyn = yyr1[yyn];
- 	yyj = yypgo[yyn] + *yyps + 1;
- 	if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
- 	switch(yym){
  
  case 3:
! /* # line 226 "gram.in" */
  {
  /* stat:   is the nonterminal for Fortran statements */
  
! 		  lastwasbranch = NO; } break;
  case 5:
! /* # line 232 "gram.in" */
  { /* forbid further statement function definitions... */
  		  if (parstate == INDATA && laststfcn != thisstno)
  			parstate = INEXEC;
  		  thisstno++;
! 		  if(yypvt[-1].labval && (yypvt[-1].labval->labelno==dorange))
! 			enddo(yypvt[-1].labval->labelno);
  		  if(lastwasbranch && thislabel==NULL)
  			warn("statement cannot be reached");
  		  lastwasbranch = thiswasbranch;
  		  thiswasbranch = NO;
! 		  if(yypvt[-1].labval)
  			{
! 			if(yypvt[-1].labval->labtype == LABFORMAT)
  				err("label already that of a format");
  			else
! 				yypvt[-1].labval->labtype = LABEXEC;
  			}
  		  freetemps();
! 		} break;
  case 6:
! /* # line 252 "gram.in" */
  { if (can_include)
! 			doinclude( yypvt[-0].charpval );
  		  else {
! 			fprintf(diagfile, "Cannot open file %s\n", yypvt[-0].charpval);
  			done(1);
  			}
! 		} break;
  case 7:
! /* # line 260 "gram.in" */
! { if (yypvt[-2].labval)
  			lastwasbranch = NO;
  		  endproc(); /* lastwasbranch = NO; -- set in endproc() */
! 		} break;
  case 8:
! /* # line 265 "gram.in" */
  { extern void unclassifiable();
  		  unclassifiable();
  
  /* flline flushes the current line, ignoring the rest of the text there */
  
! 		  flline(); } break;
  case 9:
! /* # line 272 "gram.in" */
  { flline();  needkwd = NO;  inioctl = NO;
! 		  yyerrok; yyclearin; } break;
  case 10:
! /* # line 277 "gram.in" */
  {
  		if(yystno != 0)
  			{
--- 170,1454 ----
  	struct Eqvchain *eqvval;
  	Extsym *extval;
  	} YYSTYPE;
! 
! #ifndef YYLTYPE
! typedef
!   struct yyltype
!     {
!       int timestamp;
!       int first_line;
!       int first_column;
!       int last_line;
!       int last_column;
!       char *text;
!    }
!   yyltype;
! 
! #define YYLTYPE yyltype
! #endif
! 
! #include <stdio.h>
! 
! #ifndef __cplusplus
! #ifndef __STDC__
! #define const
! #endif
! #endif
! 
! 
! 
! #define	YYFINAL		542
! #define	YYFLAG		-32768
! #define	YYNTBASE	102
! 
! #define YYTRANSLATE(x) ((unsigned)(x) <= 257 ? yytranslate[x] : 217)
! 
! static const char yytranslate[] = {     0,
!      3,     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,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
!      2,     2,     2,     2,     2,     1,     2
! };
! 
! #if YYDEBUG != 0
! static const short yyprhs[] = {     0,
!      0,     1,     5,     8,    11,    14,    18,    22,    25,    27,
!     29,    33,    38,    42,    47,    52,    58,    62,    63,    65,
!     67,    68,    70,    73,    77,    79,    83,    85,    89,    90,
!     93,    97,    99,   103,   105,   107,   109,   111,   113,   115,
!    117,   119,   121,   123,   125,   127,   130,   132,   138,   146,
!    152,   158,   159,   162,   164,   166,   168,   170,   172,   174,
!    176,   178,   180,   182,   184,   186,   187,   192,   199,   203,
!    208,   214,   218,   220,   224,   228,   232,   236,   240,   244,
!    248,   252,   254,   258,   262,   266,   267,   274,   275,   276,
!    277,   280,   284,   286,   290,   292,   295,   297,   299,   303,
!    305,   307,   309,   313,   317,   320,   322,   328,   330,   334,
!    335,   339,   340,   343,   347,   349,   353,   355,   357,   359,
!    363,   365,   369,   373,   378,   380,   381,   384,   386,   390,
!    392,   396,   398,   400,   403,   408,   410,   414,   415,   416,
!    418,   420,   424,   426,   430,   432,   434,   436,   440,   444,
!    448,   452,   455,   459,   463,   467,   471,   475,   478,   482,
!    484,   486,   488,   490,   492,   494,   496,   498,   500,   503,
!    508,   514,   520,   521,   523,   525,   527,   529,   531,   533,
!    535,   537,   539,   541,   547,   549,   551,   553,   555,   559,
!    561,   563,   567,   571,   575,   579,   582,   586,   588,   596,
!    601,   603,   606,   609,   616,   619,   622,   628,   632,   634,
!    639,   644,   650,   653,   655,   657,   668,   670,   674,   679,
!    683,   687,   689,   691,   695,   699,   707,   715,   716,   718,
!    722,   724,   728,   730,   733,   735,   737,   739,   743,   744,
!    745,   746,   748,   751,   754,   757,   760,   763,   766,   769,
!    773,   778,   783,   786,   790,   792,   796,   800,   802,   804,
!    806,   810,   812,   814,   816,   818,   820,   824,   828,   830,
!    834,   836,   838,   840,   843,   846,   849,   851,   855,   859,
!    864,   869,   871,   875,   877,   883,   885,   887,   889,   893,
!    897,   901,   905,   909,   913,   915,   919,   925,   931,   937
! };
! 
! static const short yyrhs[] = {    -1,
!    102,   103,     3,     0,   104,   105,     0,   104,   117,     0,
!    104,   180,     0,   104,    20,   116,     0,   104,    39,   194,
!      0,   104,     6,     0,     1,     0,     5,     0,    62,   106,
!    109,     0,    62,   106,   109,   110,     0,    25,   106,   109,
!      0,    71,   106,   107,   113,     0,    46,   106,   107,   113,
!      0,   120,    46,   106,   107,   113,     0,    42,   107,   113,
!      0,     0,   108,     0,    16,     0,     0,   107,     0,    76,
!     77,     0,    76,   111,    77,     0,   112,     0,   111,    80,
!    112,     0,    16,     0,    16,    78,    16,     0,     0,    76,
!     77,     0,    76,   114,    77,     0,   115,     0,   114,    80,
!    115,     0,   108,     0,    84,     0,     7,     0,   118,     0,
!    124,     0,   126,     0,   127,     0,   128,     0,   131,     0,
!    154,     0,   161,     0,    68,     0,    68,   140,     0,    45,
!      0,    59,   164,    76,   142,    77,     0,   120,   188,   108,
!    164,   119,   147,   123,     0,   118,    80,   108,   147,   123,
!      0,   118,   101,   134,   136,   101,     0,     0,   121,   123,
!      0,   122,     0,    54,     0,    65,     0,    30,     0,    36,
!      0,    33,     0,    56,     0,    27,     0,    74,     0,    34,
!      0,    23,     0,    69,     0,     0,    84,   195,   167,   196,
!      0,    84,   195,    76,    84,    77,   196,     0,    29,   164,
!    144,     0,    29,   164,   125,   144,     0,   124,   188,   125,
!    188,   144,     0,   124,    80,   144,     0,    87,     0,    85,
!     16,    85,     0,    44,   164,   108,     0,   126,    80,   108,
!      0,    55,   164,   108,     0,   127,    80,   108,     0,    43,
!    164,   129,     0,   128,    80,   129,     0,    76,   130,    77,
!      0,   171,     0,   130,    80,   171,     0,    32,   132,   133,
!      0,   131,   188,   133,     0,     0,   134,   146,    85,   135,
!    136,    85,     0,     0,     0,     0,   137,   138,     0,   136,
!     80,   138,     0,   139,     0,   174,    84,   139,     0,   174,
!      0,   169,   174,     0,   176,     0,   141,     0,   140,    80,
!    141,     0,   108,     0,   125,     0,   143,     0,   142,    80,
!    143,     0,   108,    78,   167,     0,   108,   147,     0,   171,
!      0,    76,   146,    80,   182,    77,     0,   145,     0,   146,
!     80,   145,     0,     0,    76,   148,    77,     0,     0,   149,
!    150,     0,   148,    80,   150,     0,   151,     0,   167,    79,
!    151,     0,    84,     0,   167,     0,   153,     0,   152,    80,
!    153,     0,     8,     0,    52,   164,   155,     0,   154,    80,
!    155,     0,   156,    76,   158,    77,     0,   156,     0,     0,
!    157,   120,     0,   159,     0,   158,    80,   159,     0,   160,
!      0,   160,    83,   160,     0,    16,     0,    57,     0,   161,
!    162,     0,    85,   108,    85,   163,     0,   108,     0,   163,
!     80,   108,     0,     0,     0,   166,     0,   167,     0,   166,
!     80,   167,     0,   168,     0,    76,   167,    77,     0,   176,
!      0,   171,     0,   175,     0,   167,   169,   167,     0,   167,
!     84,   167,     0,   167,    85,   167,     0,   167,    86,   167,
!      0,   169,   167,     0,   167,   170,   167,     0,   167,    91,
!    167,     0,   167,    90,   167,     0,   167,    89,   167,     0,
!    167,    88,   167,     0,    92,   167,     0,   167,    87,   167,
!      0,    82,     0,    83,     0,    93,     0,    95,     0,    94,
!      0,    97,     0,    96,     0,    98,     0,   108,     0,   108,
!    172,     0,   108,    76,   165,    77,     0,   108,    76,   165,
!     77,   172,     0,    76,   173,    79,   173,    77,     0,     0,
!    167,     0,   108,     0,   175,     0,    14,     0,    15,     0,
!      7,     0,     8,     0,     9,     0,    10,     0,   177,     0,
!     76,   168,    80,   168,    77,     0,    13,     0,    12,     0,
!     11,     0,   179,     0,    76,   178,    77,     0,   171,     0,
!    175,     0,   178,   169,   178,     0,   178,    84,   178,     0,
!    178,    85,   178,     0,   178,    86,   178,     0,   169,   178,
!      0,   178,    87,   178,     0,   184,     0,    35,   194,   195,
!    153,   196,   188,   183,     0,    35,   194,   188,   183,     0,
!     99,     0,   181,   184,     0,   181,    72,     0,    38,   194,
!     76,   167,    77,    72,     0,    37,   194,     0,    41,   194,
!      0,    51,   194,    76,   167,    77,     0,   108,    78,   193,
!      0,   182,     0,   100,    76,   167,    77,     0,   186,   171,
!     78,   167,     0,    22,   194,   185,    73,   108,     0,    31,
!    194,     0,   187,     0,   197,     0,    50,   194,    76,   167,
!     77,   153,    80,   153,    80,   153,     0,   189,     0,   189,
!     76,    77,     0,   189,    76,   190,    77,     0,    66,   194,
!    173,     0,   192,   194,   173,     0,     8,     0,    21,     0,
!     47,   194,   153,     0,    48,   194,   108,     0,    48,   194,
!    108,   188,    76,   152,    77,     0,    49,   194,    76,   152,
!     77,   188,   167,     0,     0,    80,     0,    26,   194,   108,
!      0,   191,     0,   190,    80,   191,     0,   167,     0,    84,
!    153,     0,    60,     0,    70,     0,   167,     0,   193,    80,
!    167,     0,     0,     0,     0,   198,     0,   199,   204,     0,
!    199,   179,     0,   199,    84,     0,   199,    86,     0,   201,
!    204,     0,   208,   204,     0,   208,   203,     0,   208,   204,
!    211,     0,   208,   203,    80,   211,     0,   208,   204,    80,
!    211,     0,   209,   204,     0,   209,   204,   213,     0,   210,
!      0,   210,    80,   213,     0,   200,   194,   216,     0,    24,
!      0,    67,     0,    40,     0,   202,   194,   216,     0,    53,
!      0,    58,     0,    28,     0,   179,     0,    84,     0,    76,
!    178,    77,     0,    76,   205,    77,     0,   206,     0,   205,
!     80,   206,     0,   178,     0,    84,     0,    86,     0,   207,
!    167,     0,   207,    84,     0,   207,    86,     0,    17,     0,
!     64,   194,   216,     0,    75,   194,   216,     0,    61,   194,
!    178,   216,     0,    61,   194,    84,   216,     0,   212,     0,
!    211,    80,   212,     0,   171,     0,    76,   211,    80,   182,
!     77,     0,   168,     0,   215,     0,   214,     0,   168,    80,
!    168,     0,   168,    80,   215,     0,   215,    80,   168,     0,
!    215,    80,   215,     0,   214,    80,   168,     0,   214,    80,
!    215,     0,   176,     0,    76,   167,    77,     0,    76,   168,
!     80,   182,    77,     0,    76,   215,    80,   182,    77,     0,
!     76,   214,    80,   182,    77,     0,     0
! };
! 
! #endif
! 
! #if YYDEBUG != 0
! static const short yyrline[] = { 0,
!    221,   222,   225,   230,   231,   251,   259,   264,   271,   276,
!    304,   306,   310,   313,   315,   317,   319,   327,   331,   335,
!    339,   340,   343,   345,   348,   349,   352,   353,   356,   358,
!    361,   365,   367,   371,   376,   392,   400,   401,   402,   403,
!    404,   405,   406,   407,   408,   411,   413,   415,   419,   423,
!    427,   435,   437,   441,   447,   448,   449,   450,   451,   452,
!    453,   454,   455,   456,   457,   460,   462,   488,   492,   494,
!    496,   498,   502,   504,   508,   510,   514,   516,   520,   521,
!    524,   537,   541,   548,   549,   552,   567,   576,   578,   580,
!    581,   581,   584,   586,   590,   591,   596,   599,   600,   603,
!    610,   613,   614,   617,   624,   628,   640,   656,   662,   666,
!    668,   671,   672,   672,   675,   685,   697,   699,   702,   704,
!    708,   712,   714,   717,   718,   724,   726,   728,   729,   732,
!    734,   738,   748,   749,   752,   766,   768,   772,   794,   796,
!    800,   802,   807,   808,   810,   813,   814,   815,   817,   819,
!    821,   823,   828,   830,   833,   836,   838,   840,   842,   847,
!    848,   851,   852,   853,   854,   855,   856,   859,   861,   864,
!    866,   871,   875,   877,   880,   885,   888,   889,   890,   891,
!    892,   893,   894,   897,   901,   904,   907,   912,   913,   917,
!    918,   919,   921,   923,   925,   927,   932,   936,   937,   944,
!    949,   951,   953,   954,   956,   958,   962,   966,   970,   971,
!    975,   977,   979,   980,   981,   983,   985,   987,   989,   995,
!    997,  1001,  1005,  1014,  1016,  1018,  1020,  1028,  1029,  1032,
!   1036,  1038,  1042,  1043,  1047,  1049,  1053,  1055,  1059,  1072,
!   1076,  1081,  1085,  1086,  1088,  1090,  1092,  1093,  1095,  1097,
!   1099,  1101,  1103,  1105,  1107,  1109,  1113,  1116,  1118,  1120,
!   1124,  1127,  1129,  1131,  1135,  1141,  1149,  1154,  1158,  1159,
!   1162,  1164,  1166,  1168,  1170,  1172,  1176,  1180,  1184,  1188,
!   1195,  1204,  1206,  1210,  1212,  1216,  1218,  1220,  1223,  1225,
!   1227,  1229,  1231,  1233,  1237,  1239,  1241,  1243,  1245,  1249
! };
! 
! static const char * const yytname[] = {   "$","error","$illegal.","SEOS","SCOMMENT",
! "SLABEL","SUNKNOWN","SHOLLERITH","SICON","SRCON","SDCON","SBITCON","SOCTCON",
! "SHEXCON","STRUE","SFALSE","SNAME","SNAMEEQ","SFIELD","SSCALE","SINCLUDE","SLET",
! "SASSIGN","SAUTOMATIC","SBACKSPACE","SBLOCK","SCALL","SCHARACTER","SCLOSE","SCOMMON",
! "SCOMPLEX","SCONTINUE","SDATA","SDCOMPLEX","SDIMENSION","SDO","SDOUBLE","SELSE",
! "SELSEIF","SEND","SENDFILE","SENDIF","SENTRY","SEQUIV","SEXTERNAL","SFORMAT",
! "SFUNCTION","SGOTO","SASGOTO","SCOMPGOTO","SARITHIF","SLOGIF","SIMPLICIT","SINQUIRE",
! "SINTEGER","SINTRINSIC","SLOGICAL","SNAMELIST","SOPEN","SPARAM","SPAUSE","SPRINT",
! "SPROGRAM","SPUNCH","SREAD","SREAL","SRETURN","SREWIND","SSAVE","SSTATIC","SSTOP",
! "SSUBROUTINE","STHEN","STO","SUNDEFINED","SWRITE","SLPAR","SRPAR","SEQUALS",
! "SCOLON","SCOMMA","SCURRENCY","SPLUS","SMINUS","SSTAR","SSLASH","SPOWER","SCONCAT",
! "SAND","SOR","SNEQV","SEQV","SNOT","SEQ","SLT","SGT","SLE","SGE","SNE","SENDDO",
! "SWHILE","SSLASHD","program","stat","thislabel","entry","new_proc","entryname",
! "name","progname","progarglist","progargs","progarg","arglist","args","arg",
! "filename","spec","dcl","new_dcl","type","typespec","typename","lengspec","common",
! "comblock","external","intrinsic","equivalence","equivset","equivlist","data",
! "in_data","datalist","datainit","datapop","vallist","@1","val","value","savelist",
! "saveitem","paramlist","paramitem","var","datavar","datavarlist","dims","dimlist",
! "@2","dim","ubound","labellist","label","implicit","implist","imptype","@3",
! "letgroups","letgroup","letter","namelist","namelistentry","namelistlist","in_dcl",
! "funarglist","funargs","expr","uexpr","addop","relop","lhs","substring","opt_expr",
! "simple","simple_const","complex_const","bit_const","fexpr","unpar_fexpr","exec",
! "logif","dospec","dospecw","iffable","assignlabel","let","goto","opt_comma",
! "call","callarglist","callarg","stop","exprlist","end_spec","intonlyon","intonlyoff",
! "io","io1","iofmove","fmkwd","iofctl","ctlkwd","infmt","ioctl","ctllist","ioclause",
! "nameeq","read","write","print","inlist","inelt","outlist","out2","other","in_ioctl",
! ""
! };
! #endif
! 
! static const short yyr1[] = {     0,
!    102,   102,   103,   103,   103,   103,   103,   103,   103,   104,
!    105,   105,   105,   105,   105,   105,   105,   106,   107,   108,
!    109,   109,   110,   110,   111,   111,   112,   112,   113,   113,
!    113,   114,   114,   115,   115,   116,   117,   117,   117,   117,
!    117,   117,   117,   117,   117,   117,   117,   117,   118,   118,
!    118,   119,   120,   121,   122,   122,   122,   122,   122,   122,
!    122,   122,   122,   122,   122,   123,   123,   123,   124,   124,
!    124,   124,   125,   125,   126,   126,   127,   127,   128,   128,
!    129,   130,   130,   131,   131,   132,   133,   134,   135,   137,
!    136,   136,   138,   138,   139,   139,   139,   140,   140,   141,
!    141,   142,   142,   143,   144,   145,   145,   146,   146,   147,
!    147,   149,   148,   148,   150,   150,   151,   151,   152,   152,
!    153,   154,   154,   155,   155,   157,   156,   158,   158,   159,
!    159,   160,   161,   161,   162,   163,   163,   164,   165,   165,
!    166,   166,   167,   167,   167,   168,   168,   168,   168,   168,
!    168,   168,   168,   168,   168,   168,   168,   168,   168,   169,
!    169,   170,   170,   170,   170,   170,   170,   171,   171,   171,
!    171,   172,   173,   173,   174,   174,   175,   175,   175,   175,
!    175,   175,   175,   176,   177,   177,   177,   178,   178,   179,
!    179,   179,   179,   179,   179,   179,   179,   180,   180,   180,
!    180,   180,   180,   180,   180,   180,   181,   182,   183,   183,
!    184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
!    184,   185,   186,   187,   187,   187,   187,   188,   188,   189,
!    190,   190,   191,   191,   192,   192,   193,   193,   194,   195,
!    196,   197,   198,   198,   198,   198,   198,   198,   198,   198,
!    198,   198,   198,   198,   198,   198,   199,   200,   200,   200,
!    201,   202,   202,   202,   203,   203,   204,   204,   205,   205,
!    206,   206,   206,   206,   206,   206,   207,   208,   209,   210,
!    210,   211,   211,   212,   212,   213,   213,   213,   214,   214,
!    214,   214,   214,   214,   215,   215,   215,   215,   215,   216
! };
! 
! static const 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,     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,     7,     4,
!      1,     2,     2,     6,     2,     2,     5,     3,     1,     4,
!      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,     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
! };
! 
! static const short yydefact[] = {     1,
!      0,     9,    10,     0,     0,     2,     8,     0,   223,   239,
!     64,   258,    18,   239,    61,   264,   138,    57,   239,    86,
!     59,    63,   239,    58,   239,   239,   239,   260,   239,     0,
!    138,   138,    47,    18,   239,   239,   239,   239,   239,   138,
!    262,    55,   138,    60,   133,   263,   138,   235,   239,    18,
!    239,    56,   239,   259,    45,    65,   236,    18,    62,   239,
!    201,     3,     4,    37,   228,    66,    54,   228,    39,    40,
!     41,   228,    43,    44,     5,     0,   198,     0,   214,   217,
!    239,   215,   242,     0,   239,     0,   239,     0,     0,   255,
!     36,     6,     0,    21,     0,     0,   213,    88,   228,   205,
!      0,     7,   206,    20,    29,    19,     0,     0,     0,     0,
!      0,     0,     0,     0,   126,     0,     0,     0,    21,   300,
!    173,     0,    73,   100,   101,    46,    98,     0,   300,     0,
!     88,    18,   229,     0,   240,    53,   229,     0,     0,     0,
!      0,    88,   126,     0,   134,   203,   202,   168,     0,     0,
!    173,   179,   180,   181,   182,   187,   186,   185,   177,   178,
!      0,   160,   161,   245,   246,     0,   190,   191,   183,     0,
!    188,   243,   300,     0,   247,   300,   266,   188,   249,   248,
!    253,     0,   222,     0,    22,    13,   230,   110,     0,    69,
!     84,     0,     0,     0,     0,     0,    17,     0,    79,    75,
!     29,   121,   224,   225,     0,     0,     0,   122,   125,     0,
!     77,     0,     0,   300,   300,   188,    11,   278,     0,     0,
!    174,   143,     0,   146,   220,   147,   145,     0,     0,    29,
!    279,   110,    90,     0,   138,     0,    72,   228,    76,    78,
!     80,    85,   123,     0,   139,   169,     0,   218,     0,   233,
!      0,   231,   221,   277,   272,   273,   271,     0,   269,     0,
!    196,     0,     0,     0,     0,     0,   257,   271,   261,     0,
!      0,     0,   284,   250,   282,     0,     0,   143,   145,   254,
!    288,   287,   256,     0,   112,   105,    70,     0,   108,     0,
!    106,     0,     0,   209,   200,   241,     0,    30,    35,    34,
!      0,    32,     0,    82,    15,     0,     0,   119,     0,     0,
!      0,   127,     0,     0,   102,     0,   281,   280,     0,    12,
!      0,   143,   158,     0,     0,     0,     0,     0,     0,     0,
!      0,   162,   164,   163,   166,   165,   167,     0,     0,   152,
!     74,    99,    14,    66,     0,     0,    29,    52,     0,   241,
!      0,     0,     0,   140,   141,     0,   211,   234,   219,     0,
!    189,   268,     0,   275,   276,   274,   193,   194,   195,   197,
!    192,   267,   251,     0,   252,     0,     0,   143,     0,     0,
!      0,     0,     0,   212,     0,     0,     0,     0,    89,     0,
!      0,   228,     0,    31,     0,    81,     0,     0,   228,     0,
!      0,   207,   132,     0,   128,   130,     0,    48,     0,   189,
!     27,    23,     0,    25,   144,     0,   149,   150,   151,   159,
!    157,   156,   155,   154,   148,   153,    50,     0,    51,     0,
!    175,    91,    93,     0,    95,   176,    97,    16,   110,     0,
!     67,    71,   136,   135,   170,     0,   173,   232,   271,   270,
!      0,   283,   144,     0,     0,     0,   143,   290,   143,   294,
!    143,   292,   111,     0,   117,   113,   115,   118,     0,   109,
!     90,     0,   237,   208,     0,   204,    33,    83,     0,     0,
!    120,     0,   124,     0,     0,   104,   103,     0,    24,     0,
!    143,    92,    96,     0,    66,   241,     0,   173,   171,   142,
!      0,   168,     0,   143,     0,     0,     0,   114,     0,     0,
!      0,   210,     0,   199,   226,   227,     0,   129,   131,    28,
!     26,   184,    94,    95,    49,    68,   137,   172,   285,   297,
!    299,   298,   116,   118,   107,    87,   238,     0,     0,   216,
!      0,     0
! };
! 
! static const short yydefgoto[] = {     1,
!      4,     5,    62,    94,   185,   148,   186,   320,   413,   414,
!    197,   301,   302,    92,    63,    64,   439,    65,    66,    67,
!    136,    68,   125,    69,    70,    71,   199,   303,    72,    98,
!    191,   192,   471,   345,   346,   432,   433,   126,   127,   314,
!    315,   190,   289,   290,   286,   385,   386,   466,   467,   307,
!    308,    73,   208,   209,   210,   404,   405,   406,    74,   145,
!    444,    96,   353,   354,   277,   222,   223,   339,   224,   246,
!    356,   435,   226,   227,   169,   170,   216,    75,    76,   294,
!    295,    77,   184,    78,    79,   134,    80,   251,   252,    81,
!    474,    93,   194,   392,    82,    83,    84,    85,    86,    87,
!    179,   172,   258,   259,   260,    88,    89,    90,   274,   275,
!    280,   281,   282,   218
! };
! 
! static const short yypact[] = {-32768,
!     58,-32768,-32768,    15,   833,-32768,-32768,    40,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    45,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,    52,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,   -29,     2,   -22,-32768,    11,   -25,    47,
!     93,    13,   110,     3,-32768,  1083,-32768,    45,-32768,   105,
! -32768,-32768,-32768,   948,-32768,   115,-32768,   959,   115,   122,
! -32768,-32768,   200,    45,    45,    52,-32768,-32768,    44,-32768,
!    148,-32768,-32768,-32768,   149,-32768,   161,    45,    45,   241,
!     45,   175,   186,   212,-32768,    45,   217,  1037,    45,-32768,
!    743,   239,-32768,-32768,-32768,   209,-32768,    45,-32768,    45,
! -32768,-32768,-32768,    45,-32768,-32768,    45,    56,    45,    45,
!    161,-32768,-32768,    45,-32768,-32768,-32768,   219,   222,   473,
!    743,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
!    937,-32768,-32768,-32768,-32768,   220,-32768,-32768,-32768,   333,
!    306,-32768,-32768,   937,-32768,-32768,-32768,    23,   227,     7,
!    902,   902,-32768,   237,-32768,-32768,-32768,   235,    45,-32768,
! -32768,     8,    -1,   241,   743,    51,-32768,    45,-32768,-32768,
!    149,-32768,-32768,    78,   241,   743,   743,-32768,   244,   304,
! -32768,    45,   220,-32768,   333,-32768,   247,-32768,   743,   743,
!   1244,-32768,   743,-32768,-32768,-32768,-32768,   228,    52,   149,
! -32768,   235,-32768,    45,-32768,   926,-32768,   245,-32768,-32768,
! -32768,-32768,-32768,   243,   590,-32768,   743,-32768,   241,  1244,
!     94,-32768,-32768,-32768,-32768,-32768,   101,   100,-32768,   486,
!    231,   220,   220,   220,   220,   220,-32768,   191,-32768,    60,
!     60,    60,-32768,   249,-32768,   902,  1244,    35,    37,-32768,
!    252,   255,-32768,    45,-32768,-32768,-32768,     8,-32768,    -5,
! -32768,   260,   261,-32768,-32768,-32768,  1077,-32768,-32768,-32768,
!    112,-32768,   121,-32768,-32768,   266,   123,-32768,  1099,  1121,
!    330,-32768,   269,   173,-32768,   308,-32768,-32768,    53,-32768,
!   1143,   281,  1002,   743,   743,   743,   743,   743,   743,   743,
!    743,-32768,-32768,-32768,-32768,-32768,-32768,   743,   743,   276,
! -32768,-32768,-32768,   -22,   -24,   232,   149,-32768,   685,  1244,
!     45,    45,   286,   287,  1207,   285,  1244,-32768,-32768,   696,
!     14,-32768,   937,-32768,-32768,  1244,   231,   231,   231,    66,
!    130,-32768,   249,   290,   249,    60,  1165,   291,   292,   294,
!    902,   902,   902,-32768,   179,   725,   295,     8,-32768,   743,
!    743,   245,   305,-32768,    28,-32768,    45,   241,   245,   241,
!    241,-32768,-32768,   183,-32768,   283,   743,-32768,    45,-32768,
!    298,-32768,   187,-32768,-32768,   743,   276,   276,   276,   197,
!   1002,  1278,  1261,  1261,   213,  1295,-32768,   232,-32768,   743,
! -32768,-32768,-32768,   462,   296,-32768,-32768,-32768,   235,   307,
! -32768,-32768,-32768,   301,   310,   743,   743,-32768,   333,-32768,
!     60,-32768,    38,   902,   902,   902,    39,-32768,    42,-32768,
!     43,-32768,-32768,   725,-32768,-32768,-32768,  1227,     8,-32768,
! -32768,  1187,  1244,   302,    -1,-32768,-32768,-32768,   189,   743,
! -32768,   316,-32768,   330,   330,  1244,-32768,   371,-32768,   381,
!    322,-32768,-32768,   232,   -22,-32768,    45,   743,-32768,  1244,
!    325,    86,   326,   210,   329,   332,   334,-32768,   725,   336,
!     46,-32768,   743,-32768,-32768,  1244,   241,-32768,-32768,-32768,
! -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,-32768,-32768,  1244,-32768,-32768,  1244,   342,   241,-32768,
!    410,-32768
! };
! 
! static const short yypgoto[] = {-32768,
! -32768,-32768,-32768,   -21,    -8,   -30,   309,-32768,-32768,   -67,
!   -194,-32768,    32,-32768,-32768,-32768,-32768,   223,-32768,-32768,
!   -339,-32768,   -64,-32768,-32768,-32768,   288,-32768,-32768,-32768,
!    300,   312,-32768,   -39,-32768,    10,   -58,-32768,   211,-32768,
!     41,  -129,  -367,   156,  -229,-32768,-32768,   -17,   -57,    55,
!   -109,-32768,   313,-32768,-32768,-32768,   -33,   -20,-32768,-32768,
! -32768,   -12,-32768,-32768,   284,  -111,    91,-32768,   455,    18,
!   -117,  -381,   -45,  -170,-32768,   -69,    73,-32768,-32768,  -309,
!     -9,   379,-32768,-32768,-32768,   -66,-32768,-32768,   132,-32768,
! -32768,  1041,   370,  -341,-32768,-32768,-32768,-32768,-32768,-32768,
! -32768,    81,-32768,   143,-32768,-32768,-32768,-32768,    79,  -326,
!    339,   242,  -249,  -119
! };
! 
! 
! #define	YYLAST		1393
! 
! 
! static const short yytable[] = {   106,
!    203,   138,   344,   225,   427,   142,   305,   237,   441,   231,
!    279,   279,   109,   -38,   104,   -42,  -267,     6,   107,   108,
!    470,   105,   104,   104,   124,  -265,   380,   115,   119,  -267,
!    116,   189,   193,   253,   117,   343,   128,  -286,   168,  -295,
!   -296,  -289,   168,   104,  -293,  -291,    91,   132,   215,   452,
!    130,  -240,   493,   267,   139,   428,   269,   541,     2,   287,
!    104,   135,     3,   106,   187,   188,   104,   104,   411,   278,
!    278,   131,   168,   238,   388,   104,   429,   200,   106,   389,
!    204,   133,   271,   288,   296,   211,   272,   144,   106,  -267,
!    137,   257,   133,  -267,   317,   318,   261,   106,   292,   232,
!    201,   470,  -265,   235,   268,   279,   188,   322,   239,   240,
!    234,   299,   524,   244,   381,   168,  -295,  -296,  -289,   230,
!    168,  -293,  -291,   133,   452,   428,   140,   298,   168,   412,
!    536,   458,   460,   462,   299,   271,   122,   306,   123,   358,
!    122,   503,   123,   316,   505,   506,   507,   162,   163,   262,
!    263,   264,   438,  -228,   526,   525,   171,   133,   188,   510,
!    178,   245,   293,   391,   378,   300,   175,   168,   180,   181,
!    359,   351,   141,   360,   166,   437,   362,   361,   166,   363,
!    150,   313,   162,   163,   262,   263,   264,   265,   394,   143,
!    174,   395,   367,   368,   369,   370,   371,   396,   124,   399,
!    397,   182,   400,   106,   458,   460,   462,   183,   166,   495,
!    279,   279,   279,   262,   263,   264,   168,   168,   168,   168,
!    168,   442,   348,   195,   196,   347,   152,   153,   154,   155,
!    156,   157,   158,   159,   160,   104,   198,   322,   152,   153,
!    154,   155,   156,   157,   158,   159,   160,   104,   202,   408,
!    205,   166,   409,   384,   228,   463,   166,   437,   464,   483,
!    266,   206,   484,   489,   166,   515,   490,   372,   400,   457,
!    459,   461,   162,   163,   262,   263,   264,   265,   162,   163,
!    324,   325,   326,   279,   279,   279,   522,   207,   229,  -289,
!    481,   482,   212,   449,   245,   213,   324,   325,   326,   247,
!    436,   162,   163,   166,   491,   266,   270,   430,  -244,   284,
!    285,   338,   341,   162,   163,   431,   264,   168,   322,   311,
!    188,   443,   319,   437,   133,   475,    11,   352,   376,   501,
!     15,   382,   480,    18,   383,   390,    21,    22,   391,    24,
!    338,   398,   504,   459,   461,   403,   407,   266,   373,   374,
!    375,   266,   166,   166,   166,   166,   166,    42,   266,    44,
!    416,   326,   445,   447,   300,   485,   446,   338,    52,   451,
!    454,   455,    56,   456,   469,   488,   476,    59,   313,   494,
!    497,   513,   436,   496,   410,   498,   520,   338,   436,   162,
!    163,   262,   263,   264,   265,   517,   411,   431,   522,   338,
!    338,   528,   529,   431,   221,   530,   266,   538,   531,   542,
!    532,   338,   535,   338,   162,   163,   262,   263,   264,   265,
!    502,   539,   521,   502,   502,   502,   477,   217,   241,   540,
!    338,   511,   312,   250,   221,   523,   434,   492,   502,   342,
!    338,   242,   233,   387,   293,   338,   508,   338,   436,   487,
!    518,   533,   479,   166,   147,   243,   338,   266,   266,   266,
!    266,   266,   499,   431,   519,   514,   527,   338,   152,   153,
!    154,   155,   156,   157,   158,   159,   160,   104,   297,   152,
!    153,   154,   155,   156,   157,   158,   159,   160,   104,   309,
!    310,   448,   152,   153,   154,   155,   156,   157,   158,   159,
!    160,   104,   321,   323,   236,   450,   340,   338,   338,   338,
!    338,   338,   338,   338,   338,   338,   338,   379,   434,   350,
!    283,     0,     0,     0,     0,     0,     0,     0,   355,     0,
!    357,     0,   149,     0,     0,     0,     0,     0,   167,   266,
!      0,     0,   167,   366,     0,     0,     0,     0,   219,   248,
!      0,     0,     0,     0,   162,   163,   249,     0,   338,   377,
!      0,   219,   338,   338,   220,     0,     0,   162,   163,   364,
!      0,   365,   167,     0,     0,     0,   338,   220,     0,     0,
!      0,     0,     0,     0,   434,     0,     0,     0,     0,     0,
!    338,     0,     0,     0,     0,     0,   152,   153,   154,   155,
!    156,   157,   158,   159,   160,   104,   338,   417,   418,   419,
!    420,   421,   422,   423,   424,   167,     0,     0,     0,     0,
!    167,   425,   426,     0,   338,     0,     0,   338,   167,     0,
!      0,     0,   321,     0,   273,     0,     0,     0,     0,     0,
!      0,     0,     0,   250,     0,     0,   291,     0,     0,     0,
!      0,     0,   304,     0,     0,     0,     0,     0,     0,     0,
!      0,     0,     0,     0,     0,   219,     0,   167,  -173,   468,
!      0,   162,   163,   472,   473,     0,     0,     0,     0,     0,
!      0,   220,     0,     0,     0,     0,     0,     0,     0,     0,
!    486,   152,   153,   154,   155,   156,   157,   158,   159,   160,
!    104,     0,   152,   153,   154,   155,   156,   157,   158,   159,
!    160,   104,     0,     0,     0,     0,   167,   167,   167,   167,
!    167,     0,     0,     0,   273,   273,   273,     0,     0,   500,
!    221,   152,   153,   154,   155,   156,   157,   158,   159,   160,
!    104,     0,   291,     0,     0,     0,     0,   468,     0,   152,
!    153,   154,   155,   156,   157,   158,   159,   160,   104,     0,
!    219,     0,     0,   516,     0,     0,   162,   163,   440,     0,
!      0,   219,     0,     0,     0,     0,   220,   162,   163,   249,
!      0,   221,     0,     0,     0,     0,     0,   220,     0,     0,
!      0,     0,   534,     0,     0,     0,   537,     0,     0,     0,
!    219,     0,     0,     0,     0,     0,   162,   163,   465,     0,
!      0,     0,     0,     0,     0,     0,   220,   167,   219,     0,
!      0,     0,     0,     0,   162,   163,     0,     0,     0,     0,
!    273,     0,     0,     0,   220,     0,     0,     0,     7,     0,
!      0,     0,   291,     0,     0,     0,     0,     0,     0,     0,
!      0,   478,     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,     0,    51,    52,    53,    54,
!     55,    56,    57,    58,     0,   273,    59,    60,   152,   153,
!    154,   155,   156,   157,   158,   159,   160,   104,     0,     0,
!      0,     0,     0,   291,     0,     0,     0,     0,     0,     0,
!      0,    61,   152,   153,   154,   155,   156,   157,   158,   159,
!    160,   104,     0,   152,   153,   154,   155,   156,   157,   158,
!    159,   160,   104,   254,   152,   153,   154,   155,   156,   157,
!    158,   159,   160,   104,     0,   152,   153,   154,   155,   156,
!    157,   158,   159,   160,   104,     0,     0,   276,     0,     0,
!      0,     0,     0,   162,   163,     0,     0,     0,     0,     0,
!      0,     0,     0,   220,     0,     0,     0,     0,     0,     0,
!      0,   349,     0,     0,     0,     0,     0,   162,   163,     0,
!      0,     0,   213,     0,     0,     0,     0,   220,   162,   163,
!    255,     0,   256,   161,     0,     0,     0,     0,     0,   162,
!    163,   164,     0,   165,   161,     0,     0,     0,     0,     0,
!    162,   163,   177,   152,   153,   154,   155,   156,   157,   158,
!    159,   160,   104,     0,    95,     0,     0,     0,     0,    97,
!      0,     0,     0,    99,     0,   100,   101,   102,     0,   103,
!      0,     0,     0,     0,     0,   110,   111,   112,   113,   114,
!      0,     0,     0,   162,   163,   324,   325,   326,   327,   118,
!      0,   120,     0,   121,   332,   333,   334,   335,   336,   337,
!    129,     0,     0,     9,    10,     0,    12,     0,    14,     0,
!     16,     0,   213,    19,     0,     0,     0,     0,   162,   163,
!    214,   151,    28,     0,     0,   173,     0,   176,     0,    35,
!     36,    37,    38,     0,     0,    41,     0,     0,     0,     0,
!     46,     0,    48,    49,     0,     0,    51,     0,    53,    54,
!      0,     0,    57,   393,   146,     0,     0,    60,   162,   163,
!    324,   325,   326,   327,   328,   329,   330,   331,     0,   332,
!    333,   334,   335,   336,   337,   401,     0,     0,     0,     0,
!    162,   163,   324,   325,   326,   327,   328,   329,   330,   331,
!      0,   332,   333,   334,   335,   336,   337,   402,     0,     0,
!      0,     0,   162,   163,   324,   325,   326,   327,   328,   329,
!    330,   331,     0,   332,   333,   334,   335,   336,   337,   415,
!      0,     0,     0,     0,   162,   163,   324,   325,   326,   327,
!    328,   329,   330,   331,     0,   332,   333,   334,   335,   336,
!    337,   453,     0,     0,     0,     0,   162,   163,   324,   325,
!    326,   327,   328,   329,   330,   331,     0,   332,   333,   334,
!    335,   336,   337,   512,     0,     0,     0,     0,   162,   163,
!    324,   325,   326,   327,   328,   329,   330,   331,     0,   332,
!    333,   334,   335,   336,   337,  -174,     0,     0,   162,   163,
!    324,   325,   326,   327,   328,   329,   330,   331,     0,   332,
!    333,   334,   335,   336,   337,   509,     0,     0,   162,   163,
!    324,   325,   326,   327,   328,   329,   330,   331,     0,   332,
!    333,   334,   335,   336,   337,   162,   163,   324,   325,   326,
!    327,   328,   329,   330,   331,     0,   332,   333,   334,   335,
!    336,   337,   162,   163,   324,   325,   326,   327,   328,   329,
!      0,     0,     0,   332,   333,   334,   335,   336,   337,   162,
!    163,   324,   325,   326,   327,   328,     0,     0,     0,     0,
!    332,   333,   334,   335,   336,   337,   162,   163,   324,   325,
!    326,   327,     0,     0,     0,     0,     0,-32768,-32768,-32768,
! -32768,-32768,-32768
! };
! 
! static const short yycheck[] = {    30,
!    110,    68,   232,   121,   344,    72,   201,   137,   350,   129,
!    181,   182,    34,     3,    16,     3,     3,     3,    31,    32,
!    388,    30,    16,    16,    55,     3,   276,    40,    50,    16,
!     43,    96,    99,   151,    47,   230,    58,     3,    84,     3,
!      3,     3,    88,    16,     3,     3,     7,    46,   118,   376,
!     80,     8,   434,   173,    80,    80,   176,     0,     1,   189,
!     16,    84,     5,    94,    95,    96,    16,    16,    16,   181,
!    182,   101,   118,   138,    80,    16,   101,   108,   109,    85,
!    111,    80,    76,    76,   194,   116,    80,    85,   119,    76,
!     80,   161,    80,    80,   214,   215,   166,   128,   100,   130,
!    109,   469,    80,   134,   174,   276,   137,   219,   139,   140,
!    132,    84,   494,   144,    80,   161,    80,    80,    80,   128,
!    166,    80,    80,    80,   451,    80,    80,    77,   174,    77,
!     85,   381,   382,   383,    84,    76,    85,   204,    87,   249,
!     85,   451,    87,   213,   454,   455,   456,    82,    83,    84,
!     85,    86,   347,    76,   496,   495,    84,    80,   189,   469,
!     88,    76,   193,    78,   276,   196,    86,   213,    88,    89,
!     77,   238,    80,    80,    84,   346,    77,    77,    88,    80,
!     76,   212,    82,    83,    84,    85,    86,    87,    77,    80,
!     76,    80,   262,   263,   264,   265,   266,    77,   229,    77,
!     80,    80,    80,   234,   454,   455,   456,     8,   118,   439,
!    381,   382,   383,    84,    85,    86,   262,   263,   264,   265,
!    266,   351,   235,    76,    76,   234,     7,     8,     9,    10,
!     11,    12,    13,    14,    15,    16,    76,   349,     7,     8,
!      9,    10,    11,    12,    13,    14,    15,    16,     8,    77,
!     76,   161,    80,   284,    16,    77,   166,   428,    80,    77,
!    170,    76,    80,    77,   174,    77,    80,    77,    80,   381,
!    382,   383,    82,    83,    84,    85,    86,    87,    82,    83,
!     84,    85,    86,   454,   455,   456,    77,    76,    80,    80,
!    400,   401,    76,   363,    76,    76,    84,    85,    86,    78,
!    346,    82,    83,   213,   416,   215,    80,    76,     3,    73,
!     76,   221,    85,    82,    83,   346,    86,   363,   430,    76,
!    351,   352,    76,   494,    80,   392,    23,    85,    80,   447,
!     27,    80,   399,    30,    80,    76,    33,    34,    78,    36,
!    250,    76,   454,   455,   456,    16,    78,   257,   270,   271,
!    272,   261,   262,   263,   264,   265,   266,    54,   268,    56,
!     80,    86,    77,    79,   395,    83,    80,   277,    65,    80,
!     80,    80,    69,    80,    80,    78,    72,    74,   409,    84,
!     80,    80,   428,    77,    77,    76,    16,   297,   434,    82,
!     83,    84,    85,    86,    87,    80,    16,   428,    77,   309,
!    310,    77,    77,   434,   121,    77,   316,   517,    77,     0,
!     77,   321,    77,   323,    82,    83,    84,    85,    86,    87,
!    451,    80,   490,   454,   455,   456,   395,   119,   141,   539,
!    340,   471,   210,   150,   151,   494,   346,   428,   469,   229,
!    350,   142,   131,   288,   475,   355,   464,   357,   494,   409,
!    484,   509,   398,   363,    76,   143,   366,   367,   368,   369,
!    370,   371,   445,   494,   485,   475,   497,   377,     7,     8,
!      9,    10,    11,    12,    13,    14,    15,    16,   195,     7,
!      8,     9,    10,    11,    12,    13,    14,    15,    16,   206,
!    207,   360,     7,     8,     9,    10,    11,    12,    13,    14,
!     15,    16,   219,   220,   135,   363,   223,   417,   418,   419,
!    420,   421,   422,   423,   424,   425,   426,   276,   428,   236,
!    182,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   245,    -1,
!    247,    -1,    78,    -1,    -1,    -1,    -1,    -1,    84,   449,
!     -1,    -1,    88,   260,    -1,    -1,    -1,    -1,    76,    77,
!     -1,    -1,    -1,    -1,    82,    83,    84,    -1,   468,   276,
!     -1,    76,   472,   473,    92,    -1,    -1,    82,    83,    84,
!     -1,    86,   118,    -1,    -1,    -1,   486,    92,    -1,    -1,
!     -1,    -1,    -1,    -1,   494,    -1,    -1,    -1,    -1,    -1,
!    500,    -1,    -1,    -1,    -1,    -1,     7,     8,     9,    10,
!     11,    12,    13,    14,    15,    16,   516,   324,   325,   326,
!    327,   328,   329,   330,   331,   161,    -1,    -1,    -1,    -1,
!    166,   338,   339,    -1,   534,    -1,    -1,   537,   174,    -1,
!     -1,    -1,   349,    -1,   180,    -1,    -1,    -1,    -1,    -1,
!     -1,    -1,    -1,   360,    -1,    -1,   192,    -1,    -1,    -1,
!     -1,    -1,   198,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
!     -1,    -1,    -1,    -1,    -1,    76,    -1,   213,    79,   386,
!     -1,    82,    83,   390,   391,    -1,    -1,    -1,    -1,    -1,
!     -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
!    407,     7,     8,     9,    10,    11,    12,    13,    14,    15,
!     16,    -1,     7,     8,     9,    10,    11,    12,    13,    14,
!     15,    16,    -1,    -1,    -1,    -1,   262,   263,   264,   265,
!    266,    -1,    -1,    -1,   270,   271,   272,    -1,    -1,   446,
!    447,     7,     8,     9,    10,    11,    12,    13,    14,    15,
!     16,    -1,   288,    -1,    -1,    -1,    -1,   464,    -1,     7,
!      8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
!     76,    -1,    -1,   480,    -1,    -1,    82,    83,    84,    -1,
!     -1,    76,    -1,    -1,    -1,    -1,    92,    82,    83,    84,
!     -1,   498,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,
!     -1,    -1,   509,    -1,    -1,    -1,   513,    -1,    -1,    -1,
!     76,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    -1,
!     -1,    -1,    -1,    -1,    -1,    -1,    92,   363,    76,    -1,
!     -1,    -1,    -1,    -1,    82,    83,    -1,    -1,    -1,    -1,
!    376,    -1,    -1,    -1,    92,    -1,    -1,    -1,     6,    -1,
!     -1,    -1,   388,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
!     -1,   397,    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,    -1,    64,    65,    66,    67,
!     68,    69,    70,    71,    -1,   451,    74,    75,     7,     8,
!      9,    10,    11,    12,    13,    14,    15,    16,    -1,    -1,
!     -1,    -1,    -1,   469,    -1,    -1,    -1,    -1,    -1,    -1,
!     -1,    99,     7,     8,     9,    10,    11,    12,    13,    14,
!     15,    16,    -1,     7,     8,     9,    10,    11,    12,    13,
!     14,    15,    16,    17,     7,     8,     9,    10,    11,    12,
!     13,    14,    15,    16,    -1,     7,     8,     9,    10,    11,
!     12,    13,    14,    15,    16,    -1,    -1,    76,    -1,    -1,
!     -1,    -1,    -1,    82,    83,    -1,    -1,    -1,    -1,    -1,
!     -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,
!     -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,
!     -1,    -1,    76,    -1,    -1,    -1,    -1,    92,    82,    83,
!     84,    -1,    86,    76,    -1,    -1,    -1,    -1,    -1,    82,
!     83,    84,    -1,    86,    76,    -1,    -1,    -1,    -1,    -1,
!     82,    83,    84,     7,     8,     9,    10,    11,    12,    13,
!     14,    15,    16,    -1,    14,    -1,    -1,    -1,    -1,    19,
!     -1,    -1,    -1,    23,    -1,    25,    26,    27,    -1,    29,
!     -1,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
!     -1,    -1,    -1,    82,    83,    84,    85,    86,    87,    49,
!     -1,    51,    -1,    53,    93,    94,    95,    96,    97,    98,
!     60,    -1,    -1,    21,    22,    -1,    24,    -1,    26,    -1,
!     28,    -1,    76,    31,    -1,    -1,    -1,    -1,    82,    83,
!     84,    81,    40,    -1,    -1,    85,    -1,    87,    -1,    47,
!     48,    49,    50,    -1,    -1,    53,    -1,    -1,    -1,    -1,
!     58,    -1,    60,    61,    -1,    -1,    64,    -1,    66,    67,
!     -1,    -1,    70,    77,    72,    -1,    -1,    75,    82,    83,
!     84,    85,    86,    87,    88,    89,    90,    91,    -1,    93,
!     94,    95,    96,    97,    98,    77,    -1,    -1,    -1,    -1,
!     82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
!     -1,    93,    94,    95,    96,    97,    98,    77,    -1,    -1,
!     -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
!     90,    91,    -1,    93,    94,    95,    96,    97,    98,    77,
!     -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,    87,
!     88,    89,    90,    91,    -1,    93,    94,    95,    96,    97,
!     98,    77,    -1,    -1,    -1,    -1,    82,    83,    84,    85,
!     86,    87,    88,    89,    90,    91,    -1,    93,    94,    95,
!     96,    97,    98,    77,    -1,    -1,    -1,    -1,    82,    83,
!     84,    85,    86,    87,    88,    89,    90,    91,    -1,    93,
!     94,    95,    96,    97,    98,    79,    -1,    -1,    82,    83,
!     84,    85,    86,    87,    88,    89,    90,    91,    -1,    93,
!     94,    95,    96,    97,    98,    79,    -1,    -1,    82,    83,
!     84,    85,    86,    87,    88,    89,    90,    91,    -1,    93,
!     94,    95,    96,    97,    98,    82,    83,    84,    85,    86,
!     87,    88,    89,    90,    91,    -1,    93,    94,    95,    96,
!     97,    98,    82,    83,    84,    85,    86,    87,    88,    89,
!     -1,    -1,    -1,    93,    94,    95,    96,    97,    98,    82,
!     83,    84,    85,    86,    87,    88,    -1,    -1,    -1,    -1,
!     93,    94,    95,    96,    97,    98,    82,    83,    84,    85,
!     86,    87,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
!     96,    97,    98
! };
! /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
! #line 3 "/s/bison.simple"
! 
! /* Skeleton output parser for bison,
!    Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
! 
!    This program is free software; you can redistribute it and/or modify
!    it under the terms of the GNU General Public License as published by
!    the Free Software Foundation; either version 1, or (at your option)
!    any later version.
! 
!    This program is distributed in the hope that it will be useful,
!    but WITHOUT ANY WARRANTY; without even the implied warranty of
!    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
!    GNU General Public License for more details.
! 
!    You should have received a copy of the GNU General Public License
!    along with this program; if not, write to the Free Software
!    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
! 
! 
! #ifndef alloca
! #ifdef __GNUC__
! #define alloca __builtin_alloca
! #else /* not GNU C.  */
! #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
! #include <alloca.h>
! #else /* not sparc */
! #if defined (MSDOS) && !defined (__TURBOC__)
! #include <malloc.h>
! #else /* not MSDOS, or __TURBOC__ */
! #if defined(_AIX)
! #include <malloc.h>
!  #pragma alloca
! #else /* not MSDOS, __TURBOC__, or _AIX */
! #ifdef __hpux
! #ifdef __cplusplus
! extern "C" {
! void *alloca (unsigned int);
! };
! #else /* not __cplusplus */
! void *alloca (unsigned int);
! #endif /* not __cplusplus */
! #endif /* __hpux */
! #endif /* not _AIX */
! #endif /* not MSDOS, or __TURBOC__ */
! #endif /* not sparc.  */
! #endif /* not GNU C.  */
! #endif /* alloca not defined.  */
! 
! /* This is the parser code that is written into each bison parser
!   when the %semantic_parser declaration is not specified in the grammar.
!   It was written by Richard Stallman by simplifying the hairy parser
!   used when %semantic_parser is specified.  */
! 
! /* Note: there must be only one dollar sign in this file.
!    It is replaced by the list of actions, each action
!    as one case of the switch.  */
! 
! #define yyerrok		(yyerrstatus = 0)
! #define yyclearin	(yychar = YYEMPTY)
! #define YYEMPTY		-2
! #define YYEOF		0
! #define YYACCEPT	return(0)
! #define YYABORT 	return(1)
! #define YYERROR		goto yyerrlab1
! /* Like YYERROR except do call yyerror.
!    This remains here temporarily to ease the
!    transition to the new meaning of YYERROR, for GCC.
!    Once GCC version 2 has supplanted version 1, this can go.  */
! #define YYFAIL		goto yyerrlab
! #define YYRECOVERING()  (!!yyerrstatus)
! #define YYBACKUP(token, value) \
! do								\
!   if (yychar == YYEMPTY && yylen == 1)				\
!     { yychar = (token), yylval = (value);			\
!       yychar1 = YYTRANSLATE (yychar);				\
!       YYPOPSTACK;						\
!       goto yybackup;						\
!     }								\
!   else								\
!     { yyerror ("syntax error: cannot back up"); YYERROR; }	\
! while (0)
! 
! #define YYTERROR	1
! #define YYERRCODE	256
! 
! #ifndef YYPURE
! #define YYLEX		yylex()
  #endif
  
! #ifdef YYPURE
! #ifdef YYLSP_NEEDED
! #define YYLEX		yylex(&yylval, &yylloc)
! #else
! #define YYLEX		yylex(&yylval)
  #endif
  #endif
! 
! /* If nonreentrant, generate the variables here */
! 
! #ifndef YYPURE
! 
! int	yychar;			/*  the lookahead symbol		*/
! YYSTYPE	yylval;			/*  the semantic value of the		*/
! 				/*  lookahead symbol			*/
! 
! #ifdef YYLSP_NEEDED
! YYLTYPE yylloc;			/*  location data for the lookahead	*/
! 				/*  symbol				*/
! #endif
! 
! int yynerrs;			/*  number of parse errors so far       */
! #endif  /* not YYPURE */
! 
! #if YYDEBUG != 0
! int yydebug;			/*  nonzero means print parse trace	*/
! /* Since this is uninitialized, it does not stop multiple parsers
!    from coexisting.  */
! #endif
! 
! /*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
! 
! #ifndef	YYINITDEPTH
! #define YYINITDEPTH 200
! #endif
! 
! /*  YYMAXDEPTH is the maximum size the stacks can grow to
!     (effective only if the built-in stack extension method is used).  */
! 
! #if YYMAXDEPTH == 0
! #undef YYMAXDEPTH
  #endif
! 
! #ifndef YYMAXDEPTH
! #define YYMAXDEPTH 10000
  #endif
! 
! /* Prevent warning if -Wstrict-prototypes.  */
! #ifdef __GNUC__
! int yyparse (void);
! #endif
! 
! #if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
! #define __yy_bcopy(FROM,TO,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
! #else				/* not GNU C or C++ */
! #ifndef __cplusplus
! 
! /* This is the most reliable way to avoid incompatibilities
!    in available built-in functions on various systems.  */
! static void
! __yy_bcopy (from, to, count)
!      char *from;
!      char *to;
!      int count;
! {
!   register char *f = from;
!   register char *t = to;
!   register int i = count;
! 
!   while (i-- > 0)
!     *t++ = *f++;
! }
! 
! #else /* __cplusplus */
! 
! /* This is the most reliable way to avoid incompatibilities
!    in available built-in functions on various systems.  */
! static void
! __yy_bcopy (char *from, char *to, int count)
! {
!   register char *f = from;
!   register char *t = to;
!   register int i = count;
! 
!   while (i-- > 0)
!     *t++ = *f++;
! }
! 
  #endif
  #endif
! 
! #line 184 "/usr/local/lib/bison.simple"
! int
! yyparse()
! {
!   register int yystate;
!   register int yyn;
!   register short *yyssp;
!   register YYSTYPE *yyvsp;
!   int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
!   int yychar1;		/*  lookahead token as an internal (translated) token number */
! 
!   short	yyssa[YYINITDEPTH];	/*  the state stack			*/
!   YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
! 
!   short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
!   YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
! 
! #ifdef YYLSP_NEEDED
!   YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
!   YYLTYPE *yyls = yylsa;
!   YYLTYPE *yylsp;
! 
! #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
! #else
! #define YYPOPSTACK   (yyvsp--, yyssp--)
! #endif
! 
!   int yystacksize = YYINITDEPTH;
! 
! #ifdef YYPURE
!   int yychar;
!   YYSTYPE yylval;
!   int yynerrs;
! #ifdef YYLSP_NEEDED
!   YYLTYPE yylloc;
! #endif
! #endif
! 
!   YYSTYPE yyval;		/*  the variable used to return		*/
! 				/*  semantic values from the action	*/
! 				/*  routines				*/
! 
!   int yylen;
! 
! #if YYDEBUG != 0
!   if (yydebug)
!     fprintf(stderr, "Starting parse\n");
! #endif
! 
!   yystate = 0;
!   yyerrstatus = 0;
!   yynerrs = 0;
!   yychar = YYEMPTY;		/* Cause a token to be read.  */
! 
!   /* Initialize stack pointers.
!      Waste one element of value and location stack
!      so that they stay on the same level as the state stack.
!      The wasted elements are never initialized.  */
! 
!   yyssp = yyss - 1;
!   yyvsp = yyvs;
! #ifdef YYLSP_NEEDED
!   yylsp = yyls;
! #endif
! 
! /* Push a new state, which is found in  yystate  .  */
! /* In all cases, when you get here, the value and location stacks
!    have just been pushed. so pushing a state here evens the stacks.  */
! yynewstate:
! 
!   *++yyssp = yystate;
! 
!   if (yyssp >= yyss + yystacksize - 1)
!     {
!       /* Give user a chance to reallocate the stack */
!       /* Use copies of these so that the &'s don't force the real ones into memory. */
!       YYSTYPE *yyvs1 = yyvs;
!       short *yyss1 = yyss;
! #ifdef YYLSP_NEEDED
!       YYLTYPE *yyls1 = yyls;
! #endif
! 
!       /* Get the current used size of the three stacks, in elements.  */
!       int size = yyssp - yyss + 1;
! 
! #ifdef yyoverflow
!       /* Each stack pointer address is followed by the size of
! 	 the data in use in that stack, in bytes.  */
!       yyoverflow("parser stack overflow",
! 		 &yyss1, size * sizeof (*yyssp),
! 		 &yyvs1, size * sizeof (*yyvsp),
! #ifdef YYLSP_NEEDED
! 		 &yyls1, size * sizeof (*yylsp),
! #endif
! 		 &yystacksize);
! 
!       yyss = yyss1; yyvs = yyvs1;
! #ifdef YYLSP_NEEDED
!       yyls = yyls1;
! #endif
! #else /* no yyoverflow */
!       /* Extend the stack our own way.  */
!       if (yystacksize >= YYMAXDEPTH)
! 	{
! 	  yyerror("parser stack overflow");
! 	  return 2;
! 	}
!       yystacksize *= 2;
!       if (yystacksize > YYMAXDEPTH)
! 	yystacksize = YYMAXDEPTH;
!       yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
!       __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
!       yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
!       __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
! #ifdef YYLSP_NEEDED
!       yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
!       __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
! #endif
! #endif /* no yyoverflow */
! 
!       yyssp = yyss + size - 1;
!       yyvsp = yyvs + size - 1;
! #ifdef YYLSP_NEEDED
!       yylsp = yyls + size - 1;
! #endif
! 
! #if YYDEBUG != 0
!       if (yydebug)
! 	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
! #endif
! 
!       if (yyssp >= yyss + yystacksize - 1)
! 	YYABORT;
!     }
! 
! #if YYDEBUG != 0
!   if (yydebug)
!     fprintf(stderr, "Entering state %d\n", yystate);
! #endif
! 
!   goto yybackup;
!  yybackup:
! 
! /* Do appropriate processing given the current state.  */
! /* Read a lookahead token if we need one and don't already have one.  */
! /* yyresume: */
! 
!   /* First try to decide what to do without reference to lookahead token.  */
! 
!   yyn = yypact[yystate];
!   if (yyn == YYFLAG)
!     goto yydefault;
! 
!   /* Not known => get a lookahead token if don't already have one.  */
! 
!   /* yychar is either YYEMPTY or YYEOF
!      or a valid token in external form.  */
! 
!   if (yychar == YYEMPTY)
!     {
! #if YYDEBUG != 0
!       if (yydebug)
! 	fprintf(stderr, "Reading a token: ");
! #endif
!       yychar = YYLEX;
!     }
! 
!   /* Convert token to internal form (in yychar1) for indexing tables with */
! 
!   if (yychar <= 0)		/* This means end of input. */
!     {
!       yychar1 = 0;
!       yychar = YYEOF;		/* Don't call YYLEX any more */
! 
! #if YYDEBUG != 0
!       if (yydebug)
! 	fprintf(stderr, "Now at end of input.\n");
! #endif
!     }
!   else
!     {
!       yychar1 = YYTRANSLATE(yychar);
! 
! #if YYDEBUG != 0
!       if (yydebug)
! 	{
! 	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
! 	  /* Give the individual parser a way to print the precise meaning
! 	     of a token, for further debugging info.  */
! #ifdef YYPRINT
! 	  YYPRINT (stderr, yychar, yylval);
! #endif
! 	  fprintf (stderr, ")\n");
! 	}
! #endif
!     }
! 
!   yyn += yychar1;
!   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
!     goto yydefault;
! 
!   yyn = yytable[yyn];
! 
!   /* yyn is what to do for this token type in this state.
!      Negative => reduce, -yyn is rule number.
!      Positive => shift, yyn is new state.
!        New state is final state => don't bother to shift,
!        just return success.
!      0, or most negative number => error.  */
! 
!   if (yyn < 0)
!     {
!       if (yyn == YYFLAG)
! 	goto yyerrlab;
!       yyn = -yyn;
!       goto yyreduce;
!     }
!   else if (yyn == 0)
!     goto yyerrlab;
! 
!   if (yyn == YYFINAL)
!     YYACCEPT;
! 
!   /* Shift the lookahead token.  */
! 
! #if YYDEBUG != 0
!   if (yydebug)
!     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
! #endif
! 
!   /* Discard the token being shifted unless it is eof.  */
!   if (yychar != YYEOF)
!     yychar = YYEMPTY;
! 
!   *++yyvsp = yylval;
! #ifdef YYLSP_NEEDED
!   *++yylsp = yylloc;
! #endif
! 
!   /* count tokens shifted since error; after three, turn off error status.  */
!   if (yyerrstatus) yyerrstatus--;
! 
!   yystate = yyn;
!   goto yynewstate;
! 
! /* Do the default action for the current state.  */
! yydefault:
! 
!   yyn = yydefact[yystate];
!   if (yyn == 0)
!     goto yyerrlab;
! 
! /* Do a reduction.  yyn is the number of a rule to reduce with.  */
! yyreduce:
!   yylen = yyr2[yyn];
!   yyval = yyvsp[1-yylen]; /* implement default value of the action */
! 
! #if YYDEBUG != 0
!   if (yydebug)
!     {
!       int i;
! 
!       fprintf (stderr, "Reducing via rule %d (line %d), ",
! 	       yyn, yyrline[yyn]);
! 
!       /* Print the symbols being reduced, and their result.  */
!       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
! 	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
!       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
!     }
  #endif
  
+ 
+   switch (yyn) {
+ 
  case 3:
! #line 226 "gram.y"
  {
  /* stat:   is the nonterminal for Fortran statements */
  
! 		  lastwasbranch = NO; ;
!     break;}
  case 5:
! #line 232 "gram.y"
  { /* forbid further statement function definitions... */
  		  if (parstate == INDATA && laststfcn != thisstno)
  			parstate = INEXEC;
  		  thisstno++;
! 		  if(yyvsp[-1].labval && (yyvsp[-1].labval->labelno==dorange))
! 			enddo(yyvsp[-1].labval->labelno);
  		  if(lastwasbranch && thislabel==NULL)
  			warn("statement cannot be reached");
  		  lastwasbranch = thiswasbranch;
  		  thiswasbranch = NO;
! 		  if(yyvsp[-1].labval)
  			{
! 			if(yyvsp[-1].labval->labtype == LABFORMAT)
  				err("label already that of a format");
  			else
! 				yyvsp[-1].labval->labtype = LABEXEC;
  			}
  		  freetemps();
! 		;
!     break;}
  case 6:
! #line 252 "gram.y"
  { if (can_include)
! 			doinclude( yyvsp[0].charpval );
  		  else {
! 			fprintf(diagfile, "Cannot open file %s\n", yyvsp[0].charpval);
  			done(1);
  			}
! 		;
!     break;}
  case 7:
! #line 260 "gram.y"
! { if (yyvsp[-2].labval)
  			lastwasbranch = NO;
  		  endproc(); /* lastwasbranch = NO; -- set in endproc() */
! 		;
!     break;}
  case 8:
! #line 265 "gram.y"
  { extern void unclassifiable();
  		  unclassifiable();
  
  /* flline flushes the current line, ignoring the rest of the text there */
  
! 		  flline(); ;
!     break;}
  case 9:
! #line 272 "gram.y"
  { flline();  needkwd = NO;  inioctl = NO;
! 		  yyerrok; yyclearin; ;
!     break;}
  case 10:
! #line 277 "gram.y"
  {
  		if(yystno != 0)
  			{
***************
*** 894,964 ****
  				}
  			}
  		else    yyval.labval = thislabel = NULL;
! 		} break;
  case 11:
! /* # line 305 "gram.in" */
! {startproc(yypvt[-0].extval, CLMAIN); } break;
  case 12:
! /* # line 307 "gram.in" */
  {	warn("ignoring arguments to main program");
  			/* hashclear(); */
! 			startproc(yypvt[-1].extval, CLMAIN); } break;
  case 13:
! /* # line 311 "gram.in" */
! { if(yypvt[-0].extval) NO66("named BLOCKDATA");
! 		  startproc(yypvt[-0].extval, CLBLOCK); } break;
  case 14:
! /* # line 314 "gram.in" */
! { entrypt(CLPROC, TYSUBR, (ftnint) 0,  yypvt[-1].extval, yypvt[-0].chval); } break;
  case 15:
! /* # line 316 "gram.in" */
! { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval); } break;
  case 16:
! /* # line 318 "gram.in" */
! { entrypt(CLPROC, yypvt[-4].ival, varleng, yypvt[-1].extval, yypvt[-0].chval); } break;
  case 17:
! /* # line 320 "gram.in" */
  { if(parstate==OUTSIDE || procclass==CLMAIN
  			|| procclass==CLBLOCK)
  				execerr("misplaced entry statement", CNULL);
! 		  entrypt(CLENTRY, 0, (ftnint) 0, yypvt[-1].extval, yypvt[-0].chval);
! 		} break;
  case 18:
! /* # line 328 "gram.in" */
! { newproc(); } break;
  case 19:
! /* # line 332 "gram.in" */
! { yyval.extval = newentry(yypvt[-0].namval, 1); } break;
  case 20:
! /* # line 336 "gram.in" */
! { yyval.namval = mkname(token); } break;
  case 21:
! /* # line 339 "gram.in" */
! { yyval.extval = NULL; } break;
  case 29:
! /* # line 357 "gram.in" */
! { yyval.chval = 0; } break;
  case 30:
! /* # line 359 "gram.in" */
  { NO66(" () argument list");
! 		  yyval.chval = 0; } break;
  case 31:
! /* # line 362 "gram.in" */
! {yyval.chval = yypvt[-1].chval; } break;
  case 32:
! /* # line 366 "gram.in" */
! { yyval.chval = (yypvt[-0].namval ? mkchain((char *)yypvt[-0].namval,CHNULL) : CHNULL ); } break;
  case 33:
! /* # line 368 "gram.in" */
! { if(yypvt[-0].namval) yypvt[-2].chval = yyval.chval = mkchain((char *)yypvt[-0].namval, yypvt[-2].chval); } break;
  case 34:
! /* # line 372 "gram.in" */
! { if(yypvt[-0].namval->vstg!=STGUNKNOWN && yypvt[-0].namval->vstg!=STGARG)
! 			dclerr("name declared as argument after use", yypvt[-0].namval);
! 		  yypvt[-0].namval->vstg = STGARG;
! 		} break;
  case 35:
! /* # line 377 "gram.in" */
  { NO66("altenate return argument");
  
  /* substars   means that '*'ed formal parameters should be replaced.
--- 1473,1561 ----
  				}
  			}
  		else    yyval.labval = thislabel = NULL;
! 		;
!     break;}
  case 11:
! #line 305 "gram.y"
! {startproc(yyvsp[0].extval, CLMAIN); ;
!     break;}
  case 12:
! #line 307 "gram.y"
  {	warn("ignoring arguments to main program");
  			/* hashclear(); */
! 			startproc(yyvsp[-1].extval, CLMAIN); ;
!     break;}
  case 13:
! #line 311 "gram.y"
! { if(yyvsp[0].extval) NO66("named BLOCKDATA");
! 		  startproc(yyvsp[0].extval, CLBLOCK); ;
!     break;}
  case 14:
! #line 314 "gram.y"
! { entrypt(CLPROC, TYSUBR, (ftnint) 0,  yyvsp[-1].extval, yyvsp[0].chval); ;
!     break;}
  case 15:
! #line 316 "gram.y"
! { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval); ;
!     break;}
  case 16:
! #line 318 "gram.y"
! { entrypt(CLPROC, yyvsp[-4].ival, varleng, yyvsp[-1].extval, yyvsp[0].chval); ;
!     break;}
  case 17:
! #line 320 "gram.y"
  { if(parstate==OUTSIDE || procclass==CLMAIN
  			|| procclass==CLBLOCK)
  				execerr("misplaced entry statement", CNULL);
! 		  entrypt(CLENTRY, 0, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval);
! 		;
!     break;}
  case 18:
! #line 328 "gram.y"
! { newproc(); ;
!     break;}
  case 19:
! #line 332 "gram.y"
! { yyval.extval = newentry(yyvsp[0].namval, 1); ;
!     break;}
  case 20:
! #line 336 "gram.y"
! { yyval.namval = mkname(token); ;
!     break;}
  case 21:
! #line 339 "gram.y"
! { yyval.extval = NULL; ;
!     break;}
  case 29:
! #line 357 "gram.y"
! { yyval.chval = 0; ;
!     break;}
  case 30:
! #line 359 "gram.y"
  { NO66(" () argument list");
! 		  yyval.chval = 0; ;
!     break;}
  case 31:
! #line 362 "gram.y"
! {yyval.chval = yyvsp[-1].chval; ;
!     break;}
  case 32:
! #line 366 "gram.y"
! { yyval.chval = (yyvsp[0].namval ? mkchain((char *)yyvsp[0].namval,CHNULL) : CHNULL ); ;
!     break;}
  case 33:
! #line 368 "gram.y"
! { if(yyvsp[0].namval) yyvsp[-2].chval = yyval.chval = mkchain((char *)yyvsp[0].namval, yyvsp[-2].chval); ;
!     break;}
  case 34:
! #line 372 "gram.y"
! { if(yyvsp[0].namval->vstg!=STGUNKNOWN && yyvsp[0].namval->vstg!=STGARG)
! 			dclerr("name declared as argument after use", yyvsp[0].namval);
! 		  yyvsp[0].namval->vstg = STGARG;
! 		;
!     break;}
  case 35:
! #line 377 "gram.y"
  { NO66("altenate return argument");
  
  /* substars   means that '*'ed formal parameters should be replaced.
***************
*** 969,1065 ****
  
     This variable is only referred to in   proc.c   */
  
! 		  yyval.namval = 0;  substars = YES; } break;
  case 36:
! /* # line 393 "gram.in" */
  {
  		char *s;
  		s = copyn(toklen+1, token);
  		s[toklen] = '\0';
  		yyval.charpval = s;
! 		} break;
  case 45:
! /* # line 409 "gram.in" */
  { NO66("SAVE statement");
! 		  saveall = YES; } break;
  case 46:
! /* # line 412 "gram.in" */
! { NO66("SAVE statement"); } break;
  case 47:
! /* # line 414 "gram.in" */
! { fmtstmt(thislabel); setfmt(thislabel); } break;
  case 48:
! /* # line 416 "gram.in" */
! { NO66("PARAMETER statement"); } break;
  case 49:
! /* # line 420 "gram.in" */
! { settype(yypvt[-4].namval, yypvt[-6].ival, yypvt[-0].lval);
! 		  if(ndim>0) setbound(yypvt[-4].namval,ndim,dims);
! 		} break;
  case 50:
! /* # line 424 "gram.in" */
! { settype(yypvt[-2].namval, yypvt[-4].ival, yypvt[-0].lval);
! 		  if(ndim>0) setbound(yypvt[-2].namval,ndim,dims);
! 		} break;
  case 51:
! /* # line 428 "gram.in" */
  { if (new_dcl == 2) {
  			err("attempt to give DATA in type-declaration");
  			new_dcl = 1;
  			}
! 		} break;
  case 52:
! /* # line 435 "gram.in" */
! { new_dcl = 2; } break;
  case 53:
! /* # line 438 "gram.in" */
! { varleng = yypvt[-0].lval; } break;
  case 54:
! /* # line 442 "gram.in" */
! { varleng = (yypvt[-0].ival<0 || ONEOF(yypvt[-0].ival,M(TYLOGICAL)|M(TYLONG))
! 				? 0 : typesize[yypvt[-0].ival]);
! 		  vartype = yypvt[-0].ival; } break;
  case 55:
! /* # line 447 "gram.in" */
! { yyval.ival = TYLONG; } break;
  case 56:
! /* # line 448 "gram.in" */
! { yyval.ival = tyreal; } break;
  case 57:
! /* # line 449 "gram.in" */
! { ++complex_seen; yyval.ival = tycomplex; } break;
  case 58:
! /* # line 450 "gram.in" */
! { yyval.ival = TYDREAL; } break;
  case 59:
! /* # line 451 "gram.in" */
! { ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; } break;
  case 60:
! /* # line 452 "gram.in" */
! { yyval.ival = TYLOGICAL; } break;
  case 61:
! /* # line 453 "gram.in" */
! { NO66("CHARACTER statement"); yyval.ival = TYCHAR; } break;
  case 62:
! /* # line 454 "gram.in" */
! { yyval.ival = TYUNKNOWN; } break;
  case 63:
! /* # line 455 "gram.in" */
! { yyval.ival = TYUNKNOWN; } break;
  case 64:
! /* # line 456 "gram.in" */
! { NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; } break;
  case 65:
! /* # line 457 "gram.in" */
! { NOEXT("STATIC statement"); yyval.ival = - STGBSS; } break;
  case 66:
! /* # line 461 "gram.in" */
! { yyval.lval = varleng; } break;
  case 67:
! /* # line 463 "gram.in" */
  {
  		expptr p;
! 		p = yypvt[-1].expval;
  		NO66("length specification *n");
  		if( ! ISICON(p) || p->constblock.Const.ci <= 0 )
  			{
--- 1566,1686 ----
  
     This variable is only referred to in   proc.c   */
  
! 		  yyval.namval = 0;  substars = YES; ;
!     break;}
  case 36:
! #line 393 "gram.y"
  {
  		char *s;
  		s = copyn(toklen+1, token);
  		s[toklen] = '\0';
  		yyval.charpval = s;
! 		;
!     break;}
  case 45:
! #line 409 "gram.y"
  { NO66("SAVE statement");
! 		  saveall = YES; ;
!     break;}
  case 46:
! #line 412 "gram.y"
! { NO66("SAVE statement"); ;
!     break;}
  case 47:
! #line 414 "gram.y"
! { fmtstmt(thislabel); setfmt(thislabel); ;
!     break;}
  case 48:
! #line 416 "gram.y"
! { NO66("PARAMETER statement"); ;
!     break;}
  case 49:
! #line 420 "gram.y"
! { settype(yyvsp[-4].namval, yyvsp[-6].ival, yyvsp[0].lval);
! 		  if(ndim>0) setbound(yyvsp[-4].namval,ndim,dims);
! 		;
!     break;}
  case 50:
! #line 424 "gram.y"
! { settype(yyvsp[-2].namval, yyvsp[-4].ival, yyvsp[0].lval);
! 		  if(ndim>0) setbound(yyvsp[-2].namval,ndim,dims);
! 		;
!     break;}
  case 51:
! #line 428 "gram.y"
  { if (new_dcl == 2) {
  			err("attempt to give DATA in type-declaration");
  			new_dcl = 1;
  			}
! 		;
!     break;}
  case 52:
! #line 435 "gram.y"
! { new_dcl = 2; ;
!     break;}
  case 53:
! #line 438 "gram.y"
! { varleng = yyvsp[0].lval; ;
!     break;}
  case 54:
! #line 442 "gram.y"
! { varleng = (yyvsp[0].ival<0 || ONEOF(yyvsp[0].ival,M(TYLOGICAL)|M(TYLONG))
! 				? 0 : typesize[yyvsp[0].ival]);
! 		  vartype = yyvsp[0].ival; ;
!     break;}
  case 55:
! #line 447 "gram.y"
! { yyval.ival = TYLONG; ;
!     break;}
  case 56:
! #line 448 "gram.y"
! { yyval.ival = tyreal; ;
!     break;}
  case 57:
! #line 449 "gram.y"
! { ++complex_seen; yyval.ival = tycomplex; ;
!     break;}
  case 58:
! #line 450 "gram.y"
! { yyval.ival = TYDREAL; ;
!     break;}
  case 59:
! #line 451 "gram.y"
! { ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; ;
!     break;}
  case 60:
! #line 452 "gram.y"
! { yyval.ival = TYLOGICAL; ;
!     break;}
  case 61:
! #line 453 "gram.y"
! { NO66("CHARACTER statement"); yyval.ival = TYCHAR; ;
!     break;}
  case 62:
! #line 454 "gram.y"
! { yyval.ival = TYUNKNOWN; ;
!     break;}
  case 63:
! #line 455 "gram.y"
! { yyval.ival = TYUNKNOWN; ;
!     break;}
  case 64:
! #line 456 "gram.y"
! { NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; ;
!     break;}
  case 65:
! #line 457 "gram.y"
! { NOEXT("STATIC statement"); yyval.ival = - STGBSS; ;
!     break;}
  case 66:
! #line 461 "gram.y"
! { yyval.lval = varleng; ;
!     break;}
  case 67:
! #line 463 "gram.y"
  {
  		expptr p;
! 		p = yyvsp[-1].expval;
  		NO66("length specification *n");
  		if( ! ISICON(p) || p->constblock.Const.ci <= 0 )
  			{
***************
*** 1081,1122 ****
  					yyval.lval = varleng;
  				}
  			}
! 		} break;
  case 68:
! /* # line 489 "gram.in" */
! { NO66("length specification *(*)"); yyval.lval = -1; } break;
  case 69:
! /* # line 493 "gram.in" */
! { incomm( yyval.extval = comblock("") , yypvt[-0].namval ); } break;
  case 70:
! /* # line 495 "gram.in" */
! { yyval.extval = yypvt[-1].extval;  incomm(yypvt[-1].extval, yypvt[-0].namval); } break;
  case 71:
! /* # line 497 "gram.in" */
! { yyval.extval = yypvt[-2].extval;  incomm(yypvt[-2].extval, yypvt[-0].namval); } break;
  case 72:
! /* # line 499 "gram.in" */
! { incomm(yypvt[-2].extval, yypvt[-0].namval); } break;
  case 73:
! /* # line 503 "gram.in" */
! { yyval.extval = comblock(""); } break;
  case 74:
! /* # line 505 "gram.in" */
! { yyval.extval = comblock(token); } break;
  case 75:
! /* # line 509 "gram.in" */
! { setext(yypvt[-0].namval); } break;
  case 76:
! /* # line 511 "gram.in" */
! { setext(yypvt[-0].namval); } break;
  case 77:
! /* # line 515 "gram.in" */
! { NO66("INTRINSIC statement"); setintr(yypvt[-0].namval); } break;
  case 78:
! /* # line 517 "gram.in" */
! { setintr(yypvt[-0].namval); } break;
  case 81:
! /* # line 525 "gram.in" */
  {
  		struct Equivblock *p;
  		if(nequiv >= maxequiv)
--- 1702,1755 ----
  					yyval.lval = varleng;
  				}
  			}
! 		;
!     break;}
  case 68:
! #line 489 "gram.y"
! { NO66("length specification *(*)"); yyval.lval = -1; ;
!     break;}
  case 69:
! #line 493 "gram.y"
! { incomm( yyval.extval = comblock("") , yyvsp[0].namval ); ;
!     break;}
  case 70:
! #line 495 "gram.y"
! { yyval.extval = yyvsp[-1].extval;  incomm(yyvsp[-1].extval, yyvsp[0].namval); ;
!     break;}
  case 71:
! #line 497 "gram.y"
! { yyval.extval = yyvsp[-2].extval;  incomm(yyvsp[-2].extval, yyvsp[0].namval); ;
!     break;}
  case 72:
! #line 499 "gram.y"
! { incomm(yyvsp[-2].extval, yyvsp[0].namval); ;
!     break;}
  case 73:
! #line 503 "gram.y"
! { yyval.extval = comblock(""); ;
!     break;}
  case 74:
! #line 505 "gram.y"
! { yyval.extval = comblock(token); ;
!     break;}
  case 75:
! #line 509 "gram.y"
! { setext(yyvsp[0].namval); ;
!     break;}
  case 76:
! #line 511 "gram.y"
! { setext(yyvsp[0].namval); ;
!     break;}
  case 77:
! #line 515 "gram.y"
! { NO66("INTRINSIC statement"); setintr(yyvsp[0].namval); ;
!     break;}
  case 78:
! #line 517 "gram.y"
! { setintr(yyvsp[0].namval); ;
!     break;}
  case 81:
! #line 525 "gram.y"
  {
  		struct Equivblock *p;
  		if(nequiv >= maxequiv)
***************
*** 1125,1145 ****
  		p->eqvinit = NO;
  		p->eqvbottom = 0;
  		p->eqvtop = 0;
! 		p->equivs = yypvt[-1].eqvval;
! 		} break;
  case 82:
! /* # line 538 "gram.in" */
  { yyval.eqvval=ALLOC(Eqvchain);
! 		  yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *)yypvt[-0].expval;
! 		} break;
  case 83:
! /* # line 542 "gram.in" */
  { yyval.eqvval=ALLOC(Eqvchain);
! 		  yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *) yypvt[-0].expval;
! 		  yyval.eqvval->eqvnextp = yypvt[-2].eqvval;
! 		} break;
  case 86:
! /* # line 553 "gram.in" */
  { if(parstate == OUTSIDE)
  			{
  			newproc();
--- 1758,1781 ----
  		p->eqvinit = NO;
  		p->eqvbottom = 0;
  		p->eqvtop = 0;
! 		p->equivs = yyvsp[-1].eqvval;
! 		;
!     break;}
  case 82:
! #line 538 "gram.y"
  { yyval.eqvval=ALLOC(Eqvchain);
! 		  yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *)yyvsp[0].expval;
! 		;
!     break;}
  case 83:
! #line 542 "gram.y"
  { yyval.eqvval=ALLOC(Eqvchain);
! 		  yyval.eqvval->eqvitem.eqvlhs = (struct Primblock *) yyvsp[0].expval;
! 		  yyval.eqvval->eqvnextp = yyvsp[-2].eqvval;
! 		;
!     break;}
  case 86:
! #line 553 "gram.y"
  { if(parstate == OUTSIDE)
  			{
  			newproc();
***************
*** 1151,1207 ****
  			parstate = INDATA;
  			datagripe = 1;
  			}
! 		} break;
  case 87:
! /* # line 568 "gram.in" */
  { ftnint junk;
  		  if(nextdata(&junk) != NULL)
  			err("too few initializers");
! 		  frdata(yypvt[-4].chval);
  		  frrpl();
! 		} break;
  case 88:
! /* # line 576 "gram.in" */
! { frchain(&datastack); curdtp = 0; } break;
  case 89:
! /* # line 578 "gram.in" */
! { pop_datastack(); } break;
  case 90:
! /* # line 580 "gram.in" */
! { toomanyinit = NO; } break;
  case 93:
! /* # line 585 "gram.in" */
! { dataval(ENULL, yypvt[-0].expval); } break;
  case 94:
! /* # line 587 "gram.in" */
! { dataval(yypvt[-2].expval, yypvt[-0].expval); } break;
  case 96:
! /* # line 592 "gram.in" */
! { if( yypvt[-1].ival==OPMINUS && ISCONST(yypvt[-0].expval) )
! 			consnegop((Constp)yypvt[-0].expval);
! 		  yyval.expval = yypvt[-0].expval;
! 		} break;
  case 100:
! /* # line 604 "gram.in" */
  { int k;
! 		  yypvt[-0].namval->vsave = YES;
! 		  k = yypvt[-0].namval->vstg;
  		if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
! 			dclerr("can only save static variables", yypvt[-0].namval);
! 		} break;
  case 104:
! /* # line 618 "gram.in" */
! { if(yypvt[-2].namval->vclass == CLUNKNOWN)
! 			make_param((struct Paramblock *)yypvt[-2].namval, yypvt[-0].expval);
! 		  else dclerr("cannot make into parameter", yypvt[-2].namval);
! 		} break;
  case 105:
! /* # line 625 "gram.in" */
! { if(ndim>0) setbound(yypvt[-1].namval, ndim, dims); } break;
  case 106:
! /* # line 629 "gram.in" */
  { Namep np;
! 		  np = ( (struct Primblock *) yypvt[-0].expval) -> namep;
  		  vardcl(np);
  		  if(np->vstg == STGCOMMON)
  			extsymtab[np->vardesc.varno].extinit = YES;
--- 1787,1854 ----
  			parstate = INDATA;
  			datagripe = 1;
  			}
! 		;
!     break;}
  case 87:
! #line 568 "gram.y"
  { ftnint junk;
  		  if(nextdata(&junk) != NULL)
  			err("too few initializers");
! 		  frdata(yyvsp[-4].chval);
  		  frrpl();
! 		;
!     break;}
  case 88:
! #line 576 "gram.y"
! { frchain(&datastack); curdtp = 0; ;
!     break;}
  case 89:
! #line 578 "gram.y"
! { pop_datastack(); ;
!     break;}
  case 90:
! #line 580 "gram.y"
! { toomanyinit = NO; ;
!     break;}
  case 93:
! #line 585 "gram.y"
! { dataval(ENULL, yyvsp[0].expval); ;
!     break;}
  case 94:
! #line 587 "gram.y"
! { dataval(yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 96:
! #line 592 "gram.y"
! { if( yyvsp[-1].ival==OPMINUS && ISCONST(yyvsp[0].expval) )
! 			consnegop((Constp)yyvsp[0].expval);
! 		  yyval.expval = yyvsp[0].expval;
! 		;
!     break;}
  case 100:
! #line 604 "gram.y"
  { int k;
! 		  yyvsp[0].namval->vsave = YES;
! 		  k = yyvsp[0].namval->vstg;
  		if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
! 			dclerr("can only save static variables", yyvsp[0].namval);
! 		;
!     break;}
  case 104:
! #line 618 "gram.y"
! { if(yyvsp[-2].namval->vclass == CLUNKNOWN)
! 			make_param((struct Paramblock *)yyvsp[-2].namval, yyvsp[0].expval);
! 		  else dclerr("cannot make into parameter", yyvsp[-2].namval);
! 		;
!     break;}
  case 105:
! #line 625 "gram.y"
! { if(ndim>0) setbound(yyvsp[-1].namval, ndim, dims); ;
!     break;}
  case 106:
! #line 629 "gram.y"
  { Namep np;
! 		  np = ( (struct Primblock *) yyvsp[0].expval) -> namep;
  		  vardcl(np);
  		  if(np->vstg == STGCOMMON)
  			extsymtab[np->vardesc.varno].extinit = YES;
***************
*** 1209,1300 ****
  			eqvclass[np->vardesc.varno].eqvinit = YES;
  		  else if(np->vstg!=STGINIT && np->vstg!=STGBSS)
  			dclerr("inconsistent storage classes", np);
! 		  yyval.chval = mkchain((char *)yypvt[-0].expval, CHNULL);
! 		} break;
  case 107:
! /* # line 641 "gram.in" */
  { chainp p; struct Impldoblock *q;
  		pop_datastack();
  		q = ALLOC(Impldoblock);
  		q->tag = TIMPLDO;
! 		(q->varnp = (Namep) (yypvt[-1].chval->datap))->vimpldovar = 1;
! 		p = yypvt[-1].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( & (yypvt[-1].chval) );
  		yyval.chval = mkchain((char *)q, CHNULL);
! 		q->datalist = hookup(yypvt[-3].chval, yyval.chval);
! 		} break;
  case 108:
! /* # line 657 "gram.in" */
  { if (!datastack)
  			curdtp = 0;
  		  datastack = mkchain((char *)curdtp, datastack);
! 		  curdtp = yypvt[-0].chval; curdtelt = 0;
! 		  } break;
  case 109:
! /* # line 663 "gram.in" */
! { yyval.chval = hookup(yypvt[-2].chval, yypvt[-0].chval); } break;
  case 110:
! /* # line 667 "gram.in" */
! { ndim = 0; } break;
  case 112:
! /* # line 671 "gram.in" */
! { ndim = 0; } break;
  case 115:
! /* # line 676 "gram.in" */
  {
  		  if(ndim == maxdim)
  			err("too many dimensions");
  		  else if(ndim < maxdim)
  			{ dims[ndim].lb = 0;
! 			  dims[ndim].ub = yypvt[-0].expval;
  			}
  		  ++ndim;
! 		} break;
  case 116:
! /* # line 686 "gram.in" */
  {
  		  if(ndim == maxdim)
  			err("too many dimensions");
  		  else if(ndim < maxdim)
! 			{ dims[ndim].lb = yypvt[-2].expval;
! 			  dims[ndim].ub = yypvt[-0].expval;
  			}
  		  ++ndim;
! 		} break;
  case 117:
! /* # line 698 "gram.in" */
! { yyval.expval = 0; } break;
  case 119:
! /* # line 703 "gram.in" */
! { nstars = 1; labarray[0] = yypvt[-0].labval; } break;
  case 120:
! /* # line 705 "gram.in" */
! { if(nstars < maxlablist)  labarray[nstars++] = yypvt[-0].labval; } break;
  case 121:
! /* # line 709 "gram.in" */
! { yyval.labval = execlab( convci(toklen, token) ); } break;
  case 122:
! /* # line 713 "gram.in" */
! { NO66("IMPLICIT statement"); } break;
  case 125:
! /* # line 719 "gram.in" */
  { if (vartype != TYUNKNOWN)
  			dclerr("-- expected letter range",NPNULL);
! 		  setimpl(vartype, varleng, 'a', 'z'); } break;
  case 126:
! /* # line 724 "gram.in" */
! { needkwd = 1; } break;
  case 130:
! /* # line 733 "gram.in" */
! { setimpl(vartype, varleng, yypvt[-0].ival, yypvt[-0].ival); } break;
  case 131:
! /* # line 735 "gram.in" */
! { setimpl(vartype, varleng, yypvt[-2].ival, yypvt[-0].ival); } break;
  case 132:
! /* # line 739 "gram.in" */
  { if(toklen!=1 || token[0]<'a' || token[0]>'z')
  			{
  			dclerr("implicit item must be single letter", NPNULL);
--- 1856,1964 ----
  			eqvclass[np->vardesc.varno].eqvinit = YES;
  		  else if(np->vstg!=STGINIT && np->vstg!=STGBSS)
  			dclerr("inconsistent storage classes", np);
! 		  yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL);
! 		;
!     break;}
  case 107:
! #line 641 "gram.y"
  { chainp p; struct Impldoblock *q;
  		pop_datastack();
  		q = ALLOC(Impldoblock);
  		q->tag = TIMPLDO;
! 		(q->varnp = (Namep) (yyvsp[-1].chval->datap))->vimpldovar = 1;
! 		p = yyvsp[-1].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( & (yyvsp[-1].chval) );
  		yyval.chval = mkchain((char *)q, CHNULL);
! 		q->datalist = hookup(yyvsp[-3].chval, yyval.chval);
! 		;
!     break;}
  case 108:
! #line 657 "gram.y"
  { if (!datastack)
  			curdtp = 0;
  		  datastack = mkchain((char *)curdtp, datastack);
! 		  curdtp = yyvsp[0].chval; curdtelt = 0;
! 		  ;
!     break;}
  case 109:
! #line 663 "gram.y"
! { yyval.chval = hookup(yyvsp[-2].chval, yyvsp[0].chval); ;
!     break;}
  case 110:
! #line 667 "gram.y"
! { ndim = 0; ;
!     break;}
  case 112:
! #line 671 "gram.y"
! { ndim = 0; ;
!     break;}
  case 115:
! #line 676 "gram.y"
  {
  		  if(ndim == maxdim)
  			err("too many dimensions");
  		  else if(ndim < maxdim)
  			{ dims[ndim].lb = 0;
! 			  dims[ndim].ub = yyvsp[0].expval;
  			}
  		  ++ndim;
! 		;
!     break;}
  case 116:
! #line 686 "gram.y"
  {
  		  if(ndim == maxdim)
  			err("too many dimensions");
  		  else if(ndim < maxdim)
! 			{ dims[ndim].lb = yyvsp[-2].expval;
! 			  dims[ndim].ub = yyvsp[0].expval;
  			}
  		  ++ndim;
! 		;
!     break;}
  case 117:
! #line 698 "gram.y"
! { yyval.expval = 0; ;
!     break;}
  case 119:
! #line 703 "gram.y"
! { nstars = 1; labarray[0] = yyvsp[0].labval; ;
!     break;}
  case 120:
! #line 705 "gram.y"
! { if(nstars < maxlablist)  labarray[nstars++] = yyvsp[0].labval; ;
!     break;}
  case 121:
! #line 709 "gram.y"
! { yyval.labval = execlab( convci(toklen, token) ); ;
!     break;}
  case 122:
! #line 713 "gram.y"
! { NO66("IMPLICIT statement"); ;
!     break;}
  case 125:
! #line 719 "gram.y"
  { if (vartype != TYUNKNOWN)
  			dclerr("-- expected letter range",NPNULL);
! 		  setimpl(vartype, varleng, 'a', 'z'); ;
!     break;}
  case 126:
! #line 724 "gram.y"
! { needkwd = 1; ;
!     break;}
  case 130:
! #line 733 "gram.y"
! { setimpl(vartype, varleng, yyvsp[0].ival, yyvsp[0].ival); ;
!     break;}
  case 131:
! #line 735 "gram.y"
! { setimpl(vartype, varleng, yyvsp[-2].ival, yyvsp[0].ival); ;
!     break;}
  case 132:
! #line 739 "gram.y"
  { if(toklen!=1 || token[0]<'a' || token[0]>'z')
  			{
  			dclerr("implicit item must be single letter", NPNULL);
***************
*** 1301,1328 ****
  			yyval.ival = 0;
  			}
  		  else yyval.ival = token[0];
! 		} break;
  case 135:
! /* # line 753 "gram.in" */
  {
! 		if(yypvt[-2].namval->vclass == CLUNKNOWN)
  			{
! 			yypvt[-2].namval->vclass = CLNAMELIST;
! 			yypvt[-2].namval->vtype = TYINT;
! 			yypvt[-2].namval->vstg = STGBSS;
! 			yypvt[-2].namval->varxptr.namelist = yypvt[-0].chval;
! 			yypvt[-2].namval->vardesc.varno = ++lastvarno;
  			}
! 		else dclerr("cannot be a namelist name", yypvt[-2].namval);
! 		} break;
  case 136:
! /* # line 767 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].namval, CHNULL); } break;
  case 137:
! /* # line 769 "gram.in" */
! { yyval.chval = hookup(yypvt[-2].chval, mkchain((char *)yypvt[-0].namval, CHNULL)); } break;
  case 138:
! /* # line 773 "gram.in" */
  { switch(parstate)
  			{
  			case OUTSIDE:	newproc();
--- 1965,1996 ----
  			yyval.ival = 0;
  			}
  		  else yyval.ival = token[0];
! 		;
!     break;}
  case 135:
! #line 753 "gram.y"
  {
! 		if(yyvsp[-2].namval->vclass == CLUNKNOWN)
  			{
! 			yyvsp[-2].namval->vclass = CLNAMELIST;
! 			yyvsp[-2].namval->vtype = TYINT;
! 			yyvsp[-2].namval->vstg = STGBSS;
! 			yyvsp[-2].namval->varxptr.namelist = yyvsp[0].chval;
! 			yyvsp[-2].namval->vardesc.varno = ++lastvarno;
  			}
! 		else dclerr("cannot be a namelist name", yyvsp[-2].namval);
! 		;
!     break;}
  case 136:
! #line 767 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].namval, CHNULL); ;
!     break;}
  case 137:
! #line 769 "gram.y"
! { yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].namval, CHNULL)); ;
!     break;}
  case 138:
! #line 773 "gram.y"
  { switch(parstate)
  			{
  			case OUTSIDE:	newproc();
***************
*** 1342,1636 ****
  			default:
  				dclerr("declaration among executables", NPNULL);
  			}
! 		} break;
  case 139:
! /* # line 795 "gram.in" */
! { yyval.chval = 0; } break;
  case 140:
! /* # line 797 "gram.in" */
! { yyval.chval = revchain(yypvt[-0].chval); } break;
  case 141:
! /* # line 801 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].expval, CHNULL); } break;
  case 142:
! /* # line 803 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].expval, yypvt[-2].chval); } break;
  case 144:
! /* # line 808 "gram.in" */
! { yyval.expval = yypvt[-1].expval; if (yyval.expval->tag == TPRIM)
! 					yyval.expval->primblock.parenused = 1; } break;
  case 148:
! /* # line 816 "gram.in" */
! { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 149:
! /* # line 818 "gram.in" */
! { yyval.expval = mkexpr(OPSTAR, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 150:
! /* # line 820 "gram.in" */
! { yyval.expval = mkexpr(OPSLASH, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 151:
! /* # line 822 "gram.in" */
! { yyval.expval = mkexpr(OPPOWER, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 152:
! /* # line 824 "gram.in" */
! { if(yypvt[-1].ival == OPMINUS)
! 			yyval.expval = mkexpr(OPNEG, yypvt[-0].expval, ENULL);
! 		  else 	yyval.expval = yypvt[-0].expval;
! 		} break;
  case 153:
! /* # line 829 "gram.in" */
! { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 154:
! /* # line 831 "gram.in" */
  { NO66(".EQV. operator");
! 		  yyval.expval = mkexpr(OPEQV, yypvt[-2].expval,yypvt[-0].expval); } break;
  case 155:
! /* # line 834 "gram.in" */
  { NO66(".NEQV. operator");
! 		  yyval.expval = mkexpr(OPNEQV, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 156:
! /* # line 837 "gram.in" */
! { yyval.expval = mkexpr(OPOR, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 157:
! /* # line 839 "gram.in" */
! { yyval.expval = mkexpr(OPAND, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 158:
! /* # line 841 "gram.in" */
! { yyval.expval = mkexpr(OPNOT, yypvt[-0].expval, ENULL); } break;
  case 159:
! /* # line 843 "gram.in" */
  { NO66("concatenation operator //");
! 		  yyval.expval = mkexpr(OPCONCAT, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 160:
! /* # line 847 "gram.in" */
! { yyval.ival = OPPLUS; } break;
  case 161:
! /* # line 848 "gram.in" */
! { yyval.ival = OPMINUS; } break;
  case 162:
! /* # line 851 "gram.in" */
! { yyval.ival = OPEQ; } break;
  case 163:
! /* # line 852 "gram.in" */
! { yyval.ival = OPGT; } break;
  case 164:
! /* # line 853 "gram.in" */
! { yyval.ival = OPLT; } break;
  case 165:
! /* # line 854 "gram.in" */
! { yyval.ival = OPGE; } break;
  case 166:
! /* # line 855 "gram.in" */
! { yyval.ival = OPLE; } break;
  case 167:
! /* # line 856 "gram.in" */
! { yyval.ival = OPNE; } break;
  case 168:
! /* # line 860 "gram.in" */
! { yyval.expval = mkprim(yypvt[-0].namval, LBNULL, CHNULL); } break;
  case 169:
! /* # line 862 "gram.in" */
  { NO66("substring operator :");
! 		  yyval.expval = mkprim(yypvt[-1].namval, LBNULL, yypvt[-0].chval); } break;
  case 170:
! /* # line 865 "gram.in" */
! { yyval.expval = mkprim(yypvt[-3].namval, mklist(yypvt[-1].chval), CHNULL); } break;
  case 171:
! /* # line 867 "gram.in" */
  { NO66("substring operator :");
! 		  yyval.expval = mkprim(yypvt[-4].namval, mklist(yypvt[-2].chval), yypvt[-0].chval); } break;
  case 172:
! /* # line 872 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-3].expval, mkchain((char *)yypvt[-1].expval,CHNULL)); } break;
  case 173:
! /* # line 876 "gram.in" */
! { yyval.expval = 0; } break;
  case 175:
! /* # line 881 "gram.in" */
! { if(yypvt[-0].namval->vclass == CLPARAM)
  			yyval.expval = (expptr) cpexpr(
! 				( (struct Paramblock *) (yypvt[-0].namval) ) -> paramval);
! 		} break;
  case 177:
! /* # line 888 "gram.in" */
! { yyval.expval = mklogcon(1); } break;
  case 178:
! /* # line 889 "gram.in" */
! { yyval.expval = mklogcon(0); } break;
  case 179:
! /* # line 890 "gram.in" */
! { yyval.expval = mkstrcon(toklen, token); } break;
  case 180:
! /* # line 891 "gram.in" */
!  { yyval.expval = mkintcon( convci(toklen, token) ); } break;
  case 181:
! /* # line 892 "gram.in" */
!  { yyval.expval = mkrealcon(tyreal, token); } break;
  case 182:
! /* # line 893 "gram.in" */
!  { yyval.expval = mkrealcon(TYDREAL, token); } break;
  case 184:
! /* # line 898 "gram.in" */
! { yyval.expval = mkcxcon(yypvt[-3].expval,yypvt[-1].expval); } break;
  case 185:
! /* # line 902 "gram.in" */
  { NOEXT("hex constant");
! 		  yyval.expval = mkbitcon(4, toklen, token); } break;
  case 186:
! /* # line 905 "gram.in" */
  { NOEXT("octal constant");
! 		  yyval.expval = mkbitcon(3, toklen, token); } break;
  case 187:
! /* # line 908 "gram.in" */
  { NOEXT("binary constant");
! 		  yyval.expval = mkbitcon(1, toklen, token); } break;
  case 189:
! /* # line 914 "gram.in" */
! { yyval.expval = yypvt[-1].expval; } break;
  case 192:
! /* # line 920 "gram.in" */
! { yyval.expval = mkexpr(yypvt[-1].ival, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 193:
! /* # line 922 "gram.in" */
! { yyval.expval = mkexpr(OPSTAR, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 194:
! /* # line 924 "gram.in" */
! { yyval.expval = mkexpr(OPSLASH, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 195:
! /* # line 926 "gram.in" */
! { yyval.expval = mkexpr(OPPOWER, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 196:
! /* # line 928 "gram.in" */
! { if(yypvt[-1].ival == OPMINUS)
! 			yyval.expval = mkexpr(OPNEG, yypvt[-0].expval, ENULL);
! 		  else	yyval.expval = yypvt[-0].expval;
! 		} break;
  case 197:
! /* # line 933 "gram.in" */
  { NO66("concatenation operator //");
! 		  yyval.expval = mkexpr(OPCONCAT, yypvt[-2].expval, yypvt[-0].expval); } break;
  case 199:
! /* # line 938 "gram.in" */
  {
! 		if(yypvt[-3].labval->labdefined)
  			execerr("no backward DO loops", CNULL);
! 		yypvt[-3].labval->blklevel = blklevel+1;
! 		exdo(yypvt[-3].labval->labelno, NPNULL, yypvt[-0].chval);
! 		} break;
  case 200:
! /* # line 945 "gram.in" */
  {
! 		exdo((int)(ctls - ctlstack - 2), NPNULL, yypvt[-0].chval);
  		NOEXT("DO without label");
! 		} break;
  case 201:
! /* # line 950 "gram.in" */
! { exenddo(NPNULL); } break;
  case 202:
! /* # line 952 "gram.in" */
! { exendif();  thiswasbranch = NO; } break;
  case 204:
! /* # line 955 "gram.in" */
! { exelif(yypvt[-2].expval); lastwasbranch = NO; } break;
  case 205:
! /* # line 957 "gram.in" */
! { exelse(); lastwasbranch = NO; } break;
  case 206:
! /* # line 959 "gram.in" */
! { exendif(); lastwasbranch = NO; } break;
  case 207:
! /* # line 963 "gram.in" */
! { exif(yypvt[-1].expval); } break;
  case 208:
! /* # line 967 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-2].namval, yypvt[-0].chval); } break;
  case 210:
! /* # line 972 "gram.in" */
! { yyval.chval = mkchain(CNULL, (chainp)yypvt[-1].expval); } break;
  case 211:
! /* # line 976 "gram.in" */
! { exequals((struct Primblock *)yypvt[-2].expval, yypvt[-0].expval); } break;
  case 212:
! /* # line 978 "gram.in" */
! { exassign(yypvt[-0].namval, yypvt[-2].labval); } break;
  case 215:
! /* # line 982 "gram.in" */
! { inioctl = NO; } break;
  case 216:
! /* # line 984 "gram.in" */
! { exarif(yypvt[-6].expval, yypvt[-4].labval, yypvt[-2].labval, yypvt[-0].labval);  thiswasbranch = YES; } break;
  case 217:
! /* # line 986 "gram.in" */
! { excall(yypvt[-0].namval, LBNULL, 0, labarray); } break;
  case 218:
! /* # line 988 "gram.in" */
! { excall(yypvt[-2].namval, LBNULL, 0, labarray); } break;
  case 219:
! /* # line 990 "gram.in" */
  { if(nstars < maxlablist)
! 			excall(yypvt[-3].namval, mklist(revchain(yypvt[-1].chval)), nstars, labarray);
  		  else
  			many("alternate returns", 'l', maxlablist);
! 		} break;
  case 220:
! /* # line 996 "gram.in" */
! { exreturn(yypvt[-0].expval);  thiswasbranch = YES; } break;
  case 221:
! /* # line 998 "gram.in" */
! { exstop(yypvt[-2].ival, yypvt[-0].expval);  thiswasbranch = yypvt[-2].ival; } break;
  case 222:
! /* # line 1002 "gram.in" */
! { yyval.labval = mklabel( convci(toklen, token) ); } break;
  case 223:
! /* # line 1006 "gram.in" */
  { if(parstate == OUTSIDE)
  			{
  			newproc();
  			startproc(ESNULL, CLMAIN);
  			}
! 		} break;
  case 224:
! /* # line 1015 "gram.in" */
! { exgoto(yypvt[-0].labval);  thiswasbranch = YES; } break;
  case 225:
! /* # line 1017 "gram.in" */
! { exasgoto(yypvt[-0].namval);  thiswasbranch = YES; } break;
  case 226:
! /* # line 1019 "gram.in" */
! { exasgoto(yypvt[-4].namval);  thiswasbranch = YES; } break;
  case 227:
! /* # line 1021 "gram.in" */
  { if(nstars < maxlablist)
! 			putcmgo(putx(fixtype(yypvt[-0].expval)), nstars, labarray);
  		  else
  			many("labels in computed GOTO list", 'l', maxlablist);
! 		} break;
  case 230:
! /* # line 1033 "gram.in" */
! { nstars = 0; yyval.namval = yypvt[-0].namval; } break;
  case 231:
! /* # line 1037 "gram.in" */
! { yyval.chval = yypvt[-0].expval ? mkchain((char *)yypvt[-0].expval,CHNULL) : CHNULL; } break;
  case 232:
! /* # line 1039 "gram.in" */
! { yyval.chval = yypvt[-0].expval ? mkchain((char *)yypvt[-0].expval, yypvt[-2].chval) : yypvt[-2].chval; } break;
  case 234:
! /* # line 1044 "gram.in" */
! { if(nstars < maxlablist) labarray[nstars++] = yypvt[-0].labval; yyval.expval = 0; } break;
  case 235:
! /* # line 1048 "gram.in" */
! { yyval.ival = 0; } break;
  case 236:
! /* # line 1050 "gram.in" */
! { yyval.ival = 2; } break;
  case 237:
! /* # line 1054 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].expval, CHNULL); } break;
  case 238:
! /* # line 1056 "gram.in" */
! { yyval.chval = hookup(yypvt[-2].chval, mkchain((char *)yypvt[-0].expval,CHNULL) ); } break;
  case 239:
! /* # line 1060 "gram.in" */
  { if(parstate == OUTSIDE)
  			{
  			newproc();
--- 2010,2387 ----
  			default:
  				dclerr("declaration among executables", NPNULL);
  			}
! 		;
!     break;}
  case 139:
! #line 795 "gram.y"
! { yyval.chval = 0; ;
!     break;}
  case 140:
! #line 797 "gram.y"
! { yyval.chval = revchain(yyvsp[0].chval); ;
!     break;}
  case 141:
! #line 801 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); ;
!     break;}
  case 142:
! #line 803 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); ;
!     break;}
  case 144:
! #line 808 "gram.y"
! { yyval.expval = yyvsp[-1].expval; if (yyval.expval->tag == TPRIM)
! 					yyval.expval->primblock.parenused = 1; ;
!     break;}
  case 148:
! #line 816 "gram.y"
! { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 149:
! #line 818 "gram.y"
! { yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 150:
! #line 820 "gram.y"
! { yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 151:
! #line 822 "gram.y"
! { yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 152:
! #line 824 "gram.y"
! { if(yyvsp[-1].ival == OPMINUS)
! 			yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
! 		  else 	yyval.expval = yyvsp[0].expval;
! 		;
!     break;}
  case 153:
! #line 829 "gram.y"
! { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 154:
! #line 831 "gram.y"
  { NO66(".EQV. operator");
! 		  yyval.expval = mkexpr(OPEQV, yyvsp[-2].expval,yyvsp[0].expval); ;
!     break;}
  case 155:
! #line 834 "gram.y"
  { NO66(".NEQV. operator");
! 		  yyval.expval = mkexpr(OPNEQV, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 156:
! #line 837 "gram.y"
! { yyval.expval = mkexpr(OPOR, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 157:
! #line 839 "gram.y"
! { yyval.expval = mkexpr(OPAND, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 158:
! #line 841 "gram.y"
! { yyval.expval = mkexpr(OPNOT, yyvsp[0].expval, ENULL); ;
!     break;}
  case 159:
! #line 843 "gram.y"
  { NO66("concatenation operator //");
! 		  yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 160:
! #line 847 "gram.y"
! { yyval.ival = OPPLUS; ;
!     break;}
  case 161:
! #line 848 "gram.y"
! { yyval.ival = OPMINUS; ;
!     break;}
  case 162:
! #line 851 "gram.y"
! { yyval.ival = OPEQ; ;
!     break;}
  case 163:
! #line 852 "gram.y"
! { yyval.ival = OPGT; ;
!     break;}
  case 164:
! #line 853 "gram.y"
! { yyval.ival = OPLT; ;
!     break;}
  case 165:
! #line 854 "gram.y"
! { yyval.ival = OPGE; ;
!     break;}
  case 166:
! #line 855 "gram.y"
! { yyval.ival = OPLE; ;
!     break;}
  case 167:
! #line 856 "gram.y"
! { yyval.ival = OPNE; ;
!     break;}
  case 168:
! #line 860 "gram.y"
! { yyval.expval = mkprim(yyvsp[0].namval, LBNULL, CHNULL); ;
!     break;}
  case 169:
! #line 862 "gram.y"
  { NO66("substring operator :");
! 		  yyval.expval = mkprim(yyvsp[-1].namval, LBNULL, yyvsp[0].chval); ;
!     break;}
  case 170:
! #line 865 "gram.y"
! { yyval.expval = mkprim(yyvsp[-3].namval, mklist(yyvsp[-1].chval), CHNULL); ;
!     break;}
  case 171:
! #line 867 "gram.y"
  { NO66("substring operator :");
! 		  yyval.expval = mkprim(yyvsp[-4].namval, mklist(yyvsp[-2].chval), yyvsp[0].chval); ;
!     break;}
  case 172:
! #line 872 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[-3].expval, mkchain((char *)yyvsp[-1].expval,CHNULL)); ;
!     break;}
  case 173:
! #line 876 "gram.y"
! { yyval.expval = 0; ;
!     break;}
  case 175:
! #line 881 "gram.y"
! { if(yyvsp[0].namval->vclass == CLPARAM)
  			yyval.expval = (expptr) cpexpr(
! 				( (struct Paramblock *) (yyvsp[0].namval) ) -> paramval);
! 		;
!     break;}
  case 177:
! #line 888 "gram.y"
! { yyval.expval = mklogcon(1); ;
!     break;}
  case 178:
! #line 889 "gram.y"
! { yyval.expval = mklogcon(0); ;
!     break;}
  case 179:
! #line 890 "gram.y"
! { yyval.expval = mkstrcon(toklen, token); ;
!     break;}
  case 180:
! #line 891 "gram.y"
! { yyval.expval = mkintcon( convci(toklen, token) ); ;
!     break;}
  case 181:
! #line 892 "gram.y"
! { yyval.expval = mkrealcon(tyreal, token); ;
!     break;}
  case 182:
! #line 893 "gram.y"
! { yyval.expval = mkrealcon(TYDREAL, token); ;
!     break;}
  case 184:
! #line 898 "gram.y"
! { yyval.expval = mkcxcon(yyvsp[-3].expval,yyvsp[-1].expval); ;
!     break;}
  case 185:
! #line 902 "gram.y"
  { NOEXT("hex constant");
! 		  yyval.expval = mkbitcon(4, toklen, token); ;
!     break;}
  case 186:
! #line 905 "gram.y"
  { NOEXT("octal constant");
! 		  yyval.expval = mkbitcon(3, toklen, token); ;
!     break;}
  case 187:
! #line 908 "gram.y"
  { NOEXT("binary constant");
! 		  yyval.expval = mkbitcon(1, toklen, token); ;
!     break;}
  case 189:
! #line 914 "gram.y"
! { yyval.expval = yyvsp[-1].expval; ;
!     break;}
  case 192:
! #line 920 "gram.y"
! { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 193:
! #line 922 "gram.y"
! { yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 194:
! #line 924 "gram.y"
! { yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 195:
! #line 926 "gram.y"
! { yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 196:
! #line 928 "gram.y"
! { if(yyvsp[-1].ival == OPMINUS)
! 			yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
! 		  else	yyval.expval = yyvsp[0].expval;
! 		;
!     break;}
  case 197:
! #line 933 "gram.y"
  { NO66("concatenation operator //");
! 		  yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 199:
! #line 938 "gram.y"
  {
! 		if(yyvsp[-3].labval->labdefined)
  			execerr("no backward DO loops", CNULL);
! 		yyvsp[-3].labval->blklevel = blklevel+1;
! 		exdo(yyvsp[-3].labval->labelno, NPNULL, yyvsp[0].chval);
! 		;
!     break;}
  case 200:
! #line 945 "gram.y"
  {
! 		exdo((int)(ctls - ctlstack - 2), NPNULL, yyvsp[0].chval);
  		NOEXT("DO without label");
! 		;
!     break;}
  case 201:
! #line 950 "gram.y"
! { exenddo(NPNULL); ;
!     break;}
  case 202:
! #line 952 "gram.y"
! { exendif();  thiswasbranch = NO; ;
!     break;}
  case 204:
! #line 955 "gram.y"
! { exelif(yyvsp[-2].expval); lastwasbranch = NO; ;
!     break;}
  case 205:
! #line 957 "gram.y"
! { exelse(); lastwasbranch = NO; ;
!     break;}
  case 206:
! #line 959 "gram.y"
! { exendif(); lastwasbranch = NO; ;
!     break;}
  case 207:
! #line 963 "gram.y"
! { exif(yyvsp[-1].expval); ;
!     break;}
  case 208:
! #line 967 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[-2].namval, yyvsp[0].chval); ;
!     break;}
  case 210:
! #line 972 "gram.y"
! { yyval.chval = mkchain(CNULL, (chainp)yyvsp[-1].expval); ;
!     break;}
  case 211:
! #line 976 "gram.y"
! { exequals((struct Primblock *)yyvsp[-2].expval, yyvsp[0].expval); ;
!     break;}
  case 212:
! #line 978 "gram.y"
! { exassign(yyvsp[0].namval, yyvsp[-2].labval); ;
!     break;}
  case 215:
! #line 982 "gram.y"
! { inioctl = NO; ;
!     break;}
  case 216:
! #line 984 "gram.y"
! { exarif(yyvsp[-6].expval, yyvsp[-4].labval, yyvsp[-2].labval, yyvsp[0].labval);  thiswasbranch = YES; ;
!     break;}
  case 217:
! #line 986 "gram.y"
! { excall(yyvsp[0].namval, LBNULL, 0, labarray); ;
!     break;}
  case 218:
! #line 988 "gram.y"
! { excall(yyvsp[-2].namval, LBNULL, 0, labarray); ;
!     break;}
  case 219:
! #line 990 "gram.y"
  { if(nstars < maxlablist)
! 			excall(yyvsp[-3].namval, mklist(revchain(yyvsp[-1].chval)), nstars, labarray);
  		  else
  			many("alternate returns", 'l', maxlablist);
! 		;
!     break;}
  case 220:
! #line 996 "gram.y"
! { exreturn(yyvsp[0].expval);  thiswasbranch = YES; ;
!     break;}
  case 221:
! #line 998 "gram.y"
! { exstop(yyvsp[-2].ival, yyvsp[0].expval);  thiswasbranch = yyvsp[-2].ival; ;
!     break;}
  case 222:
! #line 1002 "gram.y"
! { yyval.labval = mklabel( convci(toklen, token) ); ;
!     break;}
  case 223:
! #line 1006 "gram.y"
  { if(parstate == OUTSIDE)
  			{
  			newproc();
  			startproc(ESNULL, CLMAIN);
  			}
! 		;
!     break;}
  case 224:
! #line 1015 "gram.y"
! { exgoto(yyvsp[0].labval);  thiswasbranch = YES; ;
!     break;}
  case 225:
! #line 1017 "gram.y"
! { exasgoto(yyvsp[0].namval);  thiswasbranch = YES; ;
!     break;}
  case 226:
! #line 1019 "gram.y"
! { exasgoto(yyvsp[-4].namval);  thiswasbranch = YES; ;
!     break;}
  case 227:
! #line 1021 "gram.y"
  { if(nstars < maxlablist)
! 			putcmgo(putx(fixtype(yyvsp[0].expval)), nstars, labarray);
  		  else
  			many("labels in computed GOTO list", 'l', maxlablist);
! 		;
!     break;}
  case 230:
! #line 1033 "gram.y"
! { nstars = 0; yyval.namval = yyvsp[0].namval; ;
!     break;}
  case 231:
! #line 1037 "gram.y"
! { yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval,CHNULL) : CHNULL; ;
!     break;}
  case 232:
! #line 1039 "gram.y"
! { yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval) : yyvsp[-2].chval; ;
!     break;}
  case 234:
! #line 1044 "gram.y"
! { if(nstars < maxlablist) labarray[nstars++] = yyvsp[0].labval; yyval.expval = 0; ;
!     break;}
  case 235:
! #line 1048 "gram.y"
! { yyval.ival = 0; ;
!     break;}
  case 236:
! #line 1050 "gram.y"
! { yyval.ival = 2; ;
!     break;}
  case 237:
! #line 1054 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); ;
!     break;}
  case 238:
! #line 1056 "gram.y"
! { yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].expval,CHNULL) ); ;
!     break;}
  case 239:
! #line 1060 "gram.y"
  { if(parstate == OUTSIDE)
  			{
  			newproc();
***************
*** 1640,1829 ****
  /* This next statement depends on the ordering of the state table encoding */
  
  		  if(parstate < INDATA) enddcl();
! 		} break;
  case 240:
! /* # line 1073 "gram.in" */
! { intonly = YES; } break;
  case 241:
! /* # line 1077 "gram.in" */
! { intonly = NO; } break;
  case 242:
! /* # line 1082 "gram.in" */
! { endio(); } break;
  case 244:
! /* # line 1087 "gram.in" */
! { ioclause(IOSUNIT, yypvt[-0].expval); endioctl(); } break;
  case 245:
! /* # line 1089 "gram.in" */
! { ioclause(IOSUNIT, ENULL); endioctl(); } break;
  case 246:
! /* # line 1091 "gram.in" */
! { ioclause(IOSUNIT, IOSTDERR); endioctl(); } break;
  case 248:
! /* # line 1094 "gram.in" */
! { doio(CHNULL); } break;
  case 249:
! /* # line 1096 "gram.in" */
! { doio(CHNULL); } break;
  case 250:
! /* # line 1098 "gram.in" */
! { doio(revchain(yypvt[-0].chval)); } break;
  case 251:
! /* # line 1100 "gram.in" */
! { doio(revchain(yypvt[-0].chval)); } break;
  case 252:
! /* # line 1102 "gram.in" */
! { doio(revchain(yypvt[-0].chval)); } break;
  case 253:
! /* # line 1104 "gram.in" */
! { doio(CHNULL); } break;
  case 254:
! /* # line 1106 "gram.in" */
! { doio(revchain(yypvt[-0].chval)); } break;
  case 255:
! /* # line 1108 "gram.in" */
! { doio(CHNULL); } break;
  case 256:
! /* # line 1110 "gram.in" */
! { doio(revchain(yypvt[-0].chval)); } break;
  case 258:
! /* # line 1117 "gram.in" */
! { iostmt = IOBACKSPACE; } break;
  case 259:
! /* # line 1119 "gram.in" */
! { iostmt = IOREWIND; } break;
  case 260:
! /* # line 1121 "gram.in" */
! { iostmt = IOENDFILE; } break;
  case 262:
! /* # line 1128 "gram.in" */
! { iostmt = IOINQUIRE; } break;
  case 263:
! /* # line 1130 "gram.in" */
! { iostmt = IOOPEN; } break;
  case 264:
! /* # line 1132 "gram.in" */
! { iostmt = IOCLOSE; } break;
  case 265:
! /* # line 1136 "gram.in" */
  {
  		ioclause(IOSUNIT, ENULL);
! 		ioclause(IOSFMT, yypvt[-0].expval);
  		endioctl();
! 		} break;
  case 266:
! /* # line 1142 "gram.in" */
  {
  		ioclause(IOSUNIT, ENULL);
  		ioclause(IOSFMT, ENULL);
  		endioctl();
! 		} break;
  case 267:
! /* # line 1150 "gram.in" */
  {
! 		  ioclause(IOSUNIT, yypvt[-1].expval);
  		  endioctl();
! 		} break;
  case 268:
! /* # line 1155 "gram.in" */
! { endioctl(); } break;
  case 271:
! /* # line 1163 "gram.in" */
! { ioclause(IOSPOSITIONAL, yypvt[-0].expval); } break;
  case 272:
! /* # line 1165 "gram.in" */
! { ioclause(IOSPOSITIONAL, ENULL); } break;
  case 273:
! /* # line 1167 "gram.in" */
! { ioclause(IOSPOSITIONAL, IOSTDERR); } break;
  case 274:
! /* # line 1169 "gram.in" */
! { ioclause(yypvt[-1].ival, yypvt[-0].expval); } break;
  case 275:
! /* # line 1171 "gram.in" */
! { ioclause(yypvt[-1].ival, ENULL); } break;
  case 276:
! /* # line 1173 "gram.in" */
! { ioclause(yypvt[-1].ival, IOSTDERR); } break;
  case 277:
! /* # line 1177 "gram.in" */
! { yyval.ival = iocname(); } break;
  case 278:
! /* # line 1181 "gram.in" */
! { iostmt = IOREAD; } break;
  case 279:
! /* # line 1185 "gram.in" */
! { iostmt = IOWRITE; } break;
  case 280:
! /* # line 1189 "gram.in" */
  {
  		iostmt = IOWRITE;
  		ioclause(IOSUNIT, ENULL);
! 		ioclause(IOSFMT, yypvt[-1].expval);
  		endioctl();
! 		} break;
  case 281:
! /* # line 1196 "gram.in" */
  {
  		iostmt = IOWRITE;
  		ioclause(IOSUNIT, ENULL);
  		ioclause(IOSFMT, ENULL);
  		endioctl();
! 		} break;
  case 282:
! /* # line 1205 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].tagval, CHNULL); } break;
  case 283:
! /* # line 1207 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].tagval, yypvt[-2].chval); } break;
  case 284:
! /* # line 1211 "gram.in" */
! { yyval.tagval = (tagptr) yypvt[-0].expval; } break;
  case 285:
! /* # line 1213 "gram.in" */
! { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval,revchain(yypvt[-3].chval)); } break;
  case 286:
! /* # line 1217 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].expval, CHNULL); } break;
  case 287:
! /* # line 1219 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].tagval, CHNULL); } break;
  case 289:
! /* # line 1224 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].expval, mkchain((char *)yypvt[-2].expval, CHNULL) ); } break;
  case 290:
! /* # line 1226 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].tagval, mkchain((char *)yypvt[-2].expval, CHNULL) ); } break;
  case 291:
! /* # line 1228 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].expval, mkchain((char *)yypvt[-2].tagval, CHNULL) ); } break;
  case 292:
! /* # line 1230 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].tagval, mkchain((char *)yypvt[-2].tagval, CHNULL) ); } break;
  case 293:
! /* # line 1232 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].expval, yypvt[-2].chval); } break;
  case 294:
! /* # line 1234 "gram.in" */
! { yyval.chval = mkchain((char *)yypvt[-0].tagval, yypvt[-2].chval); } break;
  case 295:
! /* # line 1238 "gram.in" */
! { yyval.tagval = (tagptr) yypvt[-0].expval; } break;
  case 296:
! /* # line 1240 "gram.in" */
! { yyval.tagval = (tagptr) yypvt[-1].expval; } break;
  case 297:
! /* # line 1242 "gram.in" */
! { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, mkchain((char *)yypvt[-3].expval, CHNULL) ); } break;
  case 298:
! /* # line 1244 "gram.in" */
! { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, mkchain((char *)yypvt[-3].tagval, CHNULL) ); } break;
  case 299:
! /* # line 1246 "gram.in" */
! { yyval.tagval = (tagptr) mkiodo(yypvt[-1].chval, revchain(yypvt[-3].chval)); } break;
  case 300:
! /* # line 1250 "gram.in" */
! { startioctl(); } break;
! 	}
! 	goto yystack;  /* stack new state and value */
  }
--- 2391,2831 ----
  /* This next statement depends on the ordering of the state table encoding */
  
  		  if(parstate < INDATA) enddcl();
! 		;
!     break;}
  case 240:
! #line 1073 "gram.y"
! { intonly = YES; ;
!     break;}
  case 241:
! #line 1077 "gram.y"
! { intonly = NO; ;
!     break;}
  case 242:
! #line 1082 "gram.y"
! { endio(); ;
!     break;}
  case 244:
! #line 1087 "gram.y"
! { ioclause(IOSUNIT, yyvsp[0].expval); endioctl(); ;
!     break;}
  case 245:
! #line 1089 "gram.y"
! { ioclause(IOSUNIT, ENULL); endioctl(); ;
!     break;}
  case 246:
! #line 1091 "gram.y"
! { ioclause(IOSUNIT, IOSTDERR); endioctl(); ;
!     break;}
  case 248:
! #line 1094 "gram.y"
! { doio(CHNULL); ;
!     break;}
  case 249:
! #line 1096 "gram.y"
! { doio(CHNULL); ;
!     break;}
  case 250:
! #line 1098 "gram.y"
! { doio(revchain(yyvsp[0].chval)); ;
!     break;}
  case 251:
! #line 1100 "gram.y"
! { doio(revchain(yyvsp[0].chval)); ;
!     break;}
  case 252:
! #line 1102 "gram.y"
! { doio(revchain(yyvsp[0].chval)); ;
!     break;}
  case 253:
! #line 1104 "gram.y"
! { doio(CHNULL); ;
!     break;}
  case 254:
! #line 1106 "gram.y"
! { doio(revchain(yyvsp[0].chval)); ;
!     break;}
  case 255:
! #line 1108 "gram.y"
! { doio(CHNULL); ;
!     break;}
  case 256:
! #line 1110 "gram.y"
! { doio(revchain(yyvsp[0].chval)); ;
!     break;}
  case 258:
! #line 1117 "gram.y"
! { iostmt = IOBACKSPACE; ;
!     break;}
  case 259:
! #line 1119 "gram.y"
! { iostmt = IOREWIND; ;
!     break;}
  case 260:
! #line 1121 "gram.y"
! { iostmt = IOENDFILE; ;
!     break;}
  case 262:
! #line 1128 "gram.y"
! { iostmt = IOINQUIRE; ;
!     break;}
  case 263:
! #line 1130 "gram.y"
! { iostmt = IOOPEN; ;
!     break;}
  case 264:
! #line 1132 "gram.y"
! { iostmt = IOCLOSE; ;
!     break;}
  case 265:
! #line 1136 "gram.y"
  {
  		ioclause(IOSUNIT, ENULL);
! 		ioclause(IOSFMT, yyvsp[0].expval);
  		endioctl();
! 		;
!     break;}
  case 266:
! #line 1142 "gram.y"
  {
  		ioclause(IOSUNIT, ENULL);
  		ioclause(IOSFMT, ENULL);
  		endioctl();
! 		;
!     break;}
  case 267:
! #line 1150 "gram.y"
  {
! 		  ioclause(IOSUNIT, yyvsp[-1].expval);
  		  endioctl();
! 		;
!     break;}
  case 268:
! #line 1155 "gram.y"
! { endioctl(); ;
!     break;}
  case 271:
! #line 1163 "gram.y"
! { ioclause(IOSPOSITIONAL, yyvsp[0].expval); ;
!     break;}
  case 272:
! #line 1165 "gram.y"
! { ioclause(IOSPOSITIONAL, ENULL); ;
!     break;}
  case 273:
! #line 1167 "gram.y"
! { ioclause(IOSPOSITIONAL, IOSTDERR); ;
!     break;}
  case 274:
! #line 1169 "gram.y"
! { ioclause(yyvsp[-1].ival, yyvsp[0].expval); ;
!     break;}
  case 275:
! #line 1171 "gram.y"
! { ioclause(yyvsp[-1].ival, ENULL); ;
!     break;}
  case 276:
! #line 1173 "gram.y"
! { ioclause(yyvsp[-1].ival, IOSTDERR); ;
!     break;}
  case 277:
! #line 1177 "gram.y"
! { yyval.ival = iocname(); ;
!     break;}
  case 278:
! #line 1181 "gram.y"
! { iostmt = IOREAD; ;
!     break;}
  case 279:
! #line 1185 "gram.y"
! { iostmt = IOWRITE; ;
!     break;}
  case 280:
! #line 1189 "gram.y"
  {
  		iostmt = IOWRITE;
  		ioclause(IOSUNIT, ENULL);
! 		ioclause(IOSFMT, yyvsp[-1].expval);
  		endioctl();
! 		;
!     break;}
  case 281:
! #line 1196 "gram.y"
  {
  		iostmt = IOWRITE;
  		ioclause(IOSUNIT, ENULL);
  		ioclause(IOSFMT, ENULL);
  		endioctl();
! 		;
!     break;}
  case 282:
! #line 1205 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); ;
!     break;}
  case 283:
! #line 1207 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); ;
!     break;}
  case 284:
! #line 1211 "gram.y"
! { yyval.tagval = (tagptr) yyvsp[0].expval; ;
!     break;}
  case 285:
! #line 1213 "gram.y"
! { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval,revchain(yyvsp[-3].chval)); ;
!     break;}
  case 286:
! #line 1217 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); ;
!     break;}
  case 287:
! #line 1219 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); ;
!     break;}
  case 289:
! #line 1224 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); ;
!     break;}
  case 290:
! #line 1226 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); ;
!     break;}
  case 291:
! #line 1228 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); ;
!     break;}
  case 292:
! #line 1230 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); ;
!     break;}
  case 293:
! #line 1232 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); ;
!     break;}
  case 294:
! #line 1234 "gram.y"
! { yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); ;
!     break;}
  case 295:
! #line 1238 "gram.y"
! { yyval.tagval = (tagptr) yyvsp[0].expval; ;
!     break;}
  case 296:
! #line 1240 "gram.y"
! { yyval.tagval = (tagptr) yyvsp[-1].expval; ;
!     break;}
  case 297:
! #line 1242 "gram.y"
! { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].expval, CHNULL) ); ;
!     break;}
  case 298:
! #line 1244 "gram.y"
! { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].tagval, CHNULL) ); ;
!     break;}
  case 299:
! #line 1246 "gram.y"
! { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, revchain(yyvsp[-3].chval)); ;
!     break;}
  case 300:
! #line 1250 "gram.y"
! { startioctl(); ;
!     break;}
! }
!    /* the action file gets copied in in place of this dollarsign */
! #line 457 "/usr/local/lib/bison.simple"
! 
!   yyvsp -= yylen;
!   yyssp -= yylen;
! #ifdef YYLSP_NEEDED
!   yylsp -= yylen;
! #endif
! 
! #if YYDEBUG != 0
!   if (yydebug)
!     {
!       short *ssp1 = yyss - 1;
!       fprintf (stderr, "state stack now");
!       while (ssp1 != yyssp)
! 	fprintf (stderr, " %d", *++ssp1);
!       fprintf (stderr, "\n");
!     }
! #endif
! 
!   *++yyvsp = yyval;
! 
! #ifdef YYLSP_NEEDED
!   yylsp++;
!   if (yylen == 0)
!     {
!       yylsp->first_line = yylloc.first_line;
!       yylsp->first_column = yylloc.first_column;
!       yylsp->last_line = (yylsp-1)->last_line;
!       yylsp->last_column = (yylsp-1)->last_column;
!       yylsp->text = 0;
!     }
!   else
!     {
!       yylsp->last_line = (yylsp+yylen-1)->last_line;
!       yylsp->last_column = (yylsp+yylen-1)->last_column;
!     }
! #endif
! 
!   /* Now "shift" the result of the reduction.
!      Determine what state that goes to,
!      based on the state we popped back to
!      and the rule number reduced by.  */
! 
!   yyn = yyr1[yyn];
! 
!   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
!   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
!     yystate = yytable[yystate];
!   else
!     yystate = yydefgoto[yyn - YYNTBASE];
! 
!   goto yynewstate;
! 
! yyerrlab:   /* here on detecting error */
! 
!   if (! yyerrstatus)
!     /* If not already recovering from an error, report this error.  */
!     {
!       ++yynerrs;
! 
! #ifdef YYERROR_VERBOSE
!       yyn = yypact[yystate];
! 
!       if (yyn > YYFLAG && yyn < YYLAST)
! 	{
! 	  int size = 0;
! 	  char *msg;
! 	  int x, count;
! 
! 	  count = 0;
! 	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
! 	  for (x = (yyn < 0 ? -yyn : 0);
! 	       x < (sizeof(yytname) / sizeof(char *)); x++)
! 	    if (yycheck[x + yyn] == x)
! 	      size += strlen(yytname[x]) + 15, count++;
! 	  msg = (char *) malloc(size + 15);
! 	  if (msg != 0)
! 	    {
! 	      strcpy(msg, "parse error");
! 
! 	      if (count < 5)
! 		{
! 		  count = 0;
! 		  for (x = (yyn < 0 ? -yyn : 0);
! 		       x < (sizeof(yytname) / sizeof(char *)); x++)
! 		    if (yycheck[x + yyn] == x)
! 		      {
! 			strcat(msg, count == 0 ? ", expecting `" : " or `");
! 			strcat(msg, yytname[x]);
! 			strcat(msg, "'");
! 			count++;
! 		      }
! 		}
! 	      yyerror(msg);
! 	      free(msg);
! 	    }
! 	  else
! 	    yyerror ("parse error; also virtual memory exceeded");
! 	}
!       else
! #endif /* YYERROR_VERBOSE */
! 	yyerror("parse error");
!     }
! 
!   goto yyerrlab1;
! yyerrlab1:   /* here on error raised explicitly by an action */
! 
!   if (yyerrstatus == 3)
!     {
!       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
! 
!       /* return failure if at end of input */
!       if (yychar == YYEOF)
! 	YYABORT;
! 
! #if YYDEBUG != 0
!       if (yydebug)
! 	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
! #endif
! 
!       yychar = YYEMPTY;
!     }
! 
!   /* Else will try to reuse lookahead token
!      after shifting the error token.  */
! 
!   yyerrstatus = 3;		/* Each real token shifted decrements this */
! 
!   goto yyerrhandle;
! 
! yyerrdefault:  /* current state does not do anything special for the error token. */
! 
! #if 0
!   /* This is wrong; only states that explicitly want error tokens
!      should shift them.  */
!   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
!   if (yyn) goto yydefault;
! #endif
! 
! yyerrpop:   /* pop the current state because it cannot handle the error token */
! 
!   if (yyssp == yyss) YYABORT;
!   yyvsp--;
!   yystate = *--yyssp;
! #ifdef YYLSP_NEEDED
!   yylsp--;
! #endif
! 
! #if YYDEBUG != 0
!   if (yydebug)
!     {
!       short *ssp1 = yyss - 1;
!       fprintf (stderr, "Error: state stack now");
!       while (ssp1 != yyssp)
! 	fprintf (stderr, " %d", *++ssp1);
!       fprintf (stderr, "\n");
!     }
! #endif
! 
! yyerrhandle:
! 
!   yyn = yypact[yystate];
!   if (yyn == YYFLAG)
!     goto yyerrdefault;
! 
!   yyn += YYTERROR;
!   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
!     goto yyerrdefault;
! 
!   yyn = yytable[yyn];
!   if (yyn < 0)
!     {
!       if (yyn == YYFLAG)
! 	goto yyerrpop;
!       yyn = -yyn;
!       goto yyreduce;
!     }
!   else if (yyn == 0)
!     goto yyerrpop;
! 
!   if (yyn == YYFINAL)
!     YYACCEPT;
! 
! #if YYDEBUG != 0
!   if (yydebug)
!     fprintf(stderr, "Shifting error token, ");
! #endif
! 
!   *++yyvsp = yylval;
! #ifdef YYLSP_NEEDED
!   *++yylsp = yylloc;
! #endif
! 
!   yystate = yyn;
!   goto yynewstate;
  }
+ #line 1252 "gram.y"
diff -c ORIG-src/makefile src/makefile
*** ORIG-src/makefile	Wed Apr 28 07:08:42 1993
--- src/makefile	Thu Nov 18 03:07:40 1993
***************
*** 1,6 ****
  #	Makefile for f2c, a Fortran 77 to C converter
  
! g = -g
  CFLAGS = $g
  SHELL = /bin/sh
  
--- 1,9 ----
  #	Makefile for f2c, a Fortran 77 to C converter
  
! CC = gcc
! YACC = bison -y
! 
! g = -O2
  CFLAGS = $g
  SHELL = /bin/sh
  
***************
*** 8,16 ****
  	  expr.o exec.o intr.o io.o misc.o error.o mem.o names.o \
  	  output.o p1output.o pread.o put.o putpcc.o vax.o formatdata.o \
  	  parse_args.o niceprintf.o cds.o sysdep.o version.o
! OBJECTS = $(OBJECTSd) malloc.o
  
! all: xsum.out f2c
  
  f2c: $(OBJECTS)
  	$(CC) $(LDFLAGS) $(OBJECTS) -o f2c
--- 11,23 ----
  	  expr.o exec.o intr.o io.o misc.o error.o mem.o names.o \
  	  output.o p1output.o pread.o put.o putpcc.o vax.o formatdata.o \
  	  parse_args.o niceprintf.o cds.o sysdep.o version.o
! OBJECTS = $(OBJECTSd)
! #malloc.o
! 
! .c.o:
! 	$(CC) -c $(CFLAGS) $*.c
  
! all: f2c
  
  f2c: $(OBJECTS)
  	$(CC) $(LDFLAGS) $(OBJECTS) -o f2c
***************
*** 17,27 ****
  
  gram.c:	gram.head gram.dcl gram.expr gram.exec gram.io defs.h tokdefs.h
  	( sed <tokdefs.h "s/#define/%token/" ;\
! 		cat gram.head gram.dcl gram.expr gram.exec gram.io ) >gram.in
! 	$(YACC) $(YFLAGS) gram.in
  	echo "(expect 4 shift/reduce)"
  	sed 's/^# line.*/\/* & *\//' y.tab.c >gram.c
! 	rm -f gram.in y.tab.c
  
  $(OBJECTSd): defs.h ftypes.h defines.h machdefs.h sysdep.h
  
--- 24,38 ----
  
  gram.c:	gram.head gram.dcl gram.expr gram.exec gram.io defs.h tokdefs.h
  	( sed <tokdefs.h "s/#define/%token/" ;\
! 		cat gram.head gram.dcl gram.expr gram.exec gram.io ) >gram.y
! 	$(YACC) $(YFLAGS) gram.y
  	echo "(expect 4 shift/reduce)"
  	sed 's/^# line.*/\/* & *\//' y.tab.c >gram.c
! 	rm -f gram.y y.tab.c
! 
! # -O2 is too much for my 4 meg Amiga :-(
! gram.o: gram.c
! 	$(CC) -c -O gram.c
  
  $(OBJECTSd): defs.h ftypes.h defines.h machdefs.h sysdep.h
  
diff -c ORIG-src/sysdep.c src/sysdep.c
*** ORIG-src/sysdep.c	Wed Apr 28 07:10:00 1993
--- src/sysdep.c	Wed Nov 17 12:16:04 1993
***************
*** 40,45 ****
--- 40,48 ----
  #ifndef TMPDIR
  #ifdef MSDOS
  #define TMPDIR ""
+ #endif
+ #ifdef AMIGA
+ #define TMPDIR "T:"
  #else
  #define TMPDIR "/tmp"
  #endif
***************
*** 99,106 ****
  	sprintf(p1_file, "%sf2c_p1f", t);
  	sprintf(p1_bakfile, "%sf2c_p1fb", t);
  	sprintf(sortfname, "%sf2c_sort", t);
  #else
! 	int pid = getpid();
  	sprintf(c_functions, "%s/f2c%d_func", tmpdir, pid);
  	sprintf(initfname, "%s/f2c%d_rd", tmpdir, pid);
  	sprintf(blkdfname, "%s/f2c%d_blkd", tmpdir, pid);
--- 102,118 ----
  	sprintf(p1_file, "%sf2c_p1f", t);
  	sprintf(p1_bakfile, "%sf2c_p1fb", t);
  	sprintf(sortfname, "%sf2c_sort", t);
+ #endif
+ #ifdef AMIGA
+  	int pid = getpid();
+ 	sprintf(c_functions, "%sf2c%d_func", tmpdir, pid);
+ 	sprintf(initfname, "%sf2c%d_rd", tmpdir, pid);
+ 	sprintf(blkdfname, "%sf2c%d_blkd", tmpdir, pid);
+ 	sprintf(p1_file, "%sf2c%d_p1f", tmpdir, pid);
+ 	sprintf(p1_bakfile, "%sf2c%d_p1fb", tmpdir, pid);
+ 	sprintf(sortfname, "%sf2c%d_sort", tmpdir, pid);
  #else
!  	int pid = getpid();
  	sprintf(c_functions, "%s/f2c%d_func", tmpdir, pid);
  	sprintf(initfname, "%s/f2c%d_rd", tmpdir, pid);
  	sprintf(blkdfname, "%s/f2c%d_blkd", tmpdir, pid);
