public String promptCommaList(MOB mob,
								  String oldVal,
								  int showNumber,
								  int showFlag,
								  String FieldDisp,
								  String help,
								  CMEval eval,
								  Object[] choices) throws IOException
	{
		if((showFlag>0)&&(showFlag!=showNumber))
			return oldVal;
		mob.tell(showNumber+". "+FieldDisp+": '"+oldVal+"'.");
		if((showFlag!=showNumber)&&(showFlag>-999))
			return oldVal;
		String newName="?";
		final String promptStr=L("Enter a value to add/remove@x1\n\r:",(help!=null?" (?)":""));
		final String oldOldVal=oldVal;
		while((mob.session()!=null)&&(!mob.session().isStopped()))
		{
			newName=mob.session().prompt(promptStr,"");
			if(newName.equals("?")&&(help!=null))
				mob.tell(help);
			else
			if(newName.trim().length()==0)
			{
				if(oldVal.equals(oldOldVal))
					mob.tell(L("(no change)"));
				return oldVal;
			}
			else
			if(newName.equalsIgnoreCase("null"))
				oldVal="";
			else
			{
				if(eval!=null)
				try
				{
					final Object value=eval.eval(newName,choices,false);
					if(value instanceof String)
						newName=(String)value;
				}
				catch(final CMException e)
				{
					mob.tell(e.getMessage());
					continue;
				}
				final List<String> curSet=CMParms.parseCommas(oldVal,true);
				String oldOne=null;
				for(final String c : curSet)
				{
					if(c.equalsIgnoreCase(newName))
						oldOne=c;
				}
				if(oldOne!=null)
				{
					curSet.remove(oldOne);
					mob.tell(L("'@x1' removed.",oldOne));
				}
				else
				{
					curSet.add(newName);
					mob.tell(L("'@x1' added.",newName));
				}
				oldVal=CMParms.toListString(curSet);
			}
		}
		mob.tell(L("(no change)"));
		return oldVal;
	}