package com.millistream.www;

import com.millistream.www.fields.F;
import java.util.ArrayList;
import java.lang.StringBuilder;

/**
 * This class represents a field of a message received from the server.
 * 
 * @author Liang Qu
 * @version 0.1, 03/25/10
 * @see com.millistream.www.fields.F
 *
 */
public class MessageField {
	private final int tag;
	private final String value;

	/**
	 * Constructs a new <code>MessageField</code> object.
	 * 
	 * @param tag field tag
	 * @param value field value
	 * @see com.millistream.www.fields.F
	 */
	public MessageField(int tag, String value) {
		this.tag = tag;
		this.value = value;
	}

	/**
	 * Returns the Field Tag
	 * @return the field tag
	 * @see com.millistream.www.fields.F
	 *
	*/
	public int getTag() {
		return tag;
	}

	/**
	 * Returns the Field Value
	 * @return the field value as a string
	 *
	*/
	public String getValue() {
		return value;
	}

	/**
	 * Returns a tabular field value as a string array
	 * @return the tabular field value as a String[][]
	 *
	*/
	public String[][] getTabularValue() {
		int rows = 0;
		int max_columns = 0;
		int column_start = 0;
		boolean is_escaped_row = false;

		if (value == null)
			return new String[0][0];

		for (int i = 0; i < value.length(); i++) {
			if (is_escaped_row) {
				is_escaped_row = false;
			} else if (value.charAt(i) == '|') {
				rows++;
				int columns = 1;
				boolean is_escaped_column = false;

				for (int j = column_start; j < i; j++) {
					if (is_escaped_column) {
						is_escaped_column = false;
					} else if (value.charAt(j) == ' ') {
						columns++;
					} else if (value.charAt(j) == '\\') {
						is_escaped_column = true;
					}
				}

				if (columns > max_columns)
					max_columns = columns;

				column_start = i + 1;
			} else if (value.charAt(i) == '\\') {
				is_escaped_row = true;
			}
		}

		if (max_columns != 0)
			rows++;

		if (rows == 0)
			return new String[0][0];

		String[][] array = new String[rows][max_columns];

		rows = 0;
		max_columns = 0;
		column_start = 0;
		is_escaped_row = false;
		StringBuilder column = new StringBuilder();

		for (int i = 0; i < value.length() + 1; i++) {
			if (is_escaped_row) {
				is_escaped_row = false;
			} else if (i == value.length() || value.charAt(i) == '|') {
				column.setLength(0);
				max_columns = 0;
				boolean is_escaped_column = false;

				for (int j = column_start; j < i; j++) {
					if (is_escaped_column) {
						is_escaped_column = false;
						column.append(value.charAt(j));
					} else if (value.charAt(j) == ' ') {
						array[rows][max_columns++] = new String(column.toString());
						column.setLength(0);
					} else if (value.charAt(j) == '\\') {
						is_escaped_column = true;
					} else {
						column.append(value.charAt(j));
					}
				}

				if (column.length() != 0)
					array[rows][max_columns++] = new String(column.toString());

				column_start = i + 1;
				rows++;
			} else if (value.charAt(i) == '\\') {
				is_escaped_row = true;
			}
		}

		return array;
	}

