Open Source Repository

Home /excel/jxl-2.6.12 | Repository Home


jxl/biff/formula/Function.java
/*********************************************************************
*
*      Copyright (C) 2002 Andrew Khan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/

package jxl.biff.formula;

import jxl.common.Logger;

import jxl.WorkbookSettings;

/**
 * An enumeration detailing the Excel function codes
 */
final class Function
{
  /**
   * The logger
   */
  private static Logger logger = Logger.getLogger(Function.class);

  /**
   * The code which applies to this function
   */
  private final int code;

  /**
   * The property name of this function
   */
  private final String name;

  /**
   * The number of args this function expects
   */
  private final int numArgs;


  /**
   * All available functions.  This attribute is package protected in order
   * to enable the FunctionNames to initialize
   */
  private static Function[] functions = new Function[0];

  /**
   * Constructor
   * Sets the token value and adds this token to the array of all token
   *
   @param v the biff code for the token
   @param s the string
   @param a the number of arguments
   */
  private Function(int v, String s, int a)
  {
    code = v;
    name = s;
    numArgs = a;

    // Grow the array
    Function[] newarray = new Function[functions.length + 1];
    System.arraycopy(functions, 0, newarray, 0, functions.length);
    newarray[functions.lengththis;
    functions = newarray;
  }

  /**
   * Standard hash code method
   *
   @return the hash code
   */
  public int hashCode()
  {
    return code;
  }

  /**
   * Gets the function code - used when generating token data
   *
   @return the code
   */
  int getCode()
  {
    return code;
  }

  /**
   * Gets the property name. Used by the FunctionNames object when initializing
   * the locale specific names
   *
   @return the property name for this function
   */
  String getPropertyName()
  {
    return name;
  }

  /**
   * Gets the function name
   @param ws the workbook settings
   @return the function name
   */
  String getName(WorkbookSettings ws)
  {
    FunctionNames fn = ws.getFunctionNames();
    return fn.getName(this);
  }

  /**
   * Gets the number of arguments for this function
   *
   @return the number of arguments
   */
  int getNumArgs()
  {
    return numArgs;
  }

  /**
   * Gets the type object from its integer value
   *
   @param v the function value
   @return the function
   */
  public static Function getFunction(int v)
  {
    Function f = null;

    for (int i = 0; i < functions.length; i++)
    {
      if (functions[i].code == v)
      {
        f = functions[i];
        break;
      }
    }

    return f != null ? f : UNKNOWN;
  }

  /**
   * Gets the type object from its string value.  Used when parsing strings
   *
   @param v the function name
   @param ws the workbook settings
   @return the function
   */
  public static Function getFunction(String v, WorkbookSettings ws)
  {
    FunctionNames fn = ws.getFunctionNames();
    Function f = fn.getFunction(v);
    return f != null ? f : UNKNOWN;
  }

  /**
   * Accessor for all the functions, used by the internationalization
   * work around
   *
   @return all the functions
   */
  static Function[] getFunctions()
  {
    return functions;
  }

  // The functions

  public static final Function COUNT =
    new Function(0x0"count"0xff);
  public static final Function ATTRIBUTE = new Function(0x1""0xff);
  public static final Function ISNA =
    new Function(0x2"isna"1);
  public static final Function ISERROR =
    new Function(0x3"iserror"1);
  public static final Function SUM =
    new Function(0x4"sum"0xff);
  public static final Function AVERAGE =
    new Function(0x5"average"0xff);
  public static final Function MIN =
    new Function(0x6"min"0xff);
  public static final Function MAX =
    new Function(0x7"max"0xff);
  public static final Function ROW =
    new Function(0x8"row"0xff);
  public static final Function COLUMN =
    new Function(0x9"column"0xff);
  public static final Function NA =
    new Function(0xa"na"0);
  public static final Function NPV =
    new Function(0xb"npv"0xff);
  public static final Function STDEV =
    new Function(0xc"stdev"0xff);
  public static final Function DOLLAR =
    new Function(0xd"dollar"2);
  public static final Function FIXED =
    new Function(0xe"fixed"0xff);
  public static final Function SIN =
    new Function(0xf"sin"1);
  public static final Function COS =
    new Function(0x10"cos"1);
  public static final Function TAN =
    new Function(0x11"tan"1);
  public static final Function ATAN =
    new Function(0x12"atan"1);
  public static final Function PI =
    new Function(0x13"pi"0);
  public static final Function SQRT =
    new Function(0x14"sqrt"1);
  public static final Function EXP =
    new Function(0x15"exp"1);
  public static final Function LN =
    new Function(0x16"ln"1);
  public static final Function LOG10 =
    new Function(0x17"log10"1);
  public static final Function ABS =
    new Function(0x18"abs"1);
  public static final Function INT =
    new Function(0x19"int"1);
  public static final Function SIGN =
    new Function(0x1a"sign"1);
  public static final Function ROUND =
    new Function(0x1b"round"2);
  public static final Function LOOKUP =
    new Function(0x1c"lookup"2);
  public static final Function INDEX =
    new Function(0x1d"index"3);
  public static final Function REPT =  new Function(0x1e"rept"2);
  public static final Function MID =
    new Function(0x1f"mid"3);
  public static final Function LEN =
    new Function(0x20"len"1);
  public static final Function VALUE =
    new Function(0x21"value"1);
  public static final Function TRUE =
    new Function(0x22"true"0);
  public static final Function FALSE =
    new Function(0x23"false"0);
  public static final Function AND =
    new Function(0x24"and"0xff);
  public static final Function OR =
    new Function(0x25"or"0xff);
  public static final Function NOT =
    new Function(0x26"not"1);
  public static final Function MOD =
    new Function(0x27"mod"2);
  public static final Function DCOUNT =
    new Function(0x28"dcount"3);
  public static final Function DSUM =
    new Function(0x29"dsum"3);
  public static final Function DAVERAGE =
    new Function(0x2a"daverage"3);
  public static final Function DMIN =
    new Function(0x2b"dmin"3);
  public static final Function DMAX =
    new Function(0x2c"dmax"3);
  public static final Function DSTDEV =
    new Function(0x2d"dstdev"3);
  public static final Function VAR =
    new Function(0x2e"var"0xff);
  public static final Function DVAR =
    new Function(0x2f"dvar"3);
  public static final Function TEXT =
    new Function(0x30"text"2);
  public static final Function LINEST =
    new Function(0x31"linest"0xff);
  public static final Function TREND =
    new Function(0x32"trend"0xff);
  public static final Function LOGEST =
    new Function(0x33"logest"0xff);
  public static final Function GROWTH =
    new Function(0x34"growth"0xff);
  //public static final Function GOTO =  new Function(0x35, "GOTO",);
  //public static final Function HALT =  new Function(0x36, "HALT",);
  public static final Function PV =
    new Function(0x38"pv"0xff);
  public static final Function FV =
    new Function(0x39"fv"0xff);
  public static final Function NPER =
    new Function(0x3a"nper"0xff);
  public static final Function PMT =
    new Function(0x3b"pmt"0xff);
  public static final Function RATE =
    new Function(0x3c"rate"0xff);
  //public static final Function MIRR =  new Function(0x3d, "MIRR",);
  //public static final Function IRR =  new Function(0x3e, "IRR",);
  public static final Function RAND =
    new Function(0x3f"rand"0);
  public static final Function MATCH =
    new Function(0x40"match"3);
  public static final Function DATE =
    new Function(0x41"date"3);
  public static final Function TIME =
    new Function(0x42"time"3);
  public static final Function DAY =
    new Function(0x43"day"1);
  public static final Function MONTH =
    new Function(0x44"month"1);
  public static final Function YEAR =
    new Function(0x45"year"1);
  public static final Function WEEKDAY =
    new Function(0x46"weekday"2);
  public static final Function HOUR =
    new Function(0x47"hour"1);
  public static final Function MINUTE =
    new Function(0x48"minute"1);
  public static final Function SECOND =
    new Function(0x49"second"1);
  public static final Function NOW =
    new Function(0x4a"now"0);
  public static final Function AREAS =
    new Function(0x4b"areas"0xff);
  public static final Function ROWS =
    new Function(0x4c"rows"1);
  public static final Function COLUMNS =
    new Function(0x4d"columns"0xff);
  public static final Function OFFSET =
    new Function(0x4e"offset"0xff);
  //public static final Function ABSREF =  new Function(0x4f, "ABSREF",);
  //public static final Function RELREF =  new Function(0x50, "RELREF",);
  //public static final Function ARGUMENT =  new Function(0x51,"ARGUMENT",);
  public static final Function SEARCH =  new Function(0x52"search"0xff);
  public static final Function TRANSPOSE =
    new Function(0x53"transpose"0xff);
  public static final Function ERROR =
    new Function(0x54"error"1);
  //public static final Function STEP =  new Function(0x55, "STEP",);
  public static final Function TYPE =
    new Function(0x56"type"1);
  //public static final Function ECHO =  new Function(0x57, "ECHO",);
  //public static final Function SETNAME =  new Function(0x58, "SETNAME",);
  //public static final Function CALLER =  new Function(0x59, "CALLER",);
  //public static final Function DEREF =  new Function(0x5a, "DEREF",);
  //public static final Function WINDOWS =  new Function(0x5b, "WINDOWS",);
  //public static final Function SERIES =  new Function(0x5c, "SERIES",);
  //public static final Function DOCUMENTS =  new Function(0x5d,"DOCUMENTS",);
  //public static final Function ACTIVECELL =  new Function(0x5e,"ACTIVECELL",);
  //public static final Function SELECTION =  new Function(0x5f,"SELECTION",);
  //public static final Function RESULT =  new Function(0x60, "RESULT",);
  public static final Function ATAN2  =
    new Function(0x61"atan2"1);
  public static final Function ASIN =
    new Function(0x62"asin"1);
  public static final Function ACOS =
    new Function(0x63"acos"1);
  public static final Function CHOOSE =
    new Function(0x64"choose"0xff);
  public static final Function HLOOKUP =
    new Function(0x65"hlookup"0xff);
  public static final Function VLOOKUP =
    new Function(0x66"vlookup"0xff);
  //public static final Function LINKS =  new Function(0x67, "LINKS",);
  //public static final Function INPUT =  new Function(0x68, "INPUT",);
  public static final Function ISREF =
    new Function(0x69"isref"1);
  //public static final Function GETFORMULA =  new Function(0x6a,"GETFORMULA",);
  //public static final Function GETNAME =  new Function(0x6b, "GETNAME",);
  //public static final Function SETVALUE =  new Function(0x6c,"SETVALUE",);
  public static final Function LOG =
    new Function(0x6d"log"0xff);
  //public static final Function EXEC =  new Function(0x6e, "EXEC",);
  public static final Function CHAR =
    new Function(0x6f"char"1);
  public static final Function LOWER =
    new Function(0x70"lower"1);
  public static final Function UPPER =
    new Function(0x71"upper"1);
  public static final Function PROPER =
    new Function(0x72"proper"1);
  public static final Function LEFT =
    new Function(0x73"left"0xff);
  public static final Function RIGHT =
    new Function(0x74"right"0xff);
  public static final Function EXACT =
    new Function(0x75"exact"2);
  public static final Function TRIM =
    new Function(0x76"trim"1);
  public static final Function REPLACE =
    new Function(0x77"replace"4);
  public static final Function SUBSTITUTE =
    new Function(0x78"substitute"0xff);
  public static final Function CODE =
    new Function(0x79"code"1);
  //public static final Function NAMES =  new Function(0x7a, "NAMES",);
  //public static final Function DIRECTORY =  new Function(0x7b,"DIRECTORY",);
  public static final Function FIND =
    new Function(0x7c"find"0xff);
  public static final Function CELL =
    new Function(0x7d"cell"2);
  public static final Function ISERR =
    new Function(0x7e"iserr"1);
  public static final Function ISTEXT =
    new Function(0x7f"istext"1);
  public static final Function ISNUMBER =
    new Function(0x80"isnumber"1);
  public static final Function ISBLANK =
    new Function(0x81"isblank"1);
  public static final Function T =
    new Function(0x82"t"1);
  public static final Function N =
    new Function(0x83"n"1);
  //public static final Function FOPEN =  new Function(0x84, "FOPEN",);
  //public static final Function FCLOSE =  new Function(0x85, "FCLOSE",);
  //public static final Function FSIZE =  new Function(0x86, "FSIZE",);
  //public static final Function FREADLN =  new Function(0x87, "FREADLN",);
  //public static final Function FREAD =  new Function(0x88, "FREAD",);
  //public static final Function FWRITELN =  new Function(0x89,"FWRITELN",);
  //public static final Function FWRITE =  new Function(0x8a, "FWRITE",);
  //public static final Function FPOS =  new Function(0x8b, "FPOS",);
  public static final Function DATEVALUE =
    new Function(0x8c"datevalue"1);
  public static final Function TIMEVALUE =
    new Function(0x8d"timevalue"1);
  public static final Function SLN =
    new Function(0x8e"sln"3);
  public static final Function SYD =
    new Function(0x8f"syd"3);
  public static final Function DDB =
    new Function(0x90"ddb"0xff);
  //public static final Function GETDEF =  new Function(0x91, "GETDEF",);
  //public static final Function REFTEXT =  new Function(0x92, "REFTEXT",);
  //public static final Function TEXTREF =  new Function(0x93, "TEXTREF",);
  public static final Function INDIRECT =
    new Function(0x94"indirect"0xff);
  //public static final Function REGISTER =  new Function(0x95,"REGISTER",);
  //public static final Function CALL =  new Function(0x96, "CALL",);
  //public static final Function ADDBAR =  new Function(0x97, "ADDBAR",);
  //public static final Function ADDMENU =  new Function(0x98, "ADDMENU",);
  //public static final Function ADDCOMMAND =
  // new Function(0x99,"ADDCOMMAND",);
  //public static final Function ENABLECOMMAND =
  // new Function(0x9a,"ENABLECOMMAND",);
  //public static final Function CHECKCOMMAND =
  // new Function(0x9b,"CHECKCOMMAND",);
  //public static final Function RENAMECOMMAND =
  // new Function(0x9c,"RENAMECOMMAND",);
  //public static final Function SHOWBAR =  new Function(0x9d, "SHOWBAR",);
  //public static final Function DELETEMENU =
  //  new Function(0x9e,"DELETEMENU",);
  //public static final Function DELETECOMMAND =
  //  new Function(0x9f,"DELETECOMMAND",);
  //public static final Function GETCHARTITEM =
  //  new Function(0xa0,"GETCHARTITEM",);
  //public static final Function DIALOGBOX =  new Function(0xa1,"DIALOGBOX",);
  public static final Function CLEAN =
    new Function(0xa2"clean"1);
  public static final Function MDETERM =
    new Function(0xa3"mdeterm"0xff);
  public static final Function MINVERSE =
    new Function(0xa4"minverse"0xff);
  public static final Function MMULT =
    new Function(0xa5"mmult"0xff);
  //public static final Function FILES =  new Function(0xa6, "FILES",

  public static final Function IPMT =
    new Function(0xa7"ipmt"0xff);
  public static final Function PPMT =
    new Function(0xa8"ppmt"0xff);
  public static final Function COUNTA =
    new Function(0xa9"counta"0xff);
  public static final Function PRODUCT =
    new Function(0xb7"product"0xff);
  public static final Function FACT =
    new Function(0xb8"fact"1);
  //public static final Function GETCELL =  new Function(0xb9, "GETCELL",);
  //public static final Function GETWORKSPACE =
  //  new Function(0xba,"GETWORKSPACE",);
  //public static final Function GETWINDOW =  new Function(0xbb,"GETWINDOW",);
  //public static final Function GETDOCUMENT =
  //  new Function(0xbc,"GETDOCUMENT",);
  public static final Function DPRODUCT =
    new Function(0xbd"dproduct"3);
  public static final Function ISNONTEXT =
    new Function(0xbe"isnontext"1);
  //public static final Function GETNOTE =  new Function(0xbf, "GETNOTE",);
  //public static final Function NOTE =  new Function(0xc0, "NOTE",);
  public static final Function STDEVP =
    new Function(0xc1"stdevp"0xff);
  public static final Function VARP =
    new Function(0xc2"varp"0xff);
  public static final Function DSTDEVP =
    new Function(0xc3"dstdevp"0xff);
  public static final Function DVARP =
    new Function(0xc4"dvarp"0xff);
  public static final Function TRUNC =
    new Function(0xc5"trunc"0xff);
  public static final Function ISLOGICAL =
    new Function(0xc6"islogical"1);
  public static final Function DCOUNTA =
    new Function(0xc7"dcounta"0xff);
  public static final Function FINDB =
    new Function(0xcd"findb"0xff);
  public static final Function SEARCHB =
    new Function(0xce"searchb"3);
  public static final Function REPLACEB =
    new Function(0xcf"replaceb"4);
  public static final Function LEFTB =
    new Function(0xd0"leftb"0xff);
  public static final Function RIGHTB =
    new Function(0xd1"rightb"0xff);
  public static final Function MIDB =
    new Function(0xd2"midb"3);
  public static final Function LENB =
    new Function(0xd3"lenb"1);
  public static final Function ROUNDUP =
    new Function(0xd4"roundup"2);
  public static final Function ROUNDDOWN =
    new Function(0xd5"rounddown"2);
  public static final Function RANK =
    new Function(0xd8"rank"0xff);
  public static final Function ADDRESS =
    new Function(0xdb"address"0xff);
  public static final Function AYS360 =
    new Function(0xdc"days360"0xff);
  public static final Function ODAY =
    new Function(0xdd"today"0);
  public static final Function VDB =
    new Function(0xde"vdb"0xff);
  public static final Function MEDIAN =
    new Function(0xe3"median"0xff);
  public static final Function SUMPRODUCT =
    new Function(0xe4"sumproduct"0xff);
  public static final Function SINH =
    new Function(0xe5"sinh"1);
  public static final Function COSH =
    new Function(0xe6"cosh"1);
  public static final Function TANH =
    new Function(0xe7"tanh"1);
  public static final Function ASINH =
    new Function(0xe8"asinh"1);
  public static final Function ACOSH =
    new Function(0xe9"acosh"1);
  public static final Function ATANH =
    new Function(0xea"atanh"1);
  public static final Function INFO =
    new Function(0xf4"info"1);
  public static final Function AVEDEV =
    new Function(0x10d"avedev"0XFF);
  public static final Function BETADIST =
    new Function(0x10e"betadist"0XFF);
  public static final Function GAMMALN =
    new Function(0x10f"gammaln"1);
  public static final Function BETAINV =
    new Function(0x110"betainv"0XFF);
  public static final Function BINOMDIST =
    new Function(0x111"binomdist"4);
  public static final Function CHIDIST =
    new Function(0x112"chidist"2);
  public static final Function CHIINV =
    new Function(0x113"chiinv"2);
  public static final Function COMBIN =
    new Function(0x114"combin"2);
  public static final Function CONFIDENCE =
    new Function(0x115"confidence"3);
  public static final Function CRITBINOM =
    new Function(0x116"critbinom"3);
  public static final Function EVEN =
    new Function(0x117"even"1);
  public static final Function EXPONDIST =
    new Function(0x118"expondist"3);
  public static final Function FDIST =
    new Function(0x119"fdist"3);
  public static final Function FINV =
    new Function(0x11a"finv"3);
  public static final Function FISHER =
    new Function(0x11b"fisher"1);
  public static final Function FISHERINV =
    new Function(0x11c"fisherinv"1);
  public static final Function FLOOR =
    new Function(0x11d"floor"2);
  public static final Function GAMMADIST =
    new Function(0x11e"gammadist"4);
  public static final Function GAMMAINV =
    new Function(0x11f"gammainv"3);
  public static final Function CEILING =
    new Function(0x120"ceiling"2);
  public static final Function HYPGEOMDIST =
    new Function(0x121"hypgeomdist"4);
  public static final Function LOGNORMDIST =
    new Function(0x122"lognormdist"3);
  public static final Function LOGINV =
    new Function(0x123"loginv"3);
  public static final Function NEGBINOMDIST =
    new Function(0x124"negbinomdist"3);
  public static final Function NORMDIST =
    new Function(0x125"normdist"4);
  public static final Function NORMSDIST =
    new Function(0x126"normsdist"1);
  public static final Function NORMINV =
    new Function(0x127"norminv"3);
  public static final Function NORMSINV =
    new Function(0x128"normsinv"1);
  public static final Function STANDARDIZE =
    new Function(0x129"standardize"3);
  public static final Function ODD =
    new Function(0x12a"odd"1);
  public static final Function PERMUT =
    new Function(0x12b"permut"2);
  public static final Function POISSON =
    new Function(0x12c"poisson"3);
  public static final Function TDIST =
    new Function(0x12d"tdist"3);
  public static final Function WEIBULL =
    new Function(0x12e"weibull"4);
  public static final Function SUMXMY2 =
    new Function(303"sumxmy2"0xff);
  public static final Function SUMX2MY2 =
    new Function(304"sumx2my2"0xff);
  public static final Function SUMX2PY2 =
    new Function(305"sumx2py2"0xff);
  public static final Function CHITEST =
    new Function(0x132"chitest"0xff);
  public static final Function CORREL =
    new Function(0x133"correl"0xff);
  public static final Function COVAR =
    new Function(0x134"covar"0xff);
  public static final Function FORECAST =
    new Function(0x135"forecast"0xff);
  public static final Function FTEST =
    new Function(0x136"ftest"0xff);
  public static final Function INTERCEPT =
    new Function(0x137"intercept"0xff);
  public static final Function PEARSON =
    new Function(0x138"pearson"0xff);
  public static final Function RSQ =
    new Function(0x139"rsq"0xff);
  public static final Function STEYX =
    new Function(0x13a"steyx"0xff);
  public static final Function SLOPE =
    new Function(0x13b"slope"2);
  public static final Function TTEST =
    new Function(0x13c"ttest"0xff);
  public static final Function PROB =
    new Function(0x13d"prob"0xff);
  public static final Function DEVSQ =
    new Function(0x13e"devsq"0xff);
  public static final Function GEOMEAN =
    new Function(0x13f"geomean"0xff);
  public static final Function HARMEAN =
    new Function(0x140"harmean"0xff);
  public static final Function SUMSQ =
    new Function(0x141"sumsq"0xff);
  public static final Function KURT =
    new Function(0x142"kurt"0xff);
  public static final Function SKEW =
    new Function(0x143"skew"0xff);
  public static final Function ZTEST =
    new Function(0x144"ztest"0xff);
  public static final Function LARGE =
    new Function(0x145"large"0xff);
  public static final Function SMALL =
    new Function(0x146"small"0xff);
  public static final Function QUARTILE =
    new Function(0x147"quartile"0xff);
  public static final Function PERCENTILE =
    new Function(0x148"percentile"0xff);
  public static final Function PERCENTRANK =
    new Function(0x149"percentrank"0xff);
  public static final Function MODE =
    new Function(0x14a"mode"0xff);
  public static final Function TRIMMEAN =
    new Function(0x14b"trimmean"0xff);
  public static final Function TINV =
    new Function(0x14c"tinv"2);
  public static final Function CONCATENATE =
    new Function(0x150"concatenate"0xff);
  public static final Function POWER =
    new Function(0x151"power"2);
  public static final Function RADIANS  =
    new Function(0x156"radians"1);
  public static final Function DEGREES  =
    new Function(0x157"degrees"1);
  public static final Function SUBTOTAL =
    new Function(0x158"subtotal"0xff);
  public static final Function SUMIF  =
    new Function(0x159"sumif"0xff);
  public static final Function COUNTIF  =
    new Function(0x15a"countif"2);
  public static final Function COUNTBLANK =
    new Function(0x15b"countblank"1);
  public static final Function HYPERLINK =
    new Function(0x167"hyperlink"2);
  public static final Function AVERAGEA =
    new Function(0x169"averagea"0xff);
  public static final Function MAXA =
    new Function(0x16a"maxa"0xff);
  public static final Function MINA =
    new Function(0x16b"mina"0xff);
  public static final Function STDEVPA =
    new Function(0x16c"stdevpa"0xff);
  public static final Function VARPA =
    new Function(0x16d"varpa"0xff);
  public static final Function STDEVA =
    new Function(0x16e"stdeva"0xff);
  public static final Function VARA =
    new Function(0x16f"vara"0xff);

  // If token.  This is not an excel assigned number, but one made up
  // in order that the if command may be recognized
  public static final Function IF =
    new Function(0xfffe"if"0xff);

  // Unknown token
  public static final Function UNKNOWN = new Function(0xffff""0);
}