xref: /core/formula/inc/core_resource.hrc (revision 71665582)
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 *   Licensed to the Apache Software Foundation (ASF) under one or more
12 *   contributor license agreements. See the NOTICE file distributed
13 *   with this work for additional information regarding copyright
14 *   ownership. The ASF licenses this file to you under the Apache
15 *   License, Version 2.0 (the "License"); you may not use this file
16 *   except in compliance with the License. You may obtain a copy of
17 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#ifndef INCLUDED_FORMULA_INC_CORE_RESOURCE_HRC
21#define INCLUDED_FORMULA_INC_CORE_RESOURCE_HRC
22
23#include <formula/compiler.hxx>
24#include <utility>
25
26#define NC_(Context, String) reinterpret_cast<char const *>(Context "\004" u8##String)
27
28/** These English names are used to store/load ODFF as of ODF v1.2. */
29// NAMES CAN ONLY BE CHANGED WHEN PROVIDING BACKWARD AND FORWARD COMPATIBILITY
30// such that at least two releases can already read the new name to be
31// introduced by a later release.
32// If there is a reason for another name for some function then add an
33// *additional* name to be recognized to sc/source/core/tool/compiler.cxx
34// ScCompiler::IsOpCode() in the if (mxSymbols->isODFF()) block.
35const std::pair<const char*, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] =
36{
37    { "IF" , SC_OPCODE_IF },
38    { "IFERROR" , SC_OPCODE_IF_ERROR },
39    { "IFNA" , SC_OPCODE_IF_NA },
40    { "CHOOSE" , SC_OPCODE_CHOOSE },
41    { "(" , SC_OPCODE_OPEN },
42    { ")" , SC_OPCODE_CLOSE },
43    // SC_OPCODE_TABLE_REF_... not supported in ODFF
44    { "{" , SC_OPCODE_ARRAY_OPEN },
45    { "}" , SC_OPCODE_ARRAY_CLOSE },
46    { "|" , SC_OPCODE_ARRAY_ROW_SEP },
47    { ";" , SC_OPCODE_ARRAY_COL_SEP },
48    { ";" , SC_OPCODE_SEP },
49    { "%" , SC_OPCODE_PERCENT_SIGN },
50    { "+" , SC_OPCODE_ADD },
51    { "-" , SC_OPCODE_SUB },
52    { "*" , SC_OPCODE_MUL },
53    { "/" , SC_OPCODE_DIV },
54    { "&" , SC_OPCODE_AMPERSAND },
55    { "^" , SC_OPCODE_POW },
56    { "=" , SC_OPCODE_EQUAL },
57    { "<>" , SC_OPCODE_NOT_EQUAL },
58    { "<" , SC_OPCODE_LESS },
59    { ">" , SC_OPCODE_GREATER },
60    { "<=" , SC_OPCODE_LESS_EQUAL },
61    { ">=" , SC_OPCODE_GREATER_EQUAL },
62    { "AND" , SC_OPCODE_AND },
63    { "OR" , SC_OPCODE_OR },
64    { "XOR" , SC_OPCODE_XOR },
65    { "!" , SC_OPCODE_INTERSECT },
66    { "~" , SC_OPCODE_UNION },
67    { ":" , SC_OPCODE_RANGE },
68    { "NOT" , SC_OPCODE_NOT },
69    { "NEG" , SC_OPCODE_NEG },
70    { "-" , SC_OPCODE_NEG_SUB },
71    { "PI" , SC_OPCODE_PI },
72    { "RAND" , SC_OPCODE_RANDOM },
73    { "TRUE" , SC_OPCODE_TRUE },
74    { "FALSE" , SC_OPCODE_FALSE },
75    { "TODAY" , SC_OPCODE_GET_ACT_DATE },
76    { "NOW" , SC_OPCODE_GET_ACT_TIME },
77    { "NA" , SC_OPCODE_NO_VALUE },
78    { "ORG.OPENOFFICE.CURRENT" , SC_OPCODE_CURRENT },
79    { "DEGREES" , SC_OPCODE_DEG },
80    { "RADIANS" , SC_OPCODE_RAD },
81    { "SIN" , SC_OPCODE_SIN },
82    { "COS" , SC_OPCODE_COS },
83    { "TAN" , SC_OPCODE_TAN },
84    { "COT" , SC_OPCODE_COT },
85    { "ASIN" , SC_OPCODE_ARC_SIN },
86    { "ACOS" , SC_OPCODE_ARC_COS },
87    { "ATAN" , SC_OPCODE_ARC_TAN },
88    { "ACOT" , SC_OPCODE_ARC_COT },
89    { "SINH" , SC_OPCODE_SIN_HYP },
90    { "COSH" , SC_OPCODE_COS_HYP },
91    { "TANH" , SC_OPCODE_TAN_HYP },
92    { "COTH" , SC_OPCODE_COT_HYP },
93    { "ASINH" , SC_OPCODE_ARC_SIN_HYP },
94    { "ACOSH" , SC_OPCODE_ARC_COS_HYP },
95    { "ATANH" , SC_OPCODE_ARC_TAN_HYP },
96    { "ACOTH" , SC_OPCODE_ARC_COT_HYP },
97    { "CSC" , SC_OPCODE_COSECANT },
98    { "SEC" , SC_OPCODE_SECANT },
99    { "CSCH" , SC_OPCODE_COSECANT_HYP },
100    { "SECH" , SC_OPCODE_SECANT_HYP },
101    { "EXP" , SC_OPCODE_EXP },
102    { "LN" , SC_OPCODE_LN },
103    { "SQRT" , SC_OPCODE_SQRT },
104    { "FACT" , SC_OPCODE_FACT },
105    { "YEAR" , SC_OPCODE_GET_YEAR },
106    { "MONTH" , SC_OPCODE_GET_MONTH },
107    { "DAY" , SC_OPCODE_GET_DAY },
108    { "HOUR" , SC_OPCODE_GET_HOUR },
109    { "MINUTE" , SC_OPCODE_GET_MIN },
110    { "SECOND" , SC_OPCODE_GET_SEC },
111    { "SIGN" , SC_OPCODE_PLUS_MINUS },
112    { "ABS" , SC_OPCODE_ABS },
113    { "INT" , SC_OPCODE_INT },
114    { "PHI" , SC_OPCODE_PHI },
115    { "GAUSS" , SC_OPCODE_GAUSS },
116    { "ISBLANK" , SC_OPCODE_IS_EMPTY },
117    { "ISTEXT" , SC_OPCODE_IS_STRING },
118    { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
119    { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
120    { "TYPE" , SC_OPCODE_TYPE },
121    { "CELL" , SC_OPCODE_CELL },
122    { "ISREF" , SC_OPCODE_IS_REF },
123    { "ISNUMBER" , SC_OPCODE_IS_VALUE },
124    { "ISFORMULA" , SC_OPCODE_IS_FORMULA },
125    { "ISNA" , SC_OPCODE_IS_NV },
126    { "ISERR" , SC_OPCODE_IS_ERR },
127    { "ISERROR" , SC_OPCODE_IS_ERROR },
128    { "ISEVEN" , SC_OPCODE_IS_EVEN },
129    { "ISODD" , SC_OPCODE_IS_ODD },
130    { "N" , SC_OPCODE_N },
131    { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
132    { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
133    { "CODE" , SC_OPCODE_CODE },
134    { "TRIM" , SC_OPCODE_TRIM },
135    { "UPPER" , SC_OPCODE_UPPER },
136    { "PROPER" , SC_OPCODE_PROPER },
137    { "LOWER" , SC_OPCODE_LOWER },
138    { "LEN" , SC_OPCODE_LEN },
139    { "T" , SC_OPCODE_T },
140    { "VALUE" , SC_OPCODE_VALUE },
141    { "CLEAN" , SC_OPCODE_CLEAN },
142    { "CHAR" , SC_OPCODE_CHAR },
143    { "JIS" , SC_OPCODE_JIS },
144    { "ASC" , SC_OPCODE_ASC },
145    { "UNICODE" , SC_OPCODE_UNICODE },
146    { "UNICHAR" , SC_OPCODE_UNICHAR },
147    { "LOG10" , SC_OPCODE_LOG10 },
148    { "EVEN" , SC_OPCODE_EVEN },
149    { "ODD" , SC_OPCODE_ODD },
150    { "LEGACY.NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
151    { "COM.MICROSOFT.NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
152    { "FISHER" , SC_OPCODE_FISHER },
153    { "FISHERINV" , SC_OPCODE_FISHER_INV },
154    { "LEGACY.NORMSINV" , SC_OPCODE_S_NORM_INV },
155    { "COM.MICROSOFT.NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
156    { "GAMMALN" , SC_OPCODE_GAMMA_LN },
157    { "COM.MICROSOFT.GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
158    { "ORG.OPENOFFICE.ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
159    { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
160    { "FORMULA" , SC_OPCODE_FORMULA },
161    { "ATAN2" , SC_OPCODE_ARC_TAN_2 },
162    { "COM.MICROSOFT.CEILING.MATH" , SC_OPCODE_CEIL_MATH },
163    { "CEILING" , SC_OPCODE_CEIL },
164    { "COM.MICROSOFT.CEILING" , SC_OPCODE_CEIL_MS },
165    { "COM.MICROSOFT.CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
166    { "COM.MICROSOFT.ISO.CEILING" , SC_OPCODE_CEIL_ISO },
167    { "FLOOR" , SC_OPCODE_FLOOR },
168    { "COM.MICROSOFT.FLOOR" , SC_OPCODE_FLOOR_MS },
169    { "COM.MICROSOFT.FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
170    { "COM.MICROSOFT.FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
171    { "ROUND" , SC_OPCODE_ROUND },
172    { "ROUNDUP" , SC_OPCODE_ROUND_UP },
173    { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
174    { "TRUNC" , SC_OPCODE_TRUNC },
175    { "LOG" , SC_OPCODE_LOG },
176    { "POWER" , SC_OPCODE_POWER },
177    { "GCD" , SC_OPCODE_GCD },
178    { "LCM" , SC_OPCODE_LCM },
179    { "MOD" , SC_OPCODE_MOD },
180    { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
181    { "SUMSQ" , SC_OPCODE_SUM_SQ },
182    { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
183    { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
184    { "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
185    { "DATE" , SC_OPCODE_GET_DATE },
186    { "TIME" , SC_OPCODE_GET_TIME },
187    { "DAYS" , SC_OPCODE_GET_DIFF_DATE },
188    { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
189    { "DATEDIF" , SC_OPCODE_GET_DATEDIF },
190    { "MIN" , SC_OPCODE_MIN },
191    { "MINA" , SC_OPCODE_MIN_A },
192    { "MAX" , SC_OPCODE_MAX },
193    { "MAXA" , SC_OPCODE_MAX_A },
194    { "SUM" , SC_OPCODE_SUM },
195    { "PRODUCT" , SC_OPCODE_PRODUCT },
196    { "AVERAGE" , SC_OPCODE_AVERAGE },
197    { "AVERAGEA" , SC_OPCODE_AVERAGE_A },
198    { "COUNT" , SC_OPCODE_COUNT },
199    { "COUNTA" , SC_OPCODE_COUNT_2 },
200    { "NPV" , SC_OPCODE_NPV },
201    { "IRR" , SC_OPCODE_IRR },
202    { "MIRR" , SC_OPCODE_MIRR },
203    { "ISPMT" , SC_OPCODE_ISPMT },
204    { "VAR" , SC_OPCODE_VAR },
205    { "VARA" , SC_OPCODE_VAR_A },
206    { "VARP" , SC_OPCODE_VAR_P },
207    { "VARPA" , SC_OPCODE_VAR_P_A },
208    { "COM.MICROSOFT.VAR.P" , SC_OPCODE_VAR_P_MS },
209    { "COM.MICROSOFT.VAR.S" , SC_OPCODE_VAR_S },
210    { "STDEV" , SC_OPCODE_ST_DEV },
211    { "STDEVA" , SC_OPCODE_ST_DEV_A },
212    { "STDEVP" , SC_OPCODE_ST_DEV_P },
213    { "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
214    { "COM.MICROSOFT.STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
215    { "COM.MICROSOFT.STDEV.S" , SC_OPCODE_ST_DEV_S },
216    { "BINOM.DIST.RANGE" , SC_OPCODE_B },
217    { "NORMDIST" , SC_OPCODE_NORM_DIST },
218    { "COM.MICROSOFT.NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
219    { "EXPONDIST" , SC_OPCODE_EXP_DIST },
220    { "COM.MICROSOFT.EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
221    { "BINOMDIST" , SC_OPCODE_BINOM_DIST },
222    { "COM.MICROSOFT.BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
223    { "POISSON" , SC_OPCODE_POISSON_DIST },
224    { "COM.MICROSOFT.POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
225    { "COMBIN" , SC_OPCODE_COMBIN },
226    { "COMBINA" , SC_OPCODE_COMBIN_A },
227    { "PERMUT" , SC_OPCODE_PERMUT },
228    { "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
229    { "PV" , SC_OPCODE_PV },
230    { "SYD" , SC_OPCODE_SYD },
231    { "DDB" , SC_OPCODE_DDB },
232    { "DB" , SC_OPCODE_DB },
233    { "VDB" , SC_OPCODE_VBD },
234    { "PDURATION" , SC_OPCODE_PDURATION },
235    { "SLN" , SC_OPCODE_SLN },
236    { "PMT" , SC_OPCODE_PMT },
237    { "COLUMNS" , SC_OPCODE_COLUMNS },
238    { "ROWS" , SC_OPCODE_ROWS },
239    { "SHEETS" , SC_OPCODE_SHEETS },
240    { "COLUMN" , SC_OPCODE_COLUMN },
241    { "ROW" , SC_OPCODE_ROW },
242    { "SHEET" , SC_OPCODE_SHEET },
243    { "RRI" , SC_OPCODE_RRI },
244    { "FV" , SC_OPCODE_FV },
245    { "NPER" , SC_OPCODE_NPER },
246    { "RATE" , SC_OPCODE_RATE },
247    { "IPMT" , SC_OPCODE_IPMT },
248    { "PPMT" , SC_OPCODE_PPMT },
249    { "CUMIPMT" , SC_OPCODE_CUM_IPMT },
250    { "CUMPRINC" , SC_OPCODE_CUM_PRINC },
251    { "EFFECT" , SC_OPCODE_EFFECT },
252    { "NOMINAL" , SC_OPCODE_NOMINAL },
253    { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
254    { "DSUM" , SC_OPCODE_DB_SUM },
255    { "DCOUNT" , SC_OPCODE_DB_COUNT },
256    { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
257    { "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
258    { "DGET" , SC_OPCODE_DB_GET },
259    { "DMAX" , SC_OPCODE_DB_MAX },
260    { "DMIN" , SC_OPCODE_DB_MIN },
261    { "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
262    { "DSTDEV" , SC_OPCODE_DB_STD_DEV },
263    { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
264    { "DVAR" , SC_OPCODE_DB_VAR },
265    { "DVARP" , SC_OPCODE_DB_VAR_P },
266    { "INDIRECT" , SC_OPCODE_INDIRECT },
267    { "ADDRESS" , SC_OPCODE_ADDRESS },
268    { "MATCH" , SC_OPCODE_MATCH },
269    { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
270    { "COUNTIF" , SC_OPCODE_COUNT_IF },
271    { "SUMIF" , SC_OPCODE_SUM_IF },
272    { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
273    { "SUMIFS" , SC_OPCODE_SUM_IFS },
274    { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
275    { "COUNTIFS" , SC_OPCODE_COUNT_IFS },
276    { "LOOKUP" , SC_OPCODE_LOOKUP },
277    { "VLOOKUP" , SC_OPCODE_V_LOOKUP },
278    { "HLOOKUP" , SC_OPCODE_H_LOOKUP },
279    { "ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
280    { "OFFSET" , SC_OPCODE_OFFSET },
281    { "INDEX" , SC_OPCODE_INDEX },
282    { "AREAS" , SC_OPCODE_AREAS },
283    { "DOLLAR" , SC_OPCODE_CURRENCY },
284    { "REPLACE" , SC_OPCODE_REPLACE },
285    { "FIXED" , SC_OPCODE_FIXED },
286    { "FIND" , SC_OPCODE_FIND },
287    { "EXACT" , SC_OPCODE_EXACT },
288    { "LEFT" , SC_OPCODE_LEFT },
289    { "RIGHT" , SC_OPCODE_RIGHT },
290    { "SEARCH" , SC_OPCODE_SEARCH },
291    { "MID" , SC_OPCODE_MID },
292    { "LENB" , SC_OPCODE_LENB },
293    { "RIGHTB" , SC_OPCODE_RIGHTB },
294    { "LEFTB" , SC_OPCODE_LEFTB },
295    { "REPLACEB" , SC_OPCODE_REPLACEB },
296    { "FINDB" , SC_OPCODE_FINDB },
297    { "SEARCHB" , SC_OPCODE_SEARCHB },
298    { "MIDB" , SC_OPCODE_MIDB },
299    { "TEXT" , SC_OPCODE_TEXT },
300    { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
301    { "REPT" , SC_OPCODE_REPT },
302    { "CONCATENATE" , SC_OPCODE_CONCAT },
303    { "COM.MICROSOFT.CONCAT" , SC_OPCODE_CONCAT_MS },
304    { "COM.MICROSOFT.TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
305    { "COM.MICROSOFT.IFS" , SC_OPCODE_IFS_MS },
306    { "COM.MICROSOFT.SWITCH" , SC_OPCODE_SWITCH_MS },
307    { "COM.MICROSOFT.MINIFS" , SC_OPCODE_MINIFS_MS },
308    { "COM.MICROSOFT.MAXIFS" , SC_OPCODE_MAXIFS_MS },
309    { "MVALUE" , SC_OPCODE_MAT_VALUE },
310    { "MDETERM" , SC_OPCODE_MAT_DET },
311    { "MINVERSE" , SC_OPCODE_MAT_INV },
312    { "MMULT" , SC_OPCODE_MAT_MULT },
313    { "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
314    { "MUNIT" , SC_OPCODE_MATRIX_UNIT },
315    { "ORG.OPENOFFICE.GOALSEEK" , SC_OPCODE_BACK_SOLVER },
316    { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
317    { "COM.MICROSOFT.HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
318    { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
319    { "COM.MICROSOFT.LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
320    { "LEGACY.TDIST" , SC_OPCODE_T_DIST },
321    { "COM.MICROSOFT.T.DIST.2T" , SC_OPCODE_T_DIST_2T },
322    { "COM.MICROSOFT.T.DIST" , SC_OPCODE_T_DIST_MS },
323    { "COM.MICROSOFT.T.DIST.RT" , SC_OPCODE_T_DIST_RT },
324    { "LEGACY.FDIST" , SC_OPCODE_F_DIST },
325    { "FDIST" , SC_OPCODE_F_DIST_LT },
326    { "COM.MICROSOFT.F.DIST.RT" , SC_OPCODE_F_DIST_RT },
327    { "LEGACY.CHIDIST" , SC_OPCODE_CHI_DIST },
328    { "COM.MICROSOFT.CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
329    { "WEIBULL" , SC_OPCODE_WEIBULL },
330    { "COM.MICROSOFT.WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
331    { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
332    { "COM.MICROSOFT.NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
333    { "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
334    { "COM.MICROSOFT.BINOM.INV" , SC_OPCODE_BINOM_INV },
335    { "KURT" , SC_OPCODE_KURT },
336    { "HARMEAN" , SC_OPCODE_HAR_MEAN },
337    { "GEOMEAN" , SC_OPCODE_GEO_MEAN },
338    { "STANDARDIZE" , SC_OPCODE_STANDARD },
339    { "AVEDEV" , SC_OPCODE_AVE_DEV },
340    { "SKEW" , SC_OPCODE_SKEW },
341    { "SKEWP" , SC_OPCODE_SKEWP },
342    { "DEVSQ" , SC_OPCODE_DEV_SQ },
343    { "MEDIAN" , SC_OPCODE_MEDIAN },
344    { "MODE" , SC_OPCODE_MODAL_VALUE },
345    { "COM.MICROSOFT.MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
346    { "COM.MICROSOFT.MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
347    { "ZTEST" , SC_OPCODE_Z_TEST },
348    { "COM.MICROSOFT.Z.TEST" , SC_OPCODE_Z_TEST_MS },
349    { "COM.MICROSOFT.AGGREGATE" , SC_OPCODE_AGGREGATE },
350    { "TTEST" , SC_OPCODE_T_TEST },
351    { "COM.MICROSOFT.T.TEST" , SC_OPCODE_T_TEST_MS },
352    { "RANK" , SC_OPCODE_RANK },
353    { "PERCENTILE" , SC_OPCODE_PERCENTILE },
354    { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
355    { "COM.MICROSOFT.PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
356    { "COM.MICROSOFT.PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
357    { "COM.MICROSOFT.QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
358    { "COM.MICROSOFT.RANK.EQ" , SC_OPCODE_RANK_EQ },
359    { "COM.MICROSOFT.PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
360    { "COM.MICROSOFT.PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
361    { "COM.MICROSOFT.QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
362    { "COM.MICROSOFT.RANK.AVG" , SC_OPCODE_RANK_AVG },
363    { "LARGE" , SC_OPCODE_LARGE },
364    { "SMALL" , SC_OPCODE_SMALL },
365    { "FREQUENCY" , SC_OPCODE_FREQUENCY },
366    { "QUARTILE" , SC_OPCODE_QUARTILE },
367    { "NORMINV" , SC_OPCODE_NORM_INV },
368    { "COM.MICROSOFT.NORM.INV" , SC_OPCODE_NORM_INV_MS },
369    { "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
370    { "COM.MICROSOFT.CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
371    { "COM.MICROSOFT.CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
372    { "FTEST" , SC_OPCODE_F_TEST },
373    { "COM.MICROSOFT.F.TEST" , SC_OPCODE_F_TEST_MS },
374    { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
375    { "PROB" , SC_OPCODE_PROB },
376    { "CORREL" , SC_OPCODE_CORREL },
377    { "COVAR" , SC_OPCODE_COVAR },
378    { "COM.MICROSOFT.COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
379    { "COM.MICROSOFT.COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
380    { "PEARSON" , SC_OPCODE_PEARSON },
381    { "RSQ" , SC_OPCODE_RSQ },
382    { "STEYX" , SC_OPCODE_STEYX },
383    { "SLOPE" , SC_OPCODE_SLOPE },
384    { "INTERCEPT" , SC_OPCODE_INTERCEPT },
385    { "TREND" , SC_OPCODE_TREND },
386    { "GROWTH" , SC_OPCODE_GROWTH },
387    { "LINEST" , SC_OPCODE_LINEST },
388    { "LOGEST" , SC_OPCODE_LOGEST },
389    { "FORECAST" , SC_OPCODE_FORECAST },
390    { "COM.MICROSOFT.FORECAST.ETS" , SC_OPCODE_FORECAST_ETS_ADD },
391    { "COM.MICROSOFT.FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
392    { "ORG.LIBREOFFICE.FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
393    { "COM.MICROSOFT.FORECAST.ETS.CONFINT" , SC_OPCODE_FORECAST_ETS_PIA },
394    { "ORG.LIBREOFFICE.FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
395    { "COM.MICROSOFT.FORECAST.ETS.STAT" , SC_OPCODE_FORECAST_ETS_STA },
396    { "ORG.LIBREOFFICE.FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
397    { "COM.MICROSOFT.FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
398    { "LEGACY.CHIINV" , SC_OPCODE_CHI_INV },
399    { "COM.MICROSOFT.CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
400    { "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
401    { "COM.MICROSOFT.GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
402    { "GAMMAINV" , SC_OPCODE_GAMMA_INV },
403    { "COM.MICROSOFT.GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
404    { "TINV" , SC_OPCODE_T_INV },
405    { "COM.MICROSOFT.T.INV.2T" , SC_OPCODE_T_INV_2T },
406    { "COM.MICROSOFT.T.INV" , SC_OPCODE_T_INV_MS },
407    { "LEGACY.FINV" , SC_OPCODE_F_INV },
408    { "FINV" , SC_OPCODE_F_INV_LT },
409    { "COM.MICROSOFT.F.INV.RT" , SC_OPCODE_F_INV_RT },
410    { "LEGACY.CHITEST" , SC_OPCODE_CHI_TEST },
411    { "COM.MICROSOFT.CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
412    { "LOGINV" , SC_OPCODE_LOG_INV },
413    { "COM.MICROSOFT.LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
414    { "MULTIPLE.OPERATIONS" , SC_OPCODE_TABLE_OP },
415    { "BETADIST" , SC_OPCODE_BETA_DIST },
416    { "BETAINV" , SC_OPCODE_BETA_INV },
417    { "COM.MICROSOFT.BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
418    { "COM.MICROSOFT.BETA.INV" , SC_OPCODE_BETA_INV_MS },
419    { "WEEKNUM" , SC_OPCODE_WEEK },
420    { "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
421    { "ORG.LIBREOFFICE.WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
422    { "ORG.OPENOFFICE.EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
423    { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
424    { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
425    { "COM.MICROSOFT.NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
426    { "COM.MICROSOFT.WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
427    { "#NAME!" , SC_OPCODE_NO_NAME },
428    { "ORG.OPENOFFICE.STYLE" , SC_OPCODE_STYLE },
429    { "DDE" , SC_OPCODE_DDE },
430    { "BASE" , SC_OPCODE_BASE },
431    { "DECIMAL" , SC_OPCODE_DECIMAL },
432    { "ORG.OPENOFFICE.CONVERT" , SC_OPCODE_CONVERT_OOO },
433    { "ROMAN" , SC_OPCODE_ROMAN },
434    { "ARABIC" , SC_OPCODE_ARABIC },
435    { "HYPERLINK" , SC_OPCODE_HYPERLINK },
436    { "INFO" , SC_OPCODE_INFO },
437    { "COM.MICROSOFT.BAHTTEXT" , SC_OPCODE_BAHTTEXT },
438    { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
439    { "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
440    { "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
441    { "GAMMA" , SC_OPCODE_GAMMA },
442    { "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
443    { "COM.MICROSOFT.CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
444    { "CHISQINV" , SC_OPCODE_CHISQ_INV },
445    { "COM.MICROSOFT.CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
446    { "BITAND" , SC_OPCODE_BITAND },
447    { "BITOR" , SC_OPCODE_BITOR },
448    { "BITXOR" , SC_OPCODE_BITXOR },
449    { "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
450    { "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
451    /* BEGIN defined ERROR.TYPE() values. */
452    { "#NULL!" , SC_OPCODE_ERROR_NULL },
453    { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
454    { "#VALUE!" , SC_OPCODE_ERROR_VALUE },
455    { "#REF!" , SC_OPCODE_ERROR_REF },
456    { "#NAME?" , SC_OPCODE_ERROR_NAME },
457    { "#NUM!" , SC_OPCODE_ERROR_NUM },
458    { "#N/A" , SC_OPCODE_ERROR_NA },
459    /* END defined ERROR.TYPE() values. */
460    { "COM.MICROSOFT.FILTERXML" , SC_OPCODE_FILTERXML },
461    { "COM.MICROSOFT.WEBSERVICE" , SC_OPCODE_WEBSERVICE },
462    { "ORG.LIBREOFFICE.COLOR" , SC_OPCODE_COLOR },
463    { "COM.MICROSOFT.ERF.PRECISE" , SC_OPCODE_ERF_MS },
464    { "COM.MICROSOFT.ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
465    { "COM.MICROSOFT.ENCODEURL" , SC_OPCODE_ENCODEURL },
466    { "ORG.LIBREOFFICE.RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
467    { "ORG.LIBREOFFICE.ROUNDSIG" , SC_OPCODE_ROUNDSIG },
468    { "ORG.LIBREOFFICE.REGEX" , SC_OPCODE_REGEX },
469    { "ORG.LIBREOFFICE.FOURIER", SC_OPCODE_FOURIER },
470    { "ORG.LIBREOFFICE.RAND.NV" , SC_OPCODE_RANDOM_NV },
471    { "ORG.LIBREOFFICE.RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
472    { nullptr,  -1 }
473};
474
475/** These function names are used in the OOXML XLSX import/export. */
476const std::pair<const char*, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] =
477{
478    { "IF" , SC_OPCODE_IF },
479    { "IFERROR" , SC_OPCODE_IF_ERROR },
480    { "_xlfn.IFNA" , SC_OPCODE_IF_NA },
481    { "CHOOSE" , SC_OPCODE_CHOOSE },
482    { "(" , SC_OPCODE_OPEN },
483    { ")" , SC_OPCODE_CLOSE },
484    { "[" , SC_OPCODE_TABLE_REF_OPEN },
485    { "]" , SC_OPCODE_TABLE_REF_CLOSE },
486    { "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
487    { "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
488    { "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
489    { "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
490    { "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
491    { "{" , SC_OPCODE_ARRAY_OPEN },
492    { "}" , SC_OPCODE_ARRAY_CLOSE },
493    { ";" , SC_OPCODE_ARRAY_ROW_SEP },
494    { "," , SC_OPCODE_ARRAY_COL_SEP },
495    { "," , SC_OPCODE_SEP },
496    { "%" , SC_OPCODE_PERCENT_SIGN },
497    { "+" , SC_OPCODE_ADD },
498    { "-" , SC_OPCODE_SUB },
499    { "*" , SC_OPCODE_MUL },
500    { "/" , SC_OPCODE_DIV },
501    { "&" , SC_OPCODE_AMPERSAND },
502    { "^" , SC_OPCODE_POW },
503    { "=" , SC_OPCODE_EQUAL },
504    { "<>" , SC_OPCODE_NOT_EQUAL },
505    { "<" , SC_OPCODE_LESS },
506    { ">" , SC_OPCODE_GREATER },
507    { "<=" , SC_OPCODE_LESS_EQUAL },
508    { ">=" , SC_OPCODE_GREATER_EQUAL },
509    { "AND" , SC_OPCODE_AND },
510    { "OR" , SC_OPCODE_OR },
511    { "_xlfn.XOR" , SC_OPCODE_XOR },
512    { " " , SC_OPCODE_INTERSECT },
513    { "~" , SC_OPCODE_UNION },
514    { ":" , SC_OPCODE_RANGE },
515    { "NOT" , SC_OPCODE_NOT },
516    { "NEG" , SC_OPCODE_NEG },
517    { "-" , SC_OPCODE_NEG_SUB },
518    { "PI" , SC_OPCODE_PI },
519    { "RAND" , SC_OPCODE_RANDOM },
520    { "TRUE" , SC_OPCODE_TRUE },
521    { "FALSE" , SC_OPCODE_FALSE },
522    { "TODAY" , SC_OPCODE_GET_ACT_DATE },
523    { "NOW" , SC_OPCODE_GET_ACT_TIME },
524    { "NA" , SC_OPCODE_NO_VALUE },
525    { "_xlfn.ORG.OPENOFFICE.CURRENT" , SC_OPCODE_CURRENT },
526    { "DEGREES" , SC_OPCODE_DEG },
527    { "RADIANS" , SC_OPCODE_RAD },
528    { "SIN" , SC_OPCODE_SIN },
529    { "COS" , SC_OPCODE_COS },
530    { "TAN" , SC_OPCODE_TAN },
531    { "_xlfn.COT" , SC_OPCODE_COT },
532    { "ASIN" , SC_OPCODE_ARC_SIN },
533    { "ACOS" , SC_OPCODE_ARC_COS },
534    { "ATAN" , SC_OPCODE_ARC_TAN },
535    { "_xlfn.ACOT" , SC_OPCODE_ARC_COT },
536    { "SINH" , SC_OPCODE_SIN_HYP },
537    { "COSH" , SC_OPCODE_COS_HYP },
538    { "TANH" , SC_OPCODE_TAN_HYP },
539    { "_xlfn.COTH" , SC_OPCODE_COT_HYP },
540    { "ASINH" , SC_OPCODE_ARC_SIN_HYP },
541    { "ACOSH" , SC_OPCODE_ARC_COS_HYP },
542    { "ATANH" , SC_OPCODE_ARC_TAN_HYP },
543    { "_xlfn.ACOTH" , SC_OPCODE_ARC_COT_HYP },
544    { "_xlfn.CSC" , SC_OPCODE_COSECANT },
545    { "_xlfn.SEC" , SC_OPCODE_SECANT },
546    { "_xlfn.CSCH" , SC_OPCODE_COSECANT_HYP },
547    { "_xlfn.SECH" , SC_OPCODE_SECANT_HYP },
548    { "EXP" , SC_OPCODE_EXP },
549    { "LN" , SC_OPCODE_LN },
550    { "SQRT" , SC_OPCODE_SQRT },
551    { "FACT" , SC_OPCODE_FACT },
552    { "YEAR" , SC_OPCODE_GET_YEAR },
553    { "MONTH" , SC_OPCODE_GET_MONTH },
554    { "DAY" , SC_OPCODE_GET_DAY },
555    { "HOUR" , SC_OPCODE_GET_HOUR },
556    { "MINUTE" , SC_OPCODE_GET_MIN },
557    { "SECOND" , SC_OPCODE_GET_SEC },
558    { "SIGN" , SC_OPCODE_PLUS_MINUS },
559    { "ABS" , SC_OPCODE_ABS },
560    { "INT" , SC_OPCODE_INT },
561    { "_xlfn.PHI" , SC_OPCODE_PHI },
562    { "_xlfn.GAUSS" , SC_OPCODE_GAUSS },
563    { "ISBLANK" , SC_OPCODE_IS_EMPTY },
564    { "ISTEXT" , SC_OPCODE_IS_STRING },
565    { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
566    { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
567    { "TYPE" , SC_OPCODE_TYPE },
568    { "CELL" , SC_OPCODE_CELL },
569    { "ISREF" , SC_OPCODE_IS_REF },
570    { "ISNUMBER" , SC_OPCODE_IS_VALUE },
571    { "_xlfn.ISFORMULA" , SC_OPCODE_IS_FORMULA },
572    { "ISNA" , SC_OPCODE_IS_NV },
573    { "ISERR" , SC_OPCODE_IS_ERR },
574    { "ISERROR" , SC_OPCODE_IS_ERROR },
575    { "ISEVEN" , SC_OPCODE_IS_EVEN },
576    { "ISODD" , SC_OPCODE_IS_ODD },
577    { "N" , SC_OPCODE_N },
578    { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
579    { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
580    { "CODE" , SC_OPCODE_CODE },
581    { "TRIM" , SC_OPCODE_TRIM },
582    { "UPPER" , SC_OPCODE_UPPER },
583    { "PROPER" , SC_OPCODE_PROPER },
584    { "LOWER" , SC_OPCODE_LOWER },
585    { "LEN" , SC_OPCODE_LEN },
586    { "T" , SC_OPCODE_T },
587    { "VALUE" , SC_OPCODE_VALUE },
588    { "CLEAN" , SC_OPCODE_CLEAN },
589    { "CHAR" , SC_OPCODE_CHAR },
590    { "JIS" , SC_OPCODE_JIS },
591    { "ASC" , SC_OPCODE_ASC },
592    { "_xlfn.UNICODE" , SC_OPCODE_UNICODE },
593    { "_xlfn.UNICHAR" , SC_OPCODE_UNICHAR },
594    { "LOG10" , SC_OPCODE_LOG10 },
595    { "EVEN" , SC_OPCODE_EVEN },
596    { "ODD" , SC_OPCODE_ODD },
597    { "NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
598    { "_xlfn.NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
599    { "FISHER" , SC_OPCODE_FISHER },
600    { "FISHERINV" , SC_OPCODE_FISHER_INV },
601    { "NORMSINV" , SC_OPCODE_S_NORM_INV },
602    { "_xlfn.NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
603    { "GAMMALN" , SC_OPCODE_GAMMA_LN },
604    { "_xlfn.GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
605    { "_xlfn.ORG.OPENOFFICE.ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
606    { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
607    { "_xlfn.FORMULATEXT" , SC_OPCODE_FORMULA },
608    { "ATAN2" , SC_OPCODE_ARC_TAN_2 },
609    { "_xlfn.CEILING.MATH" , SC_OPCODE_CEIL_MATH },
610    { "_xlfn.CEILING.MATH" , SC_OPCODE_CEIL },
611    { "CEILING" , SC_OPCODE_CEIL_MS },
612    { "_xlfn.CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
613    { "ISO.CEILING" , SC_OPCODE_CEIL_ISO },
614    { "FLOOR" , SC_OPCODE_FLOOR_MS },
615    { "_xlfn.FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
616    { "_xlfn.FLOOR.MATH" , SC_OPCODE_FLOOR },
617    { "_xlfn.FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
618    { "ROUND" , SC_OPCODE_ROUND },
619    { "ROUNDUP" , SC_OPCODE_ROUND_UP },
620    { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
621    { "TRUNC" , SC_OPCODE_TRUNC },
622    { "LOG" , SC_OPCODE_LOG },
623    { "POWER" , SC_OPCODE_POWER },
624    { "GCD" , SC_OPCODE_GCD },
625    { "LCM" , SC_OPCODE_LCM },
626    { "MOD" , SC_OPCODE_MOD },
627    { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
628    { "SUMSQ" , SC_OPCODE_SUM_SQ },
629    { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
630    { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
631    { "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
632    { "DATE" , SC_OPCODE_GET_DATE },
633    { "TIME" , SC_OPCODE_GET_TIME },
634    { "_xlfn.DAYS" , SC_OPCODE_GET_DIFF_DATE },
635    { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
636    { "DATEDIF" , SC_OPCODE_GET_DATEDIF },
637    { "MIN" , SC_OPCODE_MIN },
638    { "MINA" , SC_OPCODE_MIN_A },
639    { "MAX" , SC_OPCODE_MAX },
640    { "MAXA" , SC_OPCODE_MAX_A },
641    { "SUM" , SC_OPCODE_SUM },
642    { "PRODUCT" , SC_OPCODE_PRODUCT },
643    { "AVERAGE" , SC_OPCODE_AVERAGE },
644    { "AVERAGEA" , SC_OPCODE_AVERAGE_A },
645    { "COUNT" , SC_OPCODE_COUNT },
646    { "COUNTA" , SC_OPCODE_COUNT_2 },
647    { "NPV" , SC_OPCODE_NPV },
648    { "IRR" , SC_OPCODE_IRR },
649    { "MIRR" , SC_OPCODE_MIRR },
650    { "ISPMT" , SC_OPCODE_ISPMT },
651    { "VAR" , SC_OPCODE_VAR },
652    { "VARA" , SC_OPCODE_VAR_A },
653    { "VARP" , SC_OPCODE_VAR_P },
654    { "VARPA" , SC_OPCODE_VAR_P_A },
655    { "_xlfn.VAR.P" , SC_OPCODE_VAR_P_MS },
656    { "_xlfn.VAR.S" , SC_OPCODE_VAR_S },
657    { "STDEV" , SC_OPCODE_ST_DEV },
658    { "STDEVA" , SC_OPCODE_ST_DEV_A },
659    { "STDEVP" , SC_OPCODE_ST_DEV_P },
660    { "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
661    { "_xlfn.STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
662    { "_xlfn.STDEV.S" , SC_OPCODE_ST_DEV_S },
663    { "B" , SC_OPCODE_B },
664    { "NORMDIST" , SC_OPCODE_NORM_DIST },
665    { "_xlfn.NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
666    { "EXPONDIST" , SC_OPCODE_EXP_DIST },
667    { "_xlfn.EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
668    { "BINOMDIST" , SC_OPCODE_BINOM_DIST },
669    { "_xlfn.BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
670    { "POISSON" , SC_OPCODE_POISSON_DIST },
671    { "_xlfn.POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
672    { "COMBIN" , SC_OPCODE_COMBIN },
673    { "_xlfn.COMBINA" , SC_OPCODE_COMBIN_A },
674    { "PERMUT" , SC_OPCODE_PERMUT },
675    { "_xlfn.PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
676    { "PV" , SC_OPCODE_PV },
677    { "SYD" , SC_OPCODE_SYD },
678    { "DDB" , SC_OPCODE_DDB },
679    { "DB" , SC_OPCODE_DB },
680    { "VDB" , SC_OPCODE_VBD },
681    { "_xlfn.PDURATION" , SC_OPCODE_PDURATION },
682    { "SLN" , SC_OPCODE_SLN },
683    { "PMT" , SC_OPCODE_PMT },
684    { "COLUMNS" , SC_OPCODE_COLUMNS },
685    { "ROWS" , SC_OPCODE_ROWS },
686    { "_xlfn.SHEETS" , SC_OPCODE_SHEETS },
687    { "COLUMN" , SC_OPCODE_COLUMN },
688    { "ROW" , SC_OPCODE_ROW },
689    { "_xlfn.SHEET" , SC_OPCODE_SHEET },
690    { "_xlfn.RRI" , SC_OPCODE_RRI },
691    { "FV" , SC_OPCODE_FV },
692    { "NPER" , SC_OPCODE_NPER },
693    { "RATE" , SC_OPCODE_RATE },
694    { "IPMT" , SC_OPCODE_IPMT },
695    { "PPMT" , SC_OPCODE_PPMT },
696    { "CUMIPMT" , SC_OPCODE_CUM_IPMT },
697    { "CUMPRINC" , SC_OPCODE_CUM_PRINC },
698    { "EFFECT" , SC_OPCODE_EFFECT },
699    { "NOMINAL" , SC_OPCODE_NOMINAL },
700    { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
701    { "DSUM" , SC_OPCODE_DB_SUM },
702    { "DCOUNT" , SC_OPCODE_DB_COUNT },
703    { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
704    { "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
705    { "DGET" , SC_OPCODE_DB_GET },
706    { "DMAX" , SC_OPCODE_DB_MAX },
707    { "DMIN" , SC_OPCODE_DB_MIN },
708    { "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
709    { "DSTDEV" , SC_OPCODE_DB_STD_DEV },
710    { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
711    { "DVAR" , SC_OPCODE_DB_VAR },
712    { "DVARP" , SC_OPCODE_DB_VAR_P },
713    { "INDIRECT" , SC_OPCODE_INDIRECT },
714    { "ADDRESS" , SC_OPCODE_ADDRESS },
715    { "MATCH" , SC_OPCODE_MATCH },
716    { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
717    { "COUNTIF" , SC_OPCODE_COUNT_IF },
718    { "SUMIF" , SC_OPCODE_SUM_IF },
719    { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
720    { "SUMIFS" , SC_OPCODE_SUM_IFS },
721    { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
722    { "COUNTIFS" , SC_OPCODE_COUNT_IFS },
723    { "LOOKUP" , SC_OPCODE_LOOKUP },
724    { "VLOOKUP" , SC_OPCODE_V_LOOKUP },
725    { "HLOOKUP" , SC_OPCODE_H_LOOKUP },
726    { "_xlfn.ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
727    { "OFFSET" , SC_OPCODE_OFFSET },
728    { "INDEX" , SC_OPCODE_INDEX },
729    { "AREAS" , SC_OPCODE_AREAS },
730    { "DOLLAR" , SC_OPCODE_CURRENCY },
731    { "REPLACE" , SC_OPCODE_REPLACE },
732    { "FIXED" , SC_OPCODE_FIXED },
733    { "FIND" , SC_OPCODE_FIND },
734    { "EXACT" , SC_OPCODE_EXACT },
735    { "LEFT" , SC_OPCODE_LEFT },
736    { "RIGHT" , SC_OPCODE_RIGHT },
737    { "SEARCH" , SC_OPCODE_SEARCH },
738    { "MID" , SC_OPCODE_MID },
739    { "LENB" , SC_OPCODE_LENB },
740    { "RIGHTB" , SC_OPCODE_RIGHTB },
741    { "LEFTB" , SC_OPCODE_LEFTB },
742    { "REPLACEB" , SC_OPCODE_REPLACEB },
743    { "FINDB" , SC_OPCODE_FINDB },
744    { "SEARCHB" , SC_OPCODE_SEARCHB },
745    { "MIDB" , SC_OPCODE_MIDB },
746    { "TEXT" , SC_OPCODE_TEXT },
747    { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
748    { "REPT" , SC_OPCODE_REPT },
749    { "CONCATENATE" , SC_OPCODE_CONCAT },
750    { "_xlfn.CONCAT" , SC_OPCODE_CONCAT_MS },
751    { "_xlfn.TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
752    { "_xlfn.IFS" , SC_OPCODE_IFS_MS },
753    { "_xlfn.SWITCH" , SC_OPCODE_SWITCH_MS },
754    { "_xlfn.MINIFS" , SC_OPCODE_MINIFS_MS },
755    { "_xlfn.MAXIFS" , SC_OPCODE_MAXIFS_MS },
756    { "MVALUE" , SC_OPCODE_MAT_VALUE },
757    { "MDETERM" , SC_OPCODE_MAT_DET },
758    { "MINVERSE" , SC_OPCODE_MAT_INV },
759    { "MMULT" , SC_OPCODE_MAT_MULT },
760    { "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
761    { "_xlfn.MUNIT" , SC_OPCODE_MATRIX_UNIT },
762    { "_xlfn.ORG.OPENOFFICE.GOALSEEK" , SC_OPCODE_BACK_SOLVER },
763    { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
764    { "_xlfn.HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
765    { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
766    { "_xlfn.LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
767    { "TDIST" , SC_OPCODE_T_DIST },
768    { "_xlfn.T.DIST.2T" , SC_OPCODE_T_DIST_2T },
769    { "_xlfn.T.DIST" , SC_OPCODE_T_DIST_MS },
770    { "_xlfn.T.DIST.RT" , SC_OPCODE_T_DIST_RT },
771    { "FDIST" , SC_OPCODE_F_DIST },
772    { "_xlfn.F.DIST" , SC_OPCODE_F_DIST_LT },
773    { "_xlfn.F.DIST.RT" , SC_OPCODE_F_DIST_RT },
774    { "CHIDIST" , SC_OPCODE_CHI_DIST },
775    { "_xlfn.CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
776    { "WEIBULL" , SC_OPCODE_WEIBULL },
777    { "_xlfn.WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
778    { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
779    { "_xlfn.NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
780    { "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
781    { "_xlfn.BINOM.INV" , SC_OPCODE_BINOM_INV },
782    { "KURT" , SC_OPCODE_KURT },
783    { "HARMEAN" , SC_OPCODE_HAR_MEAN },
784    { "GEOMEAN" , SC_OPCODE_GEO_MEAN },
785    { "STANDARDIZE" , SC_OPCODE_STANDARD },
786    { "AVEDEV" , SC_OPCODE_AVE_DEV },
787    { "SKEW" , SC_OPCODE_SKEW },
788    { "_xlfn.SKEW.P" , SC_OPCODE_SKEWP },
789    { "DEVSQ" , SC_OPCODE_DEV_SQ },
790    { "MEDIAN" , SC_OPCODE_MEDIAN },
791    { "MODE" , SC_OPCODE_MODAL_VALUE },
792    { "_xlfn.MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
793    { "_xlfn.MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
794    { "ZTEST" , SC_OPCODE_Z_TEST },
795    { "_xlfn.Z.TEST" , SC_OPCODE_Z_TEST_MS },
796    { "_xlfn.AGGREGATE" , SC_OPCODE_AGGREGATE },
797    { "TTEST" , SC_OPCODE_T_TEST },
798    { "_xlfn.T.TEST" , SC_OPCODE_T_TEST_MS },
799    { "RANK" , SC_OPCODE_RANK },
800    { "PERCENTILE" , SC_OPCODE_PERCENTILE },
801    { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
802    { "_xlfn.PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
803    { "_xlfn.PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
804    { "_xlfn.QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
805    { "_xlfn.RANK.EQ" , SC_OPCODE_RANK_EQ },
806    { "_xlfn.PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
807    { "_xlfn.PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
808    { "_xlfn.QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
809    { "_xlfn.RANK.AVG" , SC_OPCODE_RANK_AVG },
810    { "LARGE" , SC_OPCODE_LARGE },
811    { "SMALL" , SC_OPCODE_SMALL },
812    { "FREQUENCY" , SC_OPCODE_FREQUENCY },
813    { "QUARTILE" , SC_OPCODE_QUARTILE },
814    { "NORMINV" , SC_OPCODE_NORM_INV },
815    { "_xlfn.NORM.INV" , SC_OPCODE_NORM_INV_MS },
816    { "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
817    { "_xlfn.CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
818    { "_xlfn.CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
819    { "FTEST" , SC_OPCODE_F_TEST },
820    { "_xlfn.F.TEST" , SC_OPCODE_F_TEST_MS },
821    { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
822    { "PROB" , SC_OPCODE_PROB },
823    { "CORREL" , SC_OPCODE_CORREL },
824    { "COVAR" , SC_OPCODE_COVAR },
825    { "_xlfn.COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
826    { "_xlfn.COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
827    { "PEARSON" , SC_OPCODE_PEARSON },
828    { "RSQ" , SC_OPCODE_RSQ },
829    { "STEYX" , SC_OPCODE_STEYX },
830    { "SLOPE" , SC_OPCODE_SLOPE },
831    { "INTERCEPT" , SC_OPCODE_INTERCEPT },
832    { "TREND" , SC_OPCODE_TREND },
833    { "GROWTH" , SC_OPCODE_GROWTH },
834    { "LINEST" , SC_OPCODE_LINEST },
835    { "LOGEST" , SC_OPCODE_LOGEST },
836    { "FORECAST" , SC_OPCODE_FORECAST },
837    { "_xlfn.FORECAST.ETS" , SC_OPCODE_FORECAST_ETS_ADD },
838    { "_xlfn.FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
839    { "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
840    { "_xlfn.FORECAST.ETS.CONFINT" , SC_OPCODE_FORECAST_ETS_PIA },
841    { "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
842    { "_xlfn.FORECAST.ETS.STAT" , SC_OPCODE_FORECAST_ETS_STA },
843    { "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
844    { "_xlfn.FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
845    { "CHIINV" , SC_OPCODE_CHI_INV },
846    { "_xlfn.CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
847    { "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
848    { "_xlfn.GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
849    { "GAMMAINV" , SC_OPCODE_GAMMA_INV },
850    { "_xlfn.GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
851    { "TINV" , SC_OPCODE_T_INV },
852    { "_xlfn.T.INV.2T" , SC_OPCODE_T_INV_2T },
853    { "_xlfn.T.INV" , SC_OPCODE_T_INV_MS },
854    { "FINV" , SC_OPCODE_F_INV },
855    { "_xlfn.F.INV" , SC_OPCODE_F_INV_LT },
856    { "_xlfn.F.INV.RT" , SC_OPCODE_F_INV_RT },
857    { "CHITEST" , SC_OPCODE_CHI_TEST },
858    { "_xlfn.CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
859    { "LOGINV" , SC_OPCODE_LOG_INV },
860    { "_xlfn.LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
861    { "TABLE" , SC_OPCODE_TABLE_OP },
862    { "BETADIST" , SC_OPCODE_BETA_DIST },
863    { "BETAINV" , SC_OPCODE_BETA_INV },
864    { "_xlfn.BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
865    { "_xlfn.BETA.INV" , SC_OPCODE_BETA_INV_MS },
866    { "WEEKNUM" , SC_OPCODE_WEEK },
867    { "_xlfn.ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
868    { "_xlfn.ORG.LIBREOFFICE.WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
869    { "_xlfn.ORG.OPENOFFICE.EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
870    { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
871    { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
872    { "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
873    { "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
874    { "#NAME!" , SC_OPCODE_NO_NAME },
875    { "_xlfn.ORG.OPENOFFICE.STYLE" , SC_OPCODE_STYLE },
876    { "DDE" , SC_OPCODE_DDE },
877    { "_xlfn.BASE" , SC_OPCODE_BASE },
878    { "_xlfn.DECIMAL" , SC_OPCODE_DECIMAL },
879    { "_xlfn.ORG.OPENOFFICE.CONVERT" , SC_OPCODE_CONVERT_OOO },
880    { "ROMAN" , SC_OPCODE_ROMAN },
881    { "_xlfn.ARABIC" , SC_OPCODE_ARABIC },
882    { "HYPERLINK" , SC_OPCODE_HYPERLINK },
883    { "INFO" , SC_OPCODE_INFO },
884    { "_xlfn.BAHTTEXT" , SC_OPCODE_BAHTTEXT },
885    { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
886    { "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
887    { "_xlfn.NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
888    { "_xlfn.GAMMA" , SC_OPCODE_GAMMA },
889    { "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
890    { "_xlfn.CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
891    { "CHISQINV" , SC_OPCODE_CHISQ_INV },
892    { "_xlfn.CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
893    { "_xlfn.BITAND" , SC_OPCODE_BITAND },
894    { "_xlfn.BITOR" , SC_OPCODE_BITOR },
895    { "_xlfn.BITXOR" , SC_OPCODE_BITXOR },
896    { "_xlfn.BITRSHIFT" , SC_OPCODE_BITRSHIFT },
897    { "_xlfn.BITLSHIFT" , SC_OPCODE_BITLSHIFT },
898    { "#NULL!" , SC_OPCODE_ERROR_NULL },
899    { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
900    { "#VALUE!" , SC_OPCODE_ERROR_VALUE },
901    { "#REF!" , SC_OPCODE_ERROR_REF },
902    { "#NAME?" , SC_OPCODE_ERROR_NAME },
903    { "#NUM!" , SC_OPCODE_ERROR_NUM },
904    { "#N/A" , SC_OPCODE_ERROR_NA },
905    /* END defined ERROR.TYPE() values. */
906    { "_xlfn.FILTERXML" , SC_OPCODE_FILTERXML },
907    { "_xlfn.WEBSERVICE" , SC_OPCODE_WEBSERVICE },
908    { "_xlfn.ORG.LIBREOFFICE.COLOR" , SC_OPCODE_COLOR },
909    { "_xlfn.ERF.PRECISE" , SC_OPCODE_ERF_MS },
910    { "_xlfn.ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
911    { "_xlfn.ENCODEURL" , SC_OPCODE_ENCODEURL },
912    { "_xlfn.ORG.LIBREOFFICE.RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
913    { "_xlfn.ORG.LIBREOFFICE.ROUNDSIG" , SC_OPCODE_ROUNDSIG },
914    { "_xlfn.ORG.LIBREOFFICE.REGEX" , SC_OPCODE_REGEX },
915    { "_xlfn.ORG.LIBREOFFICE.FOURIER", SC_OPCODE_FOURIER },
916    { "_xlfn.ORG.LIBREOFFICE.RAND.NV" , SC_OPCODE_RANDOM_NV },
917    { "_xlfn.ORG.LIBREOFFICE.RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
918    { nullptr,  -1 }
919};
920
921/** These English names are used to store/load ODF v1.0/v1.1. */
922// DO NOT CHANGE NAMES! Only add functions.
923// If there is a reason for another name for some function then add an
924// *additional* name to be recognized to sc/source/core/tool/compiler.cxx
925// ScCompiler::IsOpCode() in the else if (mxSymbols->isPODF()) block.
926const std::pair<const char*, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] =
927{
928    { "IF" , SC_OPCODE_IF },
929    { "IFERROR" , SC_OPCODE_IF_ERROR },
930    { "IFNA" , SC_OPCODE_IF_NA },
931    { "CHOOSE" , SC_OPCODE_CHOOSE },
932    { "(" , SC_OPCODE_OPEN },
933    { ")" , SC_OPCODE_CLOSE },
934    { "[" , SC_OPCODE_TABLE_REF_OPEN },
935    { "]" , SC_OPCODE_TABLE_REF_CLOSE },
936    { "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
937    { "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
938    { "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
939    { "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
940    { "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
941    { "{" , SC_OPCODE_ARRAY_OPEN },
942    { "}" , SC_OPCODE_ARRAY_CLOSE },
943    { "|" , SC_OPCODE_ARRAY_ROW_SEP },
944    { ";" , SC_OPCODE_ARRAY_COL_SEP },
945    { ";" , SC_OPCODE_SEP },
946    { "%" , SC_OPCODE_PERCENT_SIGN },
947    { "+" , SC_OPCODE_ADD },
948    { "-" , SC_OPCODE_SUB },
949    { "*" , SC_OPCODE_MUL },
950    { "/" , SC_OPCODE_DIV },
951    { "&" , SC_OPCODE_AMPERSAND },
952    { "^" , SC_OPCODE_POW },
953    { "=" , SC_OPCODE_EQUAL },
954    { "<>" , SC_OPCODE_NOT_EQUAL },
955    { "<" , SC_OPCODE_LESS },
956    { ">" , SC_OPCODE_GREATER },
957    { "<=" , SC_OPCODE_LESS_EQUAL },
958    { ">=" , SC_OPCODE_GREATER_EQUAL },
959    { "AND" , SC_OPCODE_AND },
960    { "OR" , SC_OPCODE_OR },
961    { "XOR" , SC_OPCODE_XOR },
962    { "!" , SC_OPCODE_INTERSECT },
963    { "~" , SC_OPCODE_UNION },
964    { ":" , SC_OPCODE_RANGE },
965    { "NOT" , SC_OPCODE_NOT },
966    { "NEG" , SC_OPCODE_NEG },
967    { "-" , SC_OPCODE_NEG_SUB },
968    { "PI" , SC_OPCODE_PI },
969    { "RAND" , SC_OPCODE_RANDOM },
970    { "TRUE" , SC_OPCODE_TRUE },
971    { "FALSE" , SC_OPCODE_FALSE },
972    { "TODAY" , SC_OPCODE_GET_ACT_DATE },
973    { "NOW" , SC_OPCODE_GET_ACT_TIME },
974    { "NA" , SC_OPCODE_NO_VALUE },
975    { "CURRENT" , SC_OPCODE_CURRENT },
976    { "DEGREES" , SC_OPCODE_DEG },
977    { "RADIANS" , SC_OPCODE_RAD },
978    { "SIN" , SC_OPCODE_SIN },
979    { "COS" , SC_OPCODE_COS },
980    { "TAN" , SC_OPCODE_TAN },
981    { "COT" , SC_OPCODE_COT },
982    { "ASIN" , SC_OPCODE_ARC_SIN },
983    { "ACOS" , SC_OPCODE_ARC_COS },
984    { "ATAN" , SC_OPCODE_ARC_TAN },
985    { "ACOT" , SC_OPCODE_ARC_COT },
986    { "SINH" , SC_OPCODE_SIN_HYP },
987    { "COSH" , SC_OPCODE_COS_HYP },
988    { "TANH" , SC_OPCODE_TAN_HYP },
989    { "COTH" , SC_OPCODE_COT_HYP },
990    { "ASINH" , SC_OPCODE_ARC_SIN_HYP },
991    { "ACOSH" , SC_OPCODE_ARC_COS_HYP },
992    { "ATANH" , SC_OPCODE_ARC_TAN_HYP },
993    { "ACOTH" , SC_OPCODE_ARC_COT_HYP },
994    { "CSC" , SC_OPCODE_COSECANT },
995    { "SEC" , SC_OPCODE_SECANT },
996    { "CSCH" , SC_OPCODE_COSECANT_HYP },
997    { "SECH" , SC_OPCODE_SECANT_HYP },
998    { "EXP" , SC_OPCODE_EXP },
999    { "LN" , SC_OPCODE_LN },
1000    { "SQRT" , SC_OPCODE_SQRT },
1001    { "FACT" , SC_OPCODE_FACT },
1002    { "YEAR" , SC_OPCODE_GET_YEAR },
1003    { "MONTH" , SC_OPCODE_GET_MONTH },
1004    { "DAY" , SC_OPCODE_GET_DAY },
1005    { "HOUR" , SC_OPCODE_GET_HOUR },
1006    { "MINUTE" , SC_OPCODE_GET_MIN },
1007    { "SECOND" , SC_OPCODE_GET_SEC },
1008    { "SIGN" , SC_OPCODE_PLUS_MINUS },
1009    { "ABS" , SC_OPCODE_ABS },
1010    { "INT" , SC_OPCODE_INT },
1011    { "PHI" , SC_OPCODE_PHI },
1012    { "GAUSS" , SC_OPCODE_GAUSS },
1013    { "ISBLANK" , SC_OPCODE_IS_EMPTY },
1014    { "ISTEXT" , SC_OPCODE_IS_STRING },
1015    { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
1016    { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
1017    { "TYPE" , SC_OPCODE_TYPE },
1018    { "CELL" , SC_OPCODE_CELL },
1019    { "ISREF" , SC_OPCODE_IS_REF },
1020    { "ISNUMBER" , SC_OPCODE_IS_VALUE },
1021    { "ISFORMULA" , SC_OPCODE_IS_FORMULA },
1022    { "ISNA" , SC_OPCODE_IS_NV },
1023    { "ISERR" , SC_OPCODE_IS_ERR },
1024    { "ISERROR" , SC_OPCODE_IS_ERROR },
1025    { "ISEVEN" , SC_OPCODE_IS_EVEN },
1026    { "ISODD" , SC_OPCODE_IS_ODD },
1027    { "N" , SC_OPCODE_N },
1028    { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
1029    { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
1030    { "CODE" , SC_OPCODE_CODE },
1031    { "TRIM" , SC_OPCODE_TRIM },
1032    { "UPPER" , SC_OPCODE_UPPER },
1033    { "PROPER" , SC_OPCODE_PROPER },
1034    { "LOWER" , SC_OPCODE_LOWER },
1035    { "LEN" , SC_OPCODE_LEN },
1036    { "T" , SC_OPCODE_T },
1037    { "VALUE" , SC_OPCODE_VALUE },
1038    { "CLEAN" , SC_OPCODE_CLEAN },
1039    { "CHAR" , SC_OPCODE_CHAR },
1040    { "JIS" , SC_OPCODE_JIS },
1041    { "ASC" , SC_OPCODE_ASC },
1042    { "UNICODE" , SC_OPCODE_UNICODE },
1043    { "UNICHAR" , SC_OPCODE_UNICHAR },
1044    { "LOG10" , SC_OPCODE_LOG10 },
1045    { "EVEN" , SC_OPCODE_EVEN },
1046    { "ODD" , SC_OPCODE_ODD },
1047    { "NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
1048    { "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
1049    { "FISHER" , SC_OPCODE_FISHER },
1050    { "FISHERINV" , SC_OPCODE_FISHER_INV },
1051    { "NORMSINV" , SC_OPCODE_S_NORM_INV },
1052    { "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
1053    { "GAMMALN" , SC_OPCODE_GAMMA_LN },
1054    { "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
1055    { "ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
1056    { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
1057    { "FORMULA" , SC_OPCODE_FORMULA },
1058    { "ATAN2" , SC_OPCODE_ARC_TAN_2 },
1059    { "CEILING.MATH" , SC_OPCODE_CEIL_MATH },
1060    { "CEILING" , SC_OPCODE_CEIL },
1061    { "CEILING.XCL" , SC_OPCODE_CEIL_MS },
1062    { "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
1063    { "ISO.CEILING" , SC_OPCODE_CEIL_ISO },
1064    { "FLOOR" , SC_OPCODE_FLOOR },
1065    { "FLOOR.XCL" , SC_OPCODE_FLOOR_MS },
1066    { "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
1067    { "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
1068    { "ROUND" , SC_OPCODE_ROUND },
1069    { "ROUNDUP" , SC_OPCODE_ROUND_UP },
1070    { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
1071    { "TRUNC" , SC_OPCODE_TRUNC },
1072    { "LOG" , SC_OPCODE_LOG },
1073    { "POWER" , SC_OPCODE_POWER },
1074    { "GCD" , SC_OPCODE_GCD },
1075    { "LCM" , SC_OPCODE_LCM },
1076    { "MOD" , SC_OPCODE_MOD },
1077    { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
1078    { "SUMSQ" , SC_OPCODE_SUM_SQ },
1079    { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
1080    { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
1081    { "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
1082    { "DATE" , SC_OPCODE_GET_DATE },
1083    { "TIME" , SC_OPCODE_GET_TIME },
1084    { "DAYS" , SC_OPCODE_GET_DIFF_DATE },
1085    { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
1086    { "DATEDIF" , SC_OPCODE_GET_DATEDIF },
1087    { "MIN" , SC_OPCODE_MIN },
1088    { "MINA" , SC_OPCODE_MIN_A },
1089    { "MAX" , SC_OPCODE_MAX },
1090    { "MAXA" , SC_OPCODE_MAX_A },
1091    { "SUM" , SC_OPCODE_SUM },
1092    { "PRODUCT" , SC_OPCODE_PRODUCT },
1093    { "AVERAGE" , SC_OPCODE_AVERAGE },
1094    { "AVERAGEA" , SC_OPCODE_AVERAGE_A },
1095    { "COUNT" , SC_OPCODE_COUNT },
1096    { "COUNTA" , SC_OPCODE_COUNT_2 },
1097    { "NPV" , SC_OPCODE_NPV },
1098    { "IRR" , SC_OPCODE_IRR },
1099    { "MIRR" , SC_OPCODE_MIRR },
1100    { "ISPMT" , SC_OPCODE_ISPMT },
1101    { "VAR" , SC_OPCODE_VAR },
1102    { "VARA" , SC_OPCODE_VAR_A },
1103    { "VARP" , SC_OPCODE_VAR_P },
1104    { "VARPA" , SC_OPCODE_VAR_P_A },
1105    { "VAR.P" , SC_OPCODE_VAR_P_MS },
1106    { "VAR.S" , SC_OPCODE_VAR_S },
1107    { "STDEV" , SC_OPCODE_ST_DEV },
1108    { "STDEVA" , SC_OPCODE_ST_DEV_A },
1109    { "STDEVP" , SC_OPCODE_ST_DEV_P },
1110    { "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
1111    { "STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
1112    { "STDEV.S" , SC_OPCODE_ST_DEV_S },
1113    { "B" , SC_OPCODE_B },
1114    { "NORMDIST" , SC_OPCODE_NORM_DIST },
1115    { "NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
1116    { "EXPONDIST" , SC_OPCODE_EXP_DIST },
1117    { "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
1118    { "BINOMDIST" , SC_OPCODE_BINOM_DIST },
1119    { "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
1120    { "POISSON" , SC_OPCODE_POISSON_DIST },
1121    { "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
1122    { "COMBIN" , SC_OPCODE_COMBIN },
1123    { "COMBINA" , SC_OPCODE_COMBIN_A },
1124    { "PERMUT" , SC_OPCODE_PERMUT },
1125    { "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
1126    { "PV" , SC_OPCODE_PV },
1127    { "SYD" , SC_OPCODE_SYD },
1128    { "DDB" , SC_OPCODE_DDB },
1129    { "DB" , SC_OPCODE_DB },
1130    { "VDB" , SC_OPCODE_VBD },
1131    { "DURATION" , SC_OPCODE_PDURATION }, // wrong but ODF1.1, keep it.
1132    { "SLN" , SC_OPCODE_SLN },
1133    { "PMT" , SC_OPCODE_PMT },
1134    { "COLUMNS" , SC_OPCODE_COLUMNS },
1135    { "ROWS" , SC_OPCODE_ROWS },
1136    { "SHEETS" , SC_OPCODE_SHEETS },
1137    { "COLUMN" , SC_OPCODE_COLUMN },
1138    { "ROW" , SC_OPCODE_ROW },
1139    { "SHEET" , SC_OPCODE_SHEET },
1140    { "ZGZ" , SC_OPCODE_RRI },
1141    { "FV" , SC_OPCODE_FV },
1142    { "NPER" , SC_OPCODE_NPER },
1143    { "RATE" , SC_OPCODE_RATE },
1144    { "IPMT" , SC_OPCODE_IPMT },
1145    { "PPMT" , SC_OPCODE_PPMT },
1146    { "CUMIPMT" , SC_OPCODE_CUM_IPMT },
1147    { "CUMPRINC" , SC_OPCODE_CUM_PRINC },
1148    { "EFFECTIVE" , SC_OPCODE_EFFECT },
1149    { "NOMINAL" , SC_OPCODE_NOMINAL },
1150    { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
1151    { "DSUM" , SC_OPCODE_DB_SUM },
1152    { "DCOUNT" , SC_OPCODE_DB_COUNT },
1153    { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
1154    { "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
1155    { "DGET" , SC_OPCODE_DB_GET },
1156    { "DMAX" , SC_OPCODE_DB_MAX },
1157    { "DMIN" , SC_OPCODE_DB_MIN },
1158    { "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
1159    { "DSTDEV" , SC_OPCODE_DB_STD_DEV },
1160    { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
1161    { "DVAR" , SC_OPCODE_DB_VAR },
1162    { "DVARP" , SC_OPCODE_DB_VAR_P },
1163    { "INDIRECT" , SC_OPCODE_INDIRECT },
1164    { "ADDRESS" , SC_OPCODE_ADDRESS },
1165    { "MATCH" , SC_OPCODE_MATCH },
1166    { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
1167    { "COUNTIF" , SC_OPCODE_COUNT_IF },
1168    { "SUMIF" , SC_OPCODE_SUM_IF },
1169    { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
1170    { "SUMIFS" , SC_OPCODE_SUM_IFS },
1171    { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
1172    { "COUNTIFS" , SC_OPCODE_COUNT_IFS },
1173    { "LOOKUP" , SC_OPCODE_LOOKUP },
1174    { "VLOOKUP" , SC_OPCODE_V_LOOKUP },
1175    { "HLOOKUP" , SC_OPCODE_H_LOOKUP },
1176    { "MULTIRANGE" , SC_OPCODE_MULTI_AREA },    // legacy for range list (union)
1177    { "OFFSET" , SC_OPCODE_OFFSET },
1178    { "INDEX" , SC_OPCODE_INDEX },
1179    { "AREAS" , SC_OPCODE_AREAS },
1180    { "DOLLAR" , SC_OPCODE_CURRENCY },
1181    { "REPLACE" , SC_OPCODE_REPLACE },
1182    { "FIXED" , SC_OPCODE_FIXED },
1183    { "FIND" , SC_OPCODE_FIND },
1184    { "EXACT" , SC_OPCODE_EXACT },
1185    { "LEFT" , SC_OPCODE_LEFT },
1186    { "RIGHT" , SC_OPCODE_RIGHT },
1187    { "SEARCH" , SC_OPCODE_SEARCH },
1188    { "MID" , SC_OPCODE_MID },
1189    { "LENB" , SC_OPCODE_LENB },
1190    { "RIGHTB" , SC_OPCODE_RIGHTB },
1191    { "LEFTB" , SC_OPCODE_LEFTB },
1192    { "REPLACEB" , SC_OPCODE_REPLACEB },
1193    { "FINDB" , SC_OPCODE_FINDB },
1194    { "SEARCHB" , SC_OPCODE_SEARCHB },
1195    { "MIDB" , SC_OPCODE_MIDB },
1196    { "TEXT" , SC_OPCODE_TEXT },
1197    { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
1198    { "REPT" , SC_OPCODE_REPT },
1199    { "CONCATENATE" , SC_OPCODE_CONCAT },
1200    { "CONCAT" , SC_OPCODE_CONCAT_MS },
1201    { "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
1202    { "IFS" , SC_OPCODE_IFS_MS },
1203    { "SWITCH" , SC_OPCODE_SWITCH_MS },
1204    { "MINIFS" , SC_OPCODE_MINIFS_MS },
1205    { "MAXIFS" , SC_OPCODE_MAXIFS_MS },
1206    { "MVALUE" , SC_OPCODE_MAT_VALUE },
1207    { "MDETERM" , SC_OPCODE_MAT_DET },
1208    { "MINVERSE" , SC_OPCODE_MAT_INV },
1209    { "MMULT" , SC_OPCODE_MAT_MULT },
1210    { "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
1211    { "MUNIT" , SC_OPCODE_MATRIX_UNIT },
1212    { "GOALSEEK" , SC_OPCODE_BACK_SOLVER },
1213    { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
1214    { "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
1215    { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
1216    { "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
1217    { "TDIST" , SC_OPCODE_T_DIST },
1218    { "T.DIST.2T" , SC_OPCODE_T_DIST_2T },
1219    { "T.DIST" , SC_OPCODE_T_DIST_MS },
1220    { "T.DIST.RT" , SC_OPCODE_T_DIST_RT },
1221    { "FDIST" , SC_OPCODE_F_DIST },
1222    { "F.DIST" , SC_OPCODE_F_DIST_LT },
1223    { "F.DIST.RT" , SC_OPCODE_F_DIST_RT },
1224    { "CHIDIST" , SC_OPCODE_CHI_DIST },
1225    { "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
1226    { "WEIBULL" , SC_OPCODE_WEIBULL },
1227    { "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
1228    { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
1229    { "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
1230    { "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
1231    { "BINOM.INV" , SC_OPCODE_BINOM_INV },
1232    { "KURT" , SC_OPCODE_KURT },
1233    { "HARMEAN" , SC_OPCODE_HAR_MEAN },
1234    { "GEOMEAN" , SC_OPCODE_GEO_MEAN },
1235    { "STANDARDIZE" , SC_OPCODE_STANDARD },
1236    { "AVEDEV" , SC_OPCODE_AVE_DEV },
1237    { "SKEW" , SC_OPCODE_SKEW },
1238    { "SKEWP" , SC_OPCODE_SKEWP },
1239    { "DEVSQ" , SC_OPCODE_DEV_SQ },
1240    { "MEDIAN" , SC_OPCODE_MEDIAN },
1241    { "MODE" , SC_OPCODE_MODAL_VALUE },
1242    { "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
1243    { "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
1244    { "ZTEST" , SC_OPCODE_Z_TEST },
1245    { "Z.TEST" , SC_OPCODE_Z_TEST_MS },
1246    { "AGGREGATE" , SC_OPCODE_AGGREGATE },
1247    { "TTEST" , SC_OPCODE_T_TEST },
1248    { "T.TEST" , SC_OPCODE_T_TEST_MS },
1249    { "RANK" , SC_OPCODE_RANK },
1250    { "PERCENTILE" , SC_OPCODE_PERCENTILE },
1251    { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
1252    { "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
1253    { "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
1254    { "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
1255    { "RANK.EQ" , SC_OPCODE_RANK_EQ },
1256    { "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
1257    { "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
1258    { "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
1259    { "RANK.AVG" , SC_OPCODE_RANK_AVG },
1260    { "LARGE" , SC_OPCODE_LARGE },
1261    { "SMALL" , SC_OPCODE_SMALL },
1262    { "FREQUENCY" , SC_OPCODE_FREQUENCY },
1263    { "QUARTILE" , SC_OPCODE_QUARTILE },
1264    { "NORMINV" , SC_OPCODE_NORM_INV },
1265    { "NORM.INV" , SC_OPCODE_NORM_INV_MS },
1266    { "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
1267    { "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
1268    { "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
1269    { "FTEST" , SC_OPCODE_F_TEST },
1270    { "F.TEST" , SC_OPCODE_F_TEST_MS },
1271    { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
1272    { "PROB" , SC_OPCODE_PROB },
1273    { "CORREL" , SC_OPCODE_CORREL },
1274    { "COVAR" , SC_OPCODE_COVAR },
1275    { "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
1276    { "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
1277    { "PEARSON" , SC_OPCODE_PEARSON },
1278    { "RSQ" , SC_OPCODE_RSQ },
1279    { "STEYX" , SC_OPCODE_STEYX },
1280    { "SLOPE" , SC_OPCODE_SLOPE },
1281    { "INTERCEPT" , SC_OPCODE_INTERCEPT },
1282    { "TREND" , SC_OPCODE_TREND },
1283    { "GROWTH" , SC_OPCODE_GROWTH },
1284    { "LINEST" , SC_OPCODE_LINEST },
1285    { "LOGEST" , SC_OPCODE_LOGEST },
1286    { "FORECAST" , SC_OPCODE_FORECAST },
1287    { "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD },
1288    { "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
1289    { "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
1290    { "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA },
1291    { "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
1292    { "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA },
1293    { "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
1294    { "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
1295    { "CHIINV" , SC_OPCODE_CHI_INV },
1296    { "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
1297    { "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
1298    { "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
1299    { "GAMMAINV" , SC_OPCODE_GAMMA_INV },
1300    { "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
1301    { "TINV" , SC_OPCODE_T_INV },
1302    { "T.INV.2T" , SC_OPCODE_T_INV_2T },
1303    { "T.INV" , SC_OPCODE_T_INV_MS },
1304    { "FINV" , SC_OPCODE_F_INV },
1305    { "F.INV" , SC_OPCODE_F_INV_LT },
1306    { "F.INV.RT" , SC_OPCODE_F_INV_RT },
1307    { "CHITEST" , SC_OPCODE_CHI_TEST },
1308    { "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
1309    { "LOGINV" , SC_OPCODE_LOG_INV },
1310    { "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
1311    { "TABLE" , SC_OPCODE_TABLE_OP },
1312    { "BETADIST" , SC_OPCODE_BETA_DIST },
1313    { "BETAINV" , SC_OPCODE_BETA_INV },
1314    { "BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
1315    { "BETA.INV" , SC_OPCODE_BETA_INV_MS },
1316    { "WEEKNUM" , SC_OPCODE_WEEK },
1317    { "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
1318    { "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
1319    { "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
1320    { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
1321    { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
1322    { "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
1323    { "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
1324    { "#NAME!" , SC_OPCODE_NO_NAME },
1325    { "STYLE" , SC_OPCODE_STYLE },
1326    { "DDE" , SC_OPCODE_DDE },
1327    { "BASE" , SC_OPCODE_BASE },
1328    { "DECIMAL" , SC_OPCODE_DECIMAL },
1329    { "CONVERT" , SC_OPCODE_CONVERT_OOO },  // wrong but ODF1.1, keep it
1330    { "ROMAN" , SC_OPCODE_ROMAN },
1331    { "ARABIC" , SC_OPCODE_ARABIC },
1332    { "HYPERLINK" , SC_OPCODE_HYPERLINK },
1333    { "INFO" , SC_OPCODE_INFO },
1334    { "BAHTTEXT" , SC_OPCODE_BAHTTEXT },
1335    { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
1336    { "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
1337    { "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
1338    { "GAMMA" , SC_OPCODE_GAMMA },
1339    { "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
1340    { "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
1341    { "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
1342    { "CHISQINV" , SC_OPCODE_CHISQ_INV },
1343    { "BITAND" , SC_OPCODE_BITAND },
1344    { "BITOR" , SC_OPCODE_BITOR },
1345    { "BITXOR" , SC_OPCODE_BITXOR },
1346    { "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
1347    { "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
1348    /* BEGIN defined ERROR.TYPE() values. */
1349    { "#NULL!" , SC_OPCODE_ERROR_NULL },
1350    { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
1351    { "#VALUE!" , SC_OPCODE_ERROR_VALUE },
1352    { "#REF!" , SC_OPCODE_ERROR_REF },
1353    { "#NAME?" , SC_OPCODE_ERROR_NAME },
1354    { "#NUM!" , SC_OPCODE_ERROR_NUM },
1355    { "#N/A" , SC_OPCODE_ERROR_NA },
1356    /* END defined ERROR.TYPE() values. */
1357    { "FILTERXML" , SC_OPCODE_FILTERXML },
1358    { "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
1359    { "COLOR" , SC_OPCODE_COLOR },
1360    { "ERF.PRECISE" , SC_OPCODE_ERF_MS },
1361    { "ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
1362    { "ENCODEURL" , SC_OPCODE_ENCODEURL },
1363    { "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
1364    { "ROUNDSIG" , SC_OPCODE_ROUNDSIG },
1365    { "REGEX" , SC_OPCODE_REGEX },
1366    { "FOURIER", SC_OPCODE_FOURIER },
1367    { "RAND.NV" , SC_OPCODE_RANDOM_NV },
1368    { "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
1369    { nullptr, -1 }
1370};
1371
1372/** These English names are used for XFunctionAccess API. */
1373// DO NOT CHANGE NAMES! Only add functions.
1374// If there is a reason for another name for some function then add an
1375// *additional* name to be recognized to sc/source/core/tool/compiler.cxx
1376// ScCompiler::IsOpCode().
1377const std::pair<const char*, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] =
1378{
1379    { "IF" , SC_OPCODE_IF },
1380    { "IFERROR" , SC_OPCODE_IF_ERROR },
1381    { "IFNA" , SC_OPCODE_IF_NA },
1382    { "CHOOSE" , SC_OPCODE_CHOOSE },
1383    { "(" , SC_OPCODE_OPEN },
1384    { ")" , SC_OPCODE_CLOSE },
1385    { "[" , SC_OPCODE_TABLE_REF_OPEN },
1386    { "]" , SC_OPCODE_TABLE_REF_CLOSE },
1387    { "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
1388    { "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
1389    { "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
1390    { "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
1391    { "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
1392    { "{" , SC_OPCODE_ARRAY_OPEN },
1393    { "}" , SC_OPCODE_ARRAY_CLOSE },
1394    { "|" , SC_OPCODE_ARRAY_ROW_SEP },
1395    { ";" , SC_OPCODE_ARRAY_COL_SEP },
1396    { ";" , SC_OPCODE_SEP },
1397    { "%" , SC_OPCODE_PERCENT_SIGN },
1398    { "+" , SC_OPCODE_ADD },
1399    { "-" , SC_OPCODE_SUB },
1400    { "*" , SC_OPCODE_MUL },
1401    { "/" , SC_OPCODE_DIV },
1402    { "&" , SC_OPCODE_AMPERSAND },
1403    { "^" , SC_OPCODE_POW },
1404    { "=" , SC_OPCODE_EQUAL },
1405    { "<>" , SC_OPCODE_NOT_EQUAL },
1406    { "<" , SC_OPCODE_LESS },
1407    { ">" , SC_OPCODE_GREATER },
1408    { "<=" , SC_OPCODE_LESS_EQUAL },
1409    { ">=" , SC_OPCODE_GREATER_EQUAL },
1410    { "AND" , SC_OPCODE_AND },
1411    { "OR" , SC_OPCODE_OR },
1412    { "XOR" , SC_OPCODE_XOR },
1413    { "!" , SC_OPCODE_INTERSECT },
1414    { "~" , SC_OPCODE_UNION },
1415    { ":" , SC_OPCODE_RANGE },
1416    { "NOT" , SC_OPCODE_NOT },
1417    { "NEG" , SC_OPCODE_NEG },
1418    { "-" , SC_OPCODE_NEG_SUB },
1419    { "PI" , SC_OPCODE_PI },
1420    { "RAND" , SC_OPCODE_RANDOM },
1421    { "TRUE" , SC_OPCODE_TRUE },
1422    { "FALSE" , SC_OPCODE_FALSE },
1423    { "TODAY" , SC_OPCODE_GET_ACT_DATE },
1424    { "NOW" , SC_OPCODE_GET_ACT_TIME },
1425    { "NA" , SC_OPCODE_NO_VALUE },
1426    { "CURRENT" , SC_OPCODE_CURRENT },
1427    { "DEGREES" , SC_OPCODE_DEG },
1428    { "RADIANS" , SC_OPCODE_RAD },
1429    { "SIN" , SC_OPCODE_SIN },
1430    { "COS" , SC_OPCODE_COS },
1431    { "TAN" , SC_OPCODE_TAN },
1432    { "COT" , SC_OPCODE_COT },
1433    { "ASIN" , SC_OPCODE_ARC_SIN },
1434    { "ACOS" , SC_OPCODE_ARC_COS },
1435    { "ATAN" , SC_OPCODE_ARC_TAN },
1436    { "ACOT" , SC_OPCODE_ARC_COT },
1437    { "SINH" , SC_OPCODE_SIN_HYP },
1438    { "COSH" , SC_OPCODE_COS_HYP },
1439    { "TANH" , SC_OPCODE_TAN_HYP },
1440    { "COTH" , SC_OPCODE_COT_HYP },
1441    { "ASINH" , SC_OPCODE_ARC_SIN_HYP },
1442    { "ACOSH" , SC_OPCODE_ARC_COS_HYP },
1443    { "ATANH" , SC_OPCODE_ARC_TAN_HYP },
1444    { "ACOTH" , SC_OPCODE_ARC_COT_HYP },
1445    { "CSC" , SC_OPCODE_COSECANT },
1446    { "SEC" , SC_OPCODE_SECANT },
1447    { "CSCH" , SC_OPCODE_COSECANT_HYP },
1448    { "SECH" , SC_OPCODE_SECANT_HYP },
1449    { "EXP" , SC_OPCODE_EXP },
1450    { "LN" , SC_OPCODE_LN },
1451    { "SQRT" , SC_OPCODE_SQRT },
1452    { "FACT" , SC_OPCODE_FACT },
1453    { "YEAR" , SC_OPCODE_GET_YEAR },
1454    { "MONTH" , SC_OPCODE_GET_MONTH },
1455    { "DAY" , SC_OPCODE_GET_DAY },
1456    { "HOUR" , SC_OPCODE_GET_HOUR },
1457    { "MINUTE" , SC_OPCODE_GET_MIN },
1458    { "SECOND" , SC_OPCODE_GET_SEC },
1459    { "SIGN" , SC_OPCODE_PLUS_MINUS },
1460    { "ABS" , SC_OPCODE_ABS },
1461    { "INT" , SC_OPCODE_INT },
1462    { "PHI" , SC_OPCODE_PHI },
1463    { "GAUSS" , SC_OPCODE_GAUSS },
1464    { "ISBLANK" , SC_OPCODE_IS_EMPTY },
1465    { "ISTEXT" , SC_OPCODE_IS_STRING },
1466    { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
1467    { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
1468    { "TYPE" , SC_OPCODE_TYPE },
1469    { "CELL" , SC_OPCODE_CELL },
1470    { "ISREF" , SC_OPCODE_IS_REF },
1471    { "ISNUMBER" , SC_OPCODE_IS_VALUE },
1472    { "ISFORMULA" , SC_OPCODE_IS_FORMULA },
1473    { "ISNA" , SC_OPCODE_IS_NV },
1474    { "ISERR" , SC_OPCODE_IS_ERR },
1475    { "ISERROR" , SC_OPCODE_IS_ERROR },
1476    { "ISEVEN" , SC_OPCODE_IS_EVEN },
1477    { "ISODD" , SC_OPCODE_IS_ODD },
1478    { "N" , SC_OPCODE_N },
1479    { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
1480    { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
1481    { "CODE" , SC_OPCODE_CODE },
1482    { "TRIM" , SC_OPCODE_TRIM },
1483    { "UPPER" , SC_OPCODE_UPPER },
1484    { "PROPER" , SC_OPCODE_PROPER },
1485    { "LOWER" , SC_OPCODE_LOWER },
1486    { "LEN" , SC_OPCODE_LEN },
1487    { "T" , SC_OPCODE_T },
1488    { "VALUE" , SC_OPCODE_VALUE },
1489    { "CLEAN" , SC_OPCODE_CLEAN },
1490    { "CHAR" , SC_OPCODE_CHAR },
1491    { "JIS" , SC_OPCODE_JIS },
1492    { "ASC" , SC_OPCODE_ASC },
1493    { "UNICODE" , SC_OPCODE_UNICODE },
1494    { "UNICHAR" , SC_OPCODE_UNICHAR },
1495    { "LOG10" , SC_OPCODE_LOG10 },
1496    { "EVEN" , SC_OPCODE_EVEN },
1497    { "ODD" , SC_OPCODE_ODD },
1498    { "NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
1499    { "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
1500    { "FISHER" , SC_OPCODE_FISHER },
1501    { "FISHERINV" , SC_OPCODE_FISHER_INV },
1502    { "NORMSINV" , SC_OPCODE_S_NORM_INV },
1503    { "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
1504    { "GAMMALN" , SC_OPCODE_GAMMA_LN },
1505    { "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
1506    { "ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
1507    { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
1508    { "FORMULA" , SC_OPCODE_FORMULA },
1509    { "ATAN2" , SC_OPCODE_ARC_TAN_2 },
1510    { "CEILING.MATH" , SC_OPCODE_CEIL_MATH },
1511    { "CEILING" , SC_OPCODE_CEIL },
1512    { "CEILING.XCL" , SC_OPCODE_CEIL_MS },
1513    { "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
1514    { "ISO.CEILING" , SC_OPCODE_CEIL_ISO },
1515    { "FLOOR" , SC_OPCODE_FLOOR },
1516    { "FLOOR.XCL" , SC_OPCODE_FLOOR_MS },
1517    { "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
1518    { "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
1519    { "ROUND" , SC_OPCODE_ROUND },
1520    { "ROUNDUP" , SC_OPCODE_ROUND_UP },
1521    { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
1522    { "TRUNC" , SC_OPCODE_TRUNC },
1523    { "LOG" , SC_OPCODE_LOG },
1524    { "POWER" , SC_OPCODE_POWER },
1525    { "GCD" , SC_OPCODE_GCD },
1526    { "LCM" , SC_OPCODE_LCM },
1527    { "MOD" , SC_OPCODE_MOD },
1528    { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
1529    { "SUMSQ" , SC_OPCODE_SUM_SQ },
1530    { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
1531    { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
1532    { "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
1533    { "DATE" , SC_OPCODE_GET_DATE },
1534    { "TIME" , SC_OPCODE_GET_TIME },
1535    { "DAYS" , SC_OPCODE_GET_DIFF_DATE },
1536    { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
1537    { "DATEDIF" , SC_OPCODE_GET_DATEDIF },
1538    { "MIN" , SC_OPCODE_MIN },
1539    { "MINA" , SC_OPCODE_MIN_A },
1540    { "MAX" , SC_OPCODE_MAX },
1541    { "MAXA" , SC_OPCODE_MAX_A },
1542    { "SUM" , SC_OPCODE_SUM },
1543    { "PRODUCT" , SC_OPCODE_PRODUCT },
1544    { "AVERAGE" , SC_OPCODE_AVERAGE },
1545    { "AVERAGEA" , SC_OPCODE_AVERAGE_A },
1546    { "COUNT" , SC_OPCODE_COUNT },
1547    { "COUNTA" , SC_OPCODE_COUNT_2 },
1548    { "NPV" , SC_OPCODE_NPV },
1549    { "IRR" , SC_OPCODE_IRR },
1550    { "MIRR" , SC_OPCODE_MIRR },
1551    { "ISPMT" , SC_OPCODE_ISPMT },
1552    { "VAR" , SC_OPCODE_VAR },
1553    { "VARA" , SC_OPCODE_VAR_A },
1554    { "VARP" , SC_OPCODE_VAR_P },
1555    { "VARPA" , SC_OPCODE_VAR_P_A },
1556    { "VAR.P" , SC_OPCODE_VAR_P_MS },
1557    { "VAR.S" , SC_OPCODE_VAR_S },
1558    { "STDEV" , SC_OPCODE_ST_DEV },
1559    { "STDEVA" , SC_OPCODE_ST_DEV_A },
1560    { "STDEVP" , SC_OPCODE_ST_DEV_P },
1561    { "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
1562    { "STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
1563    { "STDEV.S" , SC_OPCODE_ST_DEV_S },
1564    { "B" , SC_OPCODE_B },
1565    { "NORMDIST" , SC_OPCODE_NORM_DIST },
1566    { "NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
1567    { "EXPONDIST" , SC_OPCODE_EXP_DIST },
1568    { "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
1569    { "BINOMDIST" , SC_OPCODE_BINOM_DIST },
1570    { "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
1571    { "POISSON" , SC_OPCODE_POISSON_DIST },
1572    { "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
1573    { "COMBIN" , SC_OPCODE_COMBIN },
1574    { "COMBINA" , SC_OPCODE_COMBIN_A },
1575    { "PERMUT" , SC_OPCODE_PERMUT },
1576    { "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
1577    { "PV" , SC_OPCODE_PV },
1578    { "SYD" , SC_OPCODE_SYD },
1579    { "DDB" , SC_OPCODE_DDB },
1580    { "DB" , SC_OPCODE_DB },
1581    { "VDB" , SC_OPCODE_VBD },
1582    { "DURATION" , SC_OPCODE_PDURATION },
1583    { "SLN" , SC_OPCODE_SLN },
1584    { "PMT" , SC_OPCODE_PMT },
1585    { "COLUMNS" , SC_OPCODE_COLUMNS },
1586    { "ROWS" , SC_OPCODE_ROWS },
1587    { "SHEETS" , SC_OPCODE_SHEETS },
1588    { "COLUMN" , SC_OPCODE_COLUMN },
1589    { "ROW" , SC_OPCODE_ROW },
1590    { "SHEET" , SC_OPCODE_SHEET },
1591    { "ZGZ" , SC_OPCODE_RRI },
1592    { "FV" , SC_OPCODE_FV },
1593    { "NPER" , SC_OPCODE_NPER },
1594    { "RATE" , SC_OPCODE_RATE },
1595    { "IPMT" , SC_OPCODE_IPMT },
1596    { "PPMT" , SC_OPCODE_PPMT },
1597    { "CUMIPMT" , SC_OPCODE_CUM_IPMT },
1598    { "CUMPRINC" , SC_OPCODE_CUM_PRINC },
1599    { "EFFECTIVE" , SC_OPCODE_EFFECT },
1600    { "NOMINAL" , SC_OPCODE_NOMINAL },
1601    { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
1602    { "DSUM" , SC_OPCODE_DB_SUM },
1603    { "DCOUNT" , SC_OPCODE_DB_COUNT },
1604    { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
1605    { "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
1606    { "DGET" , SC_OPCODE_DB_GET },
1607    { "DMAX" , SC_OPCODE_DB_MAX },
1608    { "DMIN" , SC_OPCODE_DB_MIN },
1609    { "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
1610    { "DSTDEV" , SC_OPCODE_DB_STD_DEV },
1611    { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
1612    { "DVAR" , SC_OPCODE_DB_VAR },
1613    { "DVARP" , SC_OPCODE_DB_VAR_P },
1614    { "INDIRECT" , SC_OPCODE_INDIRECT },
1615    { "ADDRESS" , SC_OPCODE_ADDRESS },
1616    { "MATCH" , SC_OPCODE_MATCH },
1617    { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
1618    { "COUNTIF" , SC_OPCODE_COUNT_IF },
1619    { "SUMIF" , SC_OPCODE_SUM_IF },
1620    { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
1621    { "SUMIFS" , SC_OPCODE_SUM_IFS },
1622    { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
1623    { "COUNTIFS" , SC_OPCODE_COUNT_IFS },
1624    { "LOOKUP" , SC_OPCODE_LOOKUP },
1625    { "VLOOKUP" , SC_OPCODE_V_LOOKUP },
1626    { "HLOOKUP" , SC_OPCODE_H_LOOKUP },
1627    { "MULTIRANGE" , SC_OPCODE_MULTI_AREA },    // legacy for range list (union)
1628    { "OFFSET" , SC_OPCODE_OFFSET },
1629    { "INDEX" , SC_OPCODE_INDEX },  // ?? first character = I ??
1630    { "AREAS" , SC_OPCODE_AREAS },
1631    { "DOLLAR" , SC_OPCODE_CURRENCY },
1632    { "REPLACE" , SC_OPCODE_REPLACE },
1633    { "FIXED" , SC_OPCODE_FIXED },
1634    { "FIND" , SC_OPCODE_FIND },
1635    { "EXACT" , SC_OPCODE_EXACT },
1636    { "LEFT" , SC_OPCODE_LEFT },
1637    { "RIGHT" , SC_OPCODE_RIGHT },
1638    { "SEARCH" , SC_OPCODE_SEARCH },
1639    { "MID" , SC_OPCODE_MID },
1640    { "LENB" , SC_OPCODE_LENB },
1641    { "RIGHTB" , SC_OPCODE_RIGHTB },
1642    { "LEFTB" , SC_OPCODE_LEFTB },
1643    { "REPLACEB" , SC_OPCODE_REPLACEB },
1644    { "FINDB" , SC_OPCODE_FINDB },
1645    { "SEARCHB" , SC_OPCODE_SEARCHB },
1646    { "MIDB" , SC_OPCODE_MIDB },
1647    { "TEXT" , SC_OPCODE_TEXT },
1648    { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
1649    { "REPT" , SC_OPCODE_REPT },
1650    { "CONCATENATE" , SC_OPCODE_CONCAT },
1651    { "CONCAT" , SC_OPCODE_CONCAT_MS },
1652    { "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
1653    { "IFS" , SC_OPCODE_IFS_MS },
1654    { "SWITCH" , SC_OPCODE_SWITCH_MS },
1655    { "MINIFS" , SC_OPCODE_MINIFS_MS },
1656    { "MAXIFS" , SC_OPCODE_MAXIFS_MS },
1657    { "MVALUE" , SC_OPCODE_MAT_VALUE },
1658    { "MDETERM" , SC_OPCODE_MAT_DET },
1659    { "MINVERSE" , SC_OPCODE_MAT_INV },
1660    { "MMULT" , SC_OPCODE_MAT_MULT },
1661    { "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
1662    { "MUNIT" , SC_OPCODE_MATRIX_UNIT },
1663    { "GOALSEEK" , SC_OPCODE_BACK_SOLVER },
1664    { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
1665    { "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
1666    { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
1667    { "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
1668    { "TDIST" , SC_OPCODE_T_DIST },
1669    { "T.DIST.2T" , SC_OPCODE_T_DIST_2T },
1670    { "T.DIST" , SC_OPCODE_T_DIST_MS },
1671    { "T.DIST.RT" , SC_OPCODE_T_DIST_RT },
1672    { "FDIST" , SC_OPCODE_F_DIST },
1673    { "F.DIST" , SC_OPCODE_F_DIST_LT },
1674    { "F.DIST.RT" , SC_OPCODE_F_DIST_RT },
1675    { "CHIDIST" , SC_OPCODE_CHI_DIST },
1676    { "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
1677    { "WEIBULL" , SC_OPCODE_WEIBULL },
1678    { "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
1679    { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
1680    { "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
1681    { "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
1682    { "BINOM.INV" , SC_OPCODE_BINOM_INV },
1683    { "KURT" , SC_OPCODE_KURT },
1684    { "HARMEAN" , SC_OPCODE_HAR_MEAN },
1685    { "GEOMEAN" , SC_OPCODE_GEO_MEAN },
1686    { "STANDARDIZE" , SC_OPCODE_STANDARD },
1687    { "AVEDEV" , SC_OPCODE_AVE_DEV },
1688    { "SKEW" , SC_OPCODE_SKEW },
1689    { "SKEWP" , SC_OPCODE_SKEWP },
1690    { "DEVSQ" , SC_OPCODE_DEV_SQ },
1691    { "MEDIAN" , SC_OPCODE_MEDIAN },
1692    { "MODE" , SC_OPCODE_MODAL_VALUE },
1693    { "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
1694    { "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
1695    { "ZTEST" , SC_OPCODE_Z_TEST },
1696    { "Z.TEST" , SC_OPCODE_Z_TEST_MS },
1697    { "AGGREGATE" , SC_OPCODE_AGGREGATE },
1698    { "TTEST" , SC_OPCODE_T_TEST },
1699    { "T.TEST" , SC_OPCODE_T_TEST_MS },
1700    { "RANK" , SC_OPCODE_RANK },
1701    { "PERCENTILE" , SC_OPCODE_PERCENTILE },
1702    { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
1703    { "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
1704    { "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
1705    { "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
1706    { "RANK.EQ" , SC_OPCODE_RANK_EQ },
1707    { "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
1708    { "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
1709    { "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
1710    { "RANK.AVG" , SC_OPCODE_RANK_AVG },
1711    { "LARGE" , SC_OPCODE_LARGE },
1712    { "SMALL" , SC_OPCODE_SMALL },
1713    { "FREQUENCY" , SC_OPCODE_FREQUENCY },
1714    { "QUARTILE" , SC_OPCODE_QUARTILE },
1715    { "NORMINV" , SC_OPCODE_NORM_INV },
1716    { "NORM.INV" , SC_OPCODE_NORM_INV_MS },
1717    { "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
1718    { "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
1719    { "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
1720    { "FTEST" , SC_OPCODE_F_TEST },
1721    { "F.TEST" , SC_OPCODE_F_TEST_MS },
1722    { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
1723    { "PROB" , SC_OPCODE_PROB },
1724    { "CORREL" , SC_OPCODE_CORREL },
1725    { "COVAR" , SC_OPCODE_COVAR },
1726    { "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
1727    { "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
1728    { "PEARSON" , SC_OPCODE_PEARSON },
1729    { "RSQ" , SC_OPCODE_RSQ },
1730    { "STEYX" , SC_OPCODE_STEYX },
1731    { "SLOPE" , SC_OPCODE_SLOPE },
1732    { "INTERCEPT" , SC_OPCODE_INTERCEPT },
1733    { "TREND" , SC_OPCODE_TREND },
1734    { "GROWTH" , SC_OPCODE_GROWTH },
1735    { "LINEST" , SC_OPCODE_LINEST },
1736    { "LOGEST" , SC_OPCODE_LOGEST },
1737    { "FORECAST" , SC_OPCODE_FORECAST },
1738    { "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD },
1739    { "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
1740    { "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
1741    { "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA },
1742    { "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
1743    { "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA },
1744    { "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
1745    { "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
1746    { "CHIINV" , SC_OPCODE_CHI_INV },
1747    { "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
1748    { "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
1749    { "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
1750    { "GAMMAINV" , SC_OPCODE_GAMMA_INV },
1751    { "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
1752    { "TINV" , SC_OPCODE_T_INV },
1753    { "T.INV.2T" , SC_OPCODE_T_INV_2T },
1754    { "T.INV" , SC_OPCODE_T_INV_MS },
1755    { "FINV" , SC_OPCODE_F_INV },
1756    { "F.INV" , SC_OPCODE_F_INV_LT },
1757    { "F.INV.RT" , SC_OPCODE_F_INV_RT },
1758    { "CHITEST" , SC_OPCODE_CHI_TEST },
1759    { "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
1760    { "LOGINV" , SC_OPCODE_LOG_INV },
1761    { "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
1762    { "TABLE" , SC_OPCODE_TABLE_OP },
1763    { "BETADIST" , SC_OPCODE_BETA_DIST },
1764    { "BETAINV" , SC_OPCODE_BETA_INV },
1765    { "BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
1766    { "BETA.INV" , SC_OPCODE_BETA_INV_MS },
1767    { "WEEKNUM" , SC_OPCODE_WEEK },
1768    { "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
1769    { "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
1770    { "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
1771    { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
1772    { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
1773    { "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
1774    { "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
1775    { "#NAME!" , SC_OPCODE_NO_NAME },
1776    { "STYLE" , SC_OPCODE_STYLE },
1777    { "DDE" , SC_OPCODE_DDE },
1778    { "BASE" , SC_OPCODE_BASE },
1779    { "DECIMAL" , SC_OPCODE_DECIMAL },
1780    { "CONVERT" , SC_OPCODE_CONVERT_OOO },
1781    { "ROMAN" , SC_OPCODE_ROMAN },
1782    { "ARABIC" , SC_OPCODE_ARABIC },
1783    { "HYPERLINK" , SC_OPCODE_HYPERLINK },
1784    { "INFO" , SC_OPCODE_INFO },
1785    { "BAHTTEXT" , SC_OPCODE_BAHTTEXT },
1786    { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
1787    { "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
1788    { "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
1789    { "GAMMA" , SC_OPCODE_GAMMA },
1790    { "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
1791    { "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
1792    { "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
1793    { "CHISQINV" , SC_OPCODE_CHISQ_INV },
1794    { "BITAND" , SC_OPCODE_BITAND },
1795    { "BITOR" , SC_OPCODE_BITOR },
1796    { "BITXOR" , SC_OPCODE_BITXOR },
1797    { "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
1798    { "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
1799    { "#NULL!" , SC_OPCODE_ERROR_NULL },
1800    { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
1801    { "#VALUE!" , SC_OPCODE_ERROR_VALUE },
1802    { "#REF!" , SC_OPCODE_ERROR_REF },
1803    { "#NAME?" , SC_OPCODE_ERROR_NAME },
1804    { "#NUM!" , SC_OPCODE_ERROR_NUM },
1805    { "#N/A" , SC_OPCODE_ERROR_NA },
1806    /* END defined ERROR.TYPE() values. */
1807    { "FILTERXML" , SC_OPCODE_FILTERXML },
1808    { "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
1809    { "COLOR" , SC_OPCODE_COLOR },
1810    { "ERF.PRECISE" , SC_OPCODE_ERF_MS },
1811    { "ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
1812    { "ENCODEURL" , SC_OPCODE_ENCODEURL },
1813    { "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
1814    { "ROUNDSIG" , SC_OPCODE_ROUNDSIG },
1815    { "REGEX" , SC_OPCODE_REGEX },
1816    { "FOURIER", SC_OPCODE_FOURIER },
1817    { "RAND.NV" , SC_OPCODE_RANDOM_NV },
1818    { "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
1819    { nullptr, -1 }
1820};
1821
1822/** These English names can be chosen in the UI and can be changed. They
1823    should match the [en-US] names of RID_STRLIST_FUNCTION_NAMES below. */
1824// As such they are a duplicate, but we can not have two string localizations
1825// at the same time.
1826const std::pair<const char*, int> RID_STRLIST_FUNCTION_NAMES_ENGLISH[] =
1827{
1828    { "IF" , SC_OPCODE_IF },
1829    { "IFERROR" , SC_OPCODE_IF_ERROR },
1830    { "IFNA" , SC_OPCODE_IF_NA },
1831    { "CHOOSE" , SC_OPCODE_CHOOSE },
1832    { "(" , SC_OPCODE_OPEN },
1833    { ")" , SC_OPCODE_CLOSE },
1834    { "[" , SC_OPCODE_TABLE_REF_OPEN },
1835    { "]" , SC_OPCODE_TABLE_REF_CLOSE },
1836    { "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL },
1837    { "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
1838    { "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA },
1839    { "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
1840    { "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
1841    { "{" , SC_OPCODE_ARRAY_OPEN },
1842    { "}" , SC_OPCODE_ARRAY_CLOSE },
1843    { "|" , SC_OPCODE_ARRAY_ROW_SEP },
1844    { ";" , SC_OPCODE_ARRAY_COL_SEP },
1845    { ";" , SC_OPCODE_SEP },
1846    { "%" , SC_OPCODE_PERCENT_SIGN },
1847    { "+" , SC_OPCODE_ADD },
1848    { "-" , SC_OPCODE_SUB },
1849    { "*" , SC_OPCODE_MUL },
1850    { "/" , SC_OPCODE_DIV },
1851    { "&" , SC_OPCODE_AMPERSAND },
1852    { "^" , SC_OPCODE_POW },
1853    { "=" , SC_OPCODE_EQUAL },
1854    { "<>" , SC_OPCODE_NOT_EQUAL },
1855    { "<" , SC_OPCODE_LESS },
1856    { ">" , SC_OPCODE_GREATER },
1857    { "<=" , SC_OPCODE_LESS_EQUAL },
1858    { ">=" , SC_OPCODE_GREATER_EQUAL },
1859    { "AND" , SC_OPCODE_AND },
1860    { "OR" , SC_OPCODE_OR },
1861    { "XOR" , SC_OPCODE_XOR },
1862    { "!" , SC_OPCODE_INTERSECT },
1863    { "~" , SC_OPCODE_UNION },
1864    { ":" , SC_OPCODE_RANGE },
1865    { "NOT" , SC_OPCODE_NOT },
1866    { "NEG" , SC_OPCODE_NEG },
1867    { "-" , SC_OPCODE_NEG_SUB },
1868    { "PI" , SC_OPCODE_PI },
1869    { "RAND" , SC_OPCODE_RANDOM },
1870    { "TRUE" , SC_OPCODE_TRUE },
1871    { "FALSE" , SC_OPCODE_FALSE },
1872    { "TODAY" , SC_OPCODE_GET_ACT_DATE },
1873    { "NOW" , SC_OPCODE_GET_ACT_TIME },
1874    { "NA" , SC_OPCODE_NO_VALUE },
1875    { "CURRENT" , SC_OPCODE_CURRENT },
1876    { "DEGREES" , SC_OPCODE_DEG },
1877    { "RADIANS" , SC_OPCODE_RAD },
1878    { "SIN" , SC_OPCODE_SIN },
1879    { "COS" , SC_OPCODE_COS },
1880    { "TAN" , SC_OPCODE_TAN },
1881    { "COT" , SC_OPCODE_COT },
1882    { "ASIN" , SC_OPCODE_ARC_SIN },
1883    { "ACOS" , SC_OPCODE_ARC_COS },
1884    { "ATAN" , SC_OPCODE_ARC_TAN },
1885    { "ACOT" , SC_OPCODE_ARC_COT },
1886    { "SINH" , SC_OPCODE_SIN_HYP },
1887    { "COSH" , SC_OPCODE_COS_HYP },
1888    { "TANH" , SC_OPCODE_TAN_HYP },
1889    { "COTH" , SC_OPCODE_COT_HYP },
1890    { "ASINH" , SC_OPCODE_ARC_SIN_HYP },
1891    { "ACOSH" , SC_OPCODE_ARC_COS_HYP },
1892    { "ATANH" , SC_OPCODE_ARC_TAN_HYP },
1893    { "ACOTH" , SC_OPCODE_ARC_COT_HYP },
1894    { "CSC" , SC_OPCODE_COSECANT },
1895    { "SEC" , SC_OPCODE_SECANT },
1896    { "CSCH" , SC_OPCODE_COSECANT_HYP },
1897    { "SECH" , SC_OPCODE_SECANT_HYP },
1898    { "EXP" , SC_OPCODE_EXP },
1899    { "LN" , SC_OPCODE_LN },
1900    { "SQRT" , SC_OPCODE_SQRT },
1901    { "FACT" , SC_OPCODE_FACT },
1902    { "YEAR" , SC_OPCODE_GET_YEAR },
1903    { "MONTH" , SC_OPCODE_GET_MONTH },
1904    { "DAY" , SC_OPCODE_GET_DAY },
1905    { "HOUR" , SC_OPCODE_GET_HOUR },
1906    { "MINUTE" , SC_OPCODE_GET_MIN },
1907    { "SECOND" , SC_OPCODE_GET_SEC },
1908    { "SIGN" , SC_OPCODE_PLUS_MINUS },
1909    { "ABS" , SC_OPCODE_ABS },
1910    { "INT" , SC_OPCODE_INT },
1911    { "PHI" , SC_OPCODE_PHI },
1912    { "GAUSS" , SC_OPCODE_GAUSS },
1913    { "ISBLANK" , SC_OPCODE_IS_EMPTY },
1914    { "ISTEXT" , SC_OPCODE_IS_STRING },
1915    { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING },
1916    { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL },
1917    { "TYPE" , SC_OPCODE_TYPE },
1918    { "CELL" , SC_OPCODE_CELL },
1919    { "ISREF" , SC_OPCODE_IS_REF },
1920    { "ISNUMBER" , SC_OPCODE_IS_VALUE },
1921    { "ISFORMULA" , SC_OPCODE_IS_FORMULA },
1922    { "ISNA" , SC_OPCODE_IS_NV },
1923    { "ISERR" , SC_OPCODE_IS_ERR },
1924    { "ISERROR" , SC_OPCODE_IS_ERROR },
1925    { "ISEVEN" , SC_OPCODE_IS_EVEN },
1926    { "ISODD" , SC_OPCODE_IS_ODD },
1927    { "N" , SC_OPCODE_N },
1928    { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE },
1929    { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE },
1930    { "CODE" , SC_OPCODE_CODE },
1931    { "TRIM" , SC_OPCODE_TRIM },
1932    { "UPPER" , SC_OPCODE_UPPER },
1933    { "PROPER" , SC_OPCODE_PROPER },
1934    { "LOWER" , SC_OPCODE_LOWER },
1935    { "LEN" , SC_OPCODE_LEN },
1936    { "T" , SC_OPCODE_T },
1937    { "VALUE" , SC_OPCODE_VALUE },
1938    { "CLEAN" , SC_OPCODE_CLEAN },
1939    { "CHAR" , SC_OPCODE_CHAR },
1940    { "JIS" , SC_OPCODE_JIS },
1941    { "ASC" , SC_OPCODE_ASC },
1942    { "UNICODE" , SC_OPCODE_UNICODE },
1943    { "UNICHAR" , SC_OPCODE_UNICHAR },
1944    { "LOG10" , SC_OPCODE_LOG10 },
1945    { "EVEN" , SC_OPCODE_EVEN },
1946    { "ODD" , SC_OPCODE_ODD },
1947    { "NORMSDIST" , SC_OPCODE_STD_NORM_DIST },
1948    { "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS },
1949    { "FISHER" , SC_OPCODE_FISHER },
1950    { "FISHERINV" , SC_OPCODE_FISHER_INV },
1951    { "NORMSINV" , SC_OPCODE_S_NORM_INV },
1952    { "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS },
1953    { "GAMMALN" , SC_OPCODE_GAMMA_LN },
1954    { "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS },
1955    { "ERRORTYPE" , SC_OPCODE_ERROR_TYPE },
1956    { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF },
1957    { "FORMULA" , SC_OPCODE_FORMULA },
1958    { "ATAN2" , SC_OPCODE_ARC_TAN_2 },
1959    { "CEILING.MATH" , SC_OPCODE_CEIL_MATH },
1960    { "CEILING" , SC_OPCODE_CEIL },
1961    { "CEILING.XCL" , SC_OPCODE_CEIL_MS },
1962    { "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE },
1963    { "ISO.CEILING" , SC_OPCODE_CEIL_ISO },
1964    { "FLOOR" , SC_OPCODE_FLOOR },
1965    { "FLOOR.XCL" , SC_OPCODE_FLOOR_MS },
1966    { "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH },
1967    { "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE },
1968    { "ROUND" , SC_OPCODE_ROUND },
1969    { "ROUNDUP" , SC_OPCODE_ROUND_UP },
1970    { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN },
1971    { "TRUNC" , SC_OPCODE_TRUNC },
1972    { "LOG" , SC_OPCODE_LOG },
1973    { "POWER" , SC_OPCODE_POWER },
1974    { "GCD" , SC_OPCODE_GCD },
1975    { "LCM" , SC_OPCODE_LCM },
1976    { "MOD" , SC_OPCODE_MOD },
1977    { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT },
1978    { "SUMSQ" , SC_OPCODE_SUM_SQ },
1979    { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 },
1980    { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 },
1981    { "SUMXMY2" , SC_OPCODE_SUM_XMY2 },
1982    { "DATE" , SC_OPCODE_GET_DATE },
1983    { "TIME" , SC_OPCODE_GET_TIME },
1984    { "DAYS" , SC_OPCODE_GET_DIFF_DATE },
1985    { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 },
1986    { "DATEDIF" , SC_OPCODE_GET_DATEDIF },
1987    { "MIN" , SC_OPCODE_MIN },
1988    { "MINA" , SC_OPCODE_MIN_A },
1989    { "MAX" , SC_OPCODE_MAX },
1990    { "MAXA" , SC_OPCODE_MAX_A },
1991    { "SUM" , SC_OPCODE_SUM },
1992    { "PRODUCT" , SC_OPCODE_PRODUCT },
1993    { "AVERAGE" , SC_OPCODE_AVERAGE },
1994    { "AVERAGEA" , SC_OPCODE_AVERAGE_A },
1995    { "COUNT" , SC_OPCODE_COUNT },
1996    { "COUNTA" , SC_OPCODE_COUNT_2 },
1997    { "NPV" , SC_OPCODE_NPV },
1998    { "IRR" , SC_OPCODE_IRR },
1999    { "MIRR" , SC_OPCODE_MIRR },
2000    { "ISPMT" , SC_OPCODE_ISPMT },
2001    { "VAR" , SC_OPCODE_VAR },
2002    { "VARA" , SC_OPCODE_VAR_A },
2003    { "VARP" , SC_OPCODE_VAR_P },
2004    { "VARPA" , SC_OPCODE_VAR_P_A },
2005    { "VAR.P" , SC_OPCODE_VAR_P_MS },
2006    { "VAR.S" , SC_OPCODE_VAR_S },
2007    { "STDEV" , SC_OPCODE_ST_DEV },
2008    { "STDEVA" , SC_OPCODE_ST_DEV_A },
2009    { "STDEVP" , SC_OPCODE_ST_DEV_P },
2010    { "STDEVPA" , SC_OPCODE_ST_DEV_P_A },
2011    { "STDEV.P" , SC_OPCODE_ST_DEV_P_MS },
2012    { "STDEV.S" , SC_OPCODE_ST_DEV_S },
2013    { "B" , SC_OPCODE_B },
2014    { "NORMDIST" , SC_OPCODE_NORM_DIST },
2015    { "NORM.DIST" , SC_OPCODE_NORM_DIST_MS },
2016    { "EXPONDIST" , SC_OPCODE_EXP_DIST },
2017    { "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS },
2018    { "BINOMDIST" , SC_OPCODE_BINOM_DIST },
2019    { "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS },
2020    { "POISSON" , SC_OPCODE_POISSON_DIST },
2021    { "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS },
2022    { "COMBIN" , SC_OPCODE_COMBIN },
2023    { "COMBINA" , SC_OPCODE_COMBIN_A },
2024    { "PERMUT" , SC_OPCODE_PERMUT },
2025    { "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A },
2026    { "PV" , SC_OPCODE_PV },
2027    { "SYD" , SC_OPCODE_SYD },
2028    { "DDB" , SC_OPCODE_DDB },
2029    { "DB" , SC_OPCODE_DB },
2030    { "VDB" , SC_OPCODE_VBD },
2031    { "PDURATION" , SC_OPCODE_PDURATION },
2032    { "SLN" , SC_OPCODE_SLN },
2033    { "PMT" , SC_OPCODE_PMT },
2034    { "COLUMNS" , SC_OPCODE_COLUMNS },
2035    { "ROWS" , SC_OPCODE_ROWS },
2036    { "SHEETS" , SC_OPCODE_SHEETS },
2037    { "COLUMN" , SC_OPCODE_COLUMN },
2038    { "ROW" , SC_OPCODE_ROW },
2039    { "SHEET" , SC_OPCODE_SHEET },
2040    { "ZGZ" , SC_OPCODE_RRI },
2041    { "FV" , SC_OPCODE_FV },
2042    { "NPER" , SC_OPCODE_NPER },
2043    { "RATE" , SC_OPCODE_RATE },
2044    { "IPMT" , SC_OPCODE_IPMT },
2045    { "PPMT" , SC_OPCODE_PPMT },
2046    { "CUMIPMT" , SC_OPCODE_CUM_IPMT },
2047    { "CUMPRINC" , SC_OPCODE_CUM_PRINC },
2048    { "EFFECTIVE" , SC_OPCODE_EFFECT },
2049    { "NOMINAL" , SC_OPCODE_NOMINAL },
2050    { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL },
2051    { "DSUM" , SC_OPCODE_DB_SUM },
2052    { "DCOUNT" , SC_OPCODE_DB_COUNT },
2053    { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 },
2054    { "DAVERAGE" , SC_OPCODE_DB_AVERAGE },
2055    { "DGET" , SC_OPCODE_DB_GET },
2056    { "DMAX" , SC_OPCODE_DB_MAX },
2057    { "DMIN" , SC_OPCODE_DB_MIN },
2058    { "DPRODUCT" , SC_OPCODE_DB_PRODUCT },
2059    { "DSTDEV" , SC_OPCODE_DB_STD_DEV },
2060    { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P },
2061    { "DVAR" , SC_OPCODE_DB_VAR },
2062    { "DVARP" , SC_OPCODE_DB_VAR_P },
2063    { "INDIRECT" , SC_OPCODE_INDIRECT },
2064    { "ADDRESS" , SC_OPCODE_ADDRESS },
2065    { "MATCH" , SC_OPCODE_MATCH },
2066    { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS },
2067    { "COUNTIF" , SC_OPCODE_COUNT_IF },
2068    { "SUMIF" , SC_OPCODE_SUM_IF },
2069    { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF },
2070    { "SUMIFS" , SC_OPCODE_SUM_IFS },
2071    { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS },
2072    { "COUNTIFS" , SC_OPCODE_COUNT_IFS },
2073    { "LOOKUP" , SC_OPCODE_LOOKUP },
2074    { "VLOOKUP" , SC_OPCODE_V_LOOKUP },
2075    { "HLOOKUP" , SC_OPCODE_H_LOOKUP },
2076    { "MULTIRANGE" , SC_OPCODE_MULTI_AREA },
2077    { "OFFSET" , SC_OPCODE_OFFSET },
2078    { "INDEX" , SC_OPCODE_INDEX },
2079    { "AREAS" , SC_OPCODE_AREAS },
2080    { "DOLLAR" , SC_OPCODE_CURRENCY },
2081    { "REPLACE" , SC_OPCODE_REPLACE },
2082    { "FIXED" , SC_OPCODE_FIXED },
2083    { "FIND" , SC_OPCODE_FIND },
2084    { "EXACT" , SC_OPCODE_EXACT },
2085    { "LEFT" , SC_OPCODE_LEFT },
2086    { "RIGHT" , SC_OPCODE_RIGHT },
2087    { "SEARCH" , SC_OPCODE_SEARCH },
2088    { "MID" , SC_OPCODE_MID },
2089    { "LENB" , SC_OPCODE_LENB },
2090    { "RIGHTB" , SC_OPCODE_RIGHTB },
2091    { "LEFTB" , SC_OPCODE_LEFTB },
2092    { "REPLACEB" , SC_OPCODE_REPLACEB },
2093    { "FINDB" , SC_OPCODE_FINDB },
2094    { "SEARCHB" , SC_OPCODE_SEARCHB },
2095    { "MIDB" , SC_OPCODE_MIDB },
2096    { "TEXT" , SC_OPCODE_TEXT },
2097    { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE },
2098    { "REPT" , SC_OPCODE_REPT },
2099    { "CONCATENATE" , SC_OPCODE_CONCAT },
2100    { "CONCAT" , SC_OPCODE_CONCAT_MS },
2101    { "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS },
2102    { "IFS" , SC_OPCODE_IFS_MS },
2103    { "SWITCH" , SC_OPCODE_SWITCH_MS },
2104    { "MINIFS" , SC_OPCODE_MINIFS_MS },
2105    { "MAXIFS" , SC_OPCODE_MAXIFS_MS },
2106    { "MVALUE" , SC_OPCODE_MAT_VALUE },
2107    { "MDETERM" , SC_OPCODE_MAT_DET },
2108    { "MINVERSE" , SC_OPCODE_MAT_INV },
2109    { "MMULT" , SC_OPCODE_MAT_MULT },
2110    { "TRANSPOSE" , SC_OPCODE_MAT_TRANS },
2111    { "MUNIT" , SC_OPCODE_MATRIX_UNIT },
2112    { "GOALSEEK" , SC_OPCODE_BACK_SOLVER },
2113    { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST },
2114    { "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS },
2115    { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST },
2116    { "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS },
2117    { "TDIST" , SC_OPCODE_T_DIST },
2118    { "T.DIST.2T" , SC_OPCODE_T_DIST_2T },
2119    { "T.DIST" , SC_OPCODE_T_DIST_MS },
2120    { "T.DIST.RT" , SC_OPCODE_T_DIST_RT },
2121    { "FDIST" , SC_OPCODE_F_DIST },
2122    { "F.DIST" , SC_OPCODE_F_DIST_LT },
2123    { "F.DIST.RT" , SC_OPCODE_F_DIST_RT },
2124    { "CHIDIST" , SC_OPCODE_CHI_DIST },
2125    { "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS },
2126    { "WEIBULL" , SC_OPCODE_WEIBULL },
2127    { "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS },
2128    { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT },
2129    { "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS },
2130    { "CRITBINOM" , SC_OPCODE_CRIT_BINOM },
2131    { "BINOM.INV" , SC_OPCODE_BINOM_INV },
2132    { "KURT" , SC_OPCODE_KURT },
2133    { "HARMEAN" , SC_OPCODE_HAR_MEAN },
2134    { "GEOMEAN" , SC_OPCODE_GEO_MEAN },
2135    { "STANDARDIZE" , SC_OPCODE_STANDARD },
2136    { "AVEDEV" , SC_OPCODE_AVE_DEV },
2137    { "SKEW" , SC_OPCODE_SKEW },
2138    { "SKEWP" , SC_OPCODE_SKEWP },
2139    { "DEVSQ" , SC_OPCODE_DEV_SQ },
2140    { "MEDIAN" , SC_OPCODE_MEDIAN },
2141    { "MODE" , SC_OPCODE_MODAL_VALUE },
2142    { "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS },
2143    { "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI },
2144    { "ZTEST" , SC_OPCODE_Z_TEST },
2145    { "Z.TEST" , SC_OPCODE_Z_TEST_MS },
2146    { "AGGREGATE" , SC_OPCODE_AGGREGATE },
2147    { "TTEST" , SC_OPCODE_T_TEST },
2148    { "T.TEST" , SC_OPCODE_T_TEST_MS },
2149    { "RANK" , SC_OPCODE_RANK },
2150    { "PERCENTILE" , SC_OPCODE_PERCENTILE },
2151    { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK },
2152    { "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC },
2153    { "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC },
2154    { "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC },
2155    { "RANK.EQ" , SC_OPCODE_RANK_EQ },
2156    { "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC },
2157    { "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC },
2158    { "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC },
2159    { "RANK.AVG" , SC_OPCODE_RANK_AVG },
2160    { "LARGE" , SC_OPCODE_LARGE },
2161    { "SMALL" , SC_OPCODE_SMALL },
2162    { "FREQUENCY" , SC_OPCODE_FREQUENCY },
2163    { "QUARTILE" , SC_OPCODE_QUARTILE },
2164    { "NORMINV" , SC_OPCODE_NORM_INV },
2165    { "NORM.INV" , SC_OPCODE_NORM_INV_MS },
2166    { "CONFIDENCE" , SC_OPCODE_CONFIDENCE },
2167    { "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N },
2168    { "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T },
2169    { "FTEST" , SC_OPCODE_F_TEST },
2170    { "F.TEST" , SC_OPCODE_F_TEST_MS },
2171    { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN },
2172    { "PROB" , SC_OPCODE_PROB },
2173    { "CORREL" , SC_OPCODE_CORREL },
2174    { "COVAR" , SC_OPCODE_COVAR },
2175    { "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P },
2176    { "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S },
2177    { "PEARSON" , SC_OPCODE_PEARSON },
2178    { "RSQ" , SC_OPCODE_RSQ },
2179    { "STEYX" , SC_OPCODE_STEYX },
2180    { "SLOPE" , SC_OPCODE_SLOPE },
2181    { "INTERCEPT" , SC_OPCODE_INTERCEPT },
2182    { "TREND" , SC_OPCODE_TREND },
2183    { "GROWTH" , SC_OPCODE_GROWTH },
2184    { "LINEST" , SC_OPCODE_LINEST },
2185    { "LOGEST" , SC_OPCODE_LOGEST },
2186    { "FORECAST" , SC_OPCODE_FORECAST },
2187    { "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD },
2188    { "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA },
2189    { "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL },
2190    { "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA },
2191    { "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM },
2192    { "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA },
2193    { "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM },
2194    { "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN },
2195    { "CHIINV" , SC_OPCODE_CHI_INV },
2196    { "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS },
2197    { "GAMMADIST" , SC_OPCODE_GAMMA_DIST },
2198    { "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS },
2199    { "GAMMAINV" , SC_OPCODE_GAMMA_INV },
2200    { "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS },
2201    { "TINV" , SC_OPCODE_T_INV },
2202    { "T.INV.2T" , SC_OPCODE_T_INV_2T },
2203    { "T.INV" , SC_OPCODE_T_INV_MS },
2204    { "FINV" , SC_OPCODE_F_INV },
2205    { "F.INV" , SC_OPCODE_F_INV_LT },
2206    { "F.INV.RT" , SC_OPCODE_F_INV_RT },
2207    { "CHITEST" , SC_OPCODE_CHI_TEST },
2208    { "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS },
2209    { "LOGINV" , SC_OPCODE_LOG_INV },
2210    { "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS },
2211    { "TABLE" , SC_OPCODE_TABLE_OP },
2212    { "BETADIST" , SC_OPCODE_BETA_DIST },
2213    { "BETAINV" , SC_OPCODE_BETA_INV },
2214    { "BETA.DIST" , SC_OPCODE_BETA_DIST_MS },
2215    { "BETA.INV" , SC_OPCODE_BETA_INV_MS },
2216    { "WEEKNUM" , SC_OPCODE_WEEK },
2217    { "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM },
2218    { "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO },
2219    { "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY },
2220    { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK },
2221    { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS },
2222    { "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS },
2223    { "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS },
2224    { "#NAME!" , SC_OPCODE_NO_NAME },
2225    { "STYLE" , SC_OPCODE_STYLE },
2226    { "DDE" , SC_OPCODE_DDE },
2227    { "BASE" , SC_OPCODE_BASE },
2228    { "DECIMAL" , SC_OPCODE_DECIMAL },
2229    { "CONVERT_OOO" , SC_OPCODE_CONVERT_OOO },
2230    { "ROMAN" , SC_OPCODE_ROMAN },
2231    { "ARABIC" , SC_OPCODE_ARABIC },
2232    { "HYPERLINK" , SC_OPCODE_HYPERLINK },
2233    { "INFO" , SC_OPCODE_INFO },
2234    { "BAHTTEXT" , SC_OPCODE_BAHTTEXT },
2235    { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA },
2236    { "EUROCONVERT" , SC_OPCODE_EUROCONVERT },
2237    { "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE },
2238    { "GAMMA" , SC_OPCODE_GAMMA },
2239    { "CHISQDIST" , SC_OPCODE_CHISQ_DIST },
2240    { "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS },
2241    { "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS },
2242    { "CHISQINV" , SC_OPCODE_CHISQ_INV },
2243    { "BITAND" , SC_OPCODE_BITAND },
2244    { "BITOR" , SC_OPCODE_BITOR },
2245    { "BITXOR" , SC_OPCODE_BITXOR },
2246    { "BITRSHIFT" , SC_OPCODE_BITRSHIFT },
2247    { "BITLSHIFT" , SC_OPCODE_BITLSHIFT },
2248    { "#NULL!" , SC_OPCODE_ERROR_NULL },
2249    { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO },
2250    { "#VALUE!" , SC_OPCODE_ERROR_VALUE },
2251    { "#REF!" , SC_OPCODE_ERROR_REF },
2252    { "#NAME?" , SC_OPCODE_ERROR_NAME },
2253    { "#NUM!" , SC_OPCODE_ERROR_NUM },
2254    { "#N/A" , SC_OPCODE_ERROR_NA },
2255    /* END defined ERROR.TYPE() values. */
2256    { "FILTERXML" , SC_OPCODE_FILTERXML },
2257    { "WEBSERVICE" , SC_OPCODE_WEBSERVICE },
2258    { "COLOR" , SC_OPCODE_COLOR },
2259    { "ERF.PRECISE" , SC_OPCODE_ERF_MS },
2260    { "ERFC.PRECISE" , SC_OPCODE_ERFC_MS },
2261    { "ENCODEURL" , SC_OPCODE_ENCODEURL },
2262    { "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT },
2263    { "ROUNDSIG" , SC_OPCODE_ROUNDSIG },
2264    { "REGEX" , SC_OPCODE_REGEX },
2265    { "FOURIER", SC_OPCODE_FOURIER },
2266    { "RAND.NV" , SC_OPCODE_RANDOM_NV },
2267    { "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV },
2268    { nullptr, -1 }
2269};
2270
2271/** Function names that can be localized if [en-US]. Same names should be used
2272    in RID_STRLIST_FUNCTION_NAMES_ENGLISH above. Names can be changed, the
2273    change has to be mentioned in the release notes, i.e.
2274    https://wiki.documentfoundation.org/ReleaseNotes/...
2275 */
2276const std::pair<const char*, int> RID_STRLIST_FUNCTION_NAMES[] =
2277{
2278    { NC_("RID_STRLIST_FUNCTION_NAMES", "IF") , SC_OPCODE_IF },
2279    { NC_("RID_STRLIST_FUNCTION_NAMES", "IFERROR") , SC_OPCODE_IF_ERROR },
2280    { NC_("RID_STRLIST_FUNCTION_NAMES", "IFNA") , SC_OPCODE_IF_NA },
2281    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHOOSE") , SC_OPCODE_CHOOSE },
2282    /* L10n: preserve the leading '#' hash character in translations. */
2283    { NC_("RID_STRLIST_FUNCTION_NAMES", "#All") , SC_OPCODE_TABLE_REF_ITEM_ALL },
2284    /* L10n: preserve the leading '#' hash character in translations. */
2285    { NC_("RID_STRLIST_FUNCTION_NAMES", "#Headers") , SC_OPCODE_TABLE_REF_ITEM_HEADERS },
2286    /* L10n: preserve the leading '#' hash character in translations. */
2287    { NC_("RID_STRLIST_FUNCTION_NAMES", "#Data") , SC_OPCODE_TABLE_REF_ITEM_DATA },
2288    /* L10n: preserve the leading '#' hash character in translations. */
2289    { NC_("RID_STRLIST_FUNCTION_NAMES", "#Totals") , SC_OPCODE_TABLE_REF_ITEM_TOTALS },
2290    /* L10n: preserve the leading '#' hash character in translations. */
2291    { NC_("RID_STRLIST_FUNCTION_NAMES", "#This Row") , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW },
2292    { NC_("RID_STRLIST_FUNCTION_NAMES", "AND") , SC_OPCODE_AND },
2293    { NC_("RID_STRLIST_FUNCTION_NAMES", "OR") , SC_OPCODE_OR },
2294    { NC_("RID_STRLIST_FUNCTION_NAMES", "XOR") , SC_OPCODE_XOR },
2295    { NC_("RID_STRLIST_FUNCTION_NAMES", "NOT") , SC_OPCODE_NOT },
2296    { NC_("RID_STRLIST_FUNCTION_NAMES", "NEG") , SC_OPCODE_NEG },
2297    { NC_("RID_STRLIST_FUNCTION_NAMES", "PI") , SC_OPCODE_PI }, // ???
2298    { NC_("RID_STRLIST_FUNCTION_NAMES", "RAND") , SC_OPCODE_RANDOM },
2299    { NC_("RID_STRLIST_FUNCTION_NAMES", "TRUE") , SC_OPCODE_TRUE },
2300    { NC_("RID_STRLIST_FUNCTION_NAMES", "FALSE") , SC_OPCODE_FALSE },
2301    { NC_("RID_STRLIST_FUNCTION_NAMES", "TODAY") , SC_OPCODE_GET_ACT_DATE },
2302    { NC_("RID_STRLIST_FUNCTION_NAMES", "NOW") , SC_OPCODE_GET_ACT_TIME },
2303    { NC_("RID_STRLIST_FUNCTION_NAMES", "NA") , SC_OPCODE_NO_VALUE },
2304    { NC_("RID_STRLIST_FUNCTION_NAMES", "CURRENT") , SC_OPCODE_CURRENT },
2305    { NC_("RID_STRLIST_FUNCTION_NAMES", "DEGREES") , SC_OPCODE_DEG },
2306    { NC_("RID_STRLIST_FUNCTION_NAMES", "RADIANS") , SC_OPCODE_RAD },
2307    { NC_("RID_STRLIST_FUNCTION_NAMES", "SIN") , SC_OPCODE_SIN },
2308    { NC_("RID_STRLIST_FUNCTION_NAMES", "COS") , SC_OPCODE_COS },
2309    { NC_("RID_STRLIST_FUNCTION_NAMES", "TAN") , SC_OPCODE_TAN },
2310    { NC_("RID_STRLIST_FUNCTION_NAMES", "COT") , SC_OPCODE_COT },
2311    { NC_("RID_STRLIST_FUNCTION_NAMES", "ASIN") , SC_OPCODE_ARC_SIN },
2312    { NC_("RID_STRLIST_FUNCTION_NAMES", "ACOS") , SC_OPCODE_ARC_COS },
2313    { NC_("RID_STRLIST_FUNCTION_NAMES", "ATAN") , SC_OPCODE_ARC_TAN },
2314    { NC_("RID_STRLIST_FUNCTION_NAMES", "ACOT") , SC_OPCODE_ARC_COT },
2315    { NC_("RID_STRLIST_FUNCTION_NAMES", "SINH") , SC_OPCODE_SIN_HYP },
2316    { NC_("RID_STRLIST_FUNCTION_NAMES", "COSH") , SC_OPCODE_COS_HYP },
2317    { NC_("RID_STRLIST_FUNCTION_NAMES", "TANH") , SC_OPCODE_TAN_HYP },
2318    { NC_("RID_STRLIST_FUNCTION_NAMES", "COTH") , SC_OPCODE_COT_HYP },
2319    { NC_("RID_STRLIST_FUNCTION_NAMES", "ASINH") , SC_OPCODE_ARC_SIN_HYP },
2320    { NC_("RID_STRLIST_FUNCTION_NAMES", "ACOSH") , SC_OPCODE_ARC_COS_HYP },
2321    { NC_("RID_STRLIST_FUNCTION_NAMES", "ATANH") , SC_OPCODE_ARC_TAN_HYP },
2322    { NC_("RID_STRLIST_FUNCTION_NAMES", "ACOTH") , SC_OPCODE_ARC_COT_HYP },
2323    { NC_("RID_STRLIST_FUNCTION_NAMES", "CSC") , SC_OPCODE_COSECANT },
2324    { NC_("RID_STRLIST_FUNCTION_NAMES", "SEC") , SC_OPCODE_SECANT },
2325    { NC_("RID_STRLIST_FUNCTION_NAMES", "CSCH") , SC_OPCODE_COSECANT_HYP },
2326    { NC_("RID_STRLIST_FUNCTION_NAMES", "SECH") , SC_OPCODE_SECANT_HYP },
2327    { NC_("RID_STRLIST_FUNCTION_NAMES", "EXP") , SC_OPCODE_EXP },
2328    { NC_("RID_STRLIST_FUNCTION_NAMES", "LN") , SC_OPCODE_LN },
2329    { NC_("RID_STRLIST_FUNCTION_NAMES", "SQRT") , SC_OPCODE_SQRT },
2330    { NC_("RID_STRLIST_FUNCTION_NAMES", "FACT") , SC_OPCODE_FACT },
2331    { NC_("RID_STRLIST_FUNCTION_NAMES", "YEAR") , SC_OPCODE_GET_YEAR },
2332    { NC_("RID_STRLIST_FUNCTION_NAMES", "MONTH") , SC_OPCODE_GET_MONTH },
2333    { NC_("RID_STRLIST_FUNCTION_NAMES", "DAY") , SC_OPCODE_GET_DAY },
2334    { NC_("RID_STRLIST_FUNCTION_NAMES", "HOUR") , SC_OPCODE_GET_HOUR },
2335    { NC_("RID_STRLIST_FUNCTION_NAMES", "MINUTE") , SC_OPCODE_GET_MIN },
2336    { NC_("RID_STRLIST_FUNCTION_NAMES", "SECOND") , SC_OPCODE_GET_SEC },
2337    { NC_("RID_STRLIST_FUNCTION_NAMES", "SIGN") , SC_OPCODE_PLUS_MINUS },
2338    { NC_("RID_STRLIST_FUNCTION_NAMES", "ABS") , SC_OPCODE_ABS },
2339    { NC_("RID_STRLIST_FUNCTION_NAMES", "INT") , SC_OPCODE_INT },
2340    { NC_("RID_STRLIST_FUNCTION_NAMES", "PHI") , SC_OPCODE_PHI },
2341    { NC_("RID_STRLIST_FUNCTION_NAMES", "GAUSS") , SC_OPCODE_GAUSS },
2342    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISBLANK") , SC_OPCODE_IS_EMPTY },
2343    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISTEXT") , SC_OPCODE_IS_STRING },
2344    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISNONTEXT") , SC_OPCODE_IS_NON_STRING },
2345    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISLOGICAL") , SC_OPCODE_IS_LOGICAL },
2346    { NC_("RID_STRLIST_FUNCTION_NAMES", "TYPE") , SC_OPCODE_TYPE },
2347    { NC_("RID_STRLIST_FUNCTION_NAMES", "CELL") , SC_OPCODE_CELL },
2348    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISREF") , SC_OPCODE_IS_REF },
2349    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISNUMBER") , SC_OPCODE_IS_VALUE },
2350    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISFORMULA") , SC_OPCODE_IS_FORMULA },
2351    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISNA") , SC_OPCODE_IS_NV },
2352    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISERR") , SC_OPCODE_IS_ERR },
2353    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISERROR") , SC_OPCODE_IS_ERROR },
2354    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISEVEN") , SC_OPCODE_IS_EVEN },
2355    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISODD") , SC_OPCODE_IS_ODD },
2356    { NC_("RID_STRLIST_FUNCTION_NAMES", "N") , SC_OPCODE_N },
2357    { NC_("RID_STRLIST_FUNCTION_NAMES", "DATEVALUE") , SC_OPCODE_GET_DATE_VALUE },
2358    { NC_("RID_STRLIST_FUNCTION_NAMES", "TIMEVALUE") , SC_OPCODE_GET_TIME_VALUE },
2359    { NC_("RID_STRLIST_FUNCTION_NAMES", "CODE") , SC_OPCODE_CODE },
2360    { NC_("RID_STRLIST_FUNCTION_NAMES", "TRIM") , SC_OPCODE_TRIM },
2361    { NC_("RID_STRLIST_FUNCTION_NAMES", "UPPER") , SC_OPCODE_UPPER },
2362    { NC_("RID_STRLIST_FUNCTION_NAMES", "PROPER") , SC_OPCODE_PROPER },
2363    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOWER") , SC_OPCODE_LOWER },
2364    { NC_("RID_STRLIST_FUNCTION_NAMES", "LEN") , SC_OPCODE_LEN },
2365    { NC_("RID_STRLIST_FUNCTION_NAMES", "T") , SC_OPCODE_T },
2366    { NC_("RID_STRLIST_FUNCTION_NAMES", "VALUE") , SC_OPCODE_VALUE },
2367    { NC_("RID_STRLIST_FUNCTION_NAMES", "CLEAN") , SC_OPCODE_CLEAN },
2368    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHAR") , SC_OPCODE_CHAR },
2369    { NC_("RID_STRLIST_FUNCTION_NAMES", "JIS") , SC_OPCODE_JIS },
2370    { NC_("RID_STRLIST_FUNCTION_NAMES", "ASC") , SC_OPCODE_ASC },
2371    { NC_("RID_STRLIST_FUNCTION_NAMES", "UNICODE") , SC_OPCODE_UNICODE },
2372    { NC_("RID_STRLIST_FUNCTION_NAMES", "UNICHAR") , SC_OPCODE_UNICHAR },
2373    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOG10") , SC_OPCODE_LOG10 },
2374    { NC_("RID_STRLIST_FUNCTION_NAMES", "EVEN") , SC_OPCODE_EVEN },
2375    { NC_("RID_STRLIST_FUNCTION_NAMES", "ODD") , SC_OPCODE_ODD },
2376    { NC_("RID_STRLIST_FUNCTION_NAMES", "NORMSDIST") , SC_OPCODE_STD_NORM_DIST },
2377    { NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.S.DIST") , SC_OPCODE_STD_NORM_DIST_MS },
2378    { NC_("RID_STRLIST_FUNCTION_NAMES", "FISHER") , SC_OPCODE_FISHER },
2379    { NC_("RID_STRLIST_FUNCTION_NAMES", "FISHERINV") , SC_OPCODE_FISHER_INV },
2380    { NC_("RID_STRLIST_FUNCTION_NAMES", "NORMSINV") , SC_OPCODE_S_NORM_INV },
2381    { NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.S.INV") , SC_OPCODE_S_NORM_INV_MS },
2382    { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMALN") , SC_OPCODE_GAMMA_LN },
2383    { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMALN.PRECISE") , SC_OPCODE_GAMMA_LN_MS },
2384    { NC_("RID_STRLIST_FUNCTION_NAMES", "ERRORTYPE") , SC_OPCODE_ERROR_TYPE },
2385    { NC_("RID_STRLIST_FUNCTION_NAMES", "ERROR.TYPE") , SC_OPCODE_ERROR_TYPE_ODF },
2386    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORMULA") , SC_OPCODE_FORMULA },
2387    { NC_("RID_STRLIST_FUNCTION_NAMES", "ARABIC") , SC_OPCODE_ARABIC },
2388    { NC_("RID_STRLIST_FUNCTION_NAMES", "ATAN2") , SC_OPCODE_ARC_TAN_2 },
2389    { NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.MATH") , SC_OPCODE_CEIL_MATH },
2390    { NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING") , SC_OPCODE_CEIL },
2391    { NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.XCL") , SC_OPCODE_CEIL_MS },
2392    { NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.PRECISE") , SC_OPCODE_CEIL_PRECISE },
2393    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISO.CEILING") , SC_OPCODE_CEIL_ISO },
2394    { NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR") , SC_OPCODE_FLOOR },
2395    { NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.XCL") , SC_OPCODE_FLOOR_MS },
2396    { NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.MATH") , SC_OPCODE_FLOOR_MATH },
2397    { NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.PRECISE") , SC_OPCODE_FLOOR_PRECISE },
2398    { NC_("RID_STRLIST_FUNCTION_NAMES", "ROUND") , SC_OPCODE_ROUND },
2399    { NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDUP") , SC_OPCODE_ROUND_UP },
2400    { NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDDOWN") , SC_OPCODE_ROUND_DOWN },
2401    { NC_("RID_STRLIST_FUNCTION_NAMES", "TRUNC") , SC_OPCODE_TRUNC },
2402    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOG") , SC_OPCODE_LOG },
2403    { NC_("RID_STRLIST_FUNCTION_NAMES", "POWER") , SC_OPCODE_POWER },
2404    { NC_("RID_STRLIST_FUNCTION_NAMES", "GCD") , SC_OPCODE_GCD },
2405    { NC_("RID_STRLIST_FUNCTION_NAMES", "LCM") , SC_OPCODE_LCM },
2406    { NC_("RID_STRLIST_FUNCTION_NAMES", "MOD") , SC_OPCODE_MOD },
2407    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMPRODUCT") , SC_OPCODE_SUM_PRODUCT },
2408    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMSQ") , SC_OPCODE_SUM_SQ },
2409    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMX2MY2") , SC_OPCODE_SUM_X2MY2 },
2410    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMX2PY2") , SC_OPCODE_SUM_X2DY2 },
2411    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMXMY2") , SC_OPCODE_SUM_XMY2 },
2412    { NC_("RID_STRLIST_FUNCTION_NAMES", "DATE") , SC_OPCODE_GET_DATE },
2413    { NC_("RID_STRLIST_FUNCTION_NAMES", "TIME") , SC_OPCODE_GET_TIME },
2414    { NC_("RID_STRLIST_FUNCTION_NAMES", "DAYS") , SC_OPCODE_GET_DIFF_DATE },
2415    { NC_("RID_STRLIST_FUNCTION_NAMES", "DAYS360") , SC_OPCODE_GET_DIFF_DATE_360 },
2416    { NC_("RID_STRLIST_FUNCTION_NAMES", "DATEDIF") , SC_OPCODE_GET_DATEDIF },
2417    { NC_("RID_STRLIST_FUNCTION_NAMES", "MIN") , SC_OPCODE_MIN },
2418    { NC_("RID_STRLIST_FUNCTION_NAMES", "MINA") , SC_OPCODE_MIN_A },
2419    { NC_("RID_STRLIST_FUNCTION_NAMES", "MAX") , SC_OPCODE_MAX },
2420    { NC_("RID_STRLIST_FUNCTION_NAMES", "MAXA") , SC_OPCODE_MAX_A },
2421    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUM") , SC_OPCODE_SUM },
2422    { NC_("RID_STRLIST_FUNCTION_NAMES", "PRODUCT") , SC_OPCODE_PRODUCT },
2423    { NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGE") , SC_OPCODE_AVERAGE },
2424    { NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEA") , SC_OPCODE_AVERAGE_A },
2425    { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNT") , SC_OPCODE_COUNT },
2426    { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTA") , SC_OPCODE_COUNT_2 },
2427    { NC_("RID_STRLIST_FUNCTION_NAMES", "NPV") , SC_OPCODE_NPV },
2428    { NC_("RID_STRLIST_FUNCTION_NAMES", "IRR") , SC_OPCODE_IRR },
2429    { NC_("RID_STRLIST_FUNCTION_NAMES", "MIRR") , SC_OPCODE_MIRR },
2430    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISPMT") , SC_OPCODE_ISPMT },
2431    { NC_("RID_STRLIST_FUNCTION_NAMES", "VAR") , SC_OPCODE_VAR },
2432    { NC_("RID_STRLIST_FUNCTION_NAMES", "VARA") , SC_OPCODE_VAR_A },
2433    { NC_("RID_STRLIST_FUNCTION_NAMES", "VARP") , SC_OPCODE_VAR_P },
2434    { NC_("RID_STRLIST_FUNCTION_NAMES", "VARPA") , SC_OPCODE_VAR_P_A },
2435    { NC_("RID_STRLIST_FUNCTION_NAMES", "VAR.P") , SC_OPCODE_VAR_P_MS },
2436    { NC_("RID_STRLIST_FUNCTION_NAMES", "VAR.S") , SC_OPCODE_VAR_S },
2437    { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV") , SC_OPCODE_ST_DEV },
2438    { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVA") , SC_OPCODE_ST_DEV_A },
2439    { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVP") , SC_OPCODE_ST_DEV_P },
2440    { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVPA") , SC_OPCODE_ST_DEV_P_A },
2441    { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV.P") , SC_OPCODE_ST_DEV_P_MS },
2442    { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV.S") , SC_OPCODE_ST_DEV_S },
2443    { NC_("RID_STRLIST_FUNCTION_NAMES", "B") , SC_OPCODE_B },
2444    { NC_("RID_STRLIST_FUNCTION_NAMES", "NORMDIST") , SC_OPCODE_NORM_DIST },
2445    { NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.DIST") , SC_OPCODE_NORM_DIST_MS },
2446    { NC_("RID_STRLIST_FUNCTION_NAMES", "EXPONDIST") , SC_OPCODE_EXP_DIST },
2447    { NC_("RID_STRLIST_FUNCTION_NAMES", "EXPON.DIST") , SC_OPCODE_EXP_DIST_MS },
2448    { NC_("RID_STRLIST_FUNCTION_NAMES", "BINOMDIST") , SC_OPCODE_BINOM_DIST },
2449    { NC_("RID_STRLIST_FUNCTION_NAMES", "BINOM.DIST") , SC_OPCODE_BINOM_DIST_MS },
2450    { NC_("RID_STRLIST_FUNCTION_NAMES", "POISSON") , SC_OPCODE_POISSON_DIST },
2451    { NC_("RID_STRLIST_FUNCTION_NAMES", "POISSON.DIST") , SC_OPCODE_POISSON_DIST_MS },
2452    { NC_("RID_STRLIST_FUNCTION_NAMES", "COMBIN") , SC_OPCODE_COMBIN },
2453    { NC_("RID_STRLIST_FUNCTION_NAMES", "COMBINA") , SC_OPCODE_COMBIN_A },
2454    { NC_("RID_STRLIST_FUNCTION_NAMES", "PERMUT") , SC_OPCODE_PERMUT },
2455    { NC_("RID_STRLIST_FUNCTION_NAMES", "PERMUTATIONA") , SC_OPCODE_PERMUTATION_A },
2456    { NC_("RID_STRLIST_FUNCTION_NAMES", "PV") , SC_OPCODE_PV },
2457    { NC_("RID_STRLIST_FUNCTION_NAMES", "SYD") , SC_OPCODE_SYD },
2458    { NC_("RID_STRLIST_FUNCTION_NAMES", "DDB") , SC_OPCODE_DDB },
2459    { NC_("RID_STRLIST_FUNCTION_NAMES", "DB") , SC_OPCODE_DB },
2460    { NC_("RID_STRLIST_FUNCTION_NAMES", "VDB") , SC_OPCODE_VBD },
2461    { NC_("RID_STRLIST_FUNCTION_NAMES", "PDURATION") , SC_OPCODE_PDURATION },
2462    { NC_("RID_STRLIST_FUNCTION_NAMES", "SLN") , SC_OPCODE_SLN },
2463    { NC_("RID_STRLIST_FUNCTION_NAMES", "PMT") , SC_OPCODE_PMT },
2464    { NC_("RID_STRLIST_FUNCTION_NAMES", "COLUMNS") , SC_OPCODE_COLUMNS },
2465    { NC_("RID_STRLIST_FUNCTION_NAMES", "ROWS") , SC_OPCODE_ROWS },
2466    { NC_("RID_STRLIST_FUNCTION_NAMES", "SHEETS") , SC_OPCODE_SHEETS },
2467    { NC_("RID_STRLIST_FUNCTION_NAMES", "COLUMN") , SC_OPCODE_COLUMN },
2468    { NC_("RID_STRLIST_FUNCTION_NAMES", "ROW") , SC_OPCODE_ROW },
2469    { NC_("RID_STRLIST_FUNCTION_NAMES", "SHEET") , SC_OPCODE_SHEET },
2470    { NC_("RID_STRLIST_FUNCTION_NAMES", "RRI") , SC_OPCODE_RRI },
2471    { NC_("RID_STRLIST_FUNCTION_NAMES", "FV") , SC_OPCODE_FV },
2472    { NC_("RID_STRLIST_FUNCTION_NAMES", "NPER") , SC_OPCODE_NPER },
2473    { NC_("RID_STRLIST_FUNCTION_NAMES", "RATE") , SC_OPCODE_RATE },
2474    { NC_("RID_STRLIST_FUNCTION_NAMES", "IPMT") , SC_OPCODE_IPMT },
2475    { NC_("RID_STRLIST_FUNCTION_NAMES", "PPMT") , SC_OPCODE_PPMT },
2476    { NC_("RID_STRLIST_FUNCTION_NAMES", "CUMIPMT") , SC_OPCODE_CUM_IPMT },
2477    { NC_("RID_STRLIST_FUNCTION_NAMES", "CUMPRINC") , SC_OPCODE_CUM_PRINC },
2478    { NC_("RID_STRLIST_FUNCTION_NAMES", "EFFECT") , SC_OPCODE_EFFECT },
2479    { NC_("RID_STRLIST_FUNCTION_NAMES", "NOMINAL") , SC_OPCODE_NOMINAL },
2480    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUBTOTAL") , SC_OPCODE_SUB_TOTAL },
2481    { NC_("RID_STRLIST_FUNCTION_NAMES", "DSUM") , SC_OPCODE_DB_SUM },
2482    { NC_("RID_STRLIST_FUNCTION_NAMES", "DCOUNT") , SC_OPCODE_DB_COUNT },
2483    { NC_("RID_STRLIST_FUNCTION_NAMES", "DCOUNTA") , SC_OPCODE_DB_COUNT_2 },
2484    { NC_("RID_STRLIST_FUNCTION_NAMES", "DAVERAGE") , SC_OPCODE_DB_AVERAGE },
2485    { NC_("RID_STRLIST_FUNCTION_NAMES", "DGET") , SC_OPCODE_DB_GET },
2486    { NC_("RID_STRLIST_FUNCTION_NAMES", "DMAX") , SC_OPCODE_DB_MAX },
2487    { NC_("RID_STRLIST_FUNCTION_NAMES", "DMIN") , SC_OPCODE_DB_MIN },
2488    { NC_("RID_STRLIST_FUNCTION_NAMES", "DPRODUCT") , SC_OPCODE_DB_PRODUCT },
2489    { NC_("RID_STRLIST_FUNCTION_NAMES", "DSTDEV") , SC_OPCODE_DB_STD_DEV },
2490    { NC_("RID_STRLIST_FUNCTION_NAMES", "DSTDEVP") , SC_OPCODE_DB_STD_DEV_P },
2491    { NC_("RID_STRLIST_FUNCTION_NAMES", "DVAR") , SC_OPCODE_DB_VAR },
2492    { NC_("RID_STRLIST_FUNCTION_NAMES", "DVARP") , SC_OPCODE_DB_VAR_P },
2493    { NC_("RID_STRLIST_FUNCTION_NAMES", "INDIRECT") , SC_OPCODE_INDIRECT },
2494    { NC_("RID_STRLIST_FUNCTION_NAMES", "ADDRESS") , SC_OPCODE_ADDRESS },
2495    { NC_("RID_STRLIST_FUNCTION_NAMES", "MATCH") , SC_OPCODE_MATCH },
2496    { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTBLANK") , SC_OPCODE_COUNT_EMPTY_CELLS },
2497    { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTIF") , SC_OPCODE_COUNT_IF },
2498    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMIF") , SC_OPCODE_SUM_IF },
2499    { NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEIF") , SC_OPCODE_AVERAGE_IF },
2500    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMIFS") , SC_OPCODE_SUM_IFS },
2501    { NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEIFS") , SC_OPCODE_AVERAGE_IFS },
2502    { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTIFS") , SC_OPCODE_COUNT_IFS },
2503    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOOKUP") , SC_OPCODE_LOOKUP },
2504    { NC_("RID_STRLIST_FUNCTION_NAMES", "VLOOKUP") , SC_OPCODE_V_LOOKUP },
2505    { NC_("RID_STRLIST_FUNCTION_NAMES", "HLOOKUP") , SC_OPCODE_H_LOOKUP },
2506    { NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIRANGE") , SC_OPCODE_MULTI_AREA }, // legacy for range list (union)
2507    { NC_("RID_STRLIST_FUNCTION_NAMES", "OFFSET") , SC_OPCODE_OFFSET },
2508    { NC_("RID_STRLIST_FUNCTION_NAMES", "INDEX") , SC_OPCODE_INDEX }, // ?? first character = I ??
2509    { NC_("RID_STRLIST_FUNCTION_NAMES", "AREAS") , SC_OPCODE_AREAS },
2510    { NC_("RID_STRLIST_FUNCTION_NAMES", "DOLLAR") , SC_OPCODE_CURRENCY },
2511    { NC_("RID_STRLIST_FUNCTION_NAMES", "REPLACE") , SC_OPCODE_REPLACE },
2512    { NC_("RID_STRLIST_FUNCTION_NAMES", "FIXED") , SC_OPCODE_FIXED },
2513    { NC_("RID_STRLIST_FUNCTION_NAMES", "FIND") , SC_OPCODE_FIND },
2514    { NC_("RID_STRLIST_FUNCTION_NAMES", "EXACT") , SC_OPCODE_EXACT },
2515    { NC_("RID_STRLIST_FUNCTION_NAMES", "LEFT") , SC_OPCODE_LEFT },
2516    { NC_("RID_STRLIST_FUNCTION_NAMES", "RIGHT") , SC_OPCODE_RIGHT },
2517    { NC_("RID_STRLIST_FUNCTION_NAMES", "SEARCH") , SC_OPCODE_SEARCH },
2518    { NC_("RID_STRLIST_FUNCTION_NAMES", "MID") , SC_OPCODE_MID },
2519    { NC_("RID_STRLIST_FUNCTION_NAMES", "LENB") , SC_OPCODE_LENB },
2520    { NC_("RID_STRLIST_FUNCTION_NAMES", "RIGHTB") , SC_OPCODE_RIGHTB },
2521    { NC_("RID_STRLIST_FUNCTION_NAMES", "LEFTB") , SC_OPCODE_LEFTB },
2522    { NC_("RID_STRLIST_FUNCTION_NAMES", "REPLACEB") , SC_OPCODE_REPLACEB },
2523    { NC_("RID_STRLIST_FUNCTION_NAMES", "MIDB") , SC_OPCODE_MIDB },
2524    { NC_("RID_STRLIST_FUNCTION_NAMES", "TEXT") , SC_OPCODE_TEXT },
2525    { NC_("RID_STRLIST_FUNCTION_NAMES", "SUBSTITUTE") , SC_OPCODE_SUBSTITUTE },
2526    { NC_("RID_STRLIST_FUNCTION_NAMES", "REPT") , SC_OPCODE_REPT },
2527    { NC_("RID_STRLIST_FUNCTION_NAMES", "CONCATENATE") , SC_OPCODE_CONCAT },
2528    { NC_("RID_STRLIST_FUNCTION_NAMES", "CONCAT") , SC_OPCODE_CONCAT_MS },
2529    { NC_("RID_STRLIST_FUNCTION_NAMES", "TEXTJOIN") , SC_OPCODE_TEXTJOIN_MS },
2530    { NC_("RID_STRLIST_FUNCTION_NAMES", "IFS") , SC_OPCODE_IFS_MS },
2531    { NC_("RID_STRLIST_FUNCTION_NAMES", "SWITCH") , SC_OPCODE_SWITCH_MS },
2532    { NC_("RID_STRLIST_FUNCTION_NAMES", "MINIFS") , SC_OPCODE_MINIFS_MS },
2533    { NC_("RID_STRLIST_FUNCTION_NAMES", "MAXIFS") , SC_OPCODE_MAXIFS_MS },
2534    { NC_("RID_STRLIST_FUNCTION_NAMES", "MVALUE") , SC_OPCODE_MAT_VALUE },
2535    { NC_("RID_STRLIST_FUNCTION_NAMES", "MDETERM") , SC_OPCODE_MAT_DET },
2536    { NC_("RID_STRLIST_FUNCTION_NAMES", "MINVERSE") , SC_OPCODE_MAT_INV },
2537    { NC_("RID_STRLIST_FUNCTION_NAMES", "MMULT") , SC_OPCODE_MAT_MULT },
2538    { NC_("RID_STRLIST_FUNCTION_NAMES", "TRANSPOSE") , SC_OPCODE_MAT_TRANS },
2539    { NC_("RID_STRLIST_FUNCTION_NAMES", "MUNIT") , SC_OPCODE_MATRIX_UNIT },
2540    { NC_("RID_STRLIST_FUNCTION_NAMES", "GOALSEEK") , SC_OPCODE_BACK_SOLVER },
2541    { NC_("RID_STRLIST_FUNCTION_NAMES", "HYPGEOMDIST") , SC_OPCODE_HYP_GEOM_DIST },
2542    { NC_("RID_STRLIST_FUNCTION_NAMES", "HYPGEOM.DIST") , SC_OPCODE_HYP_GEOM_DIST_MS },
2543    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORMDIST") , SC_OPCODE_LOG_NORM_DIST },
2544    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORM.DIST") , SC_OPCODE_LOG_NORM_DIST_MS },
2545    { NC_("RID_STRLIST_FUNCTION_NAMES", "TDIST") , SC_OPCODE_T_DIST },
2546    { NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST.2T") , SC_OPCODE_T_DIST_2T },
2547    { NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST") , SC_OPCODE_T_DIST_MS },
2548    { NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST.RT") , SC_OPCODE_T_DIST_RT },
2549    { NC_("RID_STRLIST_FUNCTION_NAMES", "FDIST") , SC_OPCODE_F_DIST },
2550    { NC_("RID_STRLIST_FUNCTION_NAMES", "F.DIST") , SC_OPCODE_F_DIST_LT },
2551    { NC_("RID_STRLIST_FUNCTION_NAMES", "F.DIST.RT") , SC_OPCODE_F_DIST_RT },
2552    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHIDIST") , SC_OPCODE_CHI_DIST },
2553    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.DIST.RT") , SC_OPCODE_CHI_DIST_MS },
2554    { NC_("RID_STRLIST_FUNCTION_NAMES", "WEIBULL") , SC_OPCODE_WEIBULL },
2555    { NC_("RID_STRLIST_FUNCTION_NAMES", "WEIBULL.DIST") , SC_OPCODE_WEIBULL_MS },
2556    { NC_("RID_STRLIST_FUNCTION_NAMES", "NEGBINOMDIST") , SC_OPCODE_NEG_BINOM_VERT },
2557    { NC_("RID_STRLIST_FUNCTION_NAMES", "NEGBINOM.DIST") , SC_OPCODE_NEG_BINOM_DIST_MS },
2558    { NC_("RID_STRLIST_FUNCTION_NAMES", "CRITBINOM") , SC_OPCODE_CRIT_BINOM },
2559    { NC_("RID_STRLIST_FUNCTION_NAMES", "BINOM.INV") , SC_OPCODE_BINOM_INV },
2560    { NC_("RID_STRLIST_FUNCTION_NAMES", "KURT") , SC_OPCODE_KURT },
2561    { NC_("RID_STRLIST_FUNCTION_NAMES", "HARMEAN") , SC_OPCODE_HAR_MEAN },
2562    { NC_("RID_STRLIST_FUNCTION_NAMES", "GEOMEAN") , SC_OPCODE_GEO_MEAN },
2563    { NC_("RID_STRLIST_FUNCTION_NAMES", "STANDARDIZE") , SC_OPCODE_STANDARD },
2564    { NC_("RID_STRLIST_FUNCTION_NAMES", "AVEDEV") , SC_OPCODE_AVE_DEV },
2565    { NC_("RID_STRLIST_FUNCTION_NAMES", "SKEW") , SC_OPCODE_SKEW },
2566    { NC_("RID_STRLIST_FUNCTION_NAMES", "SKEWP") , SC_OPCODE_SKEWP },
2567    { NC_("RID_STRLIST_FUNCTION_NAMES", "DEVSQ") , SC_OPCODE_DEV_SQ },
2568    { NC_("RID_STRLIST_FUNCTION_NAMES", "MEDIAN") , SC_OPCODE_MEDIAN },
2569    { NC_("RID_STRLIST_FUNCTION_NAMES", "MODE") , SC_OPCODE_MODAL_VALUE },
2570    { NC_("RID_STRLIST_FUNCTION_NAMES", "MODE.SNGL") , SC_OPCODE_MODAL_VALUE_MS },
2571    { NC_("RID_STRLIST_FUNCTION_NAMES", "MODE.MULT") , SC_OPCODE_MODAL_VALUE_MULTI },
2572    { NC_("RID_STRLIST_FUNCTION_NAMES", "ZTEST") , SC_OPCODE_Z_TEST },
2573    { NC_("RID_STRLIST_FUNCTION_NAMES", "Z.TEST") , SC_OPCODE_Z_TEST_MS },
2574    { NC_("RID_STRLIST_FUNCTION_NAMES", "AGGREGATE") , SC_OPCODE_AGGREGATE },
2575    { NC_("RID_STRLIST_FUNCTION_NAMES", "TTEST") , SC_OPCODE_T_TEST },
2576    { NC_("RID_STRLIST_FUNCTION_NAMES", "T.TEST") , SC_OPCODE_T_TEST_MS },
2577    { NC_("RID_STRLIST_FUNCTION_NAMES", "RANK") , SC_OPCODE_RANK },
2578    { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE") , SC_OPCODE_PERCENTILE },
2579    { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK") , SC_OPCODE_PERCENT_RANK },
2580    { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE.INC") , SC_OPCODE_PERCENTILE_INC },
2581    { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK.INC") , SC_OPCODE_PERCENT_RANK_INC },
2582    { NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE.INC") , SC_OPCODE_QUARTILE_INC },
2583    { NC_("RID_STRLIST_FUNCTION_NAMES", "RANK.EQ") , SC_OPCODE_RANK_EQ },
2584    { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE.EXC") , SC_OPCODE_PERCENTILE_EXC },
2585    { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK.EXC") , SC_OPCODE_PERCENT_RANK_EXC },
2586    { NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE.EXC") , SC_OPCODE_QUARTILE_EXC },
2587    { NC_("RID_STRLIST_FUNCTION_NAMES", "RANK.AVG") , SC_OPCODE_RANK_AVG },
2588    { NC_("RID_STRLIST_FUNCTION_NAMES", "LARGE") , SC_OPCODE_LARGE },
2589    { NC_("RID_STRLIST_FUNCTION_NAMES", "SMALL") , SC_OPCODE_SMALL },
2590    { NC_("RID_STRLIST_FUNCTION_NAMES", "FREQUENCY") , SC_OPCODE_FREQUENCY },
2591    { NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE") , SC_OPCODE_QUARTILE },
2592    { NC_("RID_STRLIST_FUNCTION_NAMES", "NORMINV") , SC_OPCODE_NORM_INV },
2593    { NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.INV") , SC_OPCODE_NORM_INV_MS },
2594    { NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE") , SC_OPCODE_CONFIDENCE },
2595    { NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE.NORM") , SC_OPCODE_CONFIDENCE_N },
2596    { NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE.T") , SC_OPCODE_CONFIDENCE_T },
2597    { NC_("RID_STRLIST_FUNCTION_NAMES", "FTEST") , SC_OPCODE_F_TEST },
2598    { NC_("RID_STRLIST_FUNCTION_NAMES", "F.TEST") , SC_OPCODE_F_TEST_MS },
2599    { NC_("RID_STRLIST_FUNCTION_NAMES", "TRIMMEAN") , SC_OPCODE_TRIM_MEAN },
2600    { NC_("RID_STRLIST_FUNCTION_NAMES", "PROB") , SC_OPCODE_PROB },
2601    { NC_("RID_STRLIST_FUNCTION_NAMES", "CORREL") , SC_OPCODE_CORREL },
2602    { NC_("RID_STRLIST_FUNCTION_NAMES", "COVAR") , SC_OPCODE_COVAR },
2603    { NC_("RID_STRLIST_FUNCTION_NAMES", "COVARIANCE.P") , SC_OPCODE_COVARIANCE_P },
2604    { NC_("RID_STRLIST_FUNCTION_NAMES", "COVARIANCE.S") , SC_OPCODE_COVARIANCE_S },
2605    { NC_("RID_STRLIST_FUNCTION_NAMES", "PEARSON") , SC_OPCODE_PEARSON },
2606    { NC_("RID_STRLIST_FUNCTION_NAMES", "RSQ") , SC_OPCODE_RSQ },
2607    { NC_("RID_STRLIST_FUNCTION_NAMES", "STEYX") , SC_OPCODE_STEYX },
2608    { NC_("RID_STRLIST_FUNCTION_NAMES", "SLOPE") , SC_OPCODE_SLOPE },
2609    { NC_("RID_STRLIST_FUNCTION_NAMES", "INTERCEPT") , SC_OPCODE_INTERCEPT },
2610    { NC_("RID_STRLIST_FUNCTION_NAMES", "TREND") , SC_OPCODE_TREND },
2611    { NC_("RID_STRLIST_FUNCTION_NAMES", "GROWTH") , SC_OPCODE_GROWTH },
2612    { NC_("RID_STRLIST_FUNCTION_NAMES", "LINEST") , SC_OPCODE_LINEST },
2613    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGEST") , SC_OPCODE_LOGEST },
2614    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST") , SC_OPCODE_FORECAST },
2615    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.ADD") , SC_OPCODE_FORECAST_ETS_ADD },
2616    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.SEASONALITY") , SC_OPCODE_FORECAST_ETS_SEA },
2617    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.MULT") , SC_OPCODE_FORECAST_ETS_MUL },
2618    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.PI.ADD") , SC_OPCODE_FORECAST_ETS_PIA },
2619    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.PI.MULT") , SC_OPCODE_FORECAST_ETS_PIM },
2620    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.STAT.ADD") , SC_OPCODE_FORECAST_ETS_STA },
2621    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.STAT.MULT") , SC_OPCODE_FORECAST_ETS_STM },
2622    { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.LINEAR") , SC_OPCODE_FORECAST_LIN },
2623    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHIINV") , SC_OPCODE_CHI_INV },
2624    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.INV.RT") , SC_OPCODE_CHI_INV_MS },
2625    { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMADIST") , SC_OPCODE_GAMMA_DIST },
2626    { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA.DIST") , SC_OPCODE_GAMMA_DIST_MS },
2627    { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMAINV") , SC_OPCODE_GAMMA_INV },
2628    { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA.INV") , SC_OPCODE_GAMMA_INV_MS },
2629    { NC_("RID_STRLIST_FUNCTION_NAMES", "TINV") , SC_OPCODE_T_INV },
2630    { NC_("RID_STRLIST_FUNCTION_NAMES", "T.INV.2T") , SC_OPCODE_T_INV_2T },
2631    { NC_("RID_STRLIST_FUNCTION_NAMES", "T.INV") , SC_OPCODE_T_INV_MS },
2632    { NC_("RID_STRLIST_FUNCTION_NAMES", "FINV") , SC_OPCODE_F_INV },
2633    { NC_("RID_STRLIST_FUNCTION_NAMES", "F.INV") , SC_OPCODE_F_INV_LT },
2634    { NC_("RID_STRLIST_FUNCTION_NAMES", "F.INV.RT") , SC_OPCODE_F_INV_RT },
2635    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHITEST") , SC_OPCODE_CHI_TEST },
2636    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.TEST") , SC_OPCODE_CHI_TEST_MS },
2637    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGINV") , SC_OPCODE_LOG_INV },
2638    { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORM.INV") , SC_OPCODE_LOG_INV_MS },
2639    { NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIPLE.OPERATIONS") , SC_OPCODE_TABLE_OP },
2640    { NC_("RID_STRLIST_FUNCTION_NAMES", "BETADIST") , SC_OPCODE_BETA_DIST },
2641    { NC_("RID_STRLIST_FUNCTION_NAMES", "BETAINV") , SC_OPCODE_BETA_INV },
2642    { NC_("RID_STRLIST_FUNCTION_NAMES", "BETA.DIST") , SC_OPCODE_BETA_DIST_MS },
2643    { NC_("RID_STRLIST_FUNCTION_NAMES", "BETA.INV") , SC_OPCODE_BETA_INV_MS },
2644    { NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKNUM") , SC_OPCODE_WEEK },
2645    { NC_("RID_STRLIST_FUNCTION_NAMES", "ISOWEEKNUM") , SC_OPCODE_ISOWEEKNUM },
2646    { NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKNUM_OOO") , SC_OPCODE_WEEKNUM_OOO },
2647    { NC_("RID_STRLIST_FUNCTION_NAMES", "EASTERSUNDAY") , SC_OPCODE_EASTERSUNDAY },
2648    { NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKDAY") , SC_OPCODE_GET_DAY_OF_WEEK },
2649    { NC_("RID_STRLIST_FUNCTION_NAMES", "NETWORKDAYS") , SC_OPCODE_NETWORKDAYS },
2650    { NC_("RID_STRLIST_FUNCTION_NAMES", "NETWORKDAYS.INTL") , SC_OPCODE_NETWORKDAYS_MS },
2651    { NC_("RID_STRLIST_FUNCTION_NAMES", "WORKDAY.INTL") , SC_OPCODE_WORKDAY_MS },
2652    /* L10n: preserve the leading '#' hash character in translations. */
2653    { NC_("RID_STRLIST_FUNCTION_NAMES", "#NAME!") , SC_OPCODE_NO_NAME },
2654    { NC_("RID_STRLIST_FUNCTION_NAMES", "STYLE") , SC_OPCODE_STYLE },
2655    { NC_("RID_STRLIST_FUNCTION_NAMES", "DDE") , SC_OPCODE_DDE },
2656    { NC_("RID_STRLIST_FUNCTION_NAMES", "BASE") , SC_OPCODE_BASE },
2657    { NC_("RID_STRLIST_FUNCTION_NAMES", "DECIMAL") , SC_OPCODE_DECIMAL },
2658    { NC_("RID_STRLIST_FUNCTION_NAMES", "CONVERT_OOO") , SC_OPCODE_CONVERT_OOO },
2659    { NC_("RID_STRLIST_FUNCTION_NAMES", "ROMAN") , SC_OPCODE_ROMAN },
2660    { NC_("RID_STRLIST_FUNCTION_NAMES", "HYPERLINK") , SC_OPCODE_HYPERLINK },
2661    { NC_("RID_STRLIST_FUNCTION_NAMES", "INFO") , SC_OPCODE_INFO },
2662    { NC_("RID_STRLIST_FUNCTION_NAMES", "BAHTTEXT") , SC_OPCODE_BAHTTEXT },
2663    { NC_("RID_STRLIST_FUNCTION_NAMES", "GETPIVOTDATA") , SC_OPCODE_GET_PIVOT_DATA },
2664    { NC_("RID_STRLIST_FUNCTION_NAMES", "EUROCONVERT") , SC_OPCODE_EUROCONVERT },
2665    { NC_("RID_STRLIST_FUNCTION_NAMES", "NUMBERVALUE") , SC_OPCODE_NUMBERVALUE },
2666    { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA") , SC_OPCODE_GAMMA },
2667    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQDIST") , SC_OPCODE_CHISQ_DIST },
2668    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.DIST") , SC_OPCODE_CHISQ_DIST_MS },
2669    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQINV") , SC_OPCODE_CHISQ_INV },
2670    { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.INV") , SC_OPCODE_CHISQ_INV_MS },
2671    { NC_("RID_STRLIST_FUNCTION_NAMES", "BITAND") , SC_OPCODE_BITAND },
2672    { NC_("RID_STRLIST_FUNCTION_NAMES", "BITOR") , SC_OPCODE_BITOR },
2673    { NC_("RID_STRLIST_FUNCTION_NAMES", "BITXOR") , SC_OPCODE_BITXOR },
2674    { NC_("RID_STRLIST_FUNCTION_NAMES", "BITRSHIFT") , SC_OPCODE_BITRSHIFT },
2675    { NC_("RID_STRLIST_FUNCTION_NAMES", "BITLSHIFT") , SC_OPCODE_BITLSHIFT },
2676    /* BEGIN defined ERROR.TYPE() values. */
2677    /* ERROR.TYPE( #NULL! ) == 1 */
2678    /* L10n: preserve the leading '#' hash character in translations. */
2679    { NC_("RID_STRLIST_FUNCTION_NAMES", "#NULL!") , SC_OPCODE_ERROR_NULL },
2680    /* ERROR.TYPE( #DIV/0! ) == 2 */
2681    /* L10n: preserve the leading '#' hash character in translations. */
2682    { NC_("RID_STRLIST_FUNCTION_NAMES", "#DIV/0!") , SC_OPCODE_ERROR_DIVZERO },
2683    /* ERROR.TYPE( #VALUE! ) == 3 */
2684    /* L10n: preserve the leading '#' hash character in translations. */
2685    { NC_("RID_STRLIST_FUNCTION_NAMES", "#VALUE!") , SC_OPCODE_ERROR_VALUE },
2686    /* ERROR.TYPE( #REF! ) == 4 */
2687    /* L10n: preserve the leading '#' hash character in translations. */
2688    { NC_("RID_STRLIST_FUNCTION_NAMES", "#REF!") , SC_OPCODE_ERROR_REF },
2689    /* ERROR.TYPE( #NAME! ) == 5 */
2690    /* L10n: preserve the leading '#' hash character in translations. */
2691    { NC_("RID_STRLIST_FUNCTION_NAMES", "#NAME?") , SC_OPCODE_ERROR_NAME },
2692    /* ERROR.TYPE( #NUM! ) == 6 */
2693    /* L10n: preserve the leading '#' hash character in translations. */
2694    { NC_("RID_STRLIST_FUNCTION_NAMES", "#NUM!") , SC_OPCODE_ERROR_NUM },
2695    /* ERROR.TYPE( #N/A ) == 7 */
2696    /* L10n: preserve the leading '#' hash character in translations. */
2697    { NC_("RID_STRLIST_FUNCTION_NAMES", "#N/A") , SC_OPCODE_ERROR_NA },
2698    /* END defined ERROR.TYPE() values. */
2699
2700    { NC_("RID_STRLIST_FUNCTION_NAMES", "FILTERXML") , SC_OPCODE_FILTERXML },
2701    { NC_("RID_STRLIST_FUNCTION_NAMES", "COLOR") , SC_OPCODE_COLOR },
2702    { NC_("RID_STRLIST_FUNCTION_NAMES", "WEBSERVICE") , SC_OPCODE_WEBSERVICE },
2703    { NC_("RID_STRLIST_FUNCTION_NAMES", "ERF.PRECISE") , SC_OPCODE_ERF_MS },
2704    { NC_("RID_STRLIST_FUNCTION_NAMES", "ERFC.PRECISE") , SC_OPCODE_ERFC_MS },
2705    { NC_("RID_STRLIST_FUNCTION_NAMES", "ENCODEURL") , SC_OPCODE_ENCODEURL },
2706    { NC_("RID_STRLIST_FUNCTION_NAMES", "RAWSUBTRACT") , SC_OPCODE_RAWSUBTRACT },
2707    { NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDSIG") , SC_OPCODE_ROUNDSIG },
2708    { NC_("RID_STRLIST_FUNCTION_NAMES", "FINDB") , SC_OPCODE_FINDB },
2709    { NC_("RID_STRLIST_FUNCTION_NAMES", "SEARCHB") , SC_OPCODE_SEARCHB },
2710    { NC_("RID_STRLIST_FUNCTION_NAMES", "REGEX") , SC_OPCODE_REGEX },
2711    { NC_("RID_STRLIST_FUNCTION_NAMES", "FOURIER"), SC_OPCODE_FOURIER },
2712    { NC_("RID_STRLIST_FUNCTION_NAMES", "RAND.NV"), SC_OPCODE_RANDOM_NV },
2713    { NC_("RID_STRLIST_FUNCTION_NAMES", "RANDBETWEEN.NV"), SC_OPCODE_RANDBETWEEN_NV },
2714
2715    { nullptr, -1 }
2716};
2717
2718const std::pair<const char*, int> RID_STRLIST_FUNCTION_NAMES_SYMBOLS[] =
2719{
2720    { "(" , SC_OPCODE_OPEN  },
2721    { ")" , SC_OPCODE_CLOSE  },
2722    { "[" , SC_OPCODE_TABLE_REF_OPEN  },
2723    { "]" , SC_OPCODE_TABLE_REF_CLOSE  },
2724    { "{" , SC_OPCODE_ARRAY_OPEN  },
2725    { "}" , SC_OPCODE_ARRAY_CLOSE  },
2726    { "|" , SC_OPCODE_ARRAY_ROW_SEP  },
2727    { ";" , SC_OPCODE_ARRAY_COL_SEP  },
2728    { ";" , SC_OPCODE_SEP  },
2729    { "%" , SC_OPCODE_PERCENT_SIGN  },
2730    { "+" , SC_OPCODE_ADD  },
2731    { "-" , SC_OPCODE_SUB  },
2732    { "*" , SC_OPCODE_MUL  },
2733    { "/" , SC_OPCODE_DIV  },
2734    { "&" , SC_OPCODE_AMPERSAND  },
2735    { "^" , SC_OPCODE_POW  },
2736    { "=" , SC_OPCODE_EQUAL  },
2737    { "<>" , SC_OPCODE_NOT_EQUAL  },
2738    { "<" , SC_OPCODE_LESS  },
2739    { ">" , SC_OPCODE_GREATER  },
2740    { "<=" , SC_OPCODE_LESS_EQUAL  },
2741    { ">=" , SC_OPCODE_GREATER_EQUAL  },
2742    { "!" , SC_OPCODE_INTERSECT  },
2743    { "~" , SC_OPCODE_UNION  },
2744    { ":" , SC_OPCODE_RANGE  },
2745    { "-" , SC_OPCODE_NEG_SUB  },
2746    { nullptr, -1 }
2747};
2748
2749#endif
2750
2751/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
2752