&extents));
&extents, is_ugly_assumed));
ffestc_R524_item (ffelexToken name, ffesttDimList dims){  ffesymbol s;  ffebld array_size;  ffebld extents;  ffesymbolAttrs sa;  ffesymbolAttrs na;  ffestpDimtype nd;  ffeinfoRank rank;  ffestc_check_item_ ();  assert (name != NULL);  assert (dims != NULL);  if (!ffestc_ok_)    return;  ffesta_set_outpooldisp (FFESTA_pooldispPRESERVE);  s = ffesymbol_declare_local (name, FALSE);  sa = ffesymbol_attrs (s);  /* First figure out what kind of object this is based solely on the current     object situation (dimension list). */  nd = ffestt_dimlist_type (dims);  switch (nd)    {    case FFESTP_dimtypeKNOWN:      na = FFESYMBOL_attrsARRAY;      break;    case FFESTP_dimtypeADJUSTABLE:      na = FFESYMBOL_attrsARRAY | FFESYMBOL_attrsADJUSTABLE;      break;    case FFESTP_dimtypeASSUMED:      na = FFESYMBOL_attrsARRAY | FFESYMBOL_attrsANYSIZE;      break;    case FFESTP_dimtypeADJUSTABLEASSUMED:      na = FFESYMBOL_attrsARRAY | FFESYMBOL_attrsADJUSTABLE	| FFESYMBOL_attrsANYSIZE;      break;    default:      assert ("Unexpected dims type" == NULL);      na = FFESYMBOL_attrsetNONE;      break;    }  /* Now figure out what kind of object we've got based on previous     declarations of or references to the object. */  if (!ffesymbol_is_specable (s))    na = FFESYMBOL_attrsetNONE;	/* Can't dcl sym ref'd in sfuncdef. */  else if (sa & FFESYMBOL_attrsANY)    na = FFESYMBOL_attrsANY;  else if (!ffesta_is_entry_valid	   && (sa & FFESYMBOL_attrsANYLEN))    na = FFESYMBOL_attrsetNONE;  else if ((sa & FFESYMBOL_attrsARRAY)	   || ((sa & (FFESYMBOL_attrsCOMMON		      | FFESYMBOL_attrsEQUIV		      | FFESYMBOL_attrsNAMELIST		      | FFESYMBOL_attrsSAVE))	       && (na & (FFESYMBOL_attrsADJUSTABLE			 | FFESYMBOL_attrsANYSIZE))))    na = FFESYMBOL_attrsetNONE;  else if (!(sa & ~(FFESYMBOL_attrsADJUSTABLE		    | FFESYMBOL_attrsANYLEN		    | FFESYMBOL_attrsANYSIZE		    | FFESYMBOL_attrsCOMMON		    | FFESYMBOL_attrsDUMMY		    | FFESYMBOL_attrsEQUIV		    | FFESYMBOL_attrsNAMELIST		    | FFESYMBOL_attrsSAVE		    | FFESYMBOL_attrsTYPE)))    na |= sa;  else    na = FFESYMBOL_attrsetNONE;  /* Now see what we've got for a new object: NONE means a new error cropped     up; ANY means an old error to be ignored; otherwise, everything's ok,     update the object (symbol) and continue on. */  if (na == FFESYMBOL_attrsetNONE)    ffesymbol_error (s, name);  else if (!(na & FFESYMBOL_attrsANY))    {      ffesymbol_set_attrs (s, na);      ffesymbol_set_state (s, FFESYMBOL_stateSEEN);      ffesymbol_set_dims (s, ffestt_dimlist_as_expr (dims, &rank,						     &array_size,						     &extents));      ffesymbol_set_arraysize (s, array_size);      ffesymbol_set_extents (s, extents);      if (!(0 && ffe_is_90 ())	  && (ffebld_op (array_size) == FFEBLD_opCONTER)	  && (ffebld_constant_integerdefault (ffebld_conter (array_size))	      == 0))	{	  ffebad_start (FFEBAD_ZERO_ARRAY);	  ffebad_here (0, ffelex_token_where_line (name),		       ffelex_token_where_column (name));	  ffebad_finish ();	}      ffesymbol_set_info (s,			  ffeinfo_new (ffesymbol_basictype (s),				       ffesymbol_kindtype (s),				       rank,				       ffesymbol_kind (s),				       ffesymbol_where (s),				       ffesymbol_size (s)));    }  ffesymbol_signal_unreported (s);  ffestd_R524_item (name, dims);}