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