office-gobmx/formula/inc/core_resource.hrc
Gabor Kelemen e3206e6740 Recheck modules [e-f]* with IWYU
See tdf#42949 for motivation

Change-Id: I49a3ce10dee4b03f99156f5b641f69448e1d5617
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128479
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2022-01-17 01:33:35 +01:00

2749 lines
123 KiB
Text

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#pragma once
#include <formula/compiler.hxx>
#include <utility>
#include <unotools/resmgr.hxx>
#define NC_(Context, String) TranslateId(Context, reinterpret_cast<char const *>(u8##String))
/** These English names are used to store/load ODFF as of ODF v1.2. */
// NAMES CAN ONLY BE CHANGED WHEN PROVIDING BACKWARD AND FORWARD COMPATIBILITY
// such that at least two releases can already read the new name to be
// introduced by a later release.
// If there is a reason for another name for some function then add an
// *additional* name to be recognized to sc/source/core/tool/compiler.cxx
// ScCompiler::IsOpCode() in the if (mxSymbols->isODFF()) block.
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
{
{ "IF" , SC_OPCODE_IF },
{ "IFERROR" , SC_OPCODE_IF_ERROR },
{ "IFNA" , SC_OPCODE_IF_NA },
{ "CHOOSE" , SC_OPCODE_CHOOSE },
{ "(" , SC_OPCODE_OPEN },
{ ")" , SC_OPCODE_CLOSE },
// SC_OPCODE_TABLE_REF_... not supported in ODFF
{ "{" , SC_OPCODE_ARRAY_OPEN },
{ "}" , SC_OPCODE_ARRAY_CLOSE },
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
{ ";" , SC_OPCODE_SEP },
{ "%" , SC_OPCODE_PERCENT_SIGN },
{ "+" , SC_OPCODE_ADD },
{ "-" , SC_OPCODE_SUB },
{ "*" , SC_OPCODE_MUL },
{ "/" , SC_OPCODE_DIV },
{ "&" , SC_OPCODE_AMPERSAND },
{ "^" , SC_OPCODE_POW },
{ "=" , SC_OPCODE_EQUAL },
{ "<>" , SC_OPCODE_NOT_EQUAL },
{ "<" , SC_OPCODE_LESS },
{ ">" , SC_OPCODE_GREATER },
{ "<=" , SC_OPCODE_LESS_EQUAL },
{ ">=" , SC_OPCODE_GREATER_EQUAL },
{ "AND" , SC_OPCODE_AND },
{ "OR" , SC_OPCODE_OR },
{ "XOR" , SC_OPCODE_XOR },
{ "!" , SC_OPCODE_INTERSECT },
{ "~" , SC_OPCODE_UNION },
{ ":" , SC_OPCODE_RANGE },
{ "NOT" , SC_OPCODE_NOT },
{ "NEG" , SC_OPCODE_NEG },
{ "-" , SC_OPCODE_NEG_SUB },
{ "PI" , SC_OPCODE_PI },
{ "RAND" , SC_OPCODE_RANDOM },
{ "TRUE" , SC_OPCODE_TRUE },
{ "FALSE" , SC_OPCODE_FALSE },
{ "TODAY" , SC_OPCODE_GET_ACT_DATE },
{ "NOW" , SC_OPCODE_GET_ACT_TIME },
{ "NA" , SC_OPCODE_NO_VALUE },
{ "ORG.OPENOFFICE.CURRENT" , SC_OPCODE_CURRENT },
{ "DEGREES" , SC_OPCODE_DEG },
{ "RADIANS" , SC_OPCODE_RAD },
{ "SIN" , SC_OPCODE_SIN },
{ "COS" , SC_OPCODE_COS },
{ "TAN" , SC_OPCODE_TAN },
{ "COT" , SC_OPCODE_COT },
{ "ASIN" , SC_OPCODE_ARC_SIN },
{ "ACOS" , SC_OPCODE_ARC_COS },
{ "ATAN" , SC_OPCODE_ARC_TAN },
{ "ACOT" , SC_OPCODE_ARC_COT },
{ "SINH" , SC_OPCODE_SIN_HYP },
{ "COSH" , SC_OPCODE_COS_HYP },
{ "TANH" , SC_OPCODE_TAN_HYP },
{ "COTH" , SC_OPCODE_COT_HYP },
{ "ASINH" , SC_OPCODE_ARC_SIN_HYP },
{ "ACOSH" , SC_OPCODE_ARC_COS_HYP },
{ "ATANH" , SC_OPCODE_ARC_TAN_HYP },
{ "ACOTH" , SC_OPCODE_ARC_COT_HYP },
{ "CSC" , SC_OPCODE_COSECANT },
{ "SEC" , SC_OPCODE_SECANT },
{ "CSCH" , SC_OPCODE_COSECANT_HYP },
{ "SECH" , SC_OPCODE_SECANT_HYP },
{ "EXP" , SC_OPCODE_EXP },
{ "LN" , SC_OPCODE_LN },
{ "SQRT" , SC_OPCODE_SQRT },
{ "FACT" , SC_OPCODE_FACT },
{ "YEAR" , SC_OPCODE_GET_YEAR },
{ "MONTH" , SC_OPCODE_GET_MONTH },
{ "DAY" , SC_OPCODE_GET_DAY },
{ "HOUR" , SC_OPCODE_GET_HOUR },
{ "MINUTE" , SC_OPCODE_GET_MIN },
{ "SECOND" , SC_OPCODE_GET_SEC },
{ "SIGN" , SC_OPCODE_PLUS_MINUS },
{ "ABS" , SC_OPCODE_ABS },
{ "INT" , SC_OPCODE_INT },
{ "PHI" , SC_OPCODE_PHI },
{ "GAUSS" , SC_OPCODE_GAUSS },
{ "ISBLANK" , SC_OPCODE_IS_EMPTY },
{ "ISTEXT" , SC_OPCODE_IS_STRING },
{ "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
{ "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
{ "TYPE" , SC_OPCODE_TYPE },
{ "CELL" , SC_OPCODE_CELL },
{ "ISREF" , SC_OPCODE_IS_REF },
{ "ISNUMBER" , SC_OPCODE_IS_VALUE },
{ "ISFORMULA" , SC_OPCODE_IS_FORMULA },
{ "ISNA" , SC_OPCODE_IS_NV },
{ "ISERR" , SC_OPCODE_IS_ERR },
{ "ISERROR" , SC_OPCODE_IS_ERROR },
{ "ISEVEN" , SC_OPCODE_IS_EVEN },
{ "ISODD" , SC_OPCODE_IS_ODD },
{ "N" , SC_OPCODE_N },
{ "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
{ "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
{ "CODE" , SC_OPCODE_CODE },
{ "TRIM" , SC_OPCODE_TRIM },
{ "UPPER" , SC_OPCODE_UPPER },
{ "PROPER" , SC_OPCODE_PROPER },
{ "LOWER" , SC_OPCODE_LOWER },
{ "LEN" , SC_OPCODE_LEN },
{ "T" , SC_OPCODE_T },
{ "VALUE" , SC_OPCODE_VALUE },
{ "CLEAN" , SC_OPCODE_CLEAN },
{ "CHAR" , SC_OPCODE_CHAR },
{ "JIS" , SC_OPCODE_JIS },
{ "ASC" , SC_OPCODE_ASC },
{ "UNICODE" , SC_OPCODE_UNICODE },
{ "UNICHAR" , SC_OPCODE_UNICHAR },
{ "LOG10" , SC_OPCODE_LOG10 },
{ "EVEN" , SC_OPCODE_EVEN },
{ "ODD" , SC_OPCODE_ODD },
{ "LEGACY.NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
{ "COM.MICROSOFT.NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
{ "FISHER" , SC_OPCODE_FISHER },
{ "FISHERINV" , SC_OPCODE_FISHER_INV },
{ "LEGACY.NORMSINV" , SC_OPCODE_S_NORM_INV },
{ "COM.MICROSOFT.NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
{ "GAMMALN" , SC_OPCODE_GAMMA_LN },
{ "COM.MICROSOFT.GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
{ "ORG.OPENOFFICE.ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
{ "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
{ "FORMULA" , SC_OPCODE_FORMULA },
{ "ATAN2" , SC_OPCODE_ARC_TAN_2 },
{ "COM.MICROSOFT.CEILING.MATH" , SC_OPCODE_CEIL_MATH },
{ "CEILING" , SC_OPCODE_CEIL },
{ "COM.MICROSOFT.CEILING" , SC_OPCODE_CEIL_MS },
{ "COM.MICROSOFT.CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
{ "COM.MICROSOFT.ISO.CEILING" , SC_OPCODE_CEIL_ISO },
{ "FLOOR" , SC_OPCODE_FLOOR },
{ "COM.MICROSOFT.FLOOR" , SC_OPCODE_FLOOR_MS },
{ "COM.MICROSOFT.FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
{ "COM.MICROSOFT.FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
{ "ROUND" , SC_OPCODE_ROUND },
{ "ROUNDUP" , SC_OPCODE_ROUND_UP },
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
{ "TRUNC" , SC_OPCODE_TRUNC },
{ "LOG" , SC_OPCODE_LOG },
{ "POWER" , SC_OPCODE_POWER },
{ "GCD" , SC_OPCODE_GCD },
{ "LCM" , SC_OPCODE_LCM },
{ "MOD" , SC_OPCODE_MOD },
{ "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
{ "SUMSQ" , SC_OPCODE_SUM_SQ },
{ "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
{ "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
{ "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
{ "DATE" , SC_OPCODE_GET_DATE },
{ "TIME" , SC_OPCODE_GET_TIME },
{ "DAYS" , SC_OPCODE_GET_DIFF_DATE },
{ "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
{ "DATEDIF" , SC_OPCODE_GET_DATEDIF },
{ "MIN" , SC_OPCODE_MIN },
{ "MINA" , SC_OPCODE_MIN_A },
{ "MAX" , SC_OPCODE_MAX },
{ "MAXA" , SC_OPCODE_MAX_A },
{ "SUM" , SC_OPCODE_SUM },
{ "PRODUCT" , SC_OPCODE_PRODUCT },
{ "AVERAGE" , SC_OPCODE_AVERAGE },
{ "AVERAGEA" , SC_OPCODE_AVERAGE_A },
{ "COUNT" , SC_OPCODE_COUNT },
{ "COUNTA" , SC_OPCODE_COUNT_2 },
{ "NPV" , SC_OPCODE_NPV },
{ "IRR" , SC_OPCODE_IRR },
{ "MIRR" , SC_OPCODE_MIRR },
{ "ISPMT" , SC_OPCODE_ISPMT },
{ "VAR" , SC_OPCODE_VAR },
{ "VARA" , SC_OPCODE_VAR_A },
{ "VARP" , SC_OPCODE_VAR_P },
{ "VARPA" , SC_OPCODE_VAR_P_A },
{ "COM.MICROSOFT.VAR.P" , SC_OPCODE_VAR_P_MS },
{ "COM.MICROSOFT.VAR.S" , SC_OPCODE_VAR_S },
{ "STDEV" , SC_OPCODE_ST_DEV },
{ "STDEVA" , SC_OPCODE_ST_DEV_A },
{ "STDEVP" , SC_OPCODE_ST_DEV_P },
{ "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
{ "COM.MICROSOFT.STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
{ "COM.MICROSOFT.STDEV.S" , SC_OPCODE_ST_DEV_S },
{ "BINOM.DIST.RANGE" , SC_OPCODE_B },
{ "NORMDIST" , SC_OPCODE_NORM_DIST },
{ "COM.MICROSOFT.NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
{ "EXPONDIST" , SC_OPCODE_EXP_DIST },
{ "COM.MICROSOFT.EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
{ "BINOMDIST" , SC_OPCODE_BINOM_DIST },
{ "COM.MICROSOFT.BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
{ "POISSON" , SC_OPCODE_POISSON_DIST },
{ "COM.MICROSOFT.POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
{ "COMBIN" , SC_OPCODE_COMBIN },
{ "COMBINA" , SC_OPCODE_COMBIN_A },
{ "PERMUT" , SC_OPCODE_PERMUT },
{ "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
{ "PV" , SC_OPCODE_PV },
{ "SYD" , SC_OPCODE_SYD },
{ "DDB" , SC_OPCODE_DDB },
{ "DB" , SC_OPCODE_DB },
{ "VDB" , SC_OPCODE_VBD },
{ "PDURATION" , SC_OPCODE_PDURATION },
{ "SLN" , SC_OPCODE_SLN },
{ "PMT" , SC_OPCODE_PMT },
{ "COLUMNS" , SC_OPCODE_COLUMNS },
{ "ROWS" , SC_OPCODE_ROWS },
{ "SHEETS" , SC_OPCODE_SHEETS },
{ "COLUMN" , SC_OPCODE_COLUMN },
{ "ROW" , SC_OPCODE_ROW },
{ "SHEET" , SC_OPCODE_SHEET },
{ "RRI" , SC_OPCODE_RRI },
{ "FV" , SC_OPCODE_FV },
{ "NPER" , SC_OPCODE_NPER },
{ "RATE" , SC_OPCODE_RATE },
{ "IPMT" , SC_OPCODE_IPMT },
{ "PPMT" , SC_OPCODE_PPMT },
{ "CUMIPMT" , SC_OPCODE_CUM_IPMT },
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
{ "EFFECT" , SC_OPCODE_EFFECT },
{ "NOMINAL" , SC_OPCODE_NOMINAL },
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
{ "DSUM" , SC_OPCODE_DB_SUM },
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
{ "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
{ "DGET" , SC_OPCODE_DB_GET },
{ "DMAX" , SC_OPCODE_DB_MAX },
{ "DMIN" , SC_OPCODE_DB_MIN },
{ "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
{ "DSTDEV" , SC_OPCODE_DB_STD_DEV },
{ "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
{ "DVAR" , SC_OPCODE_DB_VAR },
{ "DVARP" , SC_OPCODE_DB_VAR_P },
{ "INDIRECT" , SC_OPCODE_INDIRECT },
{ "ADDRESS" , SC_OPCODE_ADDRESS },
{ "MATCH" , SC_OPCODE_MATCH },
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
{ "COUNTIF" , SC_OPCODE_COUNT_IF },
{ "SUMIF" , SC_OPCODE_SUM_IF },
{ "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
{ "SUMIFS" , SC_OPCODE_SUM_IFS },
{ "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
{ "COUNTIFS" , SC_OPCODE_COUNT_IFS },
{ "LOOKUP" , SC_OPCODE_LOOKUP },
{ "VLOOKUP" , SC_OPCODE_V_LOOKUP },
{ "HLOOKUP" , SC_OPCODE_H_LOOKUP },
{ "ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
{ "OFFSET" , SC_OPCODE_OFFSET },
{ "INDEX" , SC_OPCODE_INDEX },
{ "AREAS" , SC_OPCODE_AREAS },
{ "DOLLAR" , SC_OPCODE_CURRENCY },
{ "REPLACE" , SC_OPCODE_REPLACE },
{ "FIXED" , SC_OPCODE_FIXED },
{ "FIND" , SC_OPCODE_FIND },
{ "EXACT" , SC_OPCODE_EXACT },
{ "LEFT" , SC_OPCODE_LEFT },
{ "RIGHT" , SC_OPCODE_RIGHT },
{ "SEARCH" , SC_OPCODE_SEARCH },
{ "MID" , SC_OPCODE_MID },
{ "LENB" , SC_OPCODE_LENB },
{ "RIGHTB" , SC_OPCODE_RIGHTB },
{ "LEFTB" , SC_OPCODE_LEFTB },
{ "REPLACEB" , SC_OPCODE_REPLACEB },
{ "FINDB" , SC_OPCODE_FINDB },
{ "SEARCHB" , SC_OPCODE_SEARCHB },
{ "MIDB" , SC_OPCODE_MIDB },
{ "TEXT" , SC_OPCODE_TEXT },
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
{ "REPT" , SC_OPCODE_REPT },
{ "CONCATENATE" , SC_OPCODE_CONCAT },
{ "COM.MICROSOFT.CONCAT" , SC_OPCODE_CONCAT_MS },
{ "COM.MICROSOFT.TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
{ "COM.MICROSOFT.IFS" , SC_OPCODE_IFS_MS },
{ "COM.MICROSOFT.SWITCH" , SC_OPCODE_SWITCH_MS },
{ "COM.MICROSOFT.MINIFS" , SC_OPCODE_MINIFS_MS },
{ "COM.MICROSOFT.MAXIFS" , SC_OPCODE_MAXIFS_MS },
{ "MVALUE" , SC_OPCODE_MAT_VALUE },
{ "MDETERM" , SC_OPCODE_MAT_DET },
{ "MINVERSE" , SC_OPCODE_MAT_INV },
{ "MMULT" , SC_OPCODE_MAT_MULT },
{ "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
{ "MUNIT" , SC_OPCODE_MATRIX_UNIT },
{ "ORG.OPENOFFICE.GOALSEEK" , SC_OPCODE_BACK_SOLVER },
{ "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
{ "COM.MICROSOFT.HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
{ "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
{ "COM.MICROSOFT.LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
{ "LEGACY.TDIST" , SC_OPCODE_T_DIST },
{ "COM.MICROSOFT.T.DIST.2T" , SC_OPCODE_T_DIST_2T },
{ "COM.MICROSOFT.T.DIST" , SC_OPCODE_T_DIST_MS },
{ "COM.MICROSOFT.T.DIST.RT" , SC_OPCODE_T_DIST_RT },
{ "LEGACY.FDIST" , SC_OPCODE_F_DIST },
{ "FDIST" , SC_OPCODE_F_DIST_LT },
{ "COM.MICROSOFT.F.DIST.RT" , SC_OPCODE_F_DIST_RT },
{ "LEGACY.CHIDIST" , SC_OPCODE_CHI_DIST },
{ "COM.MICROSOFT.CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
{ "WEIBULL" , SC_OPCODE_WEIBULL },
{ "COM.MICROSOFT.WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
{ "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
{ "COM.MICROSOFT.NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
{ "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
{ "COM.MICROSOFT.BINOM.INV" , SC_OPCODE_BINOM_INV },
{ "KURT" , SC_OPCODE_KURT },
{ "HARMEAN" , SC_OPCODE_HAR_MEAN },
{ "GEOMEAN" , SC_OPCODE_GEO_MEAN },
{ "STANDARDIZE" , SC_OPCODE_STANDARD },
{ "AVEDEV" , SC_OPCODE_AVE_DEV },
{ "SKEW" , SC_OPCODE_SKEW },
{ "SKEWP" , SC_OPCODE_SKEWP },
{ "DEVSQ" , SC_OPCODE_DEV_SQ },
{ "MEDIAN" , SC_OPCODE_MEDIAN },
{ "MODE" , SC_OPCODE_MODAL_VALUE },
{ "COM.MICROSOFT.MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
{ "COM.MICROSOFT.MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
{ "ZTEST" , SC_OPCODE_Z_TEST },
{ "COM.MICROSOFT.Z.TEST" , SC_OPCODE_Z_TEST_MS },
{ "COM.MICROSOFT.AGGREGATE" , SC_OPCODE_AGGREGATE },
{ "TTEST" , SC_OPCODE_T_TEST },
{ "COM.MICROSOFT.T.TEST" , SC_OPCODE_T_TEST_MS },
{ "RANK" , SC_OPCODE_RANK },
{ "PERCENTILE" , SC_OPCODE_PERCENTILE },
{ "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
{ "COM.MICROSOFT.PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
{ "COM.MICROSOFT.PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
{ "COM.MICROSOFT.QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
{ "COM.MICROSOFT.RANK.EQ" , SC_OPCODE_RANK_EQ },
{ "COM.MICROSOFT.PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
{ "COM.MICROSOFT.PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
{ "COM.MICROSOFT.QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
{ "COM.MICROSOFT.RANK.AVG" , SC_OPCODE_RANK_AVG },
{ "LARGE" , SC_OPCODE_LARGE },
{ "SMALL" , SC_OPCODE_SMALL },
{ "FREQUENCY" , SC_OPCODE_FREQUENCY },
{ "QUARTILE" , SC_OPCODE_QUARTILE },
{ "NORMINV" , SC_OPCODE_NORM_INV },
{ "COM.MICROSOFT.NORM.INV" , SC_OPCODE_NORM_INV_MS },
{ "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
{ "COM.MICROSOFT.CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
{ "COM.MICROSOFT.CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
{ "FTEST" , SC_OPCODE_F_TEST },
{ "COM.MICROSOFT.F.TEST" , SC_OPCODE_F_TEST_MS },
{ "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
{ "PROB" , SC_OPCODE_PROB },
{ "CORREL" , SC_OPCODE_CORREL },
{ "COVAR" , SC_OPCODE_COVAR },
{ "COM.MICROSOFT.COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
{ "COM.MICROSOFT.COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
{ "PEARSON" , SC_OPCODE_PEARSON },
{ "RSQ" , SC_OPCODE_RSQ },
{ "STEYX" , SC_OPCODE_STEYX },
{ "SLOPE" , SC_OPCODE_SLOPE },
{ "INTERCEPT" , SC_OPCODE_INTERCEPT },
{ "TREND" , SC_OPCODE_TREND },
{ "GROWTH" , SC_OPCODE_GROWTH },
{ "LINEST" , SC_OPCODE_LINEST },
{ "LOGEST" , SC_OPCODE_LOGEST },
{ "FORECAST" , SC_OPCODE_FORECAST },
{ "COM.MICROSOFT.FORECAST.ETS" , SC_OPCODE_FORECAST_ETS_ADD },
{ "COM.MICROSOFT.FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
{ "ORG.LIBREOFFICE.FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
{ "COM.MICROSOFT.FORECAST.ETS.CONFINT" , SC_OPCODE_FORECAST_ETS_PIA },
{ "ORG.LIBREOFFICE.FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
{ "COM.MICROSOFT.FORECAST.ETS.STAT" , SC_OPCODE_FORECAST_ETS_STA },
{ "ORG.LIBREOFFICE.FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
{ "COM.MICROSOFT.FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
{ "LEGACY.CHIINV" , SC_OPCODE_CHI_INV },
{ "COM.MICROSOFT.CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
{ "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
{ "COM.MICROSOFT.GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
{ "GAMMAINV" , SC_OPCODE_GAMMA_INV },
{ "COM.MICROSOFT.GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
{ "TINV" , SC_OPCODE_T_INV },
{ "COM.MICROSOFT.T.INV.2T" , SC_OPCODE_T_INV_2T },
{ "COM.MICROSOFT.T.INV" , SC_OPCODE_T_INV_MS },
{ "LEGACY.FINV" , SC_OPCODE_F_INV },
{ "FINV" , SC_OPCODE_F_INV_LT },
{ "COM.MICROSOFT.F.INV.RT" , SC_OPCODE_F_INV_RT },
{ "LEGACY.CHITEST" , SC_OPCODE_CHI_TEST },
{ "COM.MICROSOFT.CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
{ "LOGINV" , SC_OPCODE_LOG_INV },
{ "COM.MICROSOFT.LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
{ "MULTIPLE.OPERATIONS" , SC_OPCODE_TABLE_OP },
{ "BETADIST" , SC_OPCODE_BETA_DIST },
{ "BETAINV" , SC_OPCODE_BETA_INV },
{ "COM.MICROSOFT.BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
{ "COM.MICROSOFT.BETA.INV" , SC_OPCODE_BETA_INV_MS },
{ "WEEKNUM" , SC_OPCODE_WEEK },
{ "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
{ "ORG.LIBREOFFICE.WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
{ "ORG.OPENOFFICE.EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
{ "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
{ "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
{ "COM.MICROSOFT.NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
{ "COM.MICROSOFT.WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
{ "#NAME!" , SC_OPCODE_NO_NAME },
{ "ORG.OPENOFFICE.STYLE" , SC_OPCODE_STYLE },
{ "DDE" , SC_OPCODE_DDE },
{ "BASE" , SC_OPCODE_BASE },
{ "DECIMAL" , SC_OPCODE_DECIMAL },
{ "ORG.OPENOFFICE.CONVERT" , SC_OPCODE_CONVERT_OOO },
{ "ROMAN" , SC_OPCODE_ROMAN },
{ "ARABIC" , SC_OPCODE_ARABIC },
{ "HYPERLINK" , SC_OPCODE_HYPERLINK },
{ "INFO" , SC_OPCODE_INFO },
{ "COM.MICROSOFT.BAHTTEXT" , SC_OPCODE_BAHTTEXT },
{ "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
{ "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
{ "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
{ "GAMMA" , SC_OPCODE_GAMMA },
{ "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
{ "COM.MICROSOFT.CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
{ "CHISQINV" , SC_OPCODE_CHISQ_INV },
{ "COM.MICROSOFT.CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
{ "BITAND" , SC_OPCODE_BITAND },
{ "BITOR" , SC_OPCODE_BITOR },
{ "BITXOR" , SC_OPCODE_BITXOR },
{ "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
{ "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
/* BEGIN defined ERROR.TYPE() values. */
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
{ "#REF!" , SC_OPCODE_ERROR_REF },
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
{ "#N/A" , SC_OPCODE_ERROR_NA },
/* END defined ERROR.TYPE() values. */
{ "COM.MICROSOFT.FILTERXML" , SC_OPCODE_FILTERXML },
{ "COM.MICROSOFT.WEBSERVICE" , SC_OPCODE_WEBSERVICE },
{ "ORG.LIBREOFFICE.COLOR" , SC_OPCODE_COLOR },
{ "COM.MICROSOFT.ERF.PRECISE" , SC_OPCODE_ERF_MS },
{ "COM.MICROSOFT.ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
{ "COM.MICROSOFT.ENCODEURL" , SC_OPCODE_ENCODEURL },
{ "ORG.LIBREOFFICE.RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
{ "ORG.LIBREOFFICE.ROUNDSIG" , SC_OPCODE_ROUNDSIG },
{ "ORG.LIBREOFFICE.REGEX" , SC_OPCODE_REGEX },
{ "ORG.LIBREOFFICE.FOURIER", SC_OPCODE_FOURIER },
{ "ORG.LIBREOFFICE.RAND.NV" , SC_OPCODE_RANDOM_NV },
{ "ORG.LIBREOFFICE.RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
{ nullptr, -1 }
};
/** These function names are used in the OOXML XLSX import/export. */
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
{
{ "IF" , SC_OPCODE_IF },
{ "IFERROR" , SC_OPCODE_IF_ERROR },
{ "_xlfn.IFNA" , SC_OPCODE_IF_NA },
{ "CHOOSE" , SC_OPCODE_CHOOSE },
{ "(" , SC_OPCODE_OPEN },
{ ")" , SC_OPCODE_CLOSE },
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
{ "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
{ "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
{ "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
{ "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
{ "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
{ "{" , SC_OPCODE_ARRAY_OPEN },
{ "}" , SC_OPCODE_ARRAY_CLOSE },
{ ";" , SC_OPCODE_ARRAY_ROW_SEP },
{ "," , SC_OPCODE_ARRAY_COL_SEP },
{ "," , SC_OPCODE_SEP },
{ "%" , SC_OPCODE_PERCENT_SIGN },
{ "+" , SC_OPCODE_ADD },
{ "-" , SC_OPCODE_SUB },
{ "*" , SC_OPCODE_MUL },
{ "/" , SC_OPCODE_DIV },
{ "&" , SC_OPCODE_AMPERSAND },
{ "^" , SC_OPCODE_POW },
{ "=" , SC_OPCODE_EQUAL },
{ "<>" , SC_OPCODE_NOT_EQUAL },
{ "<" , SC_OPCODE_LESS },
{ ">" , SC_OPCODE_GREATER },
{ "<=" , SC_OPCODE_LESS_EQUAL },
{ ">=" , SC_OPCODE_GREATER_EQUAL },
{ "AND" , SC_OPCODE_AND },
{ "OR" , SC_OPCODE_OR },
{ "_xlfn.XOR" , SC_OPCODE_XOR },
{ " " , SC_OPCODE_INTERSECT },
{ "~" , SC_OPCODE_UNION },
{ ":" , SC_OPCODE_RANGE },
{ "NOT" , SC_OPCODE_NOT },
{ "NEG" , SC_OPCODE_NEG },
{ "-" , SC_OPCODE_NEG_SUB },
{ "PI" , SC_OPCODE_PI },
{ "RAND" , SC_OPCODE_RANDOM },
{ "TRUE" , SC_OPCODE_TRUE },
{ "FALSE" , SC_OPCODE_FALSE },
{ "TODAY" , SC_OPCODE_GET_ACT_DATE },
{ "NOW" , SC_OPCODE_GET_ACT_TIME },
{ "NA" , SC_OPCODE_NO_VALUE },
{ "_xlfn.ORG.OPENOFFICE.CURRENT" , SC_OPCODE_CURRENT },
{ "DEGREES" , SC_OPCODE_DEG },
{ "RADIANS" , SC_OPCODE_RAD },
{ "SIN" , SC_OPCODE_SIN },
{ "COS" , SC_OPCODE_COS },
{ "TAN" , SC_OPCODE_TAN },
{ "_xlfn.COT" , SC_OPCODE_COT },
{ "ASIN" , SC_OPCODE_ARC_SIN },
{ "ACOS" , SC_OPCODE_ARC_COS },
{ "ATAN" , SC_OPCODE_ARC_TAN },
{ "_xlfn.ACOT" , SC_OPCODE_ARC_COT },
{ "SINH" , SC_OPCODE_SIN_HYP },
{ "COSH" , SC_OPCODE_COS_HYP },
{ "TANH" , SC_OPCODE_TAN_HYP },
{ "_xlfn.COTH" , SC_OPCODE_COT_HYP },
{ "ASINH" , SC_OPCODE_ARC_SIN_HYP },
{ "ACOSH" , SC_OPCODE_ARC_COS_HYP },
{ "ATANH" , SC_OPCODE_ARC_TAN_HYP },
{ "_xlfn.ACOTH" , SC_OPCODE_ARC_COT_HYP },
{ "_xlfn.CSC" , SC_OPCODE_COSECANT },
{ "_xlfn.SEC" , SC_OPCODE_SECANT },
{ "_xlfn.CSCH" , SC_OPCODE_COSECANT_HYP },
{ "_xlfn.SECH" , SC_OPCODE_SECANT_HYP },
{ "EXP" , SC_OPCODE_EXP },
{ "LN" , SC_OPCODE_LN },
{ "SQRT" , SC_OPCODE_SQRT },
{ "FACT" , SC_OPCODE_FACT },
{ "YEAR" , SC_OPCODE_GET_YEAR },
{ "MONTH" , SC_OPCODE_GET_MONTH },
{ "DAY" , SC_OPCODE_GET_DAY },
{ "HOUR" , SC_OPCODE_GET_HOUR },
{ "MINUTE" , SC_OPCODE_GET_MIN },
{ "SECOND" , SC_OPCODE_GET_SEC },
{ "SIGN" , SC_OPCODE_PLUS_MINUS },
{ "ABS" , SC_OPCODE_ABS },
{ "INT" , SC_OPCODE_INT },
{ "_xlfn.PHI" , SC_OPCODE_PHI },
{ "_xlfn.GAUSS" , SC_OPCODE_GAUSS },
{ "ISBLANK" , SC_OPCODE_IS_EMPTY },
{ "ISTEXT" , SC_OPCODE_IS_STRING },
{ "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
{ "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
{ "TYPE" , SC_OPCODE_TYPE },
{ "CELL" , SC_OPCODE_CELL },
{ "ISREF" , SC_OPCODE_IS_REF },
{ "ISNUMBER" , SC_OPCODE_IS_VALUE },
{ "_xlfn.ISFORMULA" , SC_OPCODE_IS_FORMULA },
{ "ISNA" , SC_OPCODE_IS_NV },
{ "ISERR" , SC_OPCODE_IS_ERR },
{ "ISERROR" , SC_OPCODE_IS_ERROR },
{ "ISEVEN" , SC_OPCODE_IS_EVEN },
{ "ISODD" , SC_OPCODE_IS_ODD },
{ "N" , SC_OPCODE_N },
{ "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
{ "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
{ "CODE" , SC_OPCODE_CODE },
{ "TRIM" , SC_OPCODE_TRIM },
{ "UPPER" , SC_OPCODE_UPPER },
{ "PROPER" , SC_OPCODE_PROPER },
{ "LOWER" , SC_OPCODE_LOWER },
{ "LEN" , SC_OPCODE_LEN },
{ "T" , SC_OPCODE_T },
{ "VALUE" , SC_OPCODE_VALUE },
{ "CLEAN" , SC_OPCODE_CLEAN },
{ "CHAR" , SC_OPCODE_CHAR },
{ "JIS" , SC_OPCODE_JIS },
{ "ASC" , SC_OPCODE_ASC },
{ "_xlfn.UNICODE" , SC_OPCODE_UNICODE },
{ "_xlfn.UNICHAR" , SC_OPCODE_UNICHAR },
{ "LOG10" , SC_OPCODE_LOG10 },
{ "EVEN" , SC_OPCODE_EVEN },
{ "ODD" , SC_OPCODE_ODD },
{ "NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
{ "_xlfn.NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
{ "FISHER" , SC_OPCODE_FISHER },
{ "FISHERINV" , SC_OPCODE_FISHER_INV },
{ "NORMSINV" , SC_OPCODE_S_NORM_INV },
{ "_xlfn.NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
{ "GAMMALN" , SC_OPCODE_GAMMA_LN },
{ "_xlfn.GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
{ "_xlfn.ORG.OPENOFFICE.ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
{ "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
{ "_xlfn.FORMULATEXT" , SC_OPCODE_FORMULA },
{ "ATAN2" , SC_OPCODE_ARC_TAN_2 },
{ "_xlfn.CEILING.MATH" , SC_OPCODE_CEIL_MATH },
{ "_xlfn.CEILING.MATH" , SC_OPCODE_CEIL },
{ "CEILING" , SC_OPCODE_CEIL_MS },
{ "_xlfn.CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
{ "ISO.CEILING" , SC_OPCODE_CEIL_ISO },
{ "FLOOR" , SC_OPCODE_FLOOR_MS },
{ "_xlfn.FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
{ "_xlfn.FLOOR.MATH" , SC_OPCODE_FLOOR },
{ "_xlfn.FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
{ "ROUND" , SC_OPCODE_ROUND },
{ "ROUNDUP" , SC_OPCODE_ROUND_UP },
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
{ "TRUNC" , SC_OPCODE_TRUNC },
{ "LOG" , SC_OPCODE_LOG },
{ "POWER" , SC_OPCODE_POWER },
{ "GCD" , SC_OPCODE_GCD },
{ "LCM" , SC_OPCODE_LCM },
{ "MOD" , SC_OPCODE_MOD },
{ "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
{ "SUMSQ" , SC_OPCODE_SUM_SQ },
{ "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
{ "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
{ "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
{ "DATE" , SC_OPCODE_GET_DATE },
{ "TIME" , SC_OPCODE_GET_TIME },
{ "_xlfn.DAYS" , SC_OPCODE_GET_DIFF_DATE },
{ "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
{ "DATEDIF" , SC_OPCODE_GET_DATEDIF },
{ "MIN" , SC_OPCODE_MIN },
{ "MINA" , SC_OPCODE_MIN_A },
{ "MAX" , SC_OPCODE_MAX },
{ "MAXA" , SC_OPCODE_MAX_A },
{ "SUM" , SC_OPCODE_SUM },
{ "PRODUCT" , SC_OPCODE_PRODUCT },
{ "AVERAGE" , SC_OPCODE_AVERAGE },
{ "AVERAGEA" , SC_OPCODE_AVERAGE_A },
{ "COUNT" , SC_OPCODE_COUNT },
{ "COUNTA" , SC_OPCODE_COUNT_2 },
{ "NPV" , SC_OPCODE_NPV },
{ "IRR" , SC_OPCODE_IRR },
{ "MIRR" , SC_OPCODE_MIRR },
{ "ISPMT" , SC_OPCODE_ISPMT },
{ "VAR" , SC_OPCODE_VAR },
{ "VARA" , SC_OPCODE_VAR_A },
{ "VARP" , SC_OPCODE_VAR_P },
{ "VARPA" , SC_OPCODE_VAR_P_A },
{ "_xlfn.VAR.P" , SC_OPCODE_VAR_P_MS },
{ "_xlfn.VAR.S" , SC_OPCODE_VAR_S },
{ "STDEV" , SC_OPCODE_ST_DEV },
{ "STDEVA" , SC_OPCODE_ST_DEV_A },
{ "STDEVP" , SC_OPCODE_ST_DEV_P },
{ "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
{ "_xlfn.STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
{ "_xlfn.STDEV.S" , SC_OPCODE_ST_DEV_S },
{ "B" , SC_OPCODE_B },
{ "NORMDIST" , SC_OPCODE_NORM_DIST },
{ "_xlfn.NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
{ "EXPONDIST" , SC_OPCODE_EXP_DIST },
{ "_xlfn.EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
{ "BINOMDIST" , SC_OPCODE_BINOM_DIST },
{ "_xlfn.BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
{ "POISSON" , SC_OPCODE_POISSON_DIST },
{ "_xlfn.POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
{ "COMBIN" , SC_OPCODE_COMBIN },
{ "_xlfn.COMBINA" , SC_OPCODE_COMBIN_A },
{ "PERMUT" , SC_OPCODE_PERMUT },
{ "_xlfn.PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
{ "PV" , SC_OPCODE_PV },
{ "SYD" , SC_OPCODE_SYD },
{ "DDB" , SC_OPCODE_DDB },
{ "DB" , SC_OPCODE_DB },
{ "VDB" , SC_OPCODE_VBD },
{ "_xlfn.PDURATION" , SC_OPCODE_PDURATION },
{ "SLN" , SC_OPCODE_SLN },
{ "PMT" , SC_OPCODE_PMT },
{ "COLUMNS" , SC_OPCODE_COLUMNS },
{ "ROWS" , SC_OPCODE_ROWS },
{ "_xlfn.SHEETS" , SC_OPCODE_SHEETS },
{ "COLUMN" , SC_OPCODE_COLUMN },
{ "ROW" , SC_OPCODE_ROW },
{ "_xlfn.SHEET" , SC_OPCODE_SHEET },
{ "_xlfn.RRI" , SC_OPCODE_RRI },
{ "FV" , SC_OPCODE_FV },
{ "NPER" , SC_OPCODE_NPER },
{ "RATE" , SC_OPCODE_RATE },
{ "IPMT" , SC_OPCODE_IPMT },
{ "PPMT" , SC_OPCODE_PPMT },
{ "CUMIPMT" , SC_OPCODE_CUM_IPMT },
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
{ "EFFECT" , SC_OPCODE_EFFECT },
{ "NOMINAL" , SC_OPCODE_NOMINAL },
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
{ "DSUM" , SC_OPCODE_DB_SUM },
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
{ "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
{ "DGET" , SC_OPCODE_DB_GET },
{ "DMAX" , SC_OPCODE_DB_MAX },
{ "DMIN" , SC_OPCODE_DB_MIN },
{ "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
{ "DSTDEV" , SC_OPCODE_DB_STD_DEV },
{ "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
{ "DVAR" , SC_OPCODE_DB_VAR },
{ "DVARP" , SC_OPCODE_DB_VAR_P },
{ "INDIRECT" , SC_OPCODE_INDIRECT },
{ "ADDRESS" , SC_OPCODE_ADDRESS },
{ "MATCH" , SC_OPCODE_MATCH },
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
{ "COUNTIF" , SC_OPCODE_COUNT_IF },
{ "SUMIF" , SC_OPCODE_SUM_IF },
{ "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
{ "SUMIFS" , SC_OPCODE_SUM_IFS },
{ "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
{ "COUNTIFS" , SC_OPCODE_COUNT_IFS },
{ "LOOKUP" , SC_OPCODE_LOOKUP },
{ "VLOOKUP" , SC_OPCODE_V_LOOKUP },
{ "HLOOKUP" , SC_OPCODE_H_LOOKUP },
{ "_xlfn.ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
{ "OFFSET" , SC_OPCODE_OFFSET },
{ "INDEX" , SC_OPCODE_INDEX },
{ "AREAS" , SC_OPCODE_AREAS },
{ "DOLLAR" , SC_OPCODE_CURRENCY },
{ "REPLACE" , SC_OPCODE_REPLACE },
{ "FIXED" , SC_OPCODE_FIXED },
{ "FIND" , SC_OPCODE_FIND },
{ "EXACT" , SC_OPCODE_EXACT },
{ "LEFT" , SC_OPCODE_LEFT },
{ "RIGHT" , SC_OPCODE_RIGHT },
{ "SEARCH" , SC_OPCODE_SEARCH },
{ "MID" , SC_OPCODE_MID },
{ "LENB" , SC_OPCODE_LENB },
{ "RIGHTB" , SC_OPCODE_RIGHTB },
{ "LEFTB" , SC_OPCODE_LEFTB },
{ "REPLACEB" , SC_OPCODE_REPLACEB },
{ "FINDB" , SC_OPCODE_FINDB },
{ "SEARCHB" , SC_OPCODE_SEARCHB },
{ "MIDB" , SC_OPCODE_MIDB },
{ "TEXT" , SC_OPCODE_TEXT },
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
{ "REPT" , SC_OPCODE_REPT },
{ "CONCATENATE" , SC_OPCODE_CONCAT },
{ "_xlfn.CONCAT" , SC_OPCODE_CONCAT_MS },
{ "_xlfn.TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
{ "_xlfn.IFS" , SC_OPCODE_IFS_MS },
{ "_xlfn.SWITCH" , SC_OPCODE_SWITCH_MS },
{ "_xlfn.MINIFS" , SC_OPCODE_MINIFS_MS },
{ "_xlfn.MAXIFS" , SC_OPCODE_MAXIFS_MS },
{ "MVALUE" , SC_OPCODE_MAT_VALUE },
{ "MDETERM" , SC_OPCODE_MAT_DET },
{ "MINVERSE" , SC_OPCODE_MAT_INV },
{ "MMULT" , SC_OPCODE_MAT_MULT },
{ "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
{ "_xlfn.MUNIT" , SC_OPCODE_MATRIX_UNIT },
{ "_xlfn.ORG.OPENOFFICE.GOALSEEK" , SC_OPCODE_BACK_SOLVER },
{ "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
{ "_xlfn.HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
{ "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
{ "_xlfn.LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
{ "TDIST" , SC_OPCODE_T_DIST },
{ "_xlfn.T.DIST.2T" , SC_OPCODE_T_DIST_2T },
{ "_xlfn.T.DIST" , SC_OPCODE_T_DIST_MS },
{ "_xlfn.T.DIST.RT" , SC_OPCODE_T_DIST_RT },
{ "FDIST" , SC_OPCODE_F_DIST },
{ "_xlfn.F.DIST" , SC_OPCODE_F_DIST_LT },
{ "_xlfn.F.DIST.RT" , SC_OPCODE_F_DIST_RT },
{ "CHIDIST" , SC_OPCODE_CHI_DIST },
{ "_xlfn.CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
{ "WEIBULL" , SC_OPCODE_WEIBULL },
{ "_xlfn.WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
{ "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
{ "_xlfn.NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
{ "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
{ "_xlfn.BINOM.INV" , SC_OPCODE_BINOM_INV },
{ "KURT" , SC_OPCODE_KURT },
{ "HARMEAN" , SC_OPCODE_HAR_MEAN },
{ "GEOMEAN" , SC_OPCODE_GEO_MEAN },
{ "STANDARDIZE" , SC_OPCODE_STANDARD },
{ "AVEDEV" , SC_OPCODE_AVE_DEV },
{ "SKEW" , SC_OPCODE_SKEW },
{ "_xlfn.SKEW.P" , SC_OPCODE_SKEWP },
{ "DEVSQ" , SC_OPCODE_DEV_SQ },
{ "MEDIAN" , SC_OPCODE_MEDIAN },
{ "MODE" , SC_OPCODE_MODAL_VALUE },
{ "_xlfn.MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
{ "_xlfn.MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
{ "ZTEST" , SC_OPCODE_Z_TEST },
{ "_xlfn.Z.TEST" , SC_OPCODE_Z_TEST_MS },
{ "_xlfn.AGGREGATE" , SC_OPCODE_AGGREGATE },
{ "TTEST" , SC_OPCODE_T_TEST },
{ "_xlfn.T.TEST" , SC_OPCODE_T_TEST_MS },
{ "RANK" , SC_OPCODE_RANK },
{ "PERCENTILE" , SC_OPCODE_PERCENTILE },
{ "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
{ "_xlfn.PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
{ "_xlfn.PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
{ "_xlfn.QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
{ "_xlfn.RANK.EQ" , SC_OPCODE_RANK_EQ },
{ "_xlfn.PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
{ "_xlfn.PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
{ "_xlfn.QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
{ "_xlfn.RANK.AVG" , SC_OPCODE_RANK_AVG },
{ "LARGE" , SC_OPCODE_LARGE },
{ "SMALL" , SC_OPCODE_SMALL },
{ "FREQUENCY" , SC_OPCODE_FREQUENCY },
{ "QUARTILE" , SC_OPCODE_QUARTILE },
{ "NORMINV" , SC_OPCODE_NORM_INV },
{ "_xlfn.NORM.INV" , SC_OPCODE_NORM_INV_MS },
{ "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
{ "_xlfn.CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
{ "_xlfn.CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
{ "FTEST" , SC_OPCODE_F_TEST },
{ "_xlfn.F.TEST" , SC_OPCODE_F_TEST_MS },
{ "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
{ "PROB" , SC_OPCODE_PROB },
{ "CORREL" , SC_OPCODE_CORREL },
{ "COVAR" , SC_OPCODE_COVAR },
{ "_xlfn.COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
{ "_xlfn.COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
{ "PEARSON" , SC_OPCODE_PEARSON },
{ "RSQ" , SC_OPCODE_RSQ },
{ "STEYX" , SC_OPCODE_STEYX },
{ "SLOPE" , SC_OPCODE_SLOPE },
{ "INTERCEPT" , SC_OPCODE_INTERCEPT },
{ "TREND" , SC_OPCODE_TREND },
{ "GROWTH" , SC_OPCODE_GROWTH },
{ "LINEST" , SC_OPCODE_LINEST },
{ "LOGEST" , SC_OPCODE_LOGEST },
{ "FORECAST" , SC_OPCODE_FORECAST },
{ "_xlfn.FORECAST.ETS" , SC_OPCODE_FORECAST_ETS_ADD },
{ "_xlfn.FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
{ "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
{ "_xlfn.FORECAST.ETS.CONFINT" , SC_OPCODE_FORECAST_ETS_PIA },
{ "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
{ "_xlfn.FORECAST.ETS.STAT" , SC_OPCODE_FORECAST_ETS_STA },
{ "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
{ "_xlfn.FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
{ "CHIINV" , SC_OPCODE_CHI_INV },
{ "_xlfn.CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
{ "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
{ "_xlfn.GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
{ "GAMMAINV" , SC_OPCODE_GAMMA_INV },
{ "_xlfn.GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
{ "TINV" , SC_OPCODE_T_INV },
{ "_xlfn.T.INV.2T" , SC_OPCODE_T_INV_2T },
{ "_xlfn.T.INV" , SC_OPCODE_T_INV_MS },
{ "FINV" , SC_OPCODE_F_INV },
{ "_xlfn.F.INV" , SC_OPCODE_F_INV_LT },
{ "_xlfn.F.INV.RT" , SC_OPCODE_F_INV_RT },
{ "CHITEST" , SC_OPCODE_CHI_TEST },
{ "_xlfn.CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
{ "LOGINV" , SC_OPCODE_LOG_INV },
{ "_xlfn.LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
{ "TABLE" , SC_OPCODE_TABLE_OP },
{ "BETADIST" , SC_OPCODE_BETA_DIST },
{ "BETAINV" , SC_OPCODE_BETA_INV },
{ "_xlfn.BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
{ "_xlfn.BETA.INV" , SC_OPCODE_BETA_INV_MS },
{ "WEEKNUM" , SC_OPCODE_WEEK },
{ "_xlfn.ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
{ "_xlfn.ORG.LIBREOFFICE.WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
{ "_xlfn.ORG.OPENOFFICE.EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
{ "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
{ "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
{ "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
{ "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
{ "#NAME!" , SC_OPCODE_NO_NAME },
{ "_xlfn.ORG.OPENOFFICE.STYLE" , SC_OPCODE_STYLE },
{ "DDE" , SC_OPCODE_DDE },
{ "_xlfn.BASE" , SC_OPCODE_BASE },
{ "_xlfn.DECIMAL" , SC_OPCODE_DECIMAL },
{ "_xlfn.ORG.OPENOFFICE.CONVERT" , SC_OPCODE_CONVERT_OOO },
{ "ROMAN" , SC_OPCODE_ROMAN },
{ "_xlfn.ARABIC" , SC_OPCODE_ARABIC },
{ "HYPERLINK" , SC_OPCODE_HYPERLINK },
{ "INFO" , SC_OPCODE_INFO },
{ "_xlfn.BAHTTEXT" , SC_OPCODE_BAHTTEXT },
{ "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
{ "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
{ "_xlfn.NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
{ "_xlfn.GAMMA" , SC_OPCODE_GAMMA },
{ "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
{ "_xlfn.CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
{ "CHISQINV" , SC_OPCODE_CHISQ_INV },
{ "_xlfn.CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
{ "_xlfn.BITAND" , SC_OPCODE_BITAND },
{ "_xlfn.BITOR" , SC_OPCODE_BITOR },
{ "_xlfn.BITXOR" , SC_OPCODE_BITXOR },
{ "_xlfn.BITRSHIFT" , SC_OPCODE_BITRSHIFT },
{ "_xlfn.BITLSHIFT" , SC_OPCODE_BITLSHIFT },
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
{ "#REF!" , SC_OPCODE_ERROR_REF },
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
{ "#N/A" , SC_OPCODE_ERROR_NA },
/* END defined ERROR.TYPE() values. */
{ "_xlfn.FILTERXML" , SC_OPCODE_FILTERXML },
{ "_xlfn.WEBSERVICE" , SC_OPCODE_WEBSERVICE },
{ "_xlfn.ORG.LIBREOFFICE.COLOR" , SC_OPCODE_COLOR },
{ "_xlfn.ERF.PRECISE" , SC_OPCODE_ERF_MS },
{ "_xlfn.ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
{ "_xlfn.ENCODEURL" , SC_OPCODE_ENCODEURL },
{ "_xlfn.ORG.LIBREOFFICE.RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
{ "_xlfn.ORG.LIBREOFFICE.ROUNDSIG" , SC_OPCODE_ROUNDSIG },
{ "_xlfn.ORG.LIBREOFFICE.REGEX" , SC_OPCODE_REGEX },
{ "_xlfn.ORG.LIBREOFFICE.FOURIER", SC_OPCODE_FOURIER },
{ "_xlfn.ORG.LIBREOFFICE.RAND.NV" , SC_OPCODE_RANDOM_NV },
{ "_xlfn.ORG.LIBREOFFICE.RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
{ nullptr, -1 }
};
/** These English names are used to store/load ODF v1.0/v1.1. */
// DO NOT CHANGE NAMES! Only add functions.
// If there is a reason for another name for some function then add an
// *additional* name to be recognized to sc/source/core/tool/compiler.cxx
// ScCompiler::IsOpCode() in the else if (mxSymbols->isPODF()) block.
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
{
{ "IF" , SC_OPCODE_IF },
{ "IFERROR" , SC_OPCODE_IF_ERROR },
{ "IFNA" , SC_OPCODE_IF_NA },
{ "CHOOSE" , SC_OPCODE_CHOOSE },
{ "(" , SC_OPCODE_OPEN },
{ ")" , SC_OPCODE_CLOSE },
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
{ "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
{ "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
{ "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
{ "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
{ "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
{ "{" , SC_OPCODE_ARRAY_OPEN },
{ "}" , SC_OPCODE_ARRAY_CLOSE },
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
{ ";" , SC_OPCODE_SEP },
{ "%" , SC_OPCODE_PERCENT_SIGN },
{ "+" , SC_OPCODE_ADD },
{ "-" , SC_OPCODE_SUB },
{ "*" , SC_OPCODE_MUL },
{ "/" , SC_OPCODE_DIV },
{ "&" , SC_OPCODE_AMPERSAND },
{ "^" , SC_OPCODE_POW },
{ "=" , SC_OPCODE_EQUAL },
{ "<>" , SC_OPCODE_NOT_EQUAL },
{ "<" , SC_OPCODE_LESS },
{ ">" , SC_OPCODE_GREATER },
{ "<=" , SC_OPCODE_LESS_EQUAL },
{ ">=" , SC_OPCODE_GREATER_EQUAL },
{ "AND" , SC_OPCODE_AND },
{ "OR" , SC_OPCODE_OR },
{ "XOR" , SC_OPCODE_XOR },
{ "!" , SC_OPCODE_INTERSECT },
{ "~" , SC_OPCODE_UNION },
{ ":" , SC_OPCODE_RANGE },
{ "NOT" , SC_OPCODE_NOT },
{ "NEG" , SC_OPCODE_NEG },
{ "-" , SC_OPCODE_NEG_SUB },
{ "PI" , SC_OPCODE_PI },
{ "RAND" , SC_OPCODE_RANDOM },
{ "TRUE" , SC_OPCODE_TRUE },
{ "FALSE" , SC_OPCODE_FALSE },
{ "TODAY" , SC_OPCODE_GET_ACT_DATE },
{ "NOW" , SC_OPCODE_GET_ACT_TIME },
{ "NA" , SC_OPCODE_NO_VALUE },
{ "CURRENT" , SC_OPCODE_CURRENT },
{ "DEGREES" , SC_OPCODE_DEG },
{ "RADIANS" , SC_OPCODE_RAD },
{ "SIN" , SC_OPCODE_SIN },
{ "COS" , SC_OPCODE_COS },
{ "TAN" , SC_OPCODE_TAN },
{ "COT" , SC_OPCODE_COT },
{ "ASIN" , SC_OPCODE_ARC_SIN },
{ "ACOS" , SC_OPCODE_ARC_COS },
{ "ATAN" , SC_OPCODE_ARC_TAN },
{ "ACOT" , SC_OPCODE_ARC_COT },
{ "SINH" , SC_OPCODE_SIN_HYP },
{ "COSH" , SC_OPCODE_COS_HYP },
{ "TANH" , SC_OPCODE_TAN_HYP },
{ "COTH" , SC_OPCODE_COT_HYP },
{ "ASINH" , SC_OPCODE_ARC_SIN_HYP },
{ "ACOSH" , SC_OPCODE_ARC_COS_HYP },
{ "ATANH" , SC_OPCODE_ARC_TAN_HYP },
{ "ACOTH" , SC_OPCODE_ARC_COT_HYP },
{ "CSC" , SC_OPCODE_COSECANT },
{ "SEC" , SC_OPCODE_SECANT },
{ "CSCH" , SC_OPCODE_COSECANT_HYP },
{ "SECH" , SC_OPCODE_SECANT_HYP },
{ "EXP" , SC_OPCODE_EXP },
{ "LN" , SC_OPCODE_LN },
{ "SQRT" , SC_OPCODE_SQRT },
{ "FACT" , SC_OPCODE_FACT },
{ "YEAR" , SC_OPCODE_GET_YEAR },
{ "MONTH" , SC_OPCODE_GET_MONTH },
{ "DAY" , SC_OPCODE_GET_DAY },
{ "HOUR" , SC_OPCODE_GET_HOUR },
{ "MINUTE" , SC_OPCODE_GET_MIN },
{ "SECOND" , SC_OPCODE_GET_SEC },
{ "SIGN" , SC_OPCODE_PLUS_MINUS },
{ "ABS" , SC_OPCODE_ABS },
{ "INT" , SC_OPCODE_INT },
{ "PHI" , SC_OPCODE_PHI },
{ "GAUSS" , SC_OPCODE_GAUSS },
{ "ISBLANK" , SC_OPCODE_IS_EMPTY },
{ "ISTEXT" , SC_OPCODE_IS_STRING },
{ "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
{ "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
{ "TYPE" , SC_OPCODE_TYPE },
{ "CELL" , SC_OPCODE_CELL },
{ "ISREF" , SC_OPCODE_IS_REF },
{ "ISNUMBER" , SC_OPCODE_IS_VALUE },
{ "ISFORMULA" , SC_OPCODE_IS_FORMULA },
{ "ISNA" , SC_OPCODE_IS_NV },
{ "ISERR" , SC_OPCODE_IS_ERR },
{ "ISERROR" , SC_OPCODE_IS_ERROR },
{ "ISEVEN" , SC_OPCODE_IS_EVEN },
{ "ISODD" , SC_OPCODE_IS_ODD },
{ "N" , SC_OPCODE_N },
{ "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
{ "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
{ "CODE" , SC_OPCODE_CODE },
{ "TRIM" , SC_OPCODE_TRIM },
{ "UPPER" , SC_OPCODE_UPPER },
{ "PROPER" , SC_OPCODE_PROPER },
{ "LOWER" , SC_OPCODE_LOWER },
{ "LEN" , SC_OPCODE_LEN },
{ "T" , SC_OPCODE_T },
{ "VALUE" , SC_OPCODE_VALUE },
{ "CLEAN" , SC_OPCODE_CLEAN },
{ "CHAR" , SC_OPCODE_CHAR },
{ "JIS" , SC_OPCODE_JIS },
{ "ASC" , SC_OPCODE_ASC },
{ "UNICODE" , SC_OPCODE_UNICODE },
{ "UNICHAR" , SC_OPCODE_UNICHAR },
{ "LOG10" , SC_OPCODE_LOG10 },
{ "EVEN" , SC_OPCODE_EVEN },
{ "ODD" , SC_OPCODE_ODD },
{ "NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
{ "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
{ "FISHER" , SC_OPCODE_FISHER },
{ "FISHERINV" , SC_OPCODE_FISHER_INV },
{ "NORMSINV" , SC_OPCODE_S_NORM_INV },
{ "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
{ "GAMMALN" , SC_OPCODE_GAMMA_LN },
{ "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
{ "ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
{ "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
{ "FORMULA" , SC_OPCODE_FORMULA },
{ "ATAN2" , SC_OPCODE_ARC_TAN_2 },
{ "CEILING.MATH" , SC_OPCODE_CEIL_MATH },
{ "CEILING" , SC_OPCODE_CEIL },
{ "CEILING.XCL" , SC_OPCODE_CEIL_MS },
{ "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
{ "ISO.CEILING" , SC_OPCODE_CEIL_ISO },
{ "FLOOR" , SC_OPCODE_FLOOR },
{ "FLOOR.XCL" , SC_OPCODE_FLOOR_MS },
{ "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
{ "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
{ "ROUND" , SC_OPCODE_ROUND },
{ "ROUNDUP" , SC_OPCODE_ROUND_UP },
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
{ "TRUNC" , SC_OPCODE_TRUNC },
{ "LOG" , SC_OPCODE_LOG },
{ "POWER" , SC_OPCODE_POWER },
{ "GCD" , SC_OPCODE_GCD },
{ "LCM" , SC_OPCODE_LCM },
{ "MOD" , SC_OPCODE_MOD },
{ "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
{ "SUMSQ" , SC_OPCODE_SUM_SQ },
{ "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
{ "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
{ "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
{ "DATE" , SC_OPCODE_GET_DATE },
{ "TIME" , SC_OPCODE_GET_TIME },
{ "DAYS" , SC_OPCODE_GET_DIFF_DATE },
{ "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
{ "DATEDIF" , SC_OPCODE_GET_DATEDIF },
{ "MIN" , SC_OPCODE_MIN },
{ "MINA" , SC_OPCODE_MIN_A },
{ "MAX" , SC_OPCODE_MAX },
{ "MAXA" , SC_OPCODE_MAX_A },
{ "SUM" , SC_OPCODE_SUM },
{ "PRODUCT" , SC_OPCODE_PRODUCT },
{ "AVERAGE" , SC_OPCODE_AVERAGE },
{ "AVERAGEA" , SC_OPCODE_AVERAGE_A },
{ "COUNT" , SC_OPCODE_COUNT },
{ "COUNTA" , SC_OPCODE_COUNT_2 },
{ "NPV" , SC_OPCODE_NPV },
{ "IRR" , SC_OPCODE_IRR },
{ "MIRR" , SC_OPCODE_MIRR },
{ "ISPMT" , SC_OPCODE_ISPMT },
{ "VAR" , SC_OPCODE_VAR },
{ "VARA" , SC_OPCODE_VAR_A },
{ "VARP" , SC_OPCODE_VAR_P },
{ "VARPA" , SC_OPCODE_VAR_P_A },
{ "VAR.P" , SC_OPCODE_VAR_P_MS },
{ "VAR.S" , SC_OPCODE_VAR_S },
{ "STDEV" , SC_OPCODE_ST_DEV },
{ "STDEVA" , SC_OPCODE_ST_DEV_A },
{ "STDEVP" , SC_OPCODE_ST_DEV_P },
{ "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
{ "STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
{ "STDEV.S" , SC_OPCODE_ST_DEV_S },
{ "B" , SC_OPCODE_B },
{ "NORMDIST" , SC_OPCODE_NORM_DIST },
{ "NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
{ "EXPONDIST" , SC_OPCODE_EXP_DIST },
{ "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
{ "BINOMDIST" , SC_OPCODE_BINOM_DIST },
{ "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
{ "POISSON" , SC_OPCODE_POISSON_DIST },
{ "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
{ "COMBIN" , SC_OPCODE_COMBIN },
{ "COMBINA" , SC_OPCODE_COMBIN_A },
{ "PERMUT" , SC_OPCODE_PERMUT },
{ "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
{ "PV" , SC_OPCODE_PV },
{ "SYD" , SC_OPCODE_SYD },
{ "DDB" , SC_OPCODE_DDB },
{ "DB" , SC_OPCODE_DB },
{ "VDB" , SC_OPCODE_VBD },
{ "DURATION" , SC_OPCODE_PDURATION }, // wrong but ODF1.1, keep it.
{ "SLN" , SC_OPCODE_SLN },
{ "PMT" , SC_OPCODE_PMT },
{ "COLUMNS" , SC_OPCODE_COLUMNS },
{ "ROWS" , SC_OPCODE_ROWS },
{ "SHEETS" , SC_OPCODE_SHEETS },
{ "COLUMN" , SC_OPCODE_COLUMN },
{ "ROW" , SC_OPCODE_ROW },
{ "SHEET" , SC_OPCODE_SHEET },
{ "ZGZ" , SC_OPCODE_RRI },
{ "FV" , SC_OPCODE_FV },
{ "NPER" , SC_OPCODE_NPER },
{ "RATE" , SC_OPCODE_RATE },
{ "IPMT" , SC_OPCODE_IPMT },
{ "PPMT" , SC_OPCODE_PPMT },
{ "CUMIPMT" , SC_OPCODE_CUM_IPMT },
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
{ "EFFECTIVE" , SC_OPCODE_EFFECT },
{ "NOMINAL" , SC_OPCODE_NOMINAL },
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
{ "DSUM" , SC_OPCODE_DB_SUM },
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
{ "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
{ "DGET" , SC_OPCODE_DB_GET },
{ "DMAX" , SC_OPCODE_DB_MAX },
{ "DMIN" , SC_OPCODE_DB_MIN },
{ "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
{ "DSTDEV" , SC_OPCODE_DB_STD_DEV },
{ "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
{ "DVAR" , SC_OPCODE_DB_VAR },
{ "DVARP" , SC_OPCODE_DB_VAR_P },
{ "INDIRECT" , SC_OPCODE_INDIRECT },
{ "ADDRESS" , SC_OPCODE_ADDRESS },
{ "MATCH" , SC_OPCODE_MATCH },
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
{ "COUNTIF" , SC_OPCODE_COUNT_IF },
{ "SUMIF" , SC_OPCODE_SUM_IF },
{ "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
{ "SUMIFS" , SC_OPCODE_SUM_IFS },
{ "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
{ "COUNTIFS" , SC_OPCODE_COUNT_IFS },
{ "LOOKUP" , SC_OPCODE_LOOKUP },
{ "VLOOKUP" , SC_OPCODE_V_LOOKUP },
{ "HLOOKUP" , SC_OPCODE_H_LOOKUP },
{ "MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
{ "OFFSET" , SC_OPCODE_OFFSET },
{ "INDEX" , SC_OPCODE_INDEX },
{ "AREAS" , SC_OPCODE_AREAS },
{ "DOLLAR" , SC_OPCODE_CURRENCY },
{ "REPLACE" , SC_OPCODE_REPLACE },
{ "FIXED" , SC_OPCODE_FIXED },
{ "FIND" , SC_OPCODE_FIND },
{ "EXACT" , SC_OPCODE_EXACT },
{ "LEFT" , SC_OPCODE_LEFT },
{ "RIGHT" , SC_OPCODE_RIGHT },
{ "SEARCH" , SC_OPCODE_SEARCH },
{ "MID" , SC_OPCODE_MID },
{ "LENB" , SC_OPCODE_LENB },
{ "RIGHTB" , SC_OPCODE_RIGHTB },
{ "LEFTB" , SC_OPCODE_LEFTB },
{ "REPLACEB" , SC_OPCODE_REPLACEB },
{ "FINDB" , SC_OPCODE_FINDB },
{ "SEARCHB" , SC_OPCODE_SEARCHB },
{ "MIDB" , SC_OPCODE_MIDB },
{ "TEXT" , SC_OPCODE_TEXT },
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
{ "REPT" , SC_OPCODE_REPT },
{ "CONCATENATE" , SC_OPCODE_CONCAT },
{ "CONCAT" , SC_OPCODE_CONCAT_MS },
{ "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
{ "IFS" , SC_OPCODE_IFS_MS },
{ "SWITCH" , SC_OPCODE_SWITCH_MS },
{ "MINIFS" , SC_OPCODE_MINIFS_MS },
{ "MAXIFS" , SC_OPCODE_MAXIFS_MS },
{ "MVALUE" , SC_OPCODE_MAT_VALUE },
{ "MDETERM" , SC_OPCODE_MAT_DET },
{ "MINVERSE" , SC_OPCODE_MAT_INV },
{ "MMULT" , SC_OPCODE_MAT_MULT },
{ "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
{ "MUNIT" , SC_OPCODE_MATRIX_UNIT },
{ "GOALSEEK" , SC_OPCODE_BACK_SOLVER },
{ "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
{ "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
{ "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
{ "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
{ "TDIST" , SC_OPCODE_T_DIST },
{ "T.DIST.2T" , SC_OPCODE_T_DIST_2T },
{ "T.DIST" , SC_OPCODE_T_DIST_MS },
{ "T.DIST.RT" , SC_OPCODE_T_DIST_RT },
{ "FDIST" , SC_OPCODE_F_DIST },
{ "F.DIST" , SC_OPCODE_F_DIST_LT },
{ "F.DIST.RT" , SC_OPCODE_F_DIST_RT },
{ "CHIDIST" , SC_OPCODE_CHI_DIST },
{ "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
{ "WEIBULL" , SC_OPCODE_WEIBULL },
{ "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
{ "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
{ "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
{ "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
{ "BINOM.INV" , SC_OPCODE_BINOM_INV },
{ "KURT" , SC_OPCODE_KURT },
{ "HARMEAN" , SC_OPCODE_HAR_MEAN },
{ "GEOMEAN" , SC_OPCODE_GEO_MEAN },
{ "STANDARDIZE" , SC_OPCODE_STANDARD },
{ "AVEDEV" , SC_OPCODE_AVE_DEV },
{ "SKEW" , SC_OPCODE_SKEW },
{ "SKEWP" , SC_OPCODE_SKEWP },
{ "DEVSQ" , SC_OPCODE_DEV_SQ },
{ "MEDIAN" , SC_OPCODE_MEDIAN },
{ "MODE" , SC_OPCODE_MODAL_VALUE },
{ "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
{ "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
{ "ZTEST" , SC_OPCODE_Z_TEST },
{ "Z.TEST" , SC_OPCODE_Z_TEST_MS },
{ "AGGREGATE" , SC_OPCODE_AGGREGATE },
{ "TTEST" , SC_OPCODE_T_TEST },
{ "T.TEST" , SC_OPCODE_T_TEST_MS },
{ "RANK" , SC_OPCODE_RANK },
{ "PERCENTILE" , SC_OPCODE_PERCENTILE },
{ "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
{ "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
{ "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
{ "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
{ "RANK.EQ" , SC_OPCODE_RANK_EQ },
{ "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
{ "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
{ "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
{ "RANK.AVG" , SC_OPCODE_RANK_AVG },
{ "LARGE" , SC_OPCODE_LARGE },
{ "SMALL" , SC_OPCODE_SMALL },
{ "FREQUENCY" , SC_OPCODE_FREQUENCY },
{ "QUARTILE" , SC_OPCODE_QUARTILE },
{ "NORMINV" , SC_OPCODE_NORM_INV },
{ "NORM.INV" , SC_OPCODE_NORM_INV_MS },
{ "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
{ "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
{ "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
{ "FTEST" , SC_OPCODE_F_TEST },
{ "F.TEST" , SC_OPCODE_F_TEST_MS },
{ "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
{ "PROB" , SC_OPCODE_PROB },
{ "CORREL" , SC_OPCODE_CORREL },
{ "COVAR" , SC_OPCODE_COVAR },
{ "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
{ "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
{ "PEARSON" , SC_OPCODE_PEARSON },
{ "RSQ" , SC_OPCODE_RSQ },
{ "STEYX" , SC_OPCODE_STEYX },
{ "SLOPE" , SC_OPCODE_SLOPE },
{ "INTERCEPT" , SC_OPCODE_INTERCEPT },
{ "TREND" , SC_OPCODE_TREND },
{ "GROWTH" , SC_OPCODE_GROWTH },
{ "LINEST" , SC_OPCODE_LINEST },
{ "LOGEST" , SC_OPCODE_LOGEST },
{ "FORECAST" , SC_OPCODE_FORECAST },
{ "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD },
{ "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
{ "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
{ "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA },
{ "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
{ "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA },
{ "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
{ "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
{ "CHIINV" , SC_OPCODE_CHI_INV },
{ "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
{ "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
{ "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
{ "GAMMAINV" , SC_OPCODE_GAMMA_INV },
{ "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
{ "TINV" , SC_OPCODE_T_INV },
{ "T.INV.2T" , SC_OPCODE_T_INV_2T },
{ "T.INV" , SC_OPCODE_T_INV_MS },
{ "FINV" , SC_OPCODE_F_INV },
{ "F.INV" , SC_OPCODE_F_INV_LT },
{ "F.INV.RT" , SC_OPCODE_F_INV_RT },
{ "CHITEST" , SC_OPCODE_CHI_TEST },
{ "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
{ "LOGINV" , SC_OPCODE_LOG_INV },
{ "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
{ "TABLE" , SC_OPCODE_TABLE_OP },
{ "BETADIST" , SC_OPCODE_BETA_DIST },
{ "BETAINV" , SC_OPCODE_BETA_INV },
{ "BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
{ "BETA.INV" , SC_OPCODE_BETA_INV_MS },
{ "WEEKNUM" , SC_OPCODE_WEEK },
{ "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
{ "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
{ "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
{ "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
{ "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
{ "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
{ "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
{ "#NAME!" , SC_OPCODE_NO_NAME },
{ "STYLE" , SC_OPCODE_STYLE },
{ "DDE" , SC_OPCODE_DDE },
{ "BASE" , SC_OPCODE_BASE },
{ "DECIMAL" , SC_OPCODE_DECIMAL },
{ "CONVERT" , SC_OPCODE_CONVERT_OOO }, // wrong but ODF1.1, keep it
{ "ROMAN" , SC_OPCODE_ROMAN },
{ "ARABIC" , SC_OPCODE_ARABIC },
{ "HYPERLINK" , SC_OPCODE_HYPERLINK },
{ "INFO" , SC_OPCODE_INFO },
{ "BAHTTEXT" , SC_OPCODE_BAHTTEXT },
{ "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
{ "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
{ "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
{ "GAMMA" , SC_OPCODE_GAMMA },
{ "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
{ "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
{ "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
{ "CHISQINV" , SC_OPCODE_CHISQ_INV },
{ "BITAND" , SC_OPCODE_BITAND },
{ "BITOR" , SC_OPCODE_BITOR },
{ "BITXOR" , SC_OPCODE_BITXOR },
{ "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
{ "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
/* BEGIN defined ERROR.TYPE() values. */
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
{ "#REF!" , SC_OPCODE_ERROR_REF },
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
{ "#N/A" , SC_OPCODE_ERROR_NA },
/* END defined ERROR.TYPE() values. */
{ "FILTERXML" , SC_OPCODE_FILTERXML },
{ "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
{ "COLOR" , SC_OPCODE_COLOR },
{ "ERF.PRECISE" , SC_OPCODE_ERF_MS },
{ "ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
{ "ENCODEURL" , SC_OPCODE_ENCODEURL },
{ "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
{ "ROUNDSIG" , SC_OPCODE_ROUNDSIG },
{ "REGEX" , SC_OPCODE_REGEX },
{ "FOURIER", SC_OPCODE_FOURIER },
{ "RAND.NV" , SC_OPCODE_RANDOM_NV },
{ "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
{ nullptr, -1 }
};
/** These English names are used for XFunctionAccess API. */
// DO NOT CHANGE NAMES! Only add functions.
// If there is a reason for another name for some function then add an
// *additional* name to be recognized to sc/source/core/tool/compiler.cxx
// ScCompiler::IsOpCode().
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
{
{ "IF" , SC_OPCODE_IF },
{ "IFERROR" , SC_OPCODE_IF_ERROR },
{ "IFNA" , SC_OPCODE_IF_NA },
{ "CHOOSE" , SC_OPCODE_CHOOSE },
{ "(" , SC_OPCODE_OPEN },
{ ")" , SC_OPCODE_CLOSE },
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
{ "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
{ "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
{ "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
{ "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
{ "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
{ "{" , SC_OPCODE_ARRAY_OPEN },
{ "}" , SC_OPCODE_ARRAY_CLOSE },
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
{ ";" , SC_OPCODE_SEP },
{ "%" , SC_OPCODE_PERCENT_SIGN },
{ "+" , SC_OPCODE_ADD },
{ "-" , SC_OPCODE_SUB },
{ "*" , SC_OPCODE_MUL },
{ "/" , SC_OPCODE_DIV },
{ "&" , SC_OPCODE_AMPERSAND },
{ "^" , SC_OPCODE_POW },
{ "=" , SC_OPCODE_EQUAL },
{ "<>" , SC_OPCODE_NOT_EQUAL },
{ "<" , SC_OPCODE_LESS },
{ ">" , SC_OPCODE_GREATER },
{ "<=" , SC_OPCODE_LESS_EQUAL },
{ ">=" , SC_OPCODE_GREATER_EQUAL },
{ "AND" , SC_OPCODE_AND },
{ "OR" , SC_OPCODE_OR },
{ "XOR" , SC_OPCODE_XOR },
{ "!" , SC_OPCODE_INTERSECT },
{ "~" , SC_OPCODE_UNION },
{ ":" , SC_OPCODE_RANGE },
{ "NOT" , SC_OPCODE_NOT },
{ "NEG" , SC_OPCODE_NEG },
{ "-" , SC_OPCODE_NEG_SUB },
{ "PI" , SC_OPCODE_PI },
{ "RAND" , SC_OPCODE_RANDOM },
{ "TRUE" , SC_OPCODE_TRUE },
{ "FALSE" , SC_OPCODE_FALSE },
{ "TODAY" , SC_OPCODE_GET_ACT_DATE },
{ "NOW" , SC_OPCODE_GET_ACT_TIME },
{ "NA" , SC_OPCODE_NO_VALUE },
{ "CURRENT" , SC_OPCODE_CURRENT },
{ "DEGREES" , SC_OPCODE_DEG },
{ "RADIANS" , SC_OPCODE_RAD },
{ "SIN" , SC_OPCODE_SIN },
{ "COS" , SC_OPCODE_COS },
{ "TAN" , SC_OPCODE_TAN },
{ "COT" , SC_OPCODE_COT },
{ "ASIN" , SC_OPCODE_ARC_SIN },
{ "ACOS" , SC_OPCODE_ARC_COS },
{ "ATAN" , SC_OPCODE_ARC_TAN },
{ "ACOT" , SC_OPCODE_ARC_COT },
{ "SINH" , SC_OPCODE_SIN_HYP },
{ "COSH" , SC_OPCODE_COS_HYP },
{ "TANH" , SC_OPCODE_TAN_HYP },
{ "COTH" , SC_OPCODE_COT_HYP },
{ "ASINH" , SC_OPCODE_ARC_SIN_HYP },
{ "ACOSH" , SC_OPCODE_ARC_COS_HYP },
{ "ATANH" , SC_OPCODE_ARC_TAN_HYP },
{ "ACOTH" , SC_OPCODE_ARC_COT_HYP },
{ "CSC" , SC_OPCODE_COSECANT },
{ "SEC" , SC_OPCODE_SECANT },
{ "CSCH" , SC_OPCODE_COSECANT_HYP },
{ "SECH" , SC_OPCODE_SECANT_HYP },
{ "EXP" , SC_OPCODE_EXP },
{ "LN" , SC_OPCODE_LN },
{ "SQRT" , SC_OPCODE_SQRT },
{ "FACT" , SC_OPCODE_FACT },
{ "YEAR" , SC_OPCODE_GET_YEAR },
{ "MONTH" , SC_OPCODE_GET_MONTH },
{ "DAY" , SC_OPCODE_GET_DAY },
{ "HOUR" , SC_OPCODE_GET_HOUR },
{ "MINUTE" , SC_OPCODE_GET_MIN },
{ "SECOND" , SC_OPCODE_GET_SEC },
{ "SIGN" , SC_OPCODE_PLUS_MINUS },
{ "ABS" , SC_OPCODE_ABS },
{ "INT" , SC_OPCODE_INT },
{ "PHI" , SC_OPCODE_PHI },
{ "GAUSS" , SC_OPCODE_GAUSS },
{ "ISBLANK" , SC_OPCODE_IS_EMPTY },
{ "ISTEXT" , SC_OPCODE_IS_STRING },
{ "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
{ "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
{ "TYPE" , SC_OPCODE_TYPE },
{ "CELL" , SC_OPCODE_CELL },
{ "ISREF" , SC_OPCODE_IS_REF },
{ "ISNUMBER" , SC_OPCODE_IS_VALUE },
{ "ISFORMULA" , SC_OPCODE_IS_FORMULA },
{ "ISNA" , SC_OPCODE_IS_NV },
{ "ISERR" , SC_OPCODE_IS_ERR },
{ "ISERROR" , SC_OPCODE_IS_ERROR },
{ "ISEVEN" , SC_OPCODE_IS_EVEN },
{ "ISODD" , SC_OPCODE_IS_ODD },
{ "N" , SC_OPCODE_N },
{ "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
{ "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
{ "CODE" , SC_OPCODE_CODE },
{ "TRIM" , SC_OPCODE_TRIM },
{ "UPPER" , SC_OPCODE_UPPER },
{ "PROPER" , SC_OPCODE_PROPER },
{ "LOWER" , SC_OPCODE_LOWER },
{ "LEN" , SC_OPCODE_LEN },
{ "T" , SC_OPCODE_T },
{ "VALUE" , SC_OPCODE_VALUE },
{ "CLEAN" , SC_OPCODE_CLEAN },
{ "CHAR" , SC_OPCODE_CHAR },
{ "JIS" , SC_OPCODE_JIS },
{ "ASC" , SC_OPCODE_ASC },
{ "UNICODE" , SC_OPCODE_UNICODE },
{ "UNICHAR" , SC_OPCODE_UNICHAR },
{ "LOG10" , SC_OPCODE_LOG10 },
{ "EVEN" , SC_OPCODE_EVEN },
{ "ODD" , SC_OPCODE_ODD },
{ "NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
{ "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
{ "FISHER" , SC_OPCODE_FISHER },
{ "FISHERINV" , SC_OPCODE_FISHER_INV },
{ "NORMSINV" , SC_OPCODE_S_NORM_INV },
{ "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
{ "GAMMALN" , SC_OPCODE_GAMMA_LN },
{ "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
{ "ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
{ "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
{ "FORMULA" , SC_OPCODE_FORMULA },
{ "ATAN2" , SC_OPCODE_ARC_TAN_2 },
{ "CEILING.MATH" , SC_OPCODE_CEIL_MATH },
{ "CEILING" , SC_OPCODE_CEIL },
{ "CEILING.XCL" , SC_OPCODE_CEIL_MS },
{ "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
{ "ISO.CEILING" , SC_OPCODE_CEIL_ISO },
{ "FLOOR" , SC_OPCODE_FLOOR },
{ "FLOOR.XCL" , SC_OPCODE_FLOOR_MS },
{ "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
{ "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
{ "ROUND" , SC_OPCODE_ROUND },
{ "ROUNDUP" , SC_OPCODE_ROUND_UP },
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
{ "TRUNC" , SC_OPCODE_TRUNC },
{ "LOG" , SC_OPCODE_LOG },
{ "POWER" , SC_OPCODE_POWER },
{ "GCD" , SC_OPCODE_GCD },
{ "LCM" , SC_OPCODE_LCM },
{ "MOD" , SC_OPCODE_MOD },
{ "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
{ "SUMSQ" , SC_OPCODE_SUM_SQ },
{ "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
{ "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
{ "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
{ "DATE" , SC_OPCODE_GET_DATE },
{ "TIME" , SC_OPCODE_GET_TIME },
{ "DAYS" , SC_OPCODE_GET_DIFF_DATE },
{ "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
{ "DATEDIF" , SC_OPCODE_GET_DATEDIF },
{ "MIN" , SC_OPCODE_MIN },
{ "MINA" , SC_OPCODE_MIN_A },
{ "MAX" , SC_OPCODE_MAX },
{ "MAXA" , SC_OPCODE_MAX_A },
{ "SUM" , SC_OPCODE_SUM },
{ "PRODUCT" , SC_OPCODE_PRODUCT },
{ "AVERAGE" , SC_OPCODE_AVERAGE },
{ "AVERAGEA" , SC_OPCODE_AVERAGE_A },
{ "COUNT" , SC_OPCODE_COUNT },
{ "COUNTA" , SC_OPCODE_COUNT_2 },
{ "NPV" , SC_OPCODE_NPV },
{ "IRR" , SC_OPCODE_IRR },
{ "MIRR" , SC_OPCODE_MIRR },
{ "ISPMT" , SC_OPCODE_ISPMT },
{ "VAR" , SC_OPCODE_VAR },
{ "VARA" , SC_OPCODE_VAR_A },
{ "VARP" , SC_OPCODE_VAR_P },
{ "VARPA" , SC_OPCODE_VAR_P_A },
{ "VAR.P" , SC_OPCODE_VAR_P_MS },
{ "VAR.S" , SC_OPCODE_VAR_S },
{ "STDEV" , SC_OPCODE_ST_DEV },
{ "STDEVA" , SC_OPCODE_ST_DEV_A },
{ "STDEVP" , SC_OPCODE_ST_DEV_P },
{ "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
{ "STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
{ "STDEV.S" , SC_OPCODE_ST_DEV_S },
{ "B" , SC_OPCODE_B },
{ "NORMDIST" , SC_OPCODE_NORM_DIST },
{ "NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
{ "EXPONDIST" , SC_OPCODE_EXP_DIST },
{ "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
{ "BINOMDIST" , SC_OPCODE_BINOM_DIST },
{ "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
{ "POISSON" , SC_OPCODE_POISSON_DIST },
{ "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
{ "COMBIN" , SC_OPCODE_COMBIN },
{ "COMBINA" , SC_OPCODE_COMBIN_A },
{ "PERMUT" , SC_OPCODE_PERMUT },
{ "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
{ "PV" , SC_OPCODE_PV },
{ "SYD" , SC_OPCODE_SYD },
{ "DDB" , SC_OPCODE_DDB },
{ "DB" , SC_OPCODE_DB },
{ "VDB" , SC_OPCODE_VBD },
{ "DURATION" , SC_OPCODE_PDURATION },
{ "SLN" , SC_OPCODE_SLN },
{ "PMT" , SC_OPCODE_PMT },
{ "COLUMNS" , SC_OPCODE_COLUMNS },
{ "ROWS" , SC_OPCODE_ROWS },
{ "SHEETS" , SC_OPCODE_SHEETS },
{ "COLUMN" , SC_OPCODE_COLUMN },
{ "ROW" , SC_OPCODE_ROW },
{ "SHEET" , SC_OPCODE_SHEET },
{ "ZGZ" , SC_OPCODE_RRI },
{ "FV" , SC_OPCODE_FV },
{ "NPER" , SC_OPCODE_NPER },
{ "RATE" , SC_OPCODE_RATE },
{ "IPMT" , SC_OPCODE_IPMT },
{ "PPMT" , SC_OPCODE_PPMT },
{ "CUMIPMT" , SC_OPCODE_CUM_IPMT },
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
{ "EFFECTIVE" , SC_OPCODE_EFFECT },
{ "NOMINAL" , SC_OPCODE_NOMINAL },
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
{ "DSUM" , SC_OPCODE_DB_SUM },
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
{ "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
{ "DGET" , SC_OPCODE_DB_GET },
{ "DMAX" , SC_OPCODE_DB_MAX },
{ "DMIN" , SC_OPCODE_DB_MIN },
{ "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
{ "DSTDEV" , SC_OPCODE_DB_STD_DEV },
{ "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
{ "DVAR" , SC_OPCODE_DB_VAR },
{ "DVARP" , SC_OPCODE_DB_VAR_P },
{ "INDIRECT" , SC_OPCODE_INDIRECT },
{ "ADDRESS" , SC_OPCODE_ADDRESS },
{ "MATCH" , SC_OPCODE_MATCH },
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
{ "COUNTIF" , SC_OPCODE_COUNT_IF },
{ "SUMIF" , SC_OPCODE_SUM_IF },
{ "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
{ "SUMIFS" , SC_OPCODE_SUM_IFS },
{ "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
{ "COUNTIFS" , SC_OPCODE_COUNT_IFS },
{ "LOOKUP" , SC_OPCODE_LOOKUP },
{ "VLOOKUP" , SC_OPCODE_V_LOOKUP },
{ "HLOOKUP" , SC_OPCODE_H_LOOKUP },
{ "MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
{ "OFFSET" , SC_OPCODE_OFFSET },
{ "INDEX" , SC_OPCODE_INDEX }, // ?? first character = I ??
{ "AREAS" , SC_OPCODE_AREAS },
{ "DOLLAR" , SC_OPCODE_CURRENCY },
{ "REPLACE" , SC_OPCODE_REPLACE },
{ "FIXED" , SC_OPCODE_FIXED },
{ "FIND" , SC_OPCODE_FIND },
{ "EXACT" , SC_OPCODE_EXACT },
{ "LEFT" , SC_OPCODE_LEFT },
{ "RIGHT" , SC_OPCODE_RIGHT },
{ "SEARCH" , SC_OPCODE_SEARCH },
{ "MID" , SC_OPCODE_MID },
{ "LENB" , SC_OPCODE_LENB },
{ "RIGHTB" , SC_OPCODE_RIGHTB },
{ "LEFTB" , SC_OPCODE_LEFTB },
{ "REPLACEB" , SC_OPCODE_REPLACEB },
{ "FINDB" , SC_OPCODE_FINDB },
{ "SEARCHB" , SC_OPCODE_SEARCHB },
{ "MIDB" , SC_OPCODE_MIDB },
{ "TEXT" , SC_OPCODE_TEXT },
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
{ "REPT" , SC_OPCODE_REPT },
{ "CONCATENATE" , SC_OPCODE_CONCAT },
{ "CONCAT" , SC_OPCODE_CONCAT_MS },
{ "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
{ "IFS" , SC_OPCODE_IFS_MS },
{ "SWITCH" , SC_OPCODE_SWITCH_MS },
{ "MINIFS" , SC_OPCODE_MINIFS_MS },
{ "MAXIFS" , SC_OPCODE_MAXIFS_MS },
{ "MVALUE" , SC_OPCODE_MAT_VALUE },
{ "MDETERM" , SC_OPCODE_MAT_DET },
{ "MINVERSE" , SC_OPCODE_MAT_INV },
{ "MMULT" , SC_OPCODE_MAT_MULT },
{ "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
{ "MUNIT" , SC_OPCODE_MATRIX_UNIT },
{ "GOALSEEK" , SC_OPCODE_BACK_SOLVER },
{ "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
{ "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
{ "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
{ "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
{ "TDIST" , SC_OPCODE_T_DIST },
{ "T.DIST.2T" , SC_OPCODE_T_DIST_2T },
{ "T.DIST" , SC_OPCODE_T_DIST_MS },
{ "T.DIST.RT" , SC_OPCODE_T_DIST_RT },
{ "FDIST" , SC_OPCODE_F_DIST },
{ "F.DIST" , SC_OPCODE_F_DIST_LT },
{ "F.DIST.RT" , SC_OPCODE_F_DIST_RT },
{ "CHIDIST" , SC_OPCODE_CHI_DIST },
{ "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
{ "WEIBULL" , SC_OPCODE_WEIBULL },
{ "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
{ "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
{ "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
{ "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
{ "BINOM.INV" , SC_OPCODE_BINOM_INV },
{ "KURT" , SC_OPCODE_KURT },
{ "HARMEAN" , SC_OPCODE_HAR_MEAN },
{ "GEOMEAN" , SC_OPCODE_GEO_MEAN },
{ "STANDARDIZE" , SC_OPCODE_STANDARD },
{ "AVEDEV" , SC_OPCODE_AVE_DEV },
{ "SKEW" , SC_OPCODE_SKEW },
{ "SKEWP" , SC_OPCODE_SKEWP },
{ "DEVSQ" , SC_OPCODE_DEV_SQ },
{ "MEDIAN" , SC_OPCODE_MEDIAN },
{ "MODE" , SC_OPCODE_MODAL_VALUE },
{ "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
{ "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
{ "ZTEST" , SC_OPCODE_Z_TEST },
{ "Z.TEST" , SC_OPCODE_Z_TEST_MS },
{ "AGGREGATE" , SC_OPCODE_AGGREGATE },
{ "TTEST" , SC_OPCODE_T_TEST },
{ "T.TEST" , SC_OPCODE_T_TEST_MS },
{ "RANK" , SC_OPCODE_RANK },
{ "PERCENTILE" , SC_OPCODE_PERCENTILE },
{ "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
{ "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
{ "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
{ "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
{ "RANK.EQ" , SC_OPCODE_RANK_EQ },
{ "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
{ "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
{ "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
{ "RANK.AVG" , SC_OPCODE_RANK_AVG },
{ "LARGE" , SC_OPCODE_LARGE },
{ "SMALL" , SC_OPCODE_SMALL },
{ "FREQUENCY" , SC_OPCODE_FREQUENCY },
{ "QUARTILE" , SC_OPCODE_QUARTILE },
{ "NORMINV" , SC_OPCODE_NORM_INV },
{ "NORM.INV" , SC_OPCODE_NORM_INV_MS },
{ "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
{ "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
{ "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
{ "FTEST" , SC_OPCODE_F_TEST },
{ "F.TEST" , SC_OPCODE_F_TEST_MS },
{ "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
{ "PROB" , SC_OPCODE_PROB },
{ "CORREL" , SC_OPCODE_CORREL },
{ "COVAR" , SC_OPCODE_COVAR },
{ "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
{ "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
{ "PEARSON" , SC_OPCODE_PEARSON },
{ "RSQ" , SC_OPCODE_RSQ },
{ "STEYX" , SC_OPCODE_STEYX },
{ "SLOPE" , SC_OPCODE_SLOPE },
{ "INTERCEPT" , SC_OPCODE_INTERCEPT },
{ "TREND" , SC_OPCODE_TREND },
{ "GROWTH" , SC_OPCODE_GROWTH },
{ "LINEST" , SC_OPCODE_LINEST },
{ "LOGEST" , SC_OPCODE_LOGEST },
{ "FORECAST" , SC_OPCODE_FORECAST },
{ "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD },
{ "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
{ "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
{ "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA },
{ "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
{ "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA },
{ "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
{ "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
{ "CHIINV" , SC_OPCODE_CHI_INV },
{ "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
{ "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
{ "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
{ "GAMMAINV" , SC_OPCODE_GAMMA_INV },
{ "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
{ "TINV" , SC_OPCODE_T_INV },
{ "T.INV.2T" , SC_OPCODE_T_INV_2T },
{ "T.INV" , SC_OPCODE_T_INV_MS },
{ "FINV" , SC_OPCODE_F_INV },
{ "F.INV" , SC_OPCODE_F_INV_LT },
{ "F.INV.RT" , SC_OPCODE_F_INV_RT },
{ "CHITEST" , SC_OPCODE_CHI_TEST },
{ "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
{ "LOGINV" , SC_OPCODE_LOG_INV },
{ "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
{ "TABLE" , SC_OPCODE_TABLE_OP },
{ "BETADIST" , SC_OPCODE_BETA_DIST },
{ "BETAINV" , SC_OPCODE_BETA_INV },
{ "BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
{ "BETA.INV" , SC_OPCODE_BETA_INV_MS },
{ "WEEKNUM" , SC_OPCODE_WEEK },
{ "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
{ "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
{ "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
{ "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
{ "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
{ "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
{ "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
{ "#NAME!" , SC_OPCODE_NO_NAME },
{ "STYLE" , SC_OPCODE_STYLE },
{ "DDE" , SC_OPCODE_DDE },
{ "BASE" , SC_OPCODE_BASE },
{ "DECIMAL" , SC_OPCODE_DECIMAL },
{ "CONVERT" , SC_OPCODE_CONVERT_OOO },
{ "ROMAN" , SC_OPCODE_ROMAN },
{ "ARABIC" , SC_OPCODE_ARABIC },
{ "HYPERLINK" , SC_OPCODE_HYPERLINK },
{ "INFO" , SC_OPCODE_INFO },
{ "BAHTTEXT" , SC_OPCODE_BAHTTEXT },
{ "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
{ "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
{ "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
{ "GAMMA" , SC_OPCODE_GAMMA },
{ "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
{ "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
{ "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
{ "CHISQINV" , SC_OPCODE_CHISQ_INV },
{ "BITAND" , SC_OPCODE_BITAND },
{ "BITOR" , SC_OPCODE_BITOR },
{ "BITXOR" , SC_OPCODE_BITXOR },
{ "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
{ "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
{ "#REF!" , SC_OPCODE_ERROR_REF },
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
{ "#N/A" , SC_OPCODE_ERROR_NA },
/* END defined ERROR.TYPE() values. */
{ "FILTERXML" , SC_OPCODE_FILTERXML },
{ "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
{ "COLOR" , SC_OPCODE_COLOR },
{ "ERF.PRECISE" , SC_OPCODE_ERF_MS },
{ "ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
{ "ENCODEURL" , SC_OPCODE_ENCODEURL },
{ "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
{ "ROUNDSIG" , SC_OPCODE_ROUNDSIG },
{ "REGEX" , SC_OPCODE_REGEX },
{ "FOURIER", SC_OPCODE_FOURIER },
{ "RAND.NV" , SC_OPCODE_RANDOM_NV },
{ "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
{ nullptr, -1 }
};
/** These English names can be chosen in the UI and can be changed. They
should match the [en-US] names of RID_STRLIST_FUNCTION_NAMES below. */
// As such they are a duplicate, but we can not have two string localizations
// at the same time.
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
{
{ "IF" , SC_OPCODE_IF },
{ "IFERROR" , SC_OPCODE_IF_ERROR },
{ "IFNA" , SC_OPCODE_IF_NA },
{ "CHOOSE" , SC_OPCODE_CHOOSE },
{ "(" , SC_OPCODE_OPEN },
{ ")" , SC_OPCODE_CLOSE },
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
{ "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
{ "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
{ "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
{ "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
{ "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
{ "{" , SC_OPCODE_ARRAY_OPEN },
{ "}" , SC_OPCODE_ARRAY_CLOSE },
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
{ ";" , SC_OPCODE_SEP },
{ "%" , SC_OPCODE_PERCENT_SIGN },
{ "+" , SC_OPCODE_ADD },
{ "-" , SC_OPCODE_SUB },
{ "*" , SC_OPCODE_MUL },
{ "/" , SC_OPCODE_DIV },
{ "&" , SC_OPCODE_AMPERSAND },
{ "^" , SC_OPCODE_POW },
{ "=" , SC_OPCODE_EQUAL },
{ "<>" , SC_OPCODE_NOT_EQUAL },
{ "<" , SC_OPCODE_LESS },
{ ">" , SC_OPCODE_GREATER },
{ "<=" , SC_OPCODE_LESS_EQUAL },
{ ">=" , SC_OPCODE_GREATER_EQUAL },
{ "AND" , SC_OPCODE_AND },
{ "OR" , SC_OPCODE_OR },
{ "XOR" , SC_OPCODE_XOR },
{ "!" , SC_OPCODE_INTERSECT },
{ "~" , SC_OPCODE_UNION },
{ ":" , SC_OPCODE_RANGE },
{ "NOT" , SC_OPCODE_NOT },
{ "NEG" , SC_OPCODE_NEG },
{ "-" , SC_OPCODE_NEG_SUB },
{ "PI" , SC_OPCODE_PI },
{ "RAND" , SC_OPCODE_RANDOM },
{ "TRUE" , SC_OPCODE_TRUE },
{ "FALSE" , SC_OPCODE_FALSE },
{ "TODAY" , SC_OPCODE_GET_ACT_DATE },
{ "NOW" , SC_OPCODE_GET_ACT_TIME },
{ "NA" , SC_OPCODE_NO_VALUE },
{ "CURRENT" , SC_OPCODE_CURRENT },
{ "DEGREES" , SC_OPCODE_DEG },
{ "RADIANS" , SC_OPCODE_RAD },
{ "SIN" , SC_OPCODE_SIN },
{ "COS" , SC_OPCODE_COS },
{ "TAN" , SC_OPCODE_TAN },
{ "COT" , SC_OPCODE_COT },
{ "ASIN" , SC_OPCODE_ARC_SIN },
{ "ACOS" , SC_OPCODE_ARC_COS },
{ "ATAN" , SC_OPCODE_ARC_TAN },
{ "ACOT" , SC_OPCODE_ARC_COT },
{ "SINH" , SC_OPCODE_SIN_HYP },
{ "COSH" , SC_OPCODE_COS_HYP },
{ "TANH" , SC_OPCODE_TAN_HYP },
{ "COTH" , SC_OPCODE_COT_HYP },
{ "ASINH" , SC_OPCODE_ARC_SIN_HYP },
{ "ACOSH" , SC_OPCODE_ARC_COS_HYP },
{ "ATANH" , SC_OPCODE_ARC_TAN_HYP },
{ "ACOTH" , SC_OPCODE_ARC_COT_HYP },
{ "CSC" , SC_OPCODE_COSECANT },
{ "SEC" , SC_OPCODE_SECANT },
{ "CSCH" , SC_OPCODE_COSECANT_HYP },
{ "SECH" , SC_OPCODE_SECANT_HYP },
{ "EXP" , SC_OPCODE_EXP },
{ "LN" , SC_OPCODE_LN },
{ "SQRT" , SC_OPCODE_SQRT },
{ "FACT" , SC_OPCODE_FACT },
{ "YEAR" , SC_OPCODE_GET_YEAR },
{ "MONTH" , SC_OPCODE_GET_MONTH },
{ "DAY" , SC_OPCODE_GET_DAY },
{ "HOUR" , SC_OPCODE_GET_HOUR },
{ "MINUTE" , SC_OPCODE_GET_MIN },
{ "SECOND" , SC_OPCODE_GET_SEC },
{ "SIGN" , SC_OPCODE_PLUS_MINUS },
{ "ABS" , SC_OPCODE_ABS },
{ "INT" , SC_OPCODE_INT },
{ "PHI" , SC_OPCODE_PHI },
{ "GAUSS" , SC_OPCODE_GAUSS },
{ "ISBLANK" , SC_OPCODE_IS_EMPTY },
{ "ISTEXT" , SC_OPCODE_IS_STRING },
{ "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
{ "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
{ "TYPE" , SC_OPCODE_TYPE },
{ "CELL" , SC_OPCODE_CELL },
{ "ISREF" , SC_OPCODE_IS_REF },
{ "ISNUMBER" , SC_OPCODE_IS_VALUE },
{ "ISFORMULA" , SC_OPCODE_IS_FORMULA },
{ "ISNA" , SC_OPCODE_IS_NV },
{ "ISERR" , SC_OPCODE_IS_ERR },
{ "ISERROR" , SC_OPCODE_IS_ERROR },
{ "ISEVEN" , SC_OPCODE_IS_EVEN },
{ "ISODD" , SC_OPCODE_IS_ODD },
{ "N" , SC_OPCODE_N },
{ "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
{ "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
{ "CODE" , SC_OPCODE_CODE },
{ "TRIM" , SC_OPCODE_TRIM },
{ "UPPER" , SC_OPCODE_UPPER },
{ "PROPER" , SC_OPCODE_PROPER },
{ "LOWER" , SC_OPCODE_LOWER },
{ "LEN" , SC_OPCODE_LEN },
{ "T" , SC_OPCODE_T },
{ "VALUE" , SC_OPCODE_VALUE },
{ "CLEAN" , SC_OPCODE_CLEAN },
{ "CHAR" , SC_OPCODE_CHAR },
{ "JIS" , SC_OPCODE_JIS },
{ "ASC" , SC_OPCODE_ASC },
{ "UNICODE" , SC_OPCODE_UNICODE },
{ "UNICHAR" , SC_OPCODE_UNICHAR },
{ "LOG10" , SC_OPCODE_LOG10 },
{ "EVEN" , SC_OPCODE_EVEN },
{ "ODD" , SC_OPCODE_ODD },
{ "NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
{ "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
{ "FISHER" , SC_OPCODE_FISHER },
{ "FISHERINV" , SC_OPCODE_FISHER_INV },
{ "NORMSINV" , SC_OPCODE_S_NORM_INV },
{ "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
{ "GAMMALN" , SC_OPCODE_GAMMA_LN },
{ "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
{ "ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
{ "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
{ "FORMULA" , SC_OPCODE_FORMULA },
{ "ATAN2" , SC_OPCODE_ARC_TAN_2 },
{ "CEILING.MATH" , SC_OPCODE_CEIL_MATH },
{ "CEILING" , SC_OPCODE_CEIL },
{ "CEILING.XCL" , SC_OPCODE_CEIL_MS },
{ "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
{ "ISO.CEILING" , SC_OPCODE_CEIL_ISO },
{ "FLOOR" , SC_OPCODE_FLOOR },
{ "FLOOR.XCL" , SC_OPCODE_FLOOR_MS },
{ "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
{ "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
{ "ROUND" , SC_OPCODE_ROUND },
{ "ROUNDUP" , SC_OPCODE_ROUND_UP },
{ "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
{ "TRUNC" , SC_OPCODE_TRUNC },
{ "LOG" , SC_OPCODE_LOG },
{ "POWER" , SC_OPCODE_POWER },
{ "GCD" , SC_OPCODE_GCD },
{ "LCM" , SC_OPCODE_LCM },
{ "MOD" , SC_OPCODE_MOD },
{ "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
{ "SUMSQ" , SC_OPCODE_SUM_SQ },
{ "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
{ "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
{ "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
{ "DATE" , SC_OPCODE_GET_DATE },
{ "TIME" , SC_OPCODE_GET_TIME },
{ "DAYS" , SC_OPCODE_GET_DIFF_DATE },
{ "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
{ "DATEDIF" , SC_OPCODE_GET_DATEDIF },
{ "MIN" , SC_OPCODE_MIN },
{ "MINA" , SC_OPCODE_MIN_A },
{ "MAX" , SC_OPCODE_MAX },
{ "MAXA" , SC_OPCODE_MAX_A },
{ "SUM" , SC_OPCODE_SUM },
{ "PRODUCT" , SC_OPCODE_PRODUCT },
{ "AVERAGE" , SC_OPCODE_AVERAGE },
{ "AVERAGEA" , SC_OPCODE_AVERAGE_A },
{ "COUNT" , SC_OPCODE_COUNT },
{ "COUNTA" , SC_OPCODE_COUNT_2 },
{ "NPV" , SC_OPCODE_NPV },
{ "IRR" , SC_OPCODE_IRR },
{ "MIRR" , SC_OPCODE_MIRR },
{ "ISPMT" , SC_OPCODE_ISPMT },
{ "VAR" , SC_OPCODE_VAR },
{ "VARA" , SC_OPCODE_VAR_A },
{ "VARP" , SC_OPCODE_VAR_P },
{ "VARPA" , SC_OPCODE_VAR_P_A },
{ "VAR.P" , SC_OPCODE_VAR_P_MS },
{ "VAR.S" , SC_OPCODE_VAR_S },
{ "STDEV" , SC_OPCODE_ST_DEV },
{ "STDEVA" , SC_OPCODE_ST_DEV_A },
{ "STDEVP" , SC_OPCODE_ST_DEV_P },
{ "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
{ "STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
{ "STDEV.S" , SC_OPCODE_ST_DEV_S },
{ "B" , SC_OPCODE_B },
{ "NORMDIST" , SC_OPCODE_NORM_DIST },
{ "NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
{ "EXPONDIST" , SC_OPCODE_EXP_DIST },
{ "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
{ "BINOMDIST" , SC_OPCODE_BINOM_DIST },
{ "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
{ "POISSON" , SC_OPCODE_POISSON_DIST },
{ "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
{ "COMBIN" , SC_OPCODE_COMBIN },
{ "COMBINA" , SC_OPCODE_COMBIN_A },
{ "PERMUT" , SC_OPCODE_PERMUT },
{ "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
{ "PV" , SC_OPCODE_PV },
{ "SYD" , SC_OPCODE_SYD },
{ "DDB" , SC_OPCODE_DDB },
{ "DB" , SC_OPCODE_DB },
{ "VDB" , SC_OPCODE_VBD },
{ "PDURATION" , SC_OPCODE_PDURATION },
{ "SLN" , SC_OPCODE_SLN },
{ "PMT" , SC_OPCODE_PMT },
{ "COLUMNS" , SC_OPCODE_COLUMNS },
{ "ROWS" , SC_OPCODE_ROWS },
{ "SHEETS" , SC_OPCODE_SHEETS },
{ "COLUMN" , SC_OPCODE_COLUMN },
{ "ROW" , SC_OPCODE_ROW },
{ "SHEET" , SC_OPCODE_SHEET },
{ "ZGZ" , SC_OPCODE_RRI },
{ "FV" , SC_OPCODE_FV },
{ "NPER" , SC_OPCODE_NPER },
{ "RATE" , SC_OPCODE_RATE },
{ "IPMT" , SC_OPCODE_IPMT },
{ "PPMT" , SC_OPCODE_PPMT },
{ "CUMIPMT" , SC_OPCODE_CUM_IPMT },
{ "CUMPRINC" , SC_OPCODE_CUM_PRINC },
{ "EFFECTIVE" , SC_OPCODE_EFFECT },
{ "NOMINAL" , SC_OPCODE_NOMINAL },
{ "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
{ "DSUM" , SC_OPCODE_DB_SUM },
{ "DCOUNT" , SC_OPCODE_DB_COUNT },
{ "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
{ "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
{ "DGET" , SC_OPCODE_DB_GET },
{ "DMAX" , SC_OPCODE_DB_MAX },
{ "DMIN" , SC_OPCODE_DB_MIN },
{ "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
{ "DSTDEV" , SC_OPCODE_DB_STD_DEV },
{ "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
{ "DVAR" , SC_OPCODE_DB_VAR },
{ "DVARP" , SC_OPCODE_DB_VAR_P },
{ "INDIRECT" , SC_OPCODE_INDIRECT },
{ "ADDRESS" , SC_OPCODE_ADDRESS },
{ "MATCH" , SC_OPCODE_MATCH },
{ "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
{ "COUNTIF" , SC_OPCODE_COUNT_IF },
{ "SUMIF" , SC_OPCODE_SUM_IF },
{ "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
{ "SUMIFS" , SC_OPCODE_SUM_IFS },
{ "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
{ "COUNTIFS" , SC_OPCODE_COUNT_IFS },
{ "LOOKUP" , SC_OPCODE_LOOKUP },
{ "VLOOKUP" , SC_OPCODE_V_LOOKUP },
{ "HLOOKUP" , SC_OPCODE_H_LOOKUP },
{ "MULTIRANGE" , SC_OPCODE_MULTI_AREA },
{ "OFFSET" , SC_OPCODE_OFFSET },
{ "INDEX" , SC_OPCODE_INDEX },
{ "AREAS" , SC_OPCODE_AREAS },
{ "DOLLAR" , SC_OPCODE_CURRENCY },
{ "REPLACE" , SC_OPCODE_REPLACE },
{ "FIXED" , SC_OPCODE_FIXED },
{ "FIND" , SC_OPCODE_FIND },
{ "EXACT" , SC_OPCODE_EXACT },
{ "LEFT" , SC_OPCODE_LEFT },
{ "RIGHT" , SC_OPCODE_RIGHT },
{ "SEARCH" , SC_OPCODE_SEARCH },
{ "MID" , SC_OPCODE_MID },
{ "LENB" , SC_OPCODE_LENB },
{ "RIGHTB" , SC_OPCODE_RIGHTB },
{ "LEFTB" , SC_OPCODE_LEFTB },
{ "REPLACEB" , SC_OPCODE_REPLACEB },
{ "FINDB" , SC_OPCODE_FINDB },
{ "SEARCHB" , SC_OPCODE_SEARCHB },
{ "MIDB" , SC_OPCODE_MIDB },
{ "TEXT" , SC_OPCODE_TEXT },
{ "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
{ "REPT" , SC_OPCODE_REPT },
{ "CONCATENATE" , SC_OPCODE_CONCAT },
{ "CONCAT" , SC_OPCODE_CONCAT_MS },
{ "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
{ "IFS" , SC_OPCODE_IFS_MS },
{ "SWITCH" , SC_OPCODE_SWITCH_MS },
{ "MINIFS" , SC_OPCODE_MINIFS_MS },
{ "MAXIFS" , SC_OPCODE_MAXIFS_MS },
{ "MVALUE" , SC_OPCODE_MAT_VALUE },
{ "MDETERM" , SC_OPCODE_MAT_DET },
{ "MINVERSE" , SC_OPCODE_MAT_INV },
{ "MMULT" , SC_OPCODE_MAT_MULT },
{ "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
{ "MUNIT" , SC_OPCODE_MATRIX_UNIT },
{ "GOALSEEK" , SC_OPCODE_BACK_SOLVER },
{ "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
{ "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
{ "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
{ "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
{ "TDIST" , SC_OPCODE_T_DIST },
{ "T.DIST.2T" , SC_OPCODE_T_DIST_2T },
{ "T.DIST" , SC_OPCODE_T_DIST_MS },
{ "T.DIST.RT" , SC_OPCODE_T_DIST_RT },
{ "FDIST" , SC_OPCODE_F_DIST },
{ "F.DIST" , SC_OPCODE_F_DIST_LT },
{ "F.DIST.RT" , SC_OPCODE_F_DIST_RT },
{ "CHIDIST" , SC_OPCODE_CHI_DIST },
{ "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
{ "WEIBULL" , SC_OPCODE_WEIBULL },
{ "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
{ "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
{ "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
{ "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
{ "BINOM.INV" , SC_OPCODE_BINOM_INV },
{ "KURT" , SC_OPCODE_KURT },
{ "HARMEAN" , SC_OPCODE_HAR_MEAN },
{ "GEOMEAN" , SC_OPCODE_GEO_MEAN },
{ "STANDARDIZE" , SC_OPCODE_STANDARD },
{ "AVEDEV" , SC_OPCODE_AVE_DEV },
{ "SKEW" , SC_OPCODE_SKEW },
{ "SKEWP" , SC_OPCODE_SKEWP },
{ "DEVSQ" , SC_OPCODE_DEV_SQ },
{ "MEDIAN" , SC_OPCODE_MEDIAN },
{ "MODE" , SC_OPCODE_MODAL_VALUE },
{ "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
{ "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
{ "ZTEST" , SC_OPCODE_Z_TEST },
{ "Z.TEST" , SC_OPCODE_Z_TEST_MS },
{ "AGGREGATE" , SC_OPCODE_AGGREGATE },
{ "TTEST" , SC_OPCODE_T_TEST },
{ "T.TEST" , SC_OPCODE_T_TEST_MS },
{ "RANK" , SC_OPCODE_RANK },
{ "PERCENTILE" , SC_OPCODE_PERCENTILE },
{ "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
{ "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
{ "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
{ "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
{ "RANK.EQ" , SC_OPCODE_RANK_EQ },
{ "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
{ "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
{ "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
{ "RANK.AVG" , SC_OPCODE_RANK_AVG },
{ "LARGE" , SC_OPCODE_LARGE },
{ "SMALL" , SC_OPCODE_SMALL },
{ "FREQUENCY" , SC_OPCODE_FREQUENCY },
{ "QUARTILE" , SC_OPCODE_QUARTILE },
{ "NORMINV" , SC_OPCODE_NORM_INV },
{ "NORM.INV" , SC_OPCODE_NORM_INV_MS },
{ "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
{ "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
{ "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
{ "FTEST" , SC_OPCODE_F_TEST },
{ "F.TEST" , SC_OPCODE_F_TEST_MS },
{ "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
{ "PROB" , SC_OPCODE_PROB },
{ "CORREL" , SC_OPCODE_CORREL },
{ "COVAR" , SC_OPCODE_COVAR },
{ "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
{ "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
{ "PEARSON" , SC_OPCODE_PEARSON },
{ "RSQ" , SC_OPCODE_RSQ },
{ "STEYX" , SC_OPCODE_STEYX },
{ "SLOPE" , SC_OPCODE_SLOPE },
{ "INTERCEPT" , SC_OPCODE_INTERCEPT },
{ "TREND" , SC_OPCODE_TREND },
{ "GROWTH" , SC_OPCODE_GROWTH },
{ "LINEST" , SC_OPCODE_LINEST },
{ "LOGEST" , SC_OPCODE_LOGEST },
{ "FORECAST" , SC_OPCODE_FORECAST },
{ "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD },
{ "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
{ "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
{ "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA },
{ "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
{ "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA },
{ "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
{ "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
{ "CHIINV" , SC_OPCODE_CHI_INV },
{ "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
{ "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
{ "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
{ "GAMMAINV" , SC_OPCODE_GAMMA_INV },
{ "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
{ "TINV" , SC_OPCODE_T_INV },
{ "T.INV.2T" , SC_OPCODE_T_INV_2T },
{ "T.INV" , SC_OPCODE_T_INV_MS },
{ "FINV" , SC_OPCODE_F_INV },
{ "F.INV" , SC_OPCODE_F_INV_LT },
{ "F.INV.RT" , SC_OPCODE_F_INV_RT },
{ "CHITEST" , SC_OPCODE_CHI_TEST },
{ "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
{ "LOGINV" , SC_OPCODE_LOG_INV },
{ "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
{ "TABLE" , SC_OPCODE_TABLE_OP },
{ "BETADIST" , SC_OPCODE_BETA_DIST },
{ "BETAINV" , SC_OPCODE_BETA_INV },
{ "BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
{ "BETA.INV" , SC_OPCODE_BETA_INV_MS },
{ "WEEKNUM" , SC_OPCODE_WEEK },
{ "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
{ "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
{ "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
{ "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
{ "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
{ "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
{ "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
{ "#NAME!" , SC_OPCODE_NO_NAME },
{ "STYLE" , SC_OPCODE_STYLE },
{ "DDE" , SC_OPCODE_DDE },
{ "BASE" , SC_OPCODE_BASE },
{ "DECIMAL" , SC_OPCODE_DECIMAL },
{ "CONVERT_OOO" , SC_OPCODE_CONVERT_OOO },
{ "ROMAN" , SC_OPCODE_ROMAN },
{ "ARABIC" , SC_OPCODE_ARABIC },
{ "HYPERLINK" , SC_OPCODE_HYPERLINK },
{ "INFO" , SC_OPCODE_INFO },
{ "BAHTTEXT" , SC_OPCODE_BAHTTEXT },
{ "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
{ "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
{ "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
{ "GAMMA" , SC_OPCODE_GAMMA },
{ "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
{ "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
{ "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
{ "CHISQINV" , SC_OPCODE_CHISQ_INV },
{ "BITAND" , SC_OPCODE_BITAND },
{ "BITOR" , SC_OPCODE_BITOR },
{ "BITXOR" , SC_OPCODE_BITXOR },
{ "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
{ "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
{ "#NULL!" , SC_OPCODE_ERROR_NULL },
{ "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
{ "#VALUE!" , SC_OPCODE_ERROR_VALUE },
{ "#REF!" , SC_OPCODE_ERROR_REF },
{ "#NAME?" , SC_OPCODE_ERROR_NAME },
{ "#NUM!" , SC_OPCODE_ERROR_NUM },
{ "#N/A" , SC_OPCODE_ERROR_NA },
/* END defined ERROR.TYPE() values. */
{ "FILTERXML" , SC_OPCODE_FILTERXML },
{ "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
{ "COLOR" , SC_OPCODE_COLOR },
{ "ERF.PRECISE" , SC_OPCODE_ERF_MS },
{ "ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
{ "ENCODEURL" , SC_OPCODE_ENCODEURL },
{ "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
{ "ROUNDSIG" , SC_OPCODE_ROUNDSIG },
{ "REGEX" , SC_OPCODE_REGEX },
{ "FOURIER", SC_OPCODE_FOURIER },
{ "RAND.NV" , SC_OPCODE_RANDOM_NV },
{ "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
{ nullptr, -1 }
};
/** Function names that can be localized if [en-US]. Same names should be used
in RID_STRLIST_FUNCTION_NAMES_ENGLISH above. Names can be changed, the
change has to be mentioned in the release notes, i.e.
https://wiki.documentfoundation.org/ReleaseNotes/...
*/
const std::pair<TranslateId, int> RID_STRLIST_FUNCTION_NAMES[] =
{
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IF") , SC_OPCODE_IF },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IFERROR") , SC_OPCODE_IF_ERROR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IFNA") , SC_OPCODE_IF_NA },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHOOSE") , SC_OPCODE_CHOOSE },
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#All") , SC_OPCODE_TABLE_REF_ITEM_ALL },
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Headers") , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Data") , SC_OPCODE_TABLE_REF_ITEM_DATA },
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#Totals") , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#This Row") , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AND") , SC_OPCODE_AND },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "OR") , SC_OPCODE_OR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "XOR") , SC_OPCODE_XOR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NOT") , SC_OPCODE_NOT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NEG") , SC_OPCODE_NEG },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PI") , SC_OPCODE_PI }, // ???
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RAND") , SC_OPCODE_RANDOM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TRUE") , SC_OPCODE_TRUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FALSE") , SC_OPCODE_FALSE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TODAY") , SC_OPCODE_GET_ACT_DATE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NOW") , SC_OPCODE_GET_ACT_TIME },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NA") , SC_OPCODE_NO_VALUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CURRENT") , SC_OPCODE_CURRENT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DEGREES") , SC_OPCODE_DEG },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RADIANS") , SC_OPCODE_RAD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SIN") , SC_OPCODE_SIN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COS") , SC_OPCODE_COS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TAN") , SC_OPCODE_TAN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COT") , SC_OPCODE_COT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ASIN") , SC_OPCODE_ARC_SIN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ACOS") , SC_OPCODE_ARC_COS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ATAN") , SC_OPCODE_ARC_TAN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ACOT") , SC_OPCODE_ARC_COT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SINH") , SC_OPCODE_SIN_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COSH") , SC_OPCODE_COS_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TANH") , SC_OPCODE_TAN_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COTH") , SC_OPCODE_COT_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ASINH") , SC_OPCODE_ARC_SIN_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ACOSH") , SC_OPCODE_ARC_COS_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ATANH") , SC_OPCODE_ARC_TAN_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ACOTH") , SC_OPCODE_ARC_COT_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CSC") , SC_OPCODE_COSECANT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SEC") , SC_OPCODE_SECANT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CSCH") , SC_OPCODE_COSECANT_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SECH") , SC_OPCODE_SECANT_HYP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EXP") , SC_OPCODE_EXP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LN") , SC_OPCODE_LN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SQRT") , SC_OPCODE_SQRT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FACT") , SC_OPCODE_FACT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "YEAR") , SC_OPCODE_GET_YEAR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MONTH") , SC_OPCODE_GET_MONTH },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DAY") , SC_OPCODE_GET_DAY },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "HOUR") , SC_OPCODE_GET_HOUR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MINUTE") , SC_OPCODE_GET_MIN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SECOND") , SC_OPCODE_GET_SEC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SIGN") , SC_OPCODE_PLUS_MINUS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ABS") , SC_OPCODE_ABS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "INT") , SC_OPCODE_INT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PHI") , SC_OPCODE_PHI },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GAUSS") , SC_OPCODE_GAUSS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISBLANK") , SC_OPCODE_IS_EMPTY },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISTEXT") , SC_OPCODE_IS_STRING },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISNONTEXT") , SC_OPCODE_IS_NON_STRING },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISLOGICAL") , SC_OPCODE_IS_LOGICAL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TYPE") , SC_OPCODE_TYPE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CELL") , SC_OPCODE_CELL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISREF") , SC_OPCODE_IS_REF },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISNUMBER") , SC_OPCODE_IS_VALUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISFORMULA") , SC_OPCODE_IS_FORMULA },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISNA") , SC_OPCODE_IS_NV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISERR") , SC_OPCODE_IS_ERR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISERROR") , SC_OPCODE_IS_ERROR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISEVEN") , SC_OPCODE_IS_EVEN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISODD") , SC_OPCODE_IS_ODD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "N") , SC_OPCODE_N },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DATEVALUE") , SC_OPCODE_GET_DATE_VALUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TIMEVALUE") , SC_OPCODE_GET_TIME_VALUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CODE") , SC_OPCODE_CODE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TRIM") , SC_OPCODE_TRIM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "UPPER") , SC_OPCODE_UPPER },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PROPER") , SC_OPCODE_PROPER },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOWER") , SC_OPCODE_LOWER },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LEN") , SC_OPCODE_LEN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "T") , SC_OPCODE_T },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VALUE") , SC_OPCODE_VALUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CLEAN") , SC_OPCODE_CLEAN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHAR") , SC_OPCODE_CHAR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "JIS") , SC_OPCODE_JIS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ASC") , SC_OPCODE_ASC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "UNICODE") , SC_OPCODE_UNICODE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "UNICHAR") , SC_OPCODE_UNICHAR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOG10") , SC_OPCODE_LOG10 },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EVEN") , SC_OPCODE_EVEN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ODD") , SC_OPCODE_ODD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NORMSDIST") , SC_OPCODE_STD_NORM_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.S.DIST") , SC_OPCODE_STD_NORM_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FISHER") , SC_OPCODE_FISHER },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FISHERINV") , SC_OPCODE_FISHER_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NORMSINV") , SC_OPCODE_S_NORM_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.S.INV") , SC_OPCODE_S_NORM_INV_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMALN") , SC_OPCODE_GAMMA_LN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMALN.PRECISE") , SC_OPCODE_GAMMA_LN_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ERRORTYPE") , SC_OPCODE_ERROR_TYPE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ERROR.TYPE") , SC_OPCODE_ERROR_TYPE_ODF },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORMULA") , SC_OPCODE_FORMULA },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ARABIC") , SC_OPCODE_ARABIC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ATAN2") , SC_OPCODE_ARC_TAN_2 },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.MATH") , SC_OPCODE_CEIL_MATH },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING") , SC_OPCODE_CEIL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.XCL") , SC_OPCODE_CEIL_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.PRECISE") , SC_OPCODE_CEIL_PRECISE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISO.CEILING") , SC_OPCODE_CEIL_ISO },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR") , SC_OPCODE_FLOOR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.XCL") , SC_OPCODE_FLOOR_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.MATH") , SC_OPCODE_FLOOR_MATH },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.PRECISE") , SC_OPCODE_FLOOR_PRECISE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ROUND") , SC_OPCODE_ROUND },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDUP") , SC_OPCODE_ROUND_UP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDDOWN") , SC_OPCODE_ROUND_DOWN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TRUNC") , SC_OPCODE_TRUNC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOG") , SC_OPCODE_LOG },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "POWER") , SC_OPCODE_POWER },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GCD") , SC_OPCODE_GCD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LCM") , SC_OPCODE_LCM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MOD") , SC_OPCODE_MOD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUMPRODUCT") , SC_OPCODE_SUM_PRODUCT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUMSQ") , SC_OPCODE_SUM_SQ },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUMX2MY2") , SC_OPCODE_SUM_X2MY2 },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUMX2PY2") , SC_OPCODE_SUM_X2DY2 },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUMXMY2") , SC_OPCODE_SUM_XMY2 },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DATE") , SC_OPCODE_GET_DATE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TIME") , SC_OPCODE_GET_TIME },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DAYS") , SC_OPCODE_GET_DIFF_DATE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DAYS360") , SC_OPCODE_GET_DIFF_DATE_360 },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DATEDIF") , SC_OPCODE_GET_DATEDIF },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MIN") , SC_OPCODE_MIN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MINA") , SC_OPCODE_MIN_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MAX") , SC_OPCODE_MAX },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MAXA") , SC_OPCODE_MAX_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUM") , SC_OPCODE_SUM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PRODUCT") , SC_OPCODE_PRODUCT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGE") , SC_OPCODE_AVERAGE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEA") , SC_OPCODE_AVERAGE_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COUNT") , SC_OPCODE_COUNT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTA") , SC_OPCODE_COUNT_2 },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NPV") , SC_OPCODE_NPV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IRR") , SC_OPCODE_IRR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MIRR") , SC_OPCODE_MIRR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISPMT") , SC_OPCODE_ISPMT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VAR") , SC_OPCODE_VAR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VARA") , SC_OPCODE_VAR_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VARP") , SC_OPCODE_VAR_P },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VARPA") , SC_OPCODE_VAR_P_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VAR.P") , SC_OPCODE_VAR_P_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VAR.S") , SC_OPCODE_VAR_S },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV") , SC_OPCODE_ST_DEV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVA") , SC_OPCODE_ST_DEV_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVP") , SC_OPCODE_ST_DEV_P },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVPA") , SC_OPCODE_ST_DEV_P_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV.P") , SC_OPCODE_ST_DEV_P_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV.S") , SC_OPCODE_ST_DEV_S },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "B") , SC_OPCODE_B },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NORMDIST") , SC_OPCODE_NORM_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.DIST") , SC_OPCODE_NORM_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EXPONDIST") , SC_OPCODE_EXP_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EXPON.DIST") , SC_OPCODE_EXP_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BINOMDIST") , SC_OPCODE_BINOM_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BINOM.DIST") , SC_OPCODE_BINOM_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "POISSON") , SC_OPCODE_POISSON_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "POISSON.DIST") , SC_OPCODE_POISSON_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COMBIN") , SC_OPCODE_COMBIN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COMBINA") , SC_OPCODE_COMBIN_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PERMUT") , SC_OPCODE_PERMUT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PERMUTATIONA") , SC_OPCODE_PERMUTATION_A },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PV") , SC_OPCODE_PV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SYD") , SC_OPCODE_SYD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DDB") , SC_OPCODE_DDB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DB") , SC_OPCODE_DB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VDB") , SC_OPCODE_VBD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PDURATION") , SC_OPCODE_PDURATION },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SLN") , SC_OPCODE_SLN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PMT") , SC_OPCODE_PMT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COLUMNS") , SC_OPCODE_COLUMNS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ROWS") , SC_OPCODE_ROWS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SHEETS") , SC_OPCODE_SHEETS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COLUMN") , SC_OPCODE_COLUMN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ROW") , SC_OPCODE_ROW },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SHEET") , SC_OPCODE_SHEET },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RRI") , SC_OPCODE_RRI },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FV") , SC_OPCODE_FV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NPER") , SC_OPCODE_NPER },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RATE") , SC_OPCODE_RATE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IPMT") , SC_OPCODE_IPMT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PPMT") , SC_OPCODE_PPMT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CUMIPMT") , SC_OPCODE_CUM_IPMT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CUMPRINC") , SC_OPCODE_CUM_PRINC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EFFECT") , SC_OPCODE_EFFECT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NOMINAL") , SC_OPCODE_NOMINAL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUBTOTAL") , SC_OPCODE_SUB_TOTAL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DSUM") , SC_OPCODE_DB_SUM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DCOUNT") , SC_OPCODE_DB_COUNT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DCOUNTA") , SC_OPCODE_DB_COUNT_2 },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DAVERAGE") , SC_OPCODE_DB_AVERAGE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DGET") , SC_OPCODE_DB_GET },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DMAX") , SC_OPCODE_DB_MAX },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DMIN") , SC_OPCODE_DB_MIN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DPRODUCT") , SC_OPCODE_DB_PRODUCT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DSTDEV") , SC_OPCODE_DB_STD_DEV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DSTDEVP") , SC_OPCODE_DB_STD_DEV_P },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DVAR") , SC_OPCODE_DB_VAR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DVARP") , SC_OPCODE_DB_VAR_P },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "INDIRECT") , SC_OPCODE_INDIRECT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ADDRESS") , SC_OPCODE_ADDRESS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MATCH") , SC_OPCODE_MATCH },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTBLANK") , SC_OPCODE_COUNT_EMPTY_CELLS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTIF") , SC_OPCODE_COUNT_IF },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUMIF") , SC_OPCODE_SUM_IF },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEIF") , SC_OPCODE_AVERAGE_IF },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUMIFS") , SC_OPCODE_SUM_IFS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEIFS") , SC_OPCODE_AVERAGE_IFS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTIFS") , SC_OPCODE_COUNT_IFS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOOKUP") , SC_OPCODE_LOOKUP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "VLOOKUP") , SC_OPCODE_V_LOOKUP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "HLOOKUP") , SC_OPCODE_H_LOOKUP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIRANGE") , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
{ NC_("RID_STRLIST_FUNCTION_NAMES", "OFFSET") , SC_OPCODE_OFFSET },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "INDEX") , SC_OPCODE_INDEX }, // ?? first character = I ??
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AREAS") , SC_OPCODE_AREAS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DOLLAR") , SC_OPCODE_CURRENCY },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "REPLACE") , SC_OPCODE_REPLACE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FIXED") , SC_OPCODE_FIXED },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FIND") , SC_OPCODE_FIND },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EXACT") , SC_OPCODE_EXACT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LEFT") , SC_OPCODE_LEFT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RIGHT") , SC_OPCODE_RIGHT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SEARCH") , SC_OPCODE_SEARCH },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MID") , SC_OPCODE_MID },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LENB") , SC_OPCODE_LENB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RIGHTB") , SC_OPCODE_RIGHTB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LEFTB") , SC_OPCODE_LEFTB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "REPLACEB") , SC_OPCODE_REPLACEB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MIDB") , SC_OPCODE_MIDB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TEXT") , SC_OPCODE_TEXT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SUBSTITUTE") , SC_OPCODE_SUBSTITUTE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "REPT") , SC_OPCODE_REPT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CONCATENATE") , SC_OPCODE_CONCAT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CONCAT") , SC_OPCODE_CONCAT_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TEXTJOIN") , SC_OPCODE_TEXTJOIN_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "IFS") , SC_OPCODE_IFS_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SWITCH") , SC_OPCODE_SWITCH_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MINIFS") , SC_OPCODE_MINIFS_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MAXIFS") , SC_OPCODE_MAXIFS_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MVALUE") , SC_OPCODE_MAT_VALUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MDETERM") , SC_OPCODE_MAT_DET },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MINVERSE") , SC_OPCODE_MAT_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MMULT") , SC_OPCODE_MAT_MULT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TRANSPOSE") , SC_OPCODE_MAT_TRANS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MUNIT") , SC_OPCODE_MATRIX_UNIT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GOALSEEK") , SC_OPCODE_BACK_SOLVER },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "HYPGEOMDIST") , SC_OPCODE_HYP_GEOM_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "HYPGEOM.DIST") , SC_OPCODE_HYP_GEOM_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORMDIST") , SC_OPCODE_LOG_NORM_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORM.DIST") , SC_OPCODE_LOG_NORM_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TDIST") , SC_OPCODE_T_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST.2T") , SC_OPCODE_T_DIST_2T },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST") , SC_OPCODE_T_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST.RT") , SC_OPCODE_T_DIST_RT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FDIST") , SC_OPCODE_F_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "F.DIST") , SC_OPCODE_F_DIST_LT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "F.DIST.RT") , SC_OPCODE_F_DIST_RT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHIDIST") , SC_OPCODE_CHI_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.DIST.RT") , SC_OPCODE_CHI_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WEIBULL") , SC_OPCODE_WEIBULL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WEIBULL.DIST") , SC_OPCODE_WEIBULL_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NEGBINOMDIST") , SC_OPCODE_NEG_BINOM_VERT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NEGBINOM.DIST") , SC_OPCODE_NEG_BINOM_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CRITBINOM") , SC_OPCODE_CRIT_BINOM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BINOM.INV") , SC_OPCODE_BINOM_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "KURT") , SC_OPCODE_KURT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "HARMEAN") , SC_OPCODE_HAR_MEAN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GEOMEAN") , SC_OPCODE_GEO_MEAN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STANDARDIZE") , SC_OPCODE_STANDARD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AVEDEV") , SC_OPCODE_AVE_DEV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SKEW") , SC_OPCODE_SKEW },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SKEWP") , SC_OPCODE_SKEWP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DEVSQ") , SC_OPCODE_DEV_SQ },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MEDIAN") , SC_OPCODE_MEDIAN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MODE") , SC_OPCODE_MODAL_VALUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MODE.SNGL") , SC_OPCODE_MODAL_VALUE_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MODE.MULT") , SC_OPCODE_MODAL_VALUE_MULTI },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ZTEST") , SC_OPCODE_Z_TEST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "Z.TEST") , SC_OPCODE_Z_TEST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "AGGREGATE") , SC_OPCODE_AGGREGATE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TTEST") , SC_OPCODE_T_TEST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "T.TEST") , SC_OPCODE_T_TEST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RANK") , SC_OPCODE_RANK },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE") , SC_OPCODE_PERCENTILE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK") , SC_OPCODE_PERCENT_RANK },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE.INC") , SC_OPCODE_PERCENTILE_INC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK.INC") , SC_OPCODE_PERCENT_RANK_INC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE.INC") , SC_OPCODE_QUARTILE_INC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RANK.EQ") , SC_OPCODE_RANK_EQ },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE.EXC") , SC_OPCODE_PERCENTILE_EXC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK.EXC") , SC_OPCODE_PERCENT_RANK_EXC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE.EXC") , SC_OPCODE_QUARTILE_EXC },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RANK.AVG") , SC_OPCODE_RANK_AVG },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LARGE") , SC_OPCODE_LARGE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SMALL") , SC_OPCODE_SMALL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FREQUENCY") , SC_OPCODE_FREQUENCY },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE") , SC_OPCODE_QUARTILE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NORMINV") , SC_OPCODE_NORM_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.INV") , SC_OPCODE_NORM_INV_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE") , SC_OPCODE_CONFIDENCE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE.NORM") , SC_OPCODE_CONFIDENCE_N },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE.T") , SC_OPCODE_CONFIDENCE_T },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FTEST") , SC_OPCODE_F_TEST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "F.TEST") , SC_OPCODE_F_TEST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TRIMMEAN") , SC_OPCODE_TRIM_MEAN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PROB") , SC_OPCODE_PROB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CORREL") , SC_OPCODE_CORREL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COVAR") , SC_OPCODE_COVAR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COVARIANCE.P") , SC_OPCODE_COVARIANCE_P },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COVARIANCE.S") , SC_OPCODE_COVARIANCE_S },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "PEARSON") , SC_OPCODE_PEARSON },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RSQ") , SC_OPCODE_RSQ },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STEYX") , SC_OPCODE_STEYX },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SLOPE") , SC_OPCODE_SLOPE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "INTERCEPT") , SC_OPCODE_INTERCEPT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TREND") , SC_OPCODE_TREND },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GROWTH") , SC_OPCODE_GROWTH },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LINEST") , SC_OPCODE_LINEST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOGEST") , SC_OPCODE_LOGEST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST") , SC_OPCODE_FORECAST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.ADD") , SC_OPCODE_FORECAST_ETS_ADD },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.SEASONALITY") , SC_OPCODE_FORECAST_ETS_SEA },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.MULT") , SC_OPCODE_FORECAST_ETS_MUL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.PI.ADD") , SC_OPCODE_FORECAST_ETS_PIA },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.PI.MULT") , SC_OPCODE_FORECAST_ETS_PIM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.STAT.ADD") , SC_OPCODE_FORECAST_ETS_STA },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.STAT.MULT") , SC_OPCODE_FORECAST_ETS_STM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.LINEAR") , SC_OPCODE_FORECAST_LIN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHIINV") , SC_OPCODE_CHI_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.INV.RT") , SC_OPCODE_CHI_INV_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMADIST") , SC_OPCODE_GAMMA_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA.DIST") , SC_OPCODE_GAMMA_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMAINV") , SC_OPCODE_GAMMA_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA.INV") , SC_OPCODE_GAMMA_INV_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "TINV") , SC_OPCODE_T_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "T.INV.2T") , SC_OPCODE_T_INV_2T },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "T.INV") , SC_OPCODE_T_INV_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FINV") , SC_OPCODE_F_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "F.INV") , SC_OPCODE_F_INV_LT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "F.INV.RT") , SC_OPCODE_F_INV_RT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHITEST") , SC_OPCODE_CHI_TEST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.TEST") , SC_OPCODE_CHI_TEST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOGINV") , SC_OPCODE_LOG_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORM.INV") , SC_OPCODE_LOG_INV_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIPLE.OPERATIONS") , SC_OPCODE_TABLE_OP },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BETADIST") , SC_OPCODE_BETA_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BETAINV") , SC_OPCODE_BETA_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BETA.DIST") , SC_OPCODE_BETA_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BETA.INV") , SC_OPCODE_BETA_INV_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKNUM") , SC_OPCODE_WEEK },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ISOWEEKNUM") , SC_OPCODE_ISOWEEKNUM },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKNUM_OOO") , SC_OPCODE_WEEKNUM_OOO },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EASTERSUNDAY") , SC_OPCODE_EASTERSUNDAY },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKDAY") , SC_OPCODE_GET_DAY_OF_WEEK },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NETWORKDAYS") , SC_OPCODE_NETWORKDAYS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NETWORKDAYS.INTL") , SC_OPCODE_NETWORKDAYS_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WORKDAY.INTL") , SC_OPCODE_WORKDAY_MS },
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NAME!") , SC_OPCODE_NO_NAME },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "STYLE") , SC_OPCODE_STYLE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DDE") , SC_OPCODE_DDE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BASE") , SC_OPCODE_BASE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "DECIMAL") , SC_OPCODE_DECIMAL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CONVERT_OOO") , SC_OPCODE_CONVERT_OOO },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ROMAN") , SC_OPCODE_ROMAN },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "HYPERLINK") , SC_OPCODE_HYPERLINK },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "INFO") , SC_OPCODE_INFO },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BAHTTEXT") , SC_OPCODE_BAHTTEXT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GETPIVOTDATA") , SC_OPCODE_GET_PIVOT_DATA },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "EUROCONVERT") , SC_OPCODE_EUROCONVERT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "NUMBERVALUE") , SC_OPCODE_NUMBERVALUE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA") , SC_OPCODE_GAMMA },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQDIST") , SC_OPCODE_CHISQ_DIST },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.DIST") , SC_OPCODE_CHISQ_DIST_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQINV") , SC_OPCODE_CHISQ_INV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.INV") , SC_OPCODE_CHISQ_INV_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BITAND") , SC_OPCODE_BITAND },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BITOR") , SC_OPCODE_BITOR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BITXOR") , SC_OPCODE_BITXOR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BITRSHIFT") , SC_OPCODE_BITRSHIFT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "BITLSHIFT") , SC_OPCODE_BITLSHIFT },
/* BEGIN defined ERROR.TYPE() values. */
/* ERROR.TYPE( #NULL! ) == 1 */
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NULL!") , SC_OPCODE_ERROR_NULL },
/* ERROR.TYPE( #DIV/0! ) == 2 */
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#DIV/0!") , SC_OPCODE_ERROR_DIVZERO },
/* ERROR.TYPE( #VALUE! ) == 3 */
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#VALUE!") , SC_OPCODE_ERROR_VALUE },
/* ERROR.TYPE( #REF! ) == 4 */
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#REF!") , SC_OPCODE_ERROR_REF },
/* ERROR.TYPE( #NAME! ) == 5 */
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NAME?") , SC_OPCODE_ERROR_NAME },
/* ERROR.TYPE( #NUM! ) == 6 */
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#NUM!") , SC_OPCODE_ERROR_NUM },
/* ERROR.TYPE( #N/A ) == 7 */
/* L10n: preserve the leading '#' hash character in translations. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "#N/A") , SC_OPCODE_ERROR_NA },
/* END defined ERROR.TYPE() values. */
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FILTERXML") , SC_OPCODE_FILTERXML },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "COLOR") , SC_OPCODE_COLOR },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "WEBSERVICE") , SC_OPCODE_WEBSERVICE },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ERF.PRECISE") , SC_OPCODE_ERF_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ERFC.PRECISE") , SC_OPCODE_ERFC_MS },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ENCODEURL") , SC_OPCODE_ENCODEURL },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RAWSUBTRACT") , SC_OPCODE_RAWSUBTRACT },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDSIG") , SC_OPCODE_ROUNDSIG },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FINDB") , SC_OPCODE_FINDB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "SEARCHB") , SC_OPCODE_SEARCHB },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "REGEX") , SC_OPCODE_REGEX },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "FOURIER"), SC_OPCODE_FOURIER },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RAND.NV"), SC_OPCODE_RANDOM_NV },
{ NC_("RID_STRLIST_FUNCTION_NAMES", "RANDBETWEEN.NV"), SC_OPCODE_RANDBETWEEN_NV },
{ {}, -1 }
};
const std::pair<const char *, int> RID_STRLIST_FUNCTION_NAMES_SYMBOLS[] =
{
{ "(" , SC_OPCODE_OPEN },
{ ")" , SC_OPCODE_CLOSE },
{ "[" , SC_OPCODE_TABLE_REF_OPEN },
{ "]" , SC_OPCODE_TABLE_REF_CLOSE },
{ "{" , SC_OPCODE_ARRAY_OPEN },
{ "}" , SC_OPCODE_ARRAY_CLOSE },
{ "|" , SC_OPCODE_ARRAY_ROW_SEP },
{ ";" , SC_OPCODE_ARRAY_COL_SEP },
{ ";" , SC_OPCODE_SEP },
{ "%" , SC_OPCODE_PERCENT_SIGN },
{ "+" , SC_OPCODE_ADD },
{ "-" , SC_OPCODE_SUB },
{ "*" , SC_OPCODE_MUL },
{ "/" , SC_OPCODE_DIV },
{ "&" , SC_OPCODE_AMPERSAND },
{ "^" , SC_OPCODE_POW },
{ "=" , SC_OPCODE_EQUAL },
{ "<>" , SC_OPCODE_NOT_EQUAL },
{ "<" , SC_OPCODE_LESS },
{ ">" , SC_OPCODE_GREATER },
{ "<=" , SC_OPCODE_LESS_EQUAL },
{ ">=" , SC_OPCODE_GREATER_EQUAL },
{ "!" , SC_OPCODE_INTERSECT },
{ "~" , SC_OPCODE_UNION },
{ ":" , SC_OPCODE_RANGE },
{ "-" , SC_OPCODE_NEG_SUB },
{ nullptr, -1 }
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */