Beispiel #1
0
 /* (non-Javadoc)
  * @see semantic.CBaseDataEntity#GetSpecialAssignment(parser.expression.CTerminal)
  */
 public CBaseActionEntity GetSpecialAssignment(CTerminal term, CBaseEntityFactory factory, int l) {
   String value = term.GetValue();
   CEntitySetConstant eAssign = factory.NewEntitySetConstant(l);
   if (value.equals(CCobolConstantList.ZERO.m_Name)
       || value.equals(CCobolConstantList.ZEROS.m_Name)
       || value.equals(CCobolConstantList.ZEROES.m_Name)) {
     eAssign.SetToZero(this);
   } else if (value.equals(CCobolConstantList.SPACE.m_Name)
       || value.equals(CCobolConstantList.SPACES.m_Name)) {
     eAssign.SetToSpace(this);
   } else if (value.equals(CCobolConstantList.LOW_VALUE.m_Name)
       || value.equals(CCobolConstantList.LOW_VALUES.m_Name)) {
     eAssign.SetToLowValue(this);
   } else if (value.equals(CCobolConstantList.HIGH_VALUE.m_Name)
       || value.equals(CCobolConstantList.HIGH_VALUES.m_Name)) {
     eAssign.SetToHighValue(this);
   } else if (term.IsNumber() && (m_Type.equals("picX") || m_Type.equals(""))) {
     String type = m_Type;
     if (type.equals("")) type = "GROUP";
     CEntityAssign asgn = factory.NewEntityAssign(l);
     asgn.SetValue(factory.NewEntityString(value));
     asgn.AddRefTo(this);
     Transcoder.logInfo(
         l,
         "Number converted to string to move into " + type + " var (" + GetName() + "): " + value);
     RegisterWritingAction(asgn);
     return asgn;
   } else {
     return null;
   }
   return eAssign;
 }
Beispiel #2
0
 public CBaseEntityCondition GetSpecialCondition(
     int nLine,
     String value,
     CBaseEntityCondition.EConditionType type,
     CBaseEntityFactory factory) {
   CEntityCondIsConstant eCond = factory.NewEntityCondIsConstant();
   if (value.equals("ZERO") || value.equals("ZEROS") || value.equals("ZEROES")) {
     eCond.SetIsZero(this);
   }
   /*else if (value.equals("SPACES") && type == CBaseEntityCondition.EConditionType.IS_GREATER_THAN)
   {
   	CEntityCondCompare comp = factory.NewEntityCondCompare() ;
   	comp.SetGreaterThan(factory.NewEntityExprTerminal(this),
   					factory.NewEntityExprTerminal(factory.NewEntityConstant(CEntityConstant.Value.SPACES))) ;
   	RegisterVarTesting(comp) ;
   	return comp ;
   }*/
   else if (value.equals("SPACE") || value.equals("SPACES")) {
     eCond.SetIsSpace(this);
   } else if (value.equals("LOW-VALUE") || value.equals("LOW-VALUES")) // CT Added for full support
   {
     eCond.SetIsLowValue(this);
   } else if (value.equals("HIGH-VALUE") || value.equals("HIGH-VALUES")) {
     eCond.SetIsHighValue(this);
   }
   //		else if (m_Type.equals("picX"))
   //		{
   //			try
   //			{
   //				int n = Integer.parseInt(value) ;
   //				if (type == CBaseEntityCondition.EConditionType.IS_DIFFERENT)
   //				{
   //					CEntityCondEquals cond = factory.NewEntityCondEquals() ;
   //					cond.SetDifferentCondition(factory.NewEntityExprTerminal(this),
   // factory.NewEntityExprTerminal(factory.NewEntityString(value))) ;
   //					m_logger.info("line "+getLine()+" : numeric value converted to string to compare with
   // PICX var : " + value) ;
   //					return cond ;
   //				}
   //				else if (type == CBaseEntityCondition.EConditionType.IS_EQUAL)
   //				{
   //					CEntityCondEquals cond = factory.NewEntityCondEquals() ;
   //					cond.SetEqualCondition(factory.NewEntityExprTerminal(this),
   // factory.NewEntityExprTerminal(factory.NewEntityString(value))) ;
   //					m_logger.info("line "+getLine()+" : numeric value converted to string to compare with
   // PICX var : " + value) ;
   //					return cond ;
   //				}
   //				else
   //				{
   //					m_logger.info("line "+getLine()+" : numeric value to compare with EDIT var not managed :
   // " + value) ;
   //					return null ;
   //				}
   //			}
   //			catch (NumberFormatException e)
   //			{
   //				return null ;
   //			}
   //		}
   else {
     return null;
   }
   RegisterVarTesting(eCond);
   if (type == CBaseEntityCondition.EConditionType.IS_DIFFERENT) {
     eCond.SetOpposite();
     return eCond;
   } else if (type == CBaseEntityCondition.EConditionType.IS_EQUAL) {
     return eCond;
   } else if (type == CBaseEntityCondition.EConditionType.IS_LESS_THAN
       && (value.equals("HIGH-VALUE") || value.equals("HIGH-VALUES"))) // CT Added for full support
   {
     eCond.SetOpposite();
     return eCond;
   } else if (type == CBaseEntityCondition.EConditionType.IS_GREATER_THAN
       && (value.equals("LOW-VALUE") || value.equals("LOW-VALUES"))) // CT Added for full support
   {
     eCond.SetOpposite();
     return eCond;
   } else {
     return null;
   }
 }
Beispiel #3
0
 public CDataEntity GetSubStringReference(
     CBaseEntityExpression start, CBaseEntityExpression length, CBaseEntityFactory factory) {
   CSubStringAttributReference ref = factory.NewEntitySubString(getLine());
   ref.SetReference(this, start, length);
   return ref;
 };