error = (ffeinfo_kindtype (info) != FFEINFO_kindtypeINTEGERDEFAULT);
error = (ffeinfo_kindtype (info) != ffecom_label_kind ());
ffeexpr_finished_ (ffelexToken t){  ffeexprExpr_ operand;		/* This is B in -B or A+B. */  ffebld expr;  ffeexprCallback callback;  ffeexprStack_ s;  ffebldConstant constnode;	/* For detecting magical number. */  ffelexToken ft;		/* Temporary copy of first token in				   expression. */  ffelexHandler next;  ffeinfo info;  bool error = FALSE;  while (((operand = ffeexpr_stack_->exprstack) != NULL)	 && ((operand->previous != NULL) || (operand->type != FFEEXPR_exprtypeOPERAND_)))    {      if (operand->type == FFEEXPR_exprtypeOPERAND_)	ffeexpr_reduce_ ();      else	{	  if (ffest_ffebad_start (FFEBAD_MISSING_OPERAND_FOR_OPERATOR))	    {	      ffebad_here (0, ffelex_token_where_line (t),			   ffelex_token_where_column (t));	      ffebad_here (1, ffelex_token_where_line (ffeexpr_stack_->exprstack->token),	      ffelex_token_where_column (ffeexpr_stack_->exprstack->token));	      ffebad_finish ();	    }	  ffeexpr_stack_->exprstack = operand->previous;	/* Pop the useless								   operator. */	  ffeexpr_expr_kill_ (operand);	}    }  assert ((operand == NULL) || (operand->previous == NULL));  ffebld_pool_pop ();  if (operand == NULL)    expr = NULL;  else    {      expr = operand->u.operand;      info = ffebld_info (expr);      if ((ffebld_op (expr) == FFEBLD_opCONTER)	  && (ffebld_conter_orig (expr) == NULL)	  && ffebld_constant_is_magical (constnode = ffebld_conter (expr)))	{	  ffetarget_integer_bad_magical (operand->token);	}      ffeexpr_expr_kill_ (operand);      ffeexpr_stack_->exprstack = NULL;    }  ft = ffeexpr_stack_->first_token;again:				/* :::::::::::::::::::: */  switch (ffeexpr_stack_->context)    {    case FFEEXPR_contextLET:    case FFEEXPR_contextSFUNCDEF:      error = (expr == NULL)	|| (ffeinfo_rank (info) != 0);      break;    case FFEEXPR_contextPAREN_:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  break;	}      break;    case FFEEXPR_contextPARENFILENUM_:      if (ffelex_token_type (t) != FFELEX_typeCOMMA)	ffeexpr_stack_->context = FFEEXPR_contextPAREN_;      else	ffeexpr_stack_->context = FFEEXPR_contextFILENUM;      goto again;		/* :::::::::::::::::::: */    case FFEEXPR_contextPARENFILEUNIT_:      if (ffelex_token_type (t) != FFELEX_typeCOMMA)	ffeexpr_stack_->context = FFEEXPR_contextPAREN_;      else	ffeexpr_stack_->context = FFEEXPR_contextFILEUNIT;      goto again;		/* :::::::::::::::::::: */    case FFEEXPR_contextACTUALARGEXPR_:    case FFEEXPR_contextSFUNCDEFACTUALARGEXPR_:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  if (!ffe_is_ugly_args ()	      && ffebad_start (FFEBAD_ACTUALARG))	    {	      ffebad_here (0, ffelex_token_where_line (ft),			   ffelex_token_where_column (ft));	      ffebad_finish ();	    }	  break;	default:	  break;	}      error = ((expr == NULL) && ffe_is_pedantic ())	|| ((expr != NULL) && (ffeinfo_rank (info) != 0));      break;    case FFEEXPR_contextACTUALARG_:    case FFEEXPR_contextSFUNCDEFACTUALARG_:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:#if 0				/* Should never get here. */	  expr = ffeexpr_convert (expr, ft, ft,				  FFEINFO_basictypeINTEGER,				  FFEINFO_kindtypeINTEGERDEFAULT,				  0,				  FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);#else	  assert ("why hollerith/typeless in actualarg_?" == NULL);#endif	  break;	default:	  break;	}      switch ((expr == NULL) ? FFEBLD_opANY : ffebld_op (expr))	{	case FFEBLD_opSYMTER:	case FFEBLD_opPERCENT_LOC:	case FFEBLD_opPERCENT_VAL:	case FFEBLD_opPERCENT_REF:	case FFEBLD_opPERCENT_DESCR:	  error = FALSE;	  break;	default:	  error = (expr != NULL) && (ffeinfo_rank (info) != 0);	  break;	}      {	ffesymbol s;	ffeinfoWhere where;	ffeinfoKind kind;	if (!error	    && (expr != NULL)	    && (ffebld_op (expr) == FFEBLD_opSYMTER)	    && ((s = ffebld_symter (expr)), (where = ffesymbol_where (s)),		(where == FFEINFO_whereINTRINSIC)		|| (where == FFEINFO_whereGLOBAL)		|| ((where == FFEINFO_whereDUMMY)		    && ((kind = ffesymbol_kind (s)),			(kind == FFEINFO_kindFUNCTION)			|| (kind == FFEINFO_kindSUBROUTINE))))	    && !ffesymbol_explicitwhere (s))	  {	    ffebad_start (where == FFEINFO_whereINTRINSIC			  ? FFEBAD_NEED_INTRINSIC : FFEBAD_NEED_EXTERNAL);	    ffebad_here (0, ffelex_token_where_line (ft),			 ffelex_token_where_column (ft));	    ffebad_string (ffesymbol_text (s));	    ffebad_finish ();	    ffesymbol_signal_change (s);	    ffesymbol_set_explicitwhere (s, TRUE);	    ffesymbol_signal_unreported (s);	  }      }      break;    case FFEEXPR_contextINDEX_:    case FFEEXPR_contextSFUNCDEFINDEX_:    case FFEEXPR_contextRETURN:      if ((error = (expr != NULL) && (ffeinfo_rank (info) != 0)))	break;      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeNONE:	  error = FALSE;	  break;	case FFEINFO_basictypeLOGICAL:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeREAL:	case FFEINFO_basictypeCOMPLEX:	  if (ffe_is_pedantic ())	    {	      error = TRUE;	      break;	    }	  /* Fall through. */	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  error = TRUE;	  break;	}      break;			/* expr==NULL ok for substring; element case				   caught by callback. */    case FFEEXPR_contextDO:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  error = !ffe_is_ugly_logint ();	  if (!ffeexpr_stack_->is_rhs)	    break;		/* Don't convert lhs variable. */	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,				  ffeinfo_kindtype (ffebld_info (expr)), 0,				  FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  if (!ffeexpr_stack_->is_rhs)	    {	      error = TRUE;	      break;		/* Don't convert lhs variable. */	    }	  break;	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeREAL:	  break;	default:	  error = TRUE;	  break;	}      if (!ffeexpr_stack_->is_rhs	  && (ffebld_op (expr) != FFEBLD_opSYMTER))	error = TRUE;      break;    case FFEEXPR_contextDOWHILE:    case FFEEXPR_contextIF:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeINTEGER:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeLOGICAL:	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextASSIGN:    case FFEEXPR_contextAGOTO:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeINTEGER:	  error = (ffeinfo_kindtype (info) != FFEINFO_kindtypeINTEGERDEFAULT);	  break;	case FFEINFO_basictypeLOGICAL:	  error = !ffe_is_ugly_logint ()	    || (ffeinfo_kindtype (info) != FFEINFO_kindtypeLOGICALDEFAULT);	  break;	default:	  error = TRUE;	  break;	}      if ((expr == NULL) || (ffeinfo_rank (info) != 0)	  || (ffebld_op (expr) != FFEBLD_opSYMTER))	error = TRUE;      break;    case FFEEXPR_contextCGOTO:    case FFEEXPR_contextFORMAT:    case FFEEXPR_contextDIMLIST:    case FFEEXPR_contextFILENUM:	/* See equiv code in _ambig_. */      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeREAL:	case FFEINFO_basictypeCOMPLEX:	  if (ffe_is_pedantic ())	    {	      error = TRUE;	      break;	    }	  /* Fall through. */	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextARITHIF:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  if (ffe_is_pedantic ())	    {	      error = TRUE;	      break;	    }	  /* Fall through. */	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeREAL:	  error = FALSE;	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextSTOP:      if ((error = (expr != NULL) && (ffeinfo_rank (info) != 0)))	break;      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeINTEGER:	  error = (ffeinfo_kindtype (info) != FFEINFO_kindtypeINTEGERDEFAULT);	  break;	case FFEINFO_basictypeCHARACTER:	  error = (ffeinfo_kindtype (info) != FFEINFO_kindtypeCHARACTERDEFAULT);	  break;	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	case FFEINFO_basictypeNONE:	  error = FALSE;	  break;	default:	  error = TRUE;	  break;	}      if ((expr != NULL) && ((ffebld_op (expr) != FFEBLD_opCONTER)			     || (ffebld_conter_orig (expr) != NULL)))	error = TRUE;      break;    case FFEEXPR_contextINCLUDE:      error = (expr == NULL) || (ffeinfo_rank (info) != 0)	|| (ffeinfo_basictype (info) != FFEINFO_basictypeCHARACTER)	|| (ffebld_op (expr) != FFEBLD_opCONTER)	|| (ffebld_conter_orig (expr) != NULL);      break;    case FFEEXPR_contextSELECTCASE:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeCHARACTER:	case FFEINFO_basictypeLOGICAL:	  error = FALSE;	  break;	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextCASE:      if ((error = (expr != NULL) && (ffeinfo_rank (info) != 0)))	break;      switch ((expr == NULL) ? FFEINFO_basictypeINTEGER	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeCHARACTER:	case FFEINFO_basictypeLOGICAL:	  error = FALSE;	  break;	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  error = TRUE;	  break;	}      if ((expr != NULL) && (ffebld_op (expr) != FFEBLD_opCONTER))	error = TRUE;      break;    case FFEEXPR_contextCHARACTERSIZE:    case FFEEXPR_contextKINDTYPE:    case FFEEXPR_contextDIMLISTCOMMON:      if ((error = (expr != NULL) && (ffeinfo_rank (info) != 0)))	break;      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeREAL:	case FFEINFO_basictypeCOMPLEX:	  if (ffe_is_pedantic ())	    {	      error = TRUE;	      break;	    }	  /* Fall through. */	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  error = TRUE;	  break;	}      if ((expr != NULL) && (ffebld_op (expr) != FFEBLD_opCONTER))	error = TRUE;      break;    case FFEEXPR_contextEQVINDEX_:      if ((error = (expr != NULL) && (ffeinfo_rank (info) != 0)))	break;      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeNONE:	  error = FALSE;	  break;	case FFEINFO_basictypeLOGICAL:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeREAL:	case FFEINFO_basictypeCOMPLEX:	  if (ffe_is_pedantic ())	    {	      error = TRUE;	      break;	    }	  /* Fall through. */	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  error = TRUE;	  break;	}      if ((expr != NULL) && (ffebld_op (expr) != FFEBLD_opCONTER))	error = TRUE;      break;    case FFEEXPR_contextPARAMETER:      if (ffeexpr_stack_->is_rhs)	error = (expr == NULL) || (ffeinfo_rank (info) != 0)	  || (ffebld_op (expr) != FFEBLD_opCONTER);      else	error = (expr == NULL) || (ffeinfo_rank (info) != 0)	  || (ffebld_op (expr) != FFEBLD_opSYMTER);      break;    case FFEEXPR_contextINDEXORACTUALARG_:      if (ffelex_token_type (t) == FFELEX_typeCOLON)	ffeexpr_stack_->context = FFEEXPR_contextINDEX_;      else	ffeexpr_stack_->context = FFEEXPR_contextACTUALARG_;      goto again;		/* :::::::::::::::::::: */    case FFEEXPR_contextINDEXORACTUALARGEXPR_:      if (ffelex_token_type (t) == FFELEX_typeCOLON)	ffeexpr_stack_->context = FFEEXPR_contextINDEX_;      else	ffeexpr_stack_->context = FFEEXPR_contextACTUALARGEXPR_;      goto again;		/* :::::::::::::::::::: */    case FFEEXPR_contextSFUNCDEFINDEXORACTUALARG_:      if (ffelex_token_type (t) == FFELEX_typeCOLON)	ffeexpr_stack_->context = FFEEXPR_contextSFUNCDEFINDEX_;      else	ffeexpr_stack_->context = FFEEXPR_contextSFUNCDEFACTUALARG_;      goto again;		/* :::::::::::::::::::: */    case FFEEXPR_contextSFUNCDEFINDEXORACTUALARGEXPR_:      if (ffelex_token_type (t) == FFELEX_typeCOLON)	ffeexpr_stack_->context = FFEEXPR_contextSFUNCDEFINDEX_;      else	ffeexpr_stack_->context = FFEEXPR_contextSFUNCDEFACTUALARGEXPR_;      goto again;		/* :::::::::::::::::::: */    case FFEEXPR_contextIMPDOCTRL_:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      if (!ffeexpr_stack_->is_rhs	  && (ffebld_op (expr) != FFEBLD_opSYMTER))	error = TRUE;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  error = error && !ffe_is_ugly_logint ();	  if (!ffeexpr_stack_->is_rhs)	    break;		/* Don't convert lhs variable. */	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,				  ffeinfo_kindtype (ffebld_info (expr)), 0,				  FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  break;	case FFEINFO_basictypeREAL:	  if (!ffeexpr_stack_->is_rhs	      && ffe_is_warn_surprising ()	      && !error)	    {	      ffebad_start (FFEBAD_DO_REAL);	/* See error message!!! */	      ffebad_here (0, ffelex_token_where_line (ft),			   ffelex_token_where_column (ft));	      ffebad_string (ffelex_token_text (ft));	      ffebad_finish ();	    }	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextDATAIMPDOCTRL_:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      if (ffeexpr_stack_->is_rhs)	{	  if ((ffebld_op (expr) != FFEBLD_opCONTER)	      && (ffeinfo_where (info) != FFEINFO_whereIMMEDIATE))	    error = TRUE;	}      else if ((ffebld_op (expr) != FFEBLD_opSYMTER)	       || (ffeinfo_where (info) != FFEINFO_whereIMMEDIATE))	error = TRUE;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  error = error	    && (ffeinfo_kindtype (info) != FFEINFO_kindtypeLOGICALDEFAULT);	  if (!ffeexpr_stack_->is_rhs)	    break;		/* Don't convert lhs variable. */	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	case FFEINFO_basictypeINTEGER:	  error = error &&	    (ffeinfo_kindtype (info) != FFEINFO_kindtypeINTEGERDEFAULT);	  break;	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	case FFEINFO_basictypeREAL:	  if (!ffeexpr_stack_->is_rhs	      && ffe_is_warn_surprising ()	      && !error)	    {	      ffebad_start (FFEBAD_DO_REAL);	/* See error message!!! */	      ffebad_here (0, ffelex_token_where_line (ft),			   ffelex_token_where_column (ft));	      ffebad_string (ffelex_token_text (ft));	      ffebad_finish ();	    }	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextIMPDOITEM_:      if (ffelex_token_type (t) == FFELEX_typeEQUALS)	{	  ffeexpr_stack_->is_rhs = FALSE;	  ffeexpr_stack_->context = FFEEXPR_contextIMPDOCTRL_;	  goto again;		/* :::::::::::::::::::: */	}      /* Fall through. */    case FFEEXPR_contextIOLIST:    case FFEEXPR_contextFILEVXTCODE:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  break;	}      error = (expr == NULL)	|| ((ffeinfo_rank (info) != 0)	    && ((ffebld_op (expr) != FFEBLD_opSYMTER)		|| (ffesymbol_arraysize (ffebld_symter (expr)) == NULL)		|| (ffebld_op (ffesymbol_arraysize (ffebld_symter (expr)))		    == FFEBLD_opSTAR)));	/* Bad if null expr, or if						   array that is not a SYMTER						   (can't happen yet, I						   think) or has a NULL or						   STAR (assumed) array						   size. */      break;    case FFEEXPR_contextIMPDOITEMDF_:      if (ffelex_token_type (t) == FFELEX_typeEQUALS)	{	  ffeexpr_stack_->is_rhs = FALSE;	  ffeexpr_stack_->context = FFEEXPR_contextIMPDOCTRL_;	  goto again;		/* :::::::::::::::::::: */	}      /* Fall through. */    case FFEEXPR_contextIOLISTDF:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  break;	}      error	= (expr == NULL)	  || ((ffeinfo_basictype (info) == FFEINFO_basictypeCHARACTER)	      && (ffeinfo_kindtype (info) != FFEINFO_kindtypeCHARACTERDEFAULT))	    || ((ffeinfo_rank (info) != 0)		&& ((ffebld_op (expr) != FFEBLD_opSYMTER)		    || (ffesymbol_arraysize (ffebld_symter (expr)) == NULL)		    || (ffebld_op (ffesymbol_arraysize (ffebld_symter (expr)))			== FFEBLD_opSTAR)));	/* Bad if null expr,						   non-default-kindtype						   character expr, or if						   array that is not a SYMTER						   (can't happen yet, I						   think) or has a NULL or						   STAR (assumed) array						   size. */      break;    case FFEEXPR_contextDATAIMPDOITEM_:      error = (expr == NULL)	|| (ffebld_op (expr) != FFEBLD_opARRAYREF)	|| ((ffeinfo_where (info) != FFEINFO_whereFLEETING_CADDR)	    && (ffeinfo_where (info) != FFEINFO_whereFLEETING_IADDR));      break;    case FFEEXPR_contextDATAIMPDOINDEX_:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeREAL:	case FFEINFO_basictypeCOMPLEX:	  if (ffe_is_pedantic ())	    {	      error = TRUE;	      break;	    }	  /* Fall through. */	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  error = FALSE;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	default:	  error = TRUE;	  break;	}      if ((ffeinfo_where (info) != FFEINFO_whereCONSTANT)	  && (ffeinfo_where (info) != FFEINFO_whereIMMEDIATE))	error = TRUE;      break;    case FFEEXPR_contextDATA:      if (expr == NULL)	error = TRUE;      else if (ffeexpr_stack_->is_rhs)	error = (ffebld_op (expr) != FFEBLD_opCONTER);      else if (ffebld_op (expr) == FFEBLD_opSYMTER)	error = FALSE;      else	error = (ffeinfo_where (info) != FFEINFO_whereFLEETING_CADDR);      break;    case FFEEXPR_contextINITVAL:      error = (expr == NULL) || (ffebld_op (expr) != FFEBLD_opCONTER);      break;    case FFEEXPR_contextEQUIVALENCE:      if (expr == NULL)	error = TRUE;      else if (ffebld_op (expr) == FFEBLD_opSYMTER)	error = FALSE;      else	error = (ffeinfo_where (info) != FFEINFO_whereFLEETING_CADDR);      break;    case FFEEXPR_contextFILEASSOC:    case FFEEXPR_contextFILEINT:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeINTEGER:	  error = FALSE;	  break;	default:	  error = TRUE;	  break;	}      if ((expr == NULL) || (ffeinfo_rank (info) != 0))	error = TRUE;      break;    case FFEEXPR_contextFILEDFINT:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeINTEGER:	  error = (ffeinfo_kindtype (info) != FFEINFO_kindtypeINTEGERDEFAULT);	  break;	default:	  error = TRUE;	  break;	}      if ((expr == NULL) || (ffeinfo_rank (info) != 0))	error = TRUE;      break;    case FFEEXPR_contextFILELOG:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  error = FALSE;	  break;	default:	  error = TRUE;	  break;	}      if ((expr == NULL) || (ffeinfo_rank (info) != 0))	error = TRUE;      break;    case FFEEXPR_contextFILECHAR:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeCHARACTER:	  error = FALSE;	  break;	default:	  error = TRUE;	  break;	}      if ((expr == NULL) || (ffeinfo_rank (info) != 0))	error = TRUE;      break;    case FFEEXPR_contextFILENUMCHAR:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeREAL:	case FFEINFO_basictypeCOMPLEX:	  if (ffe_is_pedantic ())	    {	      error = TRUE;	      break;	    }	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeCHARACTER:	  error = FALSE;	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextFILEDFCHAR:      if ((error = (expr == NULL) || (ffeinfo_rank (info) != 0)))	break;      switch (ffeinfo_basictype (info))	{	case FFEINFO_basictypeCHARACTER:	  error	    = (ffeinfo_kindtype (info)	       != FFEINFO_kindtypeCHARACTERDEFAULT);	  break;	default:	  error = TRUE;	  break;	}      if (!ffeexpr_stack_->is_rhs	  && (ffebld_op (expr) == FFEBLD_opSUBSTR))	error = TRUE;      break;    case FFEEXPR_contextFILEUNIT:	/* See equiv code in _ambig_. */      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeLOGICAL:	  if ((error = (ffeinfo_rank (info) != 0)))	    break;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeLOGICAL,	     FFEINFO_kindtypeLOGICALDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  /* Fall through. */	case FFEINFO_basictypeREAL:	case FFEINFO_basictypeCOMPLEX:	  if ((error = (ffeinfo_rank (info) != 0)))	    break;	  if (ffe_is_pedantic ())	    {	      error = TRUE;	      break;	    }	  /* Fall through. */	case FFEINFO_basictypeINTEGER:	case FFEINFO_basictypeHOLLERITH:	case FFEINFO_basictypeTYPELESS:	  if ((error = (ffeinfo_rank (info) != 0)))	    break;	  expr = ffeexpr_convert (expr, ft, ft, FFEINFO_basictypeINTEGER,	     FFEINFO_kindtypeINTEGERDEFAULT, 0, FFETARGET_charactersizeNONE,				  FFEEXPR_contextLET);	  break;	case FFEINFO_basictypeCHARACTER:	  switch (ffebld_op (expr))	    {			/* As if _lhs had been called instead of				   _rhs. */	    case FFEBLD_opSYMTER:	      error		= (ffeinfo_where (ffebld_info (expr)) == FFEINFO_whereCONSTANT);	      break;	    case FFEBLD_opSUBSTR:	      error = (ffeinfo_where (ffebld_info (expr))		       == FFEINFO_whereCONSTANT_SUBOBJECT);	      break;	    case FFEBLD_opARRAYREF:	      error = FALSE;	      break;	    default:	      error = TRUE;	      break;	    }	  if (!error	   && ((ffeinfo_kindtype (info) != FFEINFO_kindtypeCHARACTERDEFAULT)	       || ((ffeinfo_rank (info) != 0)		   && ((ffebld_op (expr) != FFEBLD_opSYMTER)		     || (ffesymbol_arraysize (ffebld_symter (expr)) == NULL)		  || (ffebld_op (ffesymbol_arraysize (ffebld_symter (expr)))		      == FFEBLD_opSTAR)))))	/* Bad if						   non-default-kindtype						   character expr, or if						   array that is not a SYMTER						   (can't happen yet, I						   think), or has a NULL or						   STAR (assumed) array						   size. */	    error = TRUE;	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextFILEFORMAT:      switch ((expr == NULL) ? FFEINFO_basictypeNONE	      : ffeinfo_basictype (info))	{	case FFEINFO_basictypeINTEGER:	  error = (expr == NULL)	    || ((ffeinfo_rank (info) != 0)		&& ffe_is_pedantic ())	/* F77 C5. */	    || (ffebld_op (expr) != FFEBLD_opSYMTER);	  break;	case FFEINFO_basictypeLOGICAL:	case FFEINFO_basictypeREAL:	case FFEINFO_basictypeCOMPLEX:	  /* F77 C5 -- must be an array of hollerith.  */	  error	    = ffe_is_pedantic ()	      || (ffeinfo_rank (info) == 0);	  break;	case FFEINFO_basictypeCHARACTER:	  if ((ffeinfo_kindtype (info) != FFEINFO_kindtypeCHARACTERDEFAULT)	      || ((ffeinfo_rank (info) != 0)		  && ((ffebld_op (expr) != FFEBLD_opSYMTER)		      || (ffesymbol_arraysize (ffebld_symter (expr)) == NULL)		      || (ffebld_op (ffesymbol_arraysize (ffebld_symter (expr)))			  == FFEBLD_opSTAR))))	/* Bad if						   non-default-kindtype						   character expr, or if						   array that is not a SYMTER						   (can't happen yet, I						   think), or has a NULL or						   STAR (assumed) array						   size. */	    error = TRUE;	  else	    error = FALSE;	  break;	default:	  error = TRUE;	  break;	}      break;    case FFEEXPR_contextLOC_:      /* See also ffeintrin_check_loc_.  */      if ((expr == NULL)	  || (ffeinfo_kind (info) != FFEINFO_kindENTITY)	  || ((ffebld_op (expr) != FFEBLD_opSYMTER)	      && (ffebld_op (expr) != FFEBLD_opSUBSTR)	      && (ffebld_op (expr) != FFEBLD_opARRAYREF)))	error = TRUE;      break;    default:      error = FALSE;      break;    }  if (error && ((expr == NULL) || (ffebld_op (expr) != FFEBLD_opANY)))    {      ffebad_start (FFEBAD_EXPR_WRONG);      ffebad_here (0, ffelex_token_where_line (ft),		   ffelex_token_where_column (ft));      ffebad_finish ();      expr = ffebld_new_any ();      ffebld_set_info (expr, ffeinfo_new_any ());    }  callback = ffeexpr_stack_->callback;  s = ffeexpr_stack_->previous;  malloc_kill_ks (ffe_pool_program_unit (), ffeexpr_stack_,		  sizeof (*ffeexpr_stack_));  ffeexpr_stack_ = s;  next = (ffelexHandler) (*callback) (ft, expr, t);  ffelex_token_kill (ft);  return (ffelexHandler) next;}