	/**
	 * Constructs and returns a (debug) String of the Field Tag
	 *
	*/
	public String toString() {
		String tagStr = null;

		switch (tag) {
		case F.LANGUAGE:
			tagStr = "F.LANGUAGE";
			break;
		case F.HEADLINE:
			tagStr = "F.HEADLINE";
			break;
		case F.TEXTBODY:
			tagStr = "F.TEXTBODY";
			break;
		case F.DATE:
			tagStr = "F.DATE";
			break;
		case F.TIME:
			tagStr = "F.TIME";
			break;
		case F.BIDPRICE:
			tagStr = "F.BIDPRICE";
			break;
		case F.ASKPRICE:
			tagStr = "F.ASKPRICE";
			break;
		case F.LASTPRICE:
			tagStr = "F.LASTPRICE";
			break;
		case F.DAYHIGHPRICE:
			tagStr = "F.DAYHIGHPRICE";
			break;
		case F.DAYLOWPRICE:
			tagStr = "F.DAYLOWPRICE";
			break;
		case F.QUANTITY:
			tagStr = "F.QUANTITY";
			break;
		case F.TURNOVER:
			tagStr = "F.TURNOVER";
			break;
		case F.TRADEPRICE:
			tagStr = "F.TRADEPRICE";
			break;
		case F.TRADEQUANTITY:
			tagStr = "F.TRADEQUANTITY";
			break;
		case F.TRADEREFERENCE:
			tagStr = "F.TRADEREFERENCE";
			break;
		case F.TRADECODE:
			tagStr = "F.TRADECODE";
			break;
		case F.ORDERLEVEL:
			tagStr = "F.ORDERLEVEL";
			break;
		case F.NUMBIDORDERS:
			tagStr = "F.NUMBIDORDERS";
			break;
		case F.NUMASKORDERS:
			tagStr = "F.NUMASKORDERS";
			break;
		case F.BIDQUANTITY:
			tagStr = "F.BIDQUANTITY";
			break;
		case F.ASKQUANTITY:
			tagStr = "F.ASKQUANTITY";
			break;
		case F.SYMBOL:
			tagStr = "F.SYMBOL";
			break;
		case F.NAME:
			tagStr = "F.NAME";
			break;
		case F.ISIN:
			tagStr = "F.ISIN";
			break;
		case F.BOARDLOT:
			tagStr = "F.BOARDLOT";
			break;
		case F.INSTRUMENTTYPE:
			tagStr = "F.INSTRUMENTTYPE";
			break;
		case F.INSTRUMENTSUBTYPE:
			tagStr = "F.INSTRUMENTSUBTYPE";
			break;
		case F.DERIVATIVEINDICATOR:
			tagStr = "F.DERIVATIVEINDICATOR";
			break;
		case F.EXERCISETYPE:
			tagStr = "F.EXERCISETYPE";
			break;
		case F.ISSUECURRENCY:
			tagStr = "F.ISSUECURRENCY";
			break;
		case F.TRADECURRENCY:
			tagStr = "F.TRADECURRENCY";
			break;
		case F.BASECURRENCY:
			tagStr = "F.BASECURRENCY";
			break;
		case F.QUOTECURRENCY:
			tagStr = "F.QUOTECURRENCY";
			break;
		case F.ISSUEDATE:
			tagStr = "F.ISSUEDATE";
			break;
		case F.STRIKEDATE:
			tagStr = "F.STRIKEDATE";
			break;
		case F.STRIKEPRICE:
			tagStr = "F.STRIKEPRICE";
			break;
		case F.TRADETIME:
			tagStr = "F.TRADETIME";
			break;
		case F.NUMTRADES:
			tagStr = "F.NUMTRADES";
			break;
		case F.EXECUTEDSIDE:
			tagStr = "F.EXECUTEDSIDE";
			break;
		case F.OPENPRICE:
			tagStr = "F.OPENPRICE";
			break;
		case F.CLOSEPRICE:
			tagStr = "F.CLOSEPRICE";
			break;
		case F.CLOSEBIDPRICE:
			tagStr = "F.CLOSEBIDPRICE";
			break;
		case F.CLOSEASKPRICE:
			tagStr = "F.CLOSEASKPRICE";
			break;
		case F.CLOSEDAYHIGHPRICE:
			tagStr = "F.CLOSEDAYHIGHPRICE";
			break;
		case F.CLOSEDAYLOWPRICE:
			tagStr = "F.CLOSEDAYLOWPRICE";
			break;
		case F.CLOSEQUANTITY:
			tagStr = "F.CLOSEQUANTITY";
			break;
		case F.CLOSETURNOVER:
			tagStr = "F.CLOSETURNOVER";
			break;
		case F.CLOSENUMTRADES:
			tagStr = "F.CLOSENUMTRADES";
			break;
		case F.NEWSID:
			tagStr = "F.NEWSID";
			break;
		case F.NEWSIDREPLACE:
			tagStr = "F.NEWSIDREPLACE";
			break;
		case F.REQUESTID:
			tagStr = "F.REQUESTID";
			break;
		case F.REQUESTSTATUS:
			tagStr = "F.REQUESTSTATUS";
			break;
		case F.REQUESTTYPE:
			tagStr = "F.REQUESTTYPE";
			break;
		case F.REQUESTCLASS:
			tagStr = "F.REQUESTCLASS";
			break;
		case F.INSREFLIST:
			tagStr = "F.INSREFLIST";
			break;
		case F.MARKETPLACE:
			tagStr = "F.MARKETPLACE";
			break;
		case F.LIST:
			tagStr = "F.LIST";
			break;
		case F.INTERNALQUANTITY:
			tagStr = "F.INTERNALQUANTITY";
			break;
		case F.INTERNALTURNOVER:
			tagStr = "F.INTERNALTURNOVER";
			break;
		case F.CLOSEINTERNALQUANTITY:
			tagStr = "F.CLOSEINTENRALQUANTITY";
			break;
		case F.CLOSEINTERNALTURNOVER:
			tagStr = "F.CLOSEINTERNALTURNOVER";
			break;
		case F.TRADEBUYER:
			tagStr = "F.TRADEBUYER";
			break;
		case F.TRADESELLER:
			tagStr = "F.TRADESELLER";
			break;
		case F.BIDCOUNTERPART:
			tagStr = "F.BIDCOUNTERPART";
			break;
		case F.ASKCOUNTERPART:
			tagStr = "F.ASKCOUNTERPART";
			break;
		case F.COMPANY:
			tagStr = "F.COMPANY";
			break;
		case F.FUNDPPMCODE:
			tagStr = "F.FUNDPPMCODE";
			break;
		case F.UNDERLYINGID:
			tagStr = "F.UNDERLYINGID";
			break;
		case F.USERNAME:
			tagStr = "F.USERNAME";
			break;
		case F.PASSWORD:
			tagStr = "F.PASSWORD";
			break;
		case F.EXTRACREDENTIAL:
			tagStr = "F.EXTRACREDENTIAL";
			break;
		case F.LOGOFFREASON:
			tagStr = "F.LOGOFFREASON";
			break;
		case F.TRADETYPE:
			tagStr = "F.TRADETYPE";
			break;
		case F.TRADECANCELTIME:
			tagStr = "F.TRADECANCELTIME";
			break;
		case F.NEWSBLOCKNUMBER:
			tagStr = "F.NEWSBLOCKNUMBER";
			break;
		case F.BIDYIELD:
			tagStr = "F.BIDYIELD";
			break;
		case F.ASKYIELD:
			tagStr = "F.ASKYIELD";
			break;
		case F.LASTYIELD:
			tagStr = "F.LASTYIELD";
			break;
		case F.OPENYIELD:
			tagStr = "F.OPENYIELD";
			break;
		case F.DAYHIGHYIELD:
			tagStr = "F.DAYHIGHYIELD";
			break;
		case F.DAYLOWYIELD:
			tagStr = "F.DAYLOWYIELD";
			break;
		case F.CLOSEBIDYIELD:
			tagStr = "F.CLOSEBIDYIELD";
			break;
		case F.CLOSEASKYIELD:
			tagStr = "F.CLOSEASKYIELD";
			break;
		case F.CLOSEYIELD:
			tagStr = "F.CLOSEYIELD";
			break;
		case F.CLOSEDAYHIGHYIELD:
			tagStr = "F.CLOSEDAYHIGHYIELD";
			break;
		case F.CLOSEDAYLOWYIELD:
			tagStr = "F.CLOSEDAYLOWYIELD";
			break;
		case F.NEWSCODINGCOMPANY:
			tagStr = "F.NEWSCODINGCOMPANY";
			break;
		case F.NEWSCODINGTYPE:
			tagStr = "F.NEWSCODINGTYPE";
			break;
		case F.NEWSCODINGSUBJECT:
			tagStr = "F.NEWSCODINGSUBJECT";
			break;
		case F.NEWSCODINGREGULATORY:
			tagStr = "F.NEWSCODINGREGULATORY";
			break;
		case F.NEWSCODINGCOUNTRY:
			tagStr = "F.NEWSCODINGCOUNTRY";
			break;
		case F.NEWSCODINGORIGINAL:
			tagStr = "F.NEWSCODINGORIGINAL";
			break;
		case F.FUNDCOMPANY:
			tagStr = "F.FUNDCOMPANY";
			break;
		case F.FUNDPMICODE:
			tagStr = "F.FUNDPMICODE";
			break;
		case F.COUNTRY:
			tagStr = "F.COUNTRY";
			break;
		case F.CATYPE:
			tagStr = "F.CATYPE";
			break;
		case F.CASUBTYPE:
			tagStr = "F.CASUBTYPE";
			break;
		case F.DIVIDEND:
			tagStr = "F.DIVIDEND";
			break;
		case F.NETDIVIDEND:
			tagStr = "F.NETDIVIDEND";
			break;
		case F.ADJUSTMENTFACTOR:
			tagStr = "F.ADJUSTMENTFACTOR";
			break;
		case F.VWAP:
			tagStr = "F.VWAP";
			break;
		case F.CLOSEVWAP:
			tagStr = "F.CLOSEVWAP";
			break;
		case F.PLUSPAID:
			tagStr = "F.PLUSPAID";
			break;
		case F.MINUSPAID:
			tagStr = "F.MINUSPAID";
			break;
		case F.UNCHANGEDPAID:
			tagStr = "F.UNCHANGEDPAID";
			break;
		case F.TRADESTATE:
			tagStr = "F.TRADESTATE";
			break;
		case F.CLOSEPRICE1D:
			tagStr = "F.CLOSEPRICE1D";
			break;
		case F.CLOSEPRICE1W:
			tagStr = "F.CLOSEPRICE1W";
			break;
		case F.CLOSEPRICE1M:
			tagStr = "F.CLOSEPRICE1M";
			break;
		case F.CLOSEPRICE3M:
			tagStr = "F.CLOSEPRICE3M";
			break;
		case F.CLOSEPRICE6M:
			tagStr = "F.CLOSEPRICE6M";
			break;
		case F.CLOSEPRICE9M:
			tagStr = "F.CLOSEPRICE9M";
			break;
		case F.CLOSEPRICE1Y:
			tagStr = "F.CLOSEPRICE1Y";
			break;
		case F.CLOSEPRICE2Y:
			tagStr = "F.CLOSEPRICE2Y";
			break;
		case F.CLOSEPRICE5Y:
			tagStr = "F.CLOSEPRICE5Y";
			break;
		case F.CLOSEPRICEWTD:
			tagStr = "F.CLOSEPRICEWTD";
			break;
		case F.CLOSEPRICEMTD:
			tagStr = "F.CLOSEPRICEMTD";
			break;
		case F.CLOSEPRICEQTD:
			tagStr = "F.CLOSEPRICEQTD";
			break;
		case F.CLOSEPRICEYTD:
			tagStr = "F.CLOSEPRICEYTD";
			break;
		case F.CLOSEPRICEPYTD:
			tagStr = "F.CLOSEPRICEPYTD";
			break;
		case F.CLOSEPRICE10Y:
			tagStr = "F.CLOSEPRICE10Y";
			break;
		case F.ATH:
			tagStr = "F.ATH";
			break;
		case F.ATL:
			tagStr = "F.ATL";
			break;
		case F.HIGHPRICE1Y:
			tagStr = "F.HIGHPRICE1Y";
			break;
		case F.LOWPRICE1Y:
			tagStr = "F.LOWPRICE1Y";
			break;
		case F.HIGHPRICE3Y:
			tagStr = "F.HIGHPRICE3Y";
			break;
		case F.LOWPRICE3Y:
			tagStr = "F.LOWPRICE3Y";
			break;
		case F.HIGHPRICE5Y:
			tagStr = "F.HIGHPRICE5Y";
			break;
		case F.LOWPRICE5Y:
			tagStr = "F.LOWPRICE5Y";
			break;
		case F.HIGHPRICE10Y:
			tagStr = "F.HIGHPRICE10Y";
			break;
		case F.LOWPRICE10Y:
			tagStr = "F.LOWPRICE10Y";
			break;
		case F.ATHDATE:
			tagStr = "F.ATHDATE";
			break;
		case F.ATLDATE:
			tagStr = "F.ATLDATE";
			break;
		case F.HIGHPRICE1YDATE:
			tagStr = "F.HIGHPRICE1YDATE";
			break;
		case F.LOWPRICE1YDATE:
			tagStr = "F.LOWPRICE1YDATE";
			break;
		case F.HIGHPRICEYTD:
			tagStr = "F.HIGHPRICEYTD";
			break;
		case F.LOWPRICEYTD:
			tagStr = "F.LOWPRICEYTD";
			break;
		case F.HIGHPRICEYTDDATE:
			tagStr = "F.HIGHPRICEYTDDATE";
			break;
		case F.LOWPRICEYTDDATE:
			tagStr = "F.LOWPRICEYTDDATE";
			break;
		case F.GROSSPROFIT:
			tagStr = "F.GROSSPROFIT";
			break;
		case F.NETSALES:
			tagStr = "F.NETSALES";
			break;
		case F.ADJUSTEDEBITA:
			tagStr = "F.ADJUSTEDEBITA";
			break;
		case F.TRADEYIELD:
			tagStr = "F.TRADEYIELD";
			break;
		case F.VOTINGPOWERPRC:
			tagStr = "F.VOTINGPOWERPRC";
			break;
		case F.CAPITALPRC:
			tagStr = "F.CAPITALPRC";
			break;
		case F.GENDERCEO:
			tagStr = "F.GENDERCEO";
			break;
		case F.GENDERCHAIRMAN:
			tagStr = "F.GENDERCHAIRMAN";
			break;
		case F.BIRTHYEARCEO:
			tagStr = "F.BIRTHYEARCEO";
			break;
		case F.BIRTHYEARCHAIRMAN:
			tagStr = "F.BIRTHYEARCHARIMAN";
			break;
		case F.ADDRESS:
			tagStr = "F.ADDRESS";
			break;
		case F.POSTALCODE:
			tagStr = "F.POSTALCODE";
			break;
		case F.CITY:
			tagStr = "F.CITY";
			break;
		case F.TELEPHONE:
			tagStr = "F.TELEPHONE";
			break;
		case F.FAX:
			tagStr = "F.FAX";
			break;
		case F.EMAIL:
			tagStr = "F.EMAIL";
			break;
		case F.IMPORTANTEVENTS:
			tagStr = "F.IMPORTANTEVENTS";
			break;
		case F.INTANGIBLEASSET:
			tagStr = "F.INTANGIBLEASSET";
			break;
		case F.GOODWILL:
			tagStr = "F.GOODWILL";
			break;
		case F.FIXEDASSET:
			tagStr = "F.FIXEDASSET";
			break;
		case F.FINANCIALASSET:
			tagStr = "F.FINANCIALASSET";
			break;
		case F.NONCURRENTASSET:
			tagStr = "F.NONCURRENTASSET";
			break;
		case F.INVENTORY:
			tagStr = "F.INVENTORY";
			break;
		case F.OTHERCURRENTASSET:
			tagStr = "F.OTHERCURRENTASSET";
			break;
		case F.ACCOUNTSRECEIVABLE:
			tagStr = "F.ACCOUNTSRECEIVABLE";
			break;
		case F.OTHERRECEIVABLES:
			tagStr = "F.OTHERRECEIVABLES";
			break;
		case F.SHORTTERMINV:
			tagStr = "F.SHORTTERMINV";
			break;
		case F.CCE:
			tagStr = "F.CCE";
			break;
		case F.CURRENTASSETS:
			tagStr = "F.CURRENTASSETS";
			break;
		case F.TOTALASSETS:
			tagStr = "F.TOTALASSETS";
			break;
		case F.SHEQUITY:
			tagStr = "F.SHEQUITY";
			break;
		case F.MINORITYINTEREST:
			tagStr = "F.MINORITYINTEREST";
			break;
		case F.PROVISIONS:
			tagStr = "F.PROVISIONS";
			break;
		case F.LTLIABILITIES:
			tagStr = "F.LTLIABILITIES";
			break;
		case F.CURLIABILITIES:
			tagStr = "F.CURLIABILITIES";
			break;
		case F.TOTSHEQLIABILITIES:
			tagStr = "F.TOTSHEQLIABILITIES";
			break;
		case F.NIBL:
			tagStr = "F.NIBL";
			break;
		case F.IBL:
			tagStr = "F.IBL";
			break;
		case F.CASHFLOWBWC:
			tagStr = "F.CASHFLOWBWC";
			break;
		case F.CASHFLOWAWC:
			tagStr = "F.CASHFLOWAWC";
			break;
		case F.CASHFLOWIA:
			tagStr = "F.CASHFLOWIA";
			break;
		case F.CASHFLOWFA:
			tagStr = "F.CASHFLOWFA";
			break;
		case F.CASHFLOWTOTAL:
			tagStr = "F.CASHFLOWTOTAL";
			break;
		case F.NUMEMPLOYEES:
			tagStr = "F.NUMEMPLOYEES";
			break;
		case F.MCAP:
			tagStr = "F.MCAP";
			break;
		case F.CONTRACTSIZE:
			tagStr = "F.CONTRACTSIZE";
			break;
		case F.BASERATIO:
			tagStr = "F.BASERATIO";
			break;
		case F.SOURCEID:
			tagStr = "F.SOURCEID";
			break;
		case F.ISSUER:
			tagStr = "F.ISSUER";
			break;
		case F.GENIUMID:
			tagStr = "F.GENIUMID";
			break;
		case F.CLOSEPRICE3Y:
			tagStr = "F.CLOSEPRICE3Y";
			break;
		case F.CLOSEPRICELD:
			tagStr = "F.CLOSEPRICELD";
			break;
		case F.FUNDYEARLYMGMTFEE:
			tagStr = "F.FUNDYEARLYMGMTFEE";
			break;
		case F.FUNDPPMFEE:
			tagStr = "F.FUNDPPMFEE";
			break;
		case F.FUNDPPMTYPE:
			tagStr = "F.FUNDPPMTYPE";
			break;
		case F.FUNDBENCHMARK:
			tagStr = "F.FUNDBENCHMARK";
			break;
		case F.FUNDLEVERAGE:
			tagStr = "F.FUNDLEVERAGE";
			break;
		case F.FUNDDIRECTION:
			tagStr = "F.FUNDDIRECTION";
			break;
		case F.PROSPECTUS:
			tagStr = "F.PROSPECTUS";
			break;
		case F.GEOFOCUSREGION:
			tagStr = "F.GEOFOCUSREGION";
			break;
		case F.GEOFOCUSCOUNTRY:
			tagStr = "F.GEOFOCUSCOUNTRY";
			break;
		case F.OPENINTEREST:
			tagStr = "F.OPENINTEREST";
			break;
		case F.CLOSEYIELD1D:
			tagStr = "F.CLOSEYIELD1D";
			break;
		case F.CLOSEYIELD1W:
			tagStr = "F.CLOSEYIELD1W";
			break;
		case F.CLOSEYIELD1M:
			tagStr = "F.CLOSEYIELD1M";
			break;
		case F.CLOSEYIELD3M:
			tagStr = "F.CLOSEYIELD3M";
			break;
		case F.CLOSEYIELD6M:
			tagStr = "F.CLOSEYIELD6M";
			break;
		case F.CLOSEYIELD9M:
			tagStr = "F.CLOSEYIELD9M";
			break;
		case F.CLOSEYIELD1Y:
			tagStr = "F.CLOSEYIELD1Y";
			break;
		case F.CLOSEYIELD2Y:
			tagStr = "F.CLOSEYIELD2Y";
			break;
		case F.CLOSEYIELD3Y:
			tagStr = "F.CLOSEYIELD3Y";
			break;
		case F.CLOSEYIELD5Y:
			tagStr = "F.CLOSEYIELD5Y";
			break;
		case F.CLOSEYIELD10Y:
			tagStr = "F.CLOSEYIELD10Y";
			break;
		case F.CLOSEYIELDWTD:
			tagStr = "F.CLOSEYIELDWTD";
			break;
		case F.CLOSEYIELDMTD:
			tagStr = "F.CLOSEYIELDMTD";
			break;
		case F.CLOSEYIELDQTD:
			tagStr = "F.CLOSEYIELDQTD";
			break;
		case F.CLOSEYIELDYTD:
			tagStr = "F.CLOSEYIELDYTD";
			break;
		case F.CLOSEYIELDPYTD:
			tagStr = "F.CLOSEYIELDPYTD";
			break;
		case F.CLOSEYIELDLD:
			tagStr = "F.CLOSEYIELDLD";
			break;
		case F.ATHYIELD:
			tagStr = "F.ATHYIELD";
			break;
		case F.ATLYIELD:
			tagStr = "F.ATLYIELD";
			break;
		case F.ATHYIELDDATE:
			tagStr = "F.ATHYIELDDATE";
			break;
		case F.ATLYIELDDATE:
			tagStr = "F.ATLYIELDDATE";
			break;
		case F.HIGHYIELD1Y:
			tagStr = "F.HIGHYIELD1Y";
			break;
		case F.LOWYIELD1Y:
			tagStr = "F.LOWYIELD1Y";
			break;
		case F.HIGHYIELDYTD:
			tagStr = "F.HIGHYIELDYTD";
			break;
		case F.LOWYIELDYTD:
			tagStr = "F.LOWYIELDYTD";
			break;
		case F.HIGHYIELDYTDDATE:
			tagStr = "F.HIGHYIELDYTDDATE";
			break;
		case F.LOWYIELDYTDDATE:
			tagStr = "F.LOWYIELDYTDDATE";
			break;
		case F.HIGHYIELD1YDATE:
			tagStr = "F.HIGHYIELD1YDATE";
			break;
		case F.LOWYIELD1YDATE:
			tagStr = "F.LOWYIELD1YDATE";
			break;
		case F.CUSIP:
			tagStr = "F.CUSIP";
			break;
		case F.WKN:
			tagStr = "F.WKN";
			break;
		case F.UCITS:
			tagStr = "F.UCITS";
			break;
		case F.INCEPTIONDATE:
			tagStr = "F.INCEPTIONDATE";
			break;
		case F.FUNDBENCHMARKINSREF:
			tagStr = "F.FUNDBENCHMARKINSREF";
			break;
		case F.INSTRUMENTCLASS:
			tagStr = "F.INSTRUMENTCLASS";
			break;
		case F.INSTRUMENTSUBCLASS:
			tagStr = "F.INSTRUMENTSUBCLASS";
			break;
		case F.CONSTITUENTS:
			tagStr = "F.CONSTITUENTS";
			break;
		case F.COUPONRATE:
			tagStr = "F.COUPONRATE";
			break;
		case F.COUPONDATE:
			tagStr = "F.COUPONDATE";
			break;
		case F.BARRIERPRICE:
			tagStr = "F.BARRIERPRICE";
			break;
		case F.STANDARDDEVIATION3Y:
			tagStr = "F.STANDARDDEVIATION3Y";
			break;
		case F.ANNUALIZEDRETURN1Y:
			tagStr = "F.ANNUALIZEDRETURN1Y";
			break;
		case F.ANNUALIZEDRETURN2Y:
			tagStr = "F.ANNUALIZEDRETURN2Y";
			break;
		case F.ANNUALIZEDRETURN3Y:
			tagStr = "F.ANNUALIZEDRETURN3Y";
			break;
		case F.ANNUALIZEDRETURN4Y:
			tagStr = "F.ANNUALIZEDRETURN4Y";
			break;
		case F.ANNUALIZEDRETURN5Y:
			tagStr = "F.ANNUALIZEDRETURN5Y";
			break;
		case F.ANNUALIZEDRETURN10Y:
			tagStr = "F.ANNUALIZEDRETURN10Y";
			break;
		case F.MDF_F_CEOADMISSIONDATE:
			tagStr = "F.MDF_F_CEOADMISSIONDATE";
			break;
		case F.MDF_F_CHAIRMANADMISSIONDATE:
			tagStr = "F.MDF_F_CHAIRMANADMISSIONDATE";
			break;
		case F.SHARPERATIO3Y:
			tagStr = "F.SHARPERATIO3Y";
			break;
		case F.MORNINGSTARRATING	:
			tagStr = "F.MORNINGSTARRATING	";
			break;
		case F.SALESFEE:
			tagStr = "F.SALESFEE";
			break;
		case F.MINSTARTAMOUNT:
			tagStr = "F.MINSTARTAMOUNT";
			break;
		case F.MINSUBSCRIPTIONAMOUNT:
			tagStr = "F.MINSUBSCRIPTIONAMOUNT";
			break;
		case F.PERFORMANCEFEE:
			tagStr = "F.PERFORMANCEFEE";
			break;
		case F.MINADDITIONALAMOUNT:
			tagStr = "F.MINADDITIONALAMOUNT";
			break;
		case F.TRADEDTHROUGHDATE:
			tagStr = "F.TRADEDTHROUGHDATE";
			break;
		case F.TOTALFEE:
			tagStr = "F.TOTALFEE";
			break;
		case F.DIVIDENDTYPE:
			tagStr = "F.DIVIDENDTYPE";
			break;
		case F.DIVIDENDFREQUENCY:
			tagStr = "F.DIVIDENDFREQUENCY";
			break;
		case F.INSTRUMENTSUBSUBCLASS:
			tagStr = "F.INSTRUMENTSUBSUBCLASS";
			break;
		case F.PRIMARYMARKETPLACE:
			tagStr = "F.PRIMARYMARKETPLACE";
			break;
		case F.FISCALPERIOD:
			tagStr = "F.FISCALPERIOD";
			break;
		case F.SHORTDESCRIPTION:
			tagStr = "F.SHORTDESCRIPTION";
			break;
		case F.FUNDRISK:
			tagStr = "F.FUNDRISK";
			break;
		case F.EUSIPA:
			tagStr = "F.EUSIPA";
			break;
		case F.NEWSRANK:
			tagStr = "F.NEWSRANK";
			break;
		case F.AVERAGE:
			tagStr = "F.AVERAGE";
			break;
		case F.MIN:
			tagStr = "F.MIN";
			break;
		case F.MAX:
			tagStr = "F.MAX";
			break;
		case F.FIELDNAME:
			tagStr = "F.FIELDNAME";
			break;
		case F.FIELDASPECT:
			tagStr = "F.FIELDASPECT";
			break;
		case F.FIELDTYPE:
			tagStr = "F.FIELDTYPE";
			break;
		case F.FUNDCOMPANY2:
			tagStr = "F.FUNDCOMPANY2";
			break;
		case F.FIELDUNIT:
			tagStr = "F.FIELDUNIT";
			break;
		case F.CLOSEPRICE2W:
			tagStr = "F.CLOSEPRICE2W";
			break;
		case F.CLOSEYIELD2W:
			tagStr = "F.CLOSEYIELD2W";
			break;
		case F.CONVERTFROMDATE:
			tagStr = "F.CONVERTFROMDATE";
			break;
		case F.CONVERTTODATE:
			tagStr = "F.CONVERTTODATE";
			break;
		case F.CONVERSIONPRICE:
			tagStr = "F.CONVERSIONPRICE";
			break;
		case F.DURATION:
			tagStr = "F.DURATION";
			break;
		case F.SETTLEMENTTYPE:
			tagStr = "F.SETTLEMENTTYPE";
			break;
		case F.VOTINGPOWER:
			tagStr = "F.VOTINGPOWER";
			break;
		case F.CAP:
			tagStr = "F.CAP";
			break;
		case F.IMBALANCE:
			tagStr = "F.IMBALANCE";
			break;
		case F.IMBALANCEDIRECTION:
			tagStr = "F.IMBALANCEDIRECTION";
			break;
		case F.CROSSTYPE:
			tagStr = "F.CROSSTYPE";
			break;
		case F.TICKTABLE:
			tagStr = "F.TICKTABLE";
			break;
		case F.TICKSIZES:
			tagStr = "F.TICKSIZES";
			break;
		case F.PRICETYPE:
			tagStr = "F.PRICETYPE";
			break;
		case F.ASIANTAILSTART:
			tagStr = "F.ASIANTAILSTART";
			break;
		case F.ASIANTAILEND:
			tagStr = "F.ASIANTAILEND";
			break;
		case F.LOGOTYPE:
			tagStr = "F.LOGOTYPE";
			break;
		case F.ISSUERNAME:
			tagStr = "F.ISSUERNAME";
			break;
		case F.CONTRACTVALUE:
			tagStr = "F.CONTRACTVALUE";
			break;
		case F.CLOSEBIDPRICE1D:
			tagStr = "F.CLOSEBIDPRICE1D";
			break;
		case F.CLOSEBIDYIELD1D:
			tagStr = "F.CLOSEBIDYIELD1D";
			break;
		case F.CLOSEBIDPRICE1W:
			tagStr = "F.CLOSEBIDPRICE1W";
			break;
		case F.CLOSEBIDYIELD1W:
			tagStr = "F.CLOSEBIDYIELD1W";
			break;
		case F.FINANCIALINCOME:
			tagStr = "F.FINANCIALINCOME";
			break;
		case F.FINANCIALCOST:
			tagStr = "F.FINANCIALCOST";
			break;
		case F.FINANCINGLEVEL:
			tagStr = "F.FINANCINGLEVEL";
			break;
		case F.PARTICIPATIONRATE:
			tagStr = "F.PARTICIPATIONRATE";
			break;
		case F.ISSUEPRICE:
			tagStr = "F.ISSUEPRICE";
			break;
		case F.FIINSTITUTENUMBER:
			tagStr = "F.FIINSTITUTENUMBER";
			break;
		case F.DELETERECORD:
			tagStr = "F.DELETERECORD";
			break;
		case F.KIID:
			tagStr = "F.KIID";
			break;
		case F.CFI:
			tagStr = "F.CFI";
			break;
		case F.OFFBOOKQUANTITY:
			tagStr = "F.OFFBOOKQUANTITY";
			break;
		case F.OFFBOOKTURNOVER:
			tagStr = "F.OFFBOOKTURNOVER";
			break;
		case F.DARKQUANTITY:
			tagStr = "F.DARKQUANTITY";
			break;
		case F.DARKTURNOVER:
			tagStr = "F.DARKTURNOVER";
			break;
		case F.CLOSEOFFBOOKQUANTITY:
			tagStr = "F.CLOSEOFFBOOKQUANTITY";
			break;
		case F.CLOSEOFFBOOKTURNOVER:
			tagStr = "F.CLOSEOFFBOOKTURNOVER";
			break;
		case F.CLOSEDARKQUANTITY:
			tagStr = "F.CLOSEDARKQUANTITY";
			break;
		case F.CLOSEDARKTURNOVER:
			tagStr = "F.CLOSEDARKTURNOVER";
			break;
		case F.BROKERS:
			tagStr = "F.BROKERS";
			break;
		case F.INTERESTINCOME:
			tagStr = "F.INTERESTINCOME";
			break;
		case F.OTHERFINANCIALINCOME:
			tagStr = "F.OTHERFINANCIALINCOME";
			break;
		case F.INTERESTEXPENSE:
			tagStr = "F.INTERESTEXPENSE";
			break;
		case F.OTHERFINANCIALEXPENSE:
			tagStr = "F.OTHERFINANCIALEXPENSE";
			break;
		case F.MINORITYINTERESTRES:
			tagStr = "F.MINORITYINTERESTRES";
			break;
		case F.ACCOUNTSPAYABLE:
			tagStr = "F.ACCOUNTSPAYABLE";
			break;
		case F.EVENTLINK:
			tagStr = "F.EVENTLINK";
			break;
		case F.EVENTLINKLANGUAGES:
			tagStr = "F.EVENTLINKLANGUAGES";
			break;
		case F.MAXLEVEL:
			tagStr = "F.MAXLEVEL";
			break;
		case F.SETTLEMENTPRICE:
			tagStr = "F.SETTLEMENTPRICE";
			break;
		case F.S1:
			tagStr = "F.S1";
			break;
		case F.S2:
			tagStr = "F.S2";
			break;
		case F.S3:
			tagStr = "F.S3";
			break;
		case F.S4:
			tagStr = "F.S4";
			break;
		case F.S5:
			tagStr = "F.S5";
			break;
		case F.S6:
			tagStr = "F.S6";
			break;
		case F.S7:
			tagStr = "F.S7";
			break;
		case F.S8:
			tagStr = "F.S8";
			break;
		case F.S9:
			tagStr = "F.S9";
			break;
		case F.S10:
			tagStr = "F.S10";
			break;
		case F.S11:
			tagStr = "F.S11";
			break;
		case F.N1:
			tagStr = "F.N1";
			break;
		case F.N2:
			tagStr = "F.N2";
			break;
		case F.N3:
			tagStr = "F.N3";
			break;
		case F.N4:
			tagStr = "F.N4";
			break;
		case F.N5:
			tagStr = "F.N5";
			break;
		case F.I1:
			tagStr = "F.I1";
			break;
		case F.I2:
			tagStr = "F.I2";
			break;
		case F.I3:
			tagStr = "F.I3";
			break;
		case F.I4:
			tagStr = "F.I4";
			break;
		case F.I5:
			tagStr = "F.I5";
			break;
		case F.D1:
			tagStr = "F.D1";
			break;
		case F.D2:
			tagStr = "F.D2";
			break;
		case F.D3:
			tagStr = "F.D3";
			break;
		case F.CITYPE:
			tagStr = "F.CITYPE";
			break;
		case F.CISUBTYPE:
			tagStr = "F.CISUBTYPE";
			break;
		case F.SEQUENCE:
			tagStr = "F.SEQUENCE";
			break;
		case F.OUTSTANDINGAMOUNT:
			tagStr = "F.OUTSTANDINGAMOUNT";
			break;
		case F.INTERESTRATE:
			tagStr = "F.INTERESTRATE";
			break;
		case F.MARKETMAKER:
			tagStr = "F.MARKETMAKER";
			break;
		case F.SUSTAINDESCRIPTION:
			tagStr = "F.SUSTAINDESCRIPTION";
			break;
		case F.SUSTAININVESTING1:
			tagStr = "F.SUSTAININVESTING1";
			break;
		case F.SUSTAININVESTING2:
			tagStr = "F.SUSTAININVESTING2";
			break;
		case F.SUSTAINDIVESTING1:
			tagStr = "F.SUSTAINDIVESTING1";
			break;
		case F.SUSTAINDIVESTING2:
			tagStr = "F.SUSTAINDIVESTING2";
			break;
		case F.SUSTAININFLUENCE:
			tagStr = "F.SUSTAININFLUENCE";
			break;
		case F.SUSTAINMONITORING1:
			tagStr = "F.SUSTAINMONITORING1";
			break;
		case F.SUSTAINMONITORING2:
			tagStr = "F.SUSTAINMONITORING2";
			break;
		case F.SUSTAINCOMMENT:
			tagStr = "F.SUSTAINCOMMENT";
			break;
		case F.NUMBEROFPREFSHARES:
			tagStr = "F.NUMBEROFPREFSHARES";
			break;
		case F.MARKETOPEN:
			tagStr = "F.MARKETOPEN";
			break;
		case F.MARKETCLOSE:
			tagStr = "F.MARKETCLOSE";
			break;
		case F.MARKETEARLYCLOSE:
			tagStr = "F.MARKETEARLYCLOSE";
			break;
		case F.LEGALSTRUCTURE:
			tagStr = "F.LEGALSTRUCTURE";
			break;
		case F.ONGOINGCHARGE:
			tagStr = "F.ONGOINGCHARGE";
			break;
		case F.PRICINGFREQUENCY:
			tagStr = "F.PRICINGFREQUENCY";
			break;
		case F.MARKETOPENDAYS:
			tagStr = "F.MARKETOPENDAYS";
			break;
		case F.CLOSETRADEPRICE:
			tagStr = "F.CLOSETRADEPRICE";
			break;
		case F.CLOSEPRICETYPE:
			tagStr = "F.CLOSEPRICETYPE";
			break;
		case F.PRODUCTCODE:
			tagStr = "F.PRODUCTCODE";
			break;
		case F.QUOTINGTYPE:
			tagStr = "F.QUOTINGTYPE";
			break;
		case F.TRADEAGREEMENTTIME:
			tagStr = "F.TRADEAGREEMENTTIME";
			break;
		case F.TRADEAGREEMENTDATE:
			tagStr = "F.TRADEAGREEMENTDATE";
			break;
		case F.LATESTYEARENDREPORT:
			tagStr = "F.LATESTYEARENDREPORT";
			break;
		case F.VOLUMEDIMENSION:
			tagStr = "F.VOLUMEDIMENSION";
			break;
		case F.NORMANAMOUNT:
			tagStr = "F.NORMANAMOUNT";
			break;
		case F.CSR:
			tagStr = "F.CSR";
			break;
		case F.CIK:
			tagStr = "F.CIK";
			break;
		case F.MMT:
			tagStr = "F.MMT";
			break;
		case F.FISN:
			tagStr = "F.FISN";
			break;
		case F.LEI:
			tagStr = "F.LEI";
			break;
		case F.SECTORMEMBERS:
			tagStr = "F.SECTORMEMBERS";
			break;
		case F.PRIIP00010:
			tagStr = "F.PRIIP00010";
			break;
		case F.PRIIP00020:
			tagStr = "F.PRIIP00020";
			break;
		case F.PRIIP00030:
			tagStr = "F.PRIIP00030";
			break;
		case F.PRIIP00040:
			tagStr = "F.PRIIP00040";
			break;
		case F.PRIIP00050:
			tagStr = "F.PRIIP00050";
			break;
		case F.PRIIP00060:
			tagStr = "F.PRIIP00060";
			break;
		case F.PRIIPKID:
			tagStr = "F.PRIIPKID";
			break;
		case F.PRIIP00080:
			tagStr = "F.PRIIP00080";
			break;
		case F.PRIIP00090:
			tagStr = "F.PRIIP00090";
			break;
		case F.PRIIP00100:
			tagStr = "F.PRIIP00100";
			break;
		case F.PRIIP01010:
			tagStr = "F.PRIIP01010";
			break;
		case F.PRIIP01020:
			tagStr = "F.PRIIP01020";
			break;
		case F.PRIIP01030:
			tagStr = "F.PRIIP01030";
			break;
		case F.PRIIP01040:
			tagStr = "F.PRIIP01040";
			break;
		case F.PRIIP01050:
			tagStr = "F.PRIIP01050";
			break;
		case F.PRIIP01060:
			tagStr = "F.PRIIP01060";
			break;
		case F.PRIIP01070:
			tagStr = "F.PRIIP01070";
			break;
		case F.PRIIP01080:
			tagStr = "F.PRIIP01080";
			break;
		case F.PRIIP01090:
			tagStr = "F.PRIIP01090";
			break;
		case F.PRIIP01100:
			tagStr = "F.PRIIP01100";
			break;
		case F.PRIIP01110:
			tagStr = "F.PRIIP01110";
			break;
		case F.PRIIP01120:
			tagStr = "F.PRIIP01120";
			break;
		case F.PRIIP01140:
			tagStr = "F.PRIIP01140";
			break;
		case F.PRIIP02010:
			tagStr = "F.PRIIP02010";
			break;
		case F.PRIIP02020:
			tagStr = "F.PRIIP02020";
			break;
		case F.PRIIP02030:
			tagStr = "F.PRIIP02030";
			break;
		case F.PRIIP02040:
			tagStr = "F.PRIIP02040";
			break;
		case F.PRIIP02050:
			tagStr = "F.PRIIP02050";
			break;
		case F.PRIIP02060:
			tagStr = "F.PRIIP02060";
			break;
		case F.PRIIP02070:
			tagStr = "F.PRIIP02070";
			break;
		case F.PRIIP02080:
			tagStr = "F.PRIIP02080";
			break;
		case F.PRIIP02090:
			tagStr = "F.PRIIP02090";
			break;
		case F.PRIIP02100:
			tagStr = "F.PRIIP02100";
			break;
		case F.PRIIP02110:
			tagStr = "F.PRIIP02110";
			break;
		case F.PRIIP02120:
			tagStr = "F.PRIIP02120";
			break;
		case F.PRIIP02130:
			tagStr = "F.PRIIP02130";
			break;
		case F.PRIIP02140:
			tagStr = "F.PRIIP02140";
			break;
		case F.PRIIP02150:
			tagStr = "F.PRIIP02150";
			break;
		case F.PRIIP02160:
			tagStr = "F.PRIIP02160";
			break;
		case F.PRIIP02170:
			tagStr = "F.PRIIP02170";
			break;
		case F.PRIIP02180:
			tagStr = "F.PRIIP02180";
			break;
		case F.PRIIP03010:
			tagStr = "F.PRIIP03010";
			break;
		case F.PRIIP03015:
			tagStr = "F.PRIIP03015";
			break;
		case F.PRIIP03020:
			tagStr = "F.PRIIP03020";
			break;
		case F.PRIIP03030:
			tagStr = "F.PRIIP03030";
			break;
		case F.PRIIP03040:
			tagStr = "F.PRIIP03040";
			break;
		case F.PRIIP03050:
			tagStr = "F.PRIIP03050";
			break;
		case F.PRIIP03060:
			tagStr = "F.PRIIP03060";
			break;
		case F.PRIIP03070:
			tagStr = "F.PRIIP03070";
			break;
		case F.PRIIP03080:
			tagStr = "F.PRIIP03080";
			break;
		case F.PRIIP03090:
			tagStr = "F.PRIIP03090";
			break;
		case F.PRIIP03095:
			tagStr = "F.PRIIP03095";
			break;
		case F.PRIIP03100:
			tagStr = "F.PRIIP03100";
			break;
		case F.PRIIP03105:
			tagStr = "F.PRIIP03105";
			break;
		case F.SUBMARKET:
			tagStr = "F.SUBMARKET";
			break;
		case F.PRIIP04020:
			tagStr = "F.PRIIP04020";
			break;
		case F.PRIIP04030:
			tagStr = "F.PRIIP04030";
			break;
		case F.PRIIP04040:
			tagStr = "F.PRIIP04040";
			break;
		case F.PRIIP04050:
			tagStr = "F.PRIIP04050";
			break;
		case F.PRIIP04060:
			tagStr = "F.PRIIP04060";
			break;
		case F.PRIIP04070:
			tagStr = "F.PRIIP04070";
			break;
		case F.PRIIP04080:
			tagStr = "F.PRIIP04080";
			break;
		case F.PRIIP04081:
			tagStr = "F.PRIIP04081";
			break;
		case F.PRIIP04082:
			tagStr = "F.PRIIP04082";
			break;
		case F.PRIIP04083:
			tagStr = "F.PRIIP04083";
			break;
		case F.PRIIP04084:
			tagStr = "F.PRIIP04084";
			break;
		case F.PRIIP04085:
			tagStr = "F.PRIIP04085";
			break;
		case F.PRIIP04090:
			tagStr = "F.PRIIP04090";
			break;
		case F.PRIIP04100:
			tagStr = "F.PRIIP04100";
			break;
		case F.PRIIP04110:
			tagStr = "F.PRIIP04110";
			break;
		case F.PRIIP05010:
			tagStr = "F.PRIIP05010";
			break;
		case F.PRIIP05020:
			tagStr = "F.PRIIP05020";
			break;
		case F.PRIIP05030:
			tagStr = "F.PRIIP05030";
			break;
		case F.PRIIP05040:
			tagStr = "F.PRIIP05040";
			break;
		case F.PRIIP05050:
			tagStr = "F.PRIIP05050";
			break;
		case F.PRIIP05060:
			tagStr = "F.PRIIP05060";
			break;
		case F.PRIIP05065:
			tagStr = "F.PRIIP05065";
			break;
		case F.PRIIP05070:
			tagStr = "F.PRIIP05070";
			break;
		case F.PRIIP05080:
			tagStr = "F.PRIIP05080";
			break;
		case F.PRIIP06010:
			tagStr = "F.PRIIP06010";
			break;
		case F.PRIIP06020:
			tagStr = "F.PRIIP06020";
			break;
		case F.PRIIP06030:
			tagStr = "F.PRIIP06030";
			break;
		case F.PRIIP06040:
			tagStr = "F.PRIIP06040";
			break;
		case F.PRIIP06050:
			tagStr = "F.PRIIP06050";
			break;
		case F.PRIIP06060:
			tagStr = "F.PRIIP06060";
			break;
		case F.PRIIP06070:
			tagStr = "F.PRIIP06070";
			break;
		case F.PRIIP06080:
			tagStr = "F.PRIIP06080";
			break;
		case F.PRIIP07010:
			tagStr = "F.PRIIP07010";
			break;
		case F.PRIIP07020:
			tagStr = "F.PRIIP07020";
			break;
		case F.PRIIP07030:
			tagStr = "F.PRIIP07030";
			break;
		case F.PRIIP07040:
			tagStr = "F.PRIIP07040";
			break;
		case F.PRIIP07050:
			tagStr = "F.PRIIP07050";
			break;
		case F.PRIIP07060:
			tagStr = "F.PRIIP07060";
			break;
		case F.PRIIP07070:
			tagStr = "F.PRIIP07070";
			break;
		case F.PRIIP07080:
			tagStr = "F.PRIIP07080";
			break;
		case F.PRIIP07090:
			tagStr = "F.PRIIP07090";
			break;
		case F.PRIIP07100:
			tagStr = "F.PRIIP07100";
			break;
		case F.PRIIP07110:
			tagStr = "F.PRIIP07110";
			break;
		case F.PRIIP07120:
			tagStr = "F.PRIIP07120";
			break;
		case F.MIFID00010:
			tagStr = "F.MIFID00010";
			break;
		case F.MIFID00020:
			tagStr = "F.MIFID00020";
			break;
		case F.MIFID00030:
			tagStr = "F.MIFID00030";
			break;
		case F.MIFID00040:
			tagStr = "F.MIFID00040";
			break;
		case F.MIFID00060:
			tagStr = "F.MIFID00060";
			break;
		case F.MIFID00070:
			tagStr = "F.MIFID00070";
			break;
		case F.MIFID00080:
			tagStr = "F.MIFID00080";
			break;
		case F.MIFID00090:
			tagStr = "F.MIFID00090";
			break;
		case F.MIFID00100:
			tagStr = "F.MIFID00100";
			break;
		case F.MIFID01010:
			tagStr = "F.MIFID01010";
			break;
		case F.MIFID01020:
			tagStr = "F.MIFID01020";
			break;
		case F.MIFID01030:
			tagStr = "F.MIFID01030";
			break;
		case F.MIFID02010:
			tagStr = "F.MIFID02010";
			break;
		case F.MIFID02020:
			tagStr = "F.MIFID02020";
			break;
		case F.MIFID02030:
			tagStr = "F.MIFID02030";
			break;
		case F.MIFID02040:
			tagStr = "F.MIFID02040";
			break;
		case F.MIFID03010:
			tagStr = "F.MIFID03010";
			break;
		case F.MIFID03020:
			tagStr = "F.MIFID03020";
			break;
		case F.MIFID03030:
			tagStr = "F.MIFID03030";
			break;
		case F.MIFID03040:
			tagStr = "F.MIFID03040";
			break;
		case F.MIFID03050:
			tagStr = "F.MIFID03050";
			break;
		case F.MIFID04010:
			tagStr = "F.MIFID04010";
			break;
		case F.MIFID04020:
			tagStr = "F.MIFID04020";
			break;
		case F.MIFID04030:
			tagStr = "F.MIFID04030";
			break;
		case F.MIFID04040:
			tagStr = "F.MIFID04040";
			break;
		case F.MIFID04050:
			tagStr = "F.MIFID04050";
			break;
		case F.MIFID05010:
			tagStr = "F.MIFID05010";
			break;
		case F.MIFID05020:
			tagStr = "F.MIFID05020";
			break;
		case F.MIFID05030:
			tagStr = "F.MIFID05030";
			break;
		case F.MIFID05040:
			tagStr = "F.MIFID05040";
			break;
		case F.MIFID05050:
			tagStr = "F.MIFID05050";
			break;
		case F.MIFID05060:
			tagStr = "F.MIFID05060";
			break;
		case F.MIFID05070:
			tagStr = "F.MIFID05070";
			break;
		case F.MIFID05080:
			tagStr = "F.MIFID05080";
			break;
		case F.MIFID05080N:
			tagStr = "F.MIFID05080N";
			break;
		case F.ENTITLEMENTPACKAGE:
			tagStr = "F.ENTITLEMENTPACKAGE";
			break;
		case F.MIFID05100:
			tagStr = "F.MIFID05100";
			break;
		case F.MIFID05110:
			tagStr = "F.MIFID05110";
			break;
		case F.MIFID06010:
			tagStr = "F.MIFID06010";
			break;
		case F.MIFID06020:
			tagStr = "F.MIFID06020";
			break;
		case F.MIFID06030:
			tagStr = "F.MIFID06030";
			break;
		case F.MIFID06040:
			tagStr = "F.MIFID06040";
			break;
		case F.MIFID07010:
			tagStr = "F.MIFID07010";
			break;
		case F.MIFID07020:
			tagStr = "F.MIFID07020";
			break;
		case F.MIFID07030:
			tagStr = "F.MIFID07030";
			break;
		case F.MIFID07040:
			tagStr = "F.MIFID07040";
			break;
		case F.MIFID07050:
			tagStr = "F.MIFID07050";
			break;
		case F.MIFID07060:
			tagStr = "F.MIFID07060";
			break;
		case F.MIFID07070:
			tagStr = "F.MIFID07070";
			break;
		case F.MIFID07080:
			tagStr = "F.MIFID07080";
			break;
		case F.MIFID07090:
			tagStr = "F.MIFID07090";
			break;
		case F.MIFID07100:
			tagStr = "F.MIFID07100";
			break;
		case F.MIFID07110:
			tagStr = "F.MIFID07110";
			break;
		case F.MIFID07120:
			tagStr = "F.MIFID07120";
			break;
		case F.MIFID07130:
			tagStr = "F.MIFID07130";
			break;
		case F.MIFID07140:
			tagStr = "F.MIFID07140";
			break;
		case F.MIFID08010:
			tagStr = "F.MIFID08010";
			break;
		case F.MIFID08020:
			tagStr = "F.MIFID08020";
			break;
		case F.MIFID08030:
			tagStr = "F.MIFID08030";
			break;
		case F.MIFID08040:
			tagStr = "F.MIFID08040";
			break;
		case F.MIFID08050:
			tagStr = "F.MIFID08050";
			break;
		case F.MIFID08060:
			tagStr = "F.MIFID08060";
			break;
		case F.MIFID08070:
			tagStr = "F.MIFID08070";
			break;
		case F.MIFID08080:
			tagStr = "F.MIFID08080";
			break;
		case F.MIFID08090:
			tagStr = "F.MIFID08090";
			break;
		case F.MIFID08100:
			tagStr = "F.MIFID08100";
			break;
		case F.OPERATINGMIC:
			tagStr = "F.OPERATINGMIC";
			break;
		case F.CVR:
			tagStr = "F.CVR";
			break;
		case F.KENNITALA:
			tagStr = "F.KENNITALA";
			break;
		case F.YTUNNUS:
			tagStr = "F.YTUNNUS";
			break;
		case F.ORGNUMNO:
			tagStr = "F.ORGNUMNO";
			break;
		case F.NEWSCODINGTAGS:
			tagStr = "F.NEWSCODINGTAGS";
			break;
		case F.NEWSCODINGIMPACT:
			tagStr = "F.NEWSCODINGIMPACT";
			break;
		case F.ACTIVESHARE:
			tagStr = "F.ACTIVESHARE";
			break;
		case F.TRACKINGERROR:
			tagStr = "F.TRACKINGERROR";
			break;
		case F.DPS:
			tagStr = "F.DPS";
			break;
		case F.CFPS:
			tagStr = "F.CFPS";
			break;
		case F.CFPSTTM:
			tagStr = "F.CFPSTTM";
			break;
		case F.CFPSLAST:
			tagStr = "F.CFPSLAST";
			break;
		case F.EPSTTM:
			tagStr = "F.EPSTTM";
			break;
		case F.EPSLAST:
			tagStr = "F.EPSLAST";
			break;
		case F.SPS:
			tagStr = "F.SPS";
			break;
		case F.SPSTTM:
			tagStr = "F.SPSTTM";
			break;
		case F.SPSLAST:
			tagStr = "F.SPSLAST";
			break;
		case F.BVPS:
			tagStr = "F.BVPS";
			break;
		case F.BVPSLAST:
			tagStr = "F.BVPSLAST";
			break;
		case F.ROE:
			tagStr = "F.ROE";
			break;
		case F.ROETTM:
			tagStr = "F.ROETTM";
			break;
		case F.ROELAST:
			tagStr = "F.ROELAST";
			break;
		case F.ROA:
			tagStr = "F.ROA";
			break;
		case F.ROATTM:
			tagStr = "F.ROATTM";
			break;
		case F.ROALAST:
			tagStr = "F.ROALAST";
			break;
		case F.GM:
			tagStr = "F.GM";
			break;
		case F.GMTTM:
			tagStr = "F.GMTTM";
			break;
		case F.GMLAST:
			tagStr = "F.GMLAST";
			break;
		case F.OM:
			tagStr = "F.OM";
			break;
		case F.OMTTM:
			tagStr = "F.OMTTM";
			break;
		case F.OMLAST:
			tagStr = "F.OMLAST";
			break;
		case F.PM:
			tagStr = "F.PM";
			break;
		case F.PMTTM:
			tagStr = "F.PMTTM";
			break;
		case F.PMLAST:
			tagStr = "F.PMLAST";
			break;
		case F.FIGI:
			tagStr = "F.FIGI";
			break;
		case F.FIGICOMPOSITE:
			tagStr = "F.FIGICOMPOSITE";
			break;
		case F.FIGISHARECLASS:
			tagStr = "F.FIGISHARECLASS";
			break;
		case F.MMO:
			tagStr = "F.MMO";
			break;
		case F.FIGISECURITYTYPE:
			tagStr = "F.FIGISECURITYTYPE";
			break;
		case F.COUPONFREQUENCY:
			tagStr = "F.COUPONFREQUENCY";
			break;
		case F.ORDERID:
			tagStr = "F.ORDERID";
			break;
		case F.ORDERIDSOURCE:
			tagStr = "F.ORDERIDSOURCE";
			break;
		case F.ORDERPRIORITY:
			tagStr = "F.ORDERPRIORITY";
			break;
		case F.IV:
			tagStr = "F.IV";
			break;
		case F.DELTA:
			tagStr = "F.DELTA";
			break;
		case F.GAMMA:
			tagStr = "F.GAMMA";
			break;
		case F.RHO:
			tagStr = "F.RHO";
			break;
		case F.THETA:
			tagStr = "F.THETA";
			break;
		case F.VEGA:
			tagStr = "F.VEGA";
			break;
		case F.ORDERSIDE:
			tagStr = "F.ORDERSIDE";
			break;
		case F.ORDERPARTICIPANT:
			tagStr = "F.ORDERPARTICIPANT";
			break;
		case F.ORDERPRICE:
			tagStr = "F.ORDERPRICE";
			break;
		case F.ORDERQUANTITY:
			tagStr = "F.ORDERQUANTITY";
			break;
		case F.IVBID:
			tagStr = "F.IVBID";
			break;
		case F.IVASK:
			tagStr = "F.IVASK";
			break;
		case F.DAYCOUNTCONVENTION:
			tagStr = "F.DAYCOUNTCONVENTION";
			break;
		case F.EXPIRATIONTYPE:
			tagStr = "F.EXPIRATIONTYPE";
			break;
		case F.TENOR:
			tagStr = "F.TENOR";
			break;
		case F.S12:
			tagStr = "F.S12";
			break;
		case F.S13:
			tagStr = "F.S13";
			break;
		case F.S14:
			tagStr = "F.S14";
			break;
		case F.S15:
			tagStr = "F.S15";
			break;
		case F.N6:
			tagStr = "F.N6";
			break;
		case F.N7:
			tagStr = "F.N7";
			break;
		case F.N8:
			tagStr = "F.N8";
			break;
		case F.N9:
			tagStr = "F.N9";
			break;
		case F.N10:
			tagStr = "F.N10";
			break;
		case F.I6:
			tagStr = "F.I6";
			break;
		case F.I7:
			tagStr = "F.I7";
			break;
		case F.I8:
			tagStr = "F.I8";
			break;
		case F.I9:
			tagStr = "F.I9";
			break;
		case F.I10:
			tagStr = "F.I10";
			break;
		case F.INSREF1:
			tagStr = "F.INSREF1";
			break;
		case F.INSREF2:
			tagStr = "F.INSREF2";
			break;
		case F.INSREF3:
			tagStr = "F.INSREF3";
			break;
		case F.INSREF4:
			tagStr = "F.INSREF4";
			break;
		case F.INSREF5:
			tagStr = "F.INSREF5";
			break;
		case F.COMBOLEGS:
			tagStr = "F.COMBOLEGS";
			break;
		case F.SWINGFACTOR:
			tagStr = "F.SWINGFACTOR";
			break;
		case F.SWINGMETHOD:
			tagStr = "F.SWINGMETHOD";
			break;
		case F.INCOMEPROPMAN:
			tagStr = "F.INCOMEPROPMAN";
			break;
		case F.CLOSEPRICE1DDATE:
			tagStr = "F.CLOSEPRICE1DDATE";
			break;
		case F.CLOSEPRICEDATE:
			tagStr = "F.CLOSEPRICEDATE";
			break;
		case F.PRIIP00001:
			tagStr = "F.PRIIP00001";
			break;
		case F.PRIIP00002:
			tagStr = "F.PRIIP00002";
			break;
		case F.PRIIP00004:
			tagStr = "F.PRIIP00004";
			break;
		case F.PRIIP00005:
			tagStr = "F.PRIIP00005";
			break;
		case F.PRIIP00006:
			tagStr = "F.PRIIP00006";
			break;
		case F.PRIIP00007:
			tagStr = "F.PRIIP00007";
			break;
		case F.PRIIP00008:
			tagStr = "F.PRIIP00008";
			break;
		case F.PRIIP00009:
			tagStr = "F.PRIIP00009";
			break;
		case F.PRIIP00015:
			tagStr = "F.PRIIP00015";
			break;
		case F.PRIIP00016:
			tagStr = "F.PRIIP00016";
			break;
		case F.PRIIP00017:
			tagStr = "F.PRIIP00017";
			break;
		case F.PRIIP00075:
			tagStr = "F.PRIIP00075";
			break;
		case F.PRIIP00110:
			tagStr = "F.PRIIP00110";
			break;
		case F.PRIIP01095:
			tagStr = "F.PRIIP01095";
			break;
		case F.PRIIP01125:
			tagStr = "F.PRIIP01125";
			break;
		case F.PRIIP02032:
			tagStr = "F.PRIIP02032";
			break;
		case F.PRIIP02035:
			tagStr = "F.PRIIP02035";
			break;
		case F.PRIIP02062:
			tagStr = "F.PRIIP02062";
			break;
		case F.PRIIP02065:
			tagStr = "F.PRIIP02065";
			break;
		case F.PRIIP02092:
			tagStr = "F.PRIIP02092";
			break;
		case F.PRIIP02095:
			tagStr = "F.PRIIP02095";
			break;
		case F.PRIIP02122:
			tagStr = "F.PRIIP02122";
			break;
		case F.PRIIP02125:
			tagStr = "F.PRIIP02125";
			break;
		case F.PRIIP02185:
			tagStr = "F.PRIIP02185";
			break;
		case F.PRIIP02190:
			tagStr = "F.PRIIP02190";
			break;
		case F.PRIIP02200:
			tagStr = "F.PRIIP02200";
			break;
		case F.PRIIP02210:
			tagStr = "F.PRIIP02210";
			break;
		case F.PRIIP02220:
			tagStr = "F.PRIIP02220";
			break;
		case F.PRIIP04086:
			tagStr = "F.PRIIP04086";
			break;
		case F.PRIIP04087:
			tagStr = "F.PRIIP04087";
			break;
		case F.PRIIP04088:
			tagStr = "F.PRIIP04088";
			break;
		case F.PRIIP04089:
			tagStr = "F.PRIIP04089";
			break;
		case F.PRIIP04120:
			tagStr = "F.PRIIP04120";
			break;
		case F.PRIIP04130:
			tagStr = "F.PRIIP04130";
			break;
		case F.PRIIP04140:
			tagStr = "F.PRIIP04140";
			break;
		case F.PRIIP04150:
			tagStr = "F.PRIIP04150";
			break;
		case F.PRIIP04160:
			tagStr = "F.PRIIP04160";
			break;
		case F.PRIIP06005:
			tagStr = "F.PRIIP06005";
			break;
		case F.PRIIP07005:
			tagStr = "F.PRIIP07005";
			break;
		case F.CLOSEPRICE4Y:
			tagStr = "F.CLOSEPRICE4Y";
			break;
		case F.CLOSEPRICE6Y:
			tagStr = "F.CLOSEPRICE6Y";
			break;
		case F.CLOSEPRICE7Y:
			tagStr = "F.CLOSEPRICE7Y";
			break;
		case F.CLOSEPRICE8Y:
			tagStr = "F.CLOSEPRICE8Y";
			break;
		case F.CLOSEPRICE9Y:
			tagStr = "F.CLOSEPRICE9Y";
			break;
		case F.CLOSEYIELD4Y:
			tagStr = "F.CLOSEYIELD4Y";
			break;
		case F.CLOSEYIELD6Y:
			tagStr = "F.CLOSEYIELD6Y";
			break;
		case F.CLOSEYIELD7Y:
			tagStr = "F.CLOSEYIELD7Y";
			break;
		case F.CLOSEYIELD8Y:
			tagStr = "F.CLOSEYIELD8Y";
			break;
		case F.CLOSEYIELD9Y:
			tagStr = "F.CLOSEYIELD9Y";
			break;
		case F.SWINGFACTORSUB:
			tagStr = "F.SWINGFACTORSUB";
			break;
		case F.CLEARING:
			tagStr = "F.CLEARING";
			break;
		case F.LASTMOD:
			tagStr = "F.LASTMOD";
			break;
		case F.APPLICABLENAV:
			tagStr = "F.APPLICABLENAV";
			break;
		case F.FUNDCUTOFFTIME:
			tagStr = "F.FUNDCUTOFFTIME";
			break;
		case F.EVENTSTATUS:
			tagStr = "F.EVENTSTATUS";
			break;
		case F.AVGTURNOVER1W:
			tagStr = "F.AVGTURNOVER1W";
			break;
		case F.AVGTURNOVER1M:
			tagStr = "F.AVGTURNOVER1M";
			break;
		case F.AVGTURNOVER3M:
			tagStr = "F.AVGTURNOVER3M";
			break;
		case F.AVGTURNOVER1Y:
			tagStr = "F.AVGTURNOVER1Y";
			break;
		case F.AVGTURNOVERYTD:
			tagStr = "F.AVGTURNOVERYTD";
			break;
		case F.SMA20:
			tagStr = "F.SMA20";
			break;
		case F.SMA50:
			tagStr = "F.SMA50";
			break;
		case F.SMA200:
			tagStr = "F.SMA200";
			break;
		case F.RSI14:
			tagStr = "F.RSI14";
			break;
		case F.MACD:
			tagStr = "F.MACD";
			break;
		case F.TRADESTATEACTIONS:
			tagStr = "F.TRADESTATEACTIONS";
			break;
		case F.SHARECLASS:
			tagStr = "F.SHARECLASS";
			break;
		default:
			tagStr = "unknown [" + tag + "]";
			break;
		}

		return "\t" + tag + "." + tagStr + " = " + value;
	}
}
