LibreOffice Module sc (master) 1
funcdesc.cxx
Go to the documentation of this file.
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#include <funcdesc.hxx>
21
22#include <addincol.hxx>
23#include <appoptio.hxx>
24#include <callform.hxx>
25#include <compiler.hxx>
26#include <compiler.hrc>
27#include <global.hxx>
28#include <scfuncs.hrc>
29#include <scmod.hxx>
30#include <scresid.hxx>
31#include <helpids.h>
32
33#include <rtl/ustring.hxx>
34#include <rtl/ustrbuf.hxx>
36#include <formula/funcvarargs.h>
37#include <osl/diagnose.h>
38
39#include <memory>
40
41namespace {
42
43struct ScFuncDescCore
44{
45 /*
46 * An opcode from include/formula/compiler.hxx
47 */
48 sal_uInt16 nOpCode;
49 /*
50 * Pointer to list of strings
51 */
52 const TranslateId* pResource;
53 /*
54 * Count of list of strings
55 */
56 size_t nResourceLen;
57 /*
58 * 16-bit value:
59 *
60 * Bit 1: boolean flag whether function is suppressed. Usually 0. This
61 * may be used to add UI string resources before UI freeze if
62 * implementation isn't ready yet without displaying them in the
63 * function wizard, most recent used list and other UI elements. Also
64 * not available via API then.
65 *
66 * Bit 2: boolean flag whether function is hidden in the Function
67 * Wizard unless used in an expression.
68 */
69 sal_uInt16 nFunctionFlags;
70 /*
71 * Function group (text, math, ...), one of ID_FUNCTION_GRP_...
72 */
73 sal_uInt16 nCategory;
74 /*
75 * Help ID, HID_FUNC_...
76 */
77 OUString pHelpId;
78 /*
79 * Number of parameters. VAR_ARGS if variable number, or
80 * VAR_ARGS+number if number of fixed parameters and variable
81 * arguments following. Or PAIRED_VAR_ARGS if variable number of
82 * paired parameters, or PAIRED_VAR_ARGS+number if number of fixed
83 * parameters and variable paired arguments following.
84 */
85 sal_uInt16 nArgs;
86 /*
87 * For every parameter:
88 * Boolean flag whether the parameter is optional.
89 */
90 sal_uInt8 aOptionalArgs[7];
91 /*
92 * Limited number of maximum (variable) parameters, or 0 if no specific
93 * limit other than the general VAR_ARGS-1 value.
94 */
95 sal_uInt16 nVarArgsLimit;
96};
97
98}
99
100static void ScFuncRes(const ScFuncDescCore &rEntry, ScFuncDesc*, bool& rbSuppressed);
101
103 pDefArgFlags (nullptr),
104 nFIndex (0),
105 nCategory (0),
106 nArgCount (0),
107 nVarArgsStart (0),
108 nVarArgsLimit (0),
109 bIncomplete (false),
110 mbHidden (false)
111{}
112
114{
115 Clear();
116}
117
119{
120 sal_uInt16 nArgs = nArgCount;
121 if (nArgs >= PAIRED_VAR_ARGS)
122 nArgs -= PAIRED_VAR_ARGS - 2;
123 else if (nArgs >= VAR_ARGS)
124 nArgs -= VAR_ARGS - 1;
125 if (nArgs)
126 {
127 delete [] pDefArgFlags;
128 }
129 nArgCount = 0;
130 nVarArgsStart = 0;
131 nVarArgsLimit = 0;
132 maDefArgNames.clear();
133 maDefArgDescs.clear();
134 pDefArgFlags = nullptr;
135
136 mxFuncName.reset();
137 mxFuncDesc.reset();
138
139 nFIndex = 0;
140 nCategory = 0;
141 sHelpId.clear();
142 bIncomplete = false;
143 mbHidden = false;
144}
145
147{
148 OUString sep(ScCompiler::GetNativeSymbol(ocSep));
149
150 OUStringBuffer aSig;
151
152 if ( nArgCount > 0 )
153 {
154 if ( nArgCount < VAR_ARGS )
155 {
156 sal_uInt16 nLastSuppressed = nArgCount;
157 sal_uInt16 nLastAdded = nArgCount;
158 for ( sal_uInt16 i=0; i<nArgCount; i++ )
159 {
160 nLastAdded = i;
161 aSig.append(maDefArgNames[i]);
162 if ( i != nArgCount-1 )
163 {
164 aSig.append(sep + " " );
165 }
166 }
167 // If only suppressed parameters follow the last added parameter,
168 // remove one "; "
169 if (nLastSuppressed < nArgCount && nLastAdded < nLastSuppressed &&
170 aSig.getLength() >= 2)
171 aSig.setLength(aSig.getLength() - 2);
172 }
173 else if ( nArgCount < PAIRED_VAR_ARGS)
174 {
175 for ( sal_uInt16 nArg = 0; nArg < nVarArgsStart; nArg++ )
176 {
177 aSig.append(maDefArgNames[nArg] + sep + " ");
178 }
179 /* NOTE: Currently there are no suppressed var args parameters. If
180 * there were, we'd have to cope with it here and above for the fix
181 * parameters. For now parameters are always added, so no special
182 * treatment of a trailing "; " necessary. */
183 aSig.append(maDefArgNames[nVarArgsStart]
184 + "1"
185 + sep + " "
187 + "2"
188 + sep + " ... ");
189 }
190 else
191 {
192 for ( sal_uInt16 nArg = 0; nArg < nVarArgsStart; nArg++ )
193 {
194 aSig.append(maDefArgNames[nArg] + sep + " ");
195 }
196
197 aSig.append(maDefArgNames[nVarArgsStart]
198 + "1" + sep
200 + "1" + sep
201 + " "
203 + "2" + sep
205 + "2" + sep + " ... " );
206 }
207 }
208
209 return aSig.makeStringAndClear();
210}
211
213{
214 OUStringBuffer aSig;
215
216 if(mxFuncName)
217 {
218 aSig.append(*mxFuncName);
219
220 OUString aParamList = GetParamList();
221 if( !aParamList.isEmpty() )
222 {
223 aSig.append( "( " + aParamList
224 // U+00A0 (NBSP) prevents automatic line break
225 + u"\x00A0" ")" );
226 }
227 else
228 aSig.append( "()" );
229 }
230 return aSig.makeStringAndClear();
231}
232
233OUString ScFuncDesc::getFormula( const ::std::vector< OUString >& _aArguments ) const
234{
235 OUString sep = ScCompiler::GetNativeSymbol(ocSep);
236
237 OUStringBuffer aFormula;
238
239 if(mxFuncName)
240 {
241 aFormula.append( *mxFuncName + "(" );
242 if ( nArgCount > 0 && !_aArguments.empty() && !_aArguments[0].isEmpty())
243 {
244 ::std::vector< OUString >::const_iterator aIter = _aArguments.begin();
245 ::std::vector< OUString >::const_iterator aEnd = _aArguments.end();
246
247 aFormula.append( *aIter );
248 ++aIter;
249 while( aIter != aEnd && !aIter->isEmpty() )
250 {
251 aFormula.append( sep + *aIter );
252 ++aIter;
253 }
254 }
255
256 aFormula.append( ")" );
257 }
258 return aFormula.makeStringAndClear();
259}
260
262{
263 return nArgCount;
264}
265
267{
268 OUString sRet;
269 if ( mxFuncName )
270 sRet = *mxFuncName;
271 return sRet;
272}
273
275{
277}
278
280{
281 OUString sRet;
282 if ( mxFuncDesc )
283 sRet = *mxFuncDesc;
284 return sRet;
285}
286
288{
289 return GetSuppressedArgCount();
290}
291
292void ScFuncDesc::fillVisibleArgumentMapping(::std::vector<sal_uInt16>& _rArguments) const
293{
294 _rArguments.resize( nArgCount);
295 sal_uInt16 value = 0;
296 for (auto & argument : _rArguments)
297 argument = value++;
298
299 sal_uInt16 nArgs = nArgCount;
300 if (nArgs >= PAIRED_VAR_ARGS)
301 nArgs -= PAIRED_VAR_ARGS - 2;
302 else if (nArgs >= VAR_ARGS)
303 nArgs -= VAR_ARGS - 1;
304 for (sal_uInt16 i=0; i < nArgs; ++i)
305 {
306 _rArguments.push_back(i);
307 }
308}
309
311{
312 // get the full argument description
313 // (add-in has to be instantiated to get the type information)
314
315 if ( !(bIncomplete && mxFuncName) )
316 return;
317
319 OUString aIntName(rAddIns.FindFunction( *mxFuncName, true )); // pFuncName is upper-case
320
321 if ( !aIntName.isEmpty() )
322 {
323 // GetFuncData with bComplete=true loads the component and updates
324 // the global function list if needed.
325
326 rAddIns.GetFuncData( aIntName, true );
327 }
328
329 if ( bIncomplete )
330 {
331 OSL_FAIL( "couldn't initialize add-in function" );
332 const_cast<ScFuncDesc*>(this)->bIncomplete = false; // even if there was an error, don't try again
333 }
334}
335
336OUString ScFuncDesc::getHelpId() const
337{
338 return sHelpId;
339}
340
342{
343 return mbHidden;
344}
345
347{
348 return nArgCount;
349}
350
352{
353 return nVarArgsStart;
354}
355
357{
358 return nVarArgsLimit;
359}
360
361OUString ScFuncDesc::getParameterName(sal_uInt32 _nPos) const
362{
363 return maDefArgNames[_nPos];
364}
365
366OUString ScFuncDesc::getParameterDescription(sal_uInt32 _nPos) const
367{
368 return maDefArgDescs[_nPos];
369}
370
371bool ScFuncDesc::isParameterOptional(sal_uInt32 _nPos) const
372{
374}
375
377{
378 return (ScGlobal::GetCaseCollator().compareString(*a->mxFuncName, *b->mxFuncName ) < 0);
379}
380
381#define ENTRY(CODE) CODE, SAL_N_ELEMENTS(CODE)
382
383ScFunctionList::ScFunctionList( bool bEnglishFunctionNames )
384 : mbEnglishFunctionNames( bEnglishFunctionNames )
385{
386 sal_Int32 nMaxFuncNameLen = 0; // Length of longest function name
387
388 // See ScFuncDescCore definition for format details.
389 // This list must be sorted in order of the opcode, dbgutil builds enable _GLIBCXX_DEBUG
390 // which will concept check that the list is sorted on first use to ensure this holds
391 static const ScFuncDescCore aDescs[] =
392 {
393 { SC_OPCODE_IF, ENTRY(SC_OPCODE_IF_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WENN, 3, { 0, 1, 1 }, 0 },
394 { SC_OPCODE_IF_ERROR, ENTRY(SC_OPCODE_IF_ERROR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFERROR, 2, { 0, 0 }, 0 },
395 { SC_OPCODE_IF_NA, ENTRY(SC_OPCODE_IF_NA_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFNA, 2, { 0, 0 }, 0 },
396 { SC_OPCODE_CHOOSE, ENTRY(SC_OPCODE_CHOOSE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_WAHL, VAR_ARGS+1, { 0, 0 }, 31 },
397 { SC_OPCODE_AND, ENTRY(SC_OPCODE_AND_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_UND, VAR_ARGS, { 0 }, 0 },
398 { SC_OPCODE_OR, ENTRY(SC_OPCODE_OR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_ODER, VAR_ARGS, { 0 }, 0 },
399 { SC_OPCODE_PI, ENTRY(SC_OPCODE_PI_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_PI, 0, { }, 0 },
400 { SC_OPCODE_RANDOM, ENTRY(SC_OPCODE_RANDOM_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ZUFALLSZAHL, 0, { }, 0 },
401 { SC_OPCODE_TRUE, ENTRY(SC_OPCODE_TRUE_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WAHR, 0, { }, 0 },
402 { SC_OPCODE_FALSE, ENTRY(SC_OPCODE_FALSE_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_FALSCH, 0, { }, 0 },
403 { SC_OPCODE_GET_ACT_DATE, ENTRY(SC_OPCODE_GET_ACT_DATE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_HEUTE, 0, { }, 0 },
404 { SC_OPCODE_GET_ACT_TIME, ENTRY(SC_OPCODE_GET_ACT_TIME_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_JETZT, 0, { }, 0 },
405 { SC_OPCODE_NO_VALUE, ENTRY(SC_OPCODE_NO_VALUE_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_NV, 0, { }, 0 },
406 { SC_OPCODE_CURRENT, ENTRY(SC_OPCODE_CURRENT_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_AKTUELL, 0, { }, 0 },
407 { SC_OPCODE_RANDOM_NV, ENTRY(SC_OPCODE_RANDOM_NV_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RAND_NV, 0, { }, 0 },
408 { SC_OPCODE_DEG, ENTRY(SC_OPCODE_DEG_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_DEG, 1, { 0 }, 0 },
409 { SC_OPCODE_RAD, ENTRY(SC_OPCODE_RAD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RAD, 1, { 0 }, 0 },
410 { SC_OPCODE_SIN, ENTRY(SC_OPCODE_SIN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SIN, 1, { 0 }, 0 },
411 { SC_OPCODE_COS, ENTRY(SC_OPCODE_COS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COS, 1, { 0 }, 0 },
412 { SC_OPCODE_TAN, ENTRY(SC_OPCODE_TAN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TAN, 1, { 0 }, 0 },
413 { SC_OPCODE_COT, ENTRY(SC_OPCODE_COT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COT, 1, { 0 }, 0 },
414 { SC_OPCODE_ARC_SIN, ENTRY(SC_OPCODE_ARC_SIN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCSIN, 1, { 0 }, 0 },
415 { SC_OPCODE_ARC_COS, ENTRY(SC_OPCODE_ARC_COS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCCOS, 1, { 0 }, 0 },
416 { SC_OPCODE_ARC_TAN, ENTRY(SC_OPCODE_ARC_TAN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCTAN, 1, { 0 }, 0 },
417 { SC_OPCODE_ARC_COT, ENTRY(SC_OPCODE_ARC_COT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCCOT, 1, { 0 }, 0 },
418 { SC_OPCODE_SIN_HYP, ENTRY(SC_OPCODE_SIN_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SINHYP, 1, { 0 }, 0 },
419 { SC_OPCODE_COS_HYP, ENTRY(SC_OPCODE_COS_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSHYP, 1, { 0 }, 0 },
420 { SC_OPCODE_TAN_HYP, ENTRY(SC_OPCODE_TAN_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TANHYP, 1, { 0 }, 0 },
421 { SC_OPCODE_COT_HYP, ENTRY(SC_OPCODE_COT_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COTHYP, 1, { 0 }, 0 },
422 { SC_OPCODE_ARC_SIN_HYP, ENTRY(SC_OPCODE_ARC_SIN_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARSINHYP, 1, { 0 }, 0 },
423 { SC_OPCODE_ARC_COS_HYP, ENTRY(SC_OPCODE_ARC_COS_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCOSHYP, 1, { 0 }, 0 },
424 { SC_OPCODE_ARC_TAN_HYP, ENTRY(SC_OPCODE_ARC_TAN_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARTANHYP, 1, { 0 }, 0 },
425 { SC_OPCODE_ARC_COT_HYP, ENTRY(SC_OPCODE_ARC_COT_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCOTHYP, 1, { 0 }, 0 },
426 { SC_OPCODE_COSECANT, ENTRY(SC_OPCODE_COSECANT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSECANT, 1, { 0 }, 0 },
427 { SC_OPCODE_SECANT, ENTRY(SC_OPCODE_SECANT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SECANT, 1, { 0 }, 0 },
428 { SC_OPCODE_COSECANT_HYP, ENTRY(SC_OPCODE_COSECANT_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSECANTHYP, 1, { 0 }, 0 },
429 { SC_OPCODE_SECANT_HYP, ENTRY(SC_OPCODE_SECANT_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SECANTHYP, 1, { 0 }, 0 },
430 { SC_OPCODE_EXP, ENTRY(SC_OPCODE_EXP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_EXP, 1, { 0 }, 0 },
431 { SC_OPCODE_LN, ENTRY(SC_OPCODE_LN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LN, 1, { 0 }, 0 },
432 { SC_OPCODE_SQRT, ENTRY(SC_OPCODE_SQRT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_WURZEL, 1, { 0 }, 0 },
433 { SC_OPCODE_FACT, ENTRY(SC_OPCODE_FACT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FAKULTAET, 1, { 0 }, 0 },
434 { SC_OPCODE_GET_YEAR, ENTRY(SC_OPCODE_GET_YEAR_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_JAHR, 1, { 0 }, 0 },
435 { SC_OPCODE_GET_MONTH, ENTRY(SC_OPCODE_GET_MONTH_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_MONAT, 1, { 0 }, 0 },
436 { SC_OPCODE_GET_DAY, ENTRY(SC_OPCODE_GET_DAY_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAG, 1, { 0 }, 0 },
437 { SC_OPCODE_GET_HOUR, ENTRY(SC_OPCODE_GET_HOUR_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_STUNDE, 1, { 0 }, 0 },
438 { SC_OPCODE_GET_MIN, ENTRY(SC_OPCODE_GET_MIN_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_MINUTE, 1, { 0 }, 0 },
439 { SC_OPCODE_GET_SEC, ENTRY(SC_OPCODE_GET_SEC_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_SEKUNDE, 1, { 0 }, 0 },
440 { SC_OPCODE_PLUS_MINUS, ENTRY(SC_OPCODE_PLUS_MINUS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_VORZEICHEN, 1, { 0 }, 0 },
441 { SC_OPCODE_ABS, ENTRY(SC_OPCODE_ABS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ABS, 1, { 0 }, 0 },
442 { SC_OPCODE_INT, ENTRY(SC_OPCODE_INT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GANZZAHL, 1, { 0 }, 0 },
443 { SC_OPCODE_PHI, ENTRY(SC_OPCODE_PHI_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PHI, 1, { 0 }, 0 },
444 { SC_OPCODE_GAUSS, ENTRY(SC_OPCODE_GAUSS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAUSS, 1, { 0 }, 0 },
445 { SC_OPCODE_IS_EMPTY, ENTRY(SC_OPCODE_IS_EMPTY_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTLEER, 1, { 0 }, 0 },
446 { SC_OPCODE_IS_STRING, ENTRY(SC_OPCODE_IS_STRING_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTTEXT, 1, { 0 }, 0 },
447 { SC_OPCODE_IS_NON_STRING, ENTRY(SC_OPCODE_IS_NON_STRING_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTKTEXT, 1, { 0 }, 0 },
448 { SC_OPCODE_IS_LOGICAL, ENTRY(SC_OPCODE_IS_LOGICAL_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTLOG, 1, { 0 }, 0 },
449 { SC_OPCODE_TYPE, ENTRY(SC_OPCODE_TYPE_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_TYP, 1, { 0 }, 0 },
450 { SC_OPCODE_IS_REF, ENTRY(SC_OPCODE_IS_REF_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTBEZUG, 1, { 0 }, 0 },
451 { SC_OPCODE_IS_VALUE, ENTRY(SC_OPCODE_IS_VALUE_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTZAHL, 1, { 0 }, 0 },
452 { SC_OPCODE_IS_FORMULA, ENTRY(SC_OPCODE_IS_FORMULA_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFORMEL, 1, { 0 }, 0 },
453 { SC_OPCODE_IS_NV, ENTRY(SC_OPCODE_IS_NV_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTNV, 1, { 0 }, 0 },
454 { SC_OPCODE_IS_ERR, ENTRY(SC_OPCODE_IS_ERR_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFEHL, 1, { 0 }, 0 },
455 { SC_OPCODE_IS_ERROR, ENTRY(SC_OPCODE_IS_ERROR_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFEHLER, 1, { 0 }, 0 },
456 { SC_OPCODE_IS_EVEN, ENTRY(SC_OPCODE_IS_EVEN_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTGERADE, 1, { 0 }, 0 },
457 { SC_OPCODE_IS_ODD, ENTRY(SC_OPCODE_IS_ODD_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTUNGERADE, 1, { 0 }, 0 },
458 { SC_OPCODE_N, ENTRY(SC_OPCODE_N_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_N, 1, { 0 }, 0 },
459 { SC_OPCODE_GET_DATE_VALUE, ENTRY(SC_OPCODE_GET_DATE_VALUE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATWERT, 1, { 0 }, 0 },
460 { SC_OPCODE_GET_TIME_VALUE, ENTRY(SC_OPCODE_GET_TIME_VALUE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ZEITWERT, 1, { 0 }, 0 },
461 { SC_OPCODE_CODE, ENTRY(SC_OPCODE_CODE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_CODE, 1, { 0 }, 0 },
462 { SC_OPCODE_TRIM, ENTRY(SC_OPCODE_TRIM_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GLAETTEN, 1, { 0 }, 0 },
463 { SC_OPCODE_UPPER, ENTRY(SC_OPCODE_UPPER_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GROSS, 1, { 0 }, 0 },
464 { SC_OPCODE_PROPER, ENTRY(SC_OPCODE_PROPER_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GROSS2, 1, { 0 }, 0 },
465 { SC_OPCODE_LOWER, ENTRY(SC_OPCODE_LOWER_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_KLEIN, 1, { 0 }, 0 },
466 { SC_OPCODE_LEN, ENTRY(SC_OPCODE_LEN_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LAENGE, 1, { 0 }, 0 },
467 { SC_OPCODE_T, ENTRY(SC_OPCODE_T_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_T, 1, { 0 }, 0 },
468 { SC_OPCODE_VALUE, ENTRY(SC_OPCODE_VALUE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WERT, 1, { 0 }, 0 },
469 { SC_OPCODE_CLEAN, ENTRY(SC_OPCODE_CLEAN_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SAEUBERN, 1, { 0 }, 0 },
470 { SC_OPCODE_CHAR, ENTRY(SC_OPCODE_CHAR_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ZEICHEN, 1, { 0 }, 0 },
471 { SC_OPCODE_LOG10, ENTRY(SC_OPCODE_LOG10_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LOG10, 1, { 0 }, 0 },
472 { SC_OPCODE_EVEN, ENTRY(SC_OPCODE_EVEN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GERADE, 1, { 0 }, 0 },
473 { SC_OPCODE_ODD, ENTRY(SC_OPCODE_ODD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UNGERADE, 1, { 0 }, 0 },
474 { SC_OPCODE_STD_NORM_DIST, ENTRY(SC_OPCODE_STD_NORM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDNORMVERT, 1, { 0 }, 0 },
475 { SC_OPCODE_FISHER, ENTRY(SC_OPCODE_FISHER_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FISHER, 1, { 0 }, 0 },
476 { SC_OPCODE_FISHER_INV, ENTRY(SC_OPCODE_FISHER_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FISHERINV, 1, { 0 }, 0 },
477 { SC_OPCODE_S_NORM_INV, ENTRY(SC_OPCODE_S_NORM_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDNORMINV, 1, { 0 }, 0 },
478 { SC_OPCODE_GAMMA_LN, ENTRY(SC_OPCODE_GAMMA_LN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMALN, 1, { 0 }, 0 },
479 { SC_OPCODE_ERROR_TYPE, ENTRY(SC_OPCODE_ERROR_TYPE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_FEHLERTYP, 1, { 0 }, 0 },
480 { SC_OPCODE_FORMULA, ENTRY(SC_OPCODE_FORMULA_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_FORMEL, 1, { 0 }, 0 },
481 { SC_OPCODE_ARABIC, ENTRY(SC_OPCODE_ARABIC_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ARABISCH, 1, { 0 }, 0 },
482 { SC_OPCODE_INFO, ENTRY(SC_OPCODE_INFO_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_INFO, 1, { 0 }, 0 },
483 { SC_OPCODE_BAHTTEXT, ENTRY(SC_OPCODE_BAHTTEXT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_BAHTTEXT, 1, { 0 }, 0 },
484 { SC_OPCODE_JIS, ENTRY(SC_OPCODE_JIS_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_JIS, 1, { 0 }, 0 },
485 { SC_OPCODE_ASC, ENTRY(SC_OPCODE_ASC_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ASC, 1, { 0 }, 0 },
486 { SC_OPCODE_UNICODE, ENTRY(SC_OPCODE_UNICODE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_UNICODE, 1, { 0 }, 0 },
487 { SC_OPCODE_UNICHAR, ENTRY(SC_OPCODE_UNICHAR_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_UNICHAR, 1, { 0 }, 0 },
488 { SC_OPCODE_GAMMA, ENTRY(SC_OPCODE_GAMMA_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMA, 1, { 0 }, 0 },
489 { SC_OPCODE_GAMMA_LN_MS, ENTRY(SC_OPCODE_GAMMA_LN_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMALN_MS, 1, { 0 }, 0 },
490 { SC_OPCODE_ERF_MS, ENTRY(SC_OPCODE_ERF_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ERF_MS, 1, { 0 }, 0 },
491 { SC_OPCODE_ERFC_MS, ENTRY(SC_OPCODE_ERFC_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ERFC_MS, 1, { 0 }, 0 },
492 { SC_OPCODE_ERROR_TYPE_ODF, ENTRY(SC_OPCODE_ERROR_TYPE_ODF_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ERROR_TYPE_ODF, 1, { 0 }, 0 },
493 { SC_OPCODE_ENCODEURL, ENTRY(SC_OPCODE_ENCODEURL_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ENCODEURL, 1, { 0 }, 0 },
494 { SC_OPCODE_ISOWEEKNUM, ENTRY(SC_OPCODE_ISOWEEKNUM_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ISOWEEKNUM, 1, { 0 }, 0 },
495 { SC_OPCODE_NOT, ENTRY(SC_OPCODE_NOT_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_NICHT, 1, { 0 }, 0 },
496 { SC_OPCODE_ARC_TAN_2, ENTRY(SC_OPCODE_ARC_TAN_2_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCTAN2, 2, { 0, 0 }, 0 },
497 { SC_OPCODE_CEIL, ENTRY(SC_OPCODE_CEIL_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_OBERGRENZE, 3, { 0, 1, 1 }, 0 },
498 { SC_OPCODE_FLOOR, ENTRY(SC_OPCODE_FLOOR_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UNTERGRENZE, 3, { 0, 1, 1 }, 0 },
499 { SC_OPCODE_ROUND, ENTRY(SC_OPCODE_ROUND_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RUNDEN, 2, { 0, 1 }, 0 },
500 { SC_OPCODE_ROUND_UP, ENTRY(SC_OPCODE_ROUND_UP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_AUFRUNDEN, 2, { 0, 1 }, 0 },
501 { SC_OPCODE_ROUND_DOWN, ENTRY(SC_OPCODE_ROUND_DOWN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ABRUNDEN, 2, { 0, 1 }, 0 },
502 { SC_OPCODE_TRUNC, ENTRY(SC_OPCODE_TRUNC_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KUERZEN, 2, { 0, 0 }, 0 },
503 { SC_OPCODE_LOG, ENTRY(SC_OPCODE_LOG_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LOG, 2, { 0, 1 }, 0 },
504 { SC_OPCODE_POWER, ENTRY(SC_OPCODE_POWER_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_POTENZ, 2, { 0, 0 }, 0 },
505 { SC_OPCODE_GCD, ENTRY(SC_OPCODE_GCD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GGT, VAR_ARGS, { 0 }, 0 },
506 { SC_OPCODE_LCM, ENTRY(SC_OPCODE_LCM_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KGV, VAR_ARGS, { 0 }, 0 },
507 { SC_OPCODE_MOD, ENTRY(SC_OPCODE_MOD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_REST, 2, { 0, 0 }, 0 },
508 { SC_OPCODE_SUM_PRODUCT, ENTRY(SC_OPCODE_SUM_PRODUCT_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMENPRODUKT, VAR_ARGS, { 0 }, 0 },
509 { SC_OPCODE_SUM_SQ, ENTRY(SC_OPCODE_SUM_SQ_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_QUADRATESUMME, VAR_ARGS, { 0 }, 0 },
510 { SC_OPCODE_SUM_X2MY2, ENTRY(SC_OPCODE_SUM_X2MY2_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEX2MY2, 2, { 0, 0 }, 0 },
511 { SC_OPCODE_SUM_X2DY2, ENTRY(SC_OPCODE_SUM_X2DY2_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEX2PY2, 2, { 0, 0 }, 0 },
512 { SC_OPCODE_SUM_XMY2, ENTRY(SC_OPCODE_SUM_XMY2_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEXMY2, 2, { 0, 0 }, 0 },
513 { SC_OPCODE_GET_DATE, ENTRY(SC_OPCODE_GET_DATE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATUM, 3, { 0, 0, 0 }, 0 },
514 { SC_OPCODE_GET_TIME, ENTRY(SC_OPCODE_GET_TIME_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ZEIT, 3, { 0, 0, 0 }, 0 },
515 { SC_OPCODE_GET_DIFF_DATE, ENTRY(SC_OPCODE_GET_DIFF_DATE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAGE, 2, { 0, 0 }, 0 },
516 { SC_OPCODE_GET_DIFF_DATE_360, ENTRY(SC_OPCODE_GET_DIFF_DATE_360_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAGE360, 3, { 0, 0, 1 }, 0 },
517 { SC_OPCODE_MIN, ENTRY(SC_OPCODE_MIN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MIN, VAR_ARGS, { 0 }, 0 },
518 { SC_OPCODE_MAX, ENTRY(SC_OPCODE_MAX_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAX, VAR_ARGS, { 0 }, 0 },
519 { SC_OPCODE_SUM, ENTRY(SC_OPCODE_SUM_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMME, VAR_ARGS, { 0 }, 0 },
520 { SC_OPCODE_PRODUCT, ENTRY(SC_OPCODE_PRODUCT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_PRODUKT, VAR_ARGS, { 0 }, 0 },
521 { SC_OPCODE_AVERAGE, ENTRY(SC_OPCODE_AVERAGE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELWERT, VAR_ARGS, { 0 }, 0 },
522 { SC_OPCODE_COUNT, ENTRY(SC_OPCODE_COUNT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHL, VAR_ARGS, { 0 }, 0 },
523 { SC_OPCODE_COUNT_2, ENTRY(SC_OPCODE_COUNT_2_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHL2, VAR_ARGS, { 0 }, 0 },
524 { SC_OPCODE_NPV, ENTRY(SC_OPCODE_NPV_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_NBW, VAR_ARGS+1, { 0, 0 }, 0 },
525 { SC_OPCODE_IRR, ENTRY(SC_OPCODE_IRR_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_IKV, 2, { 0, 1 }, 0 },
526 { SC_OPCODE_VAR, ENTRY(SC_OPCODE_VAR_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZ, VAR_ARGS, { 0 }, 0 },
527 { SC_OPCODE_VAR_P, ENTRY(SC_OPCODE_VAR_P_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZEN, VAR_ARGS, { 0 }, 0 },
528 { SC_OPCODE_ST_DEV, ENTRY(SC_OPCODE_ST_DEV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABW, VAR_ARGS, { 0 }, 0 },
529 { SC_OPCODE_ST_DEV_P, ENTRY(SC_OPCODE_ST_DEV_P_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWN, VAR_ARGS, { 0 }, 0 },
530 { SC_OPCODE_B, ENTRY(SC_OPCODE_B_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_B, 4, { 0, 0, 0, 1 }, 0 },
531 { SC_OPCODE_NORM_DIST, ENTRY(SC_OPCODE_NORM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMVERT, 4, { 0, 0, 0, 1 }, 0 },
532 { SC_OPCODE_EXP_DIST, ENTRY(SC_OPCODE_EXP_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_EXPONVERT, 3, { 0, 0, 0 }, 0 },
533 { SC_OPCODE_BINOM_DIST, ENTRY(SC_OPCODE_BINOM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOMVERT, 4, { 0, 0, 0, 0 }, 0 },
534 { SC_OPCODE_POISSON_DIST, ENTRY(SC_OPCODE_POISSON_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_POISSON, 3, { 0, 0, 1 }, 0 },
535 { SC_OPCODE_COMBIN, ENTRY(SC_OPCODE_COMBIN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KOMBINATIONEN, 2, { 0, 0 }, 0 },
536 { SC_OPCODE_COMBIN_A, ENTRY(SC_OPCODE_COMBIN_A_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KOMBINATIONEN2, 2, { 0, 0 }, 0 },
537 { SC_OPCODE_PERMUT, ENTRY(SC_OPCODE_PERMUT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIATIONEN, 2, { 0, 0 }, 0 },
538 { SC_OPCODE_PERMUTATION_A, ENTRY(SC_OPCODE_PERMUTATION_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIATIONEN2, 2, { 0, 0 }, 0 },
539 { SC_OPCODE_PV, ENTRY(SC_OPCODE_PV_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_BW, 5, { 0, 0, 0, 1, 1 }, 0 },
540 { SC_OPCODE_SYD, ENTRY(SC_OPCODE_SYD_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_DIA, 4, { 0, 0, 0, 0 }, 0 },
541 { SC_OPCODE_DDB, ENTRY(SC_OPCODE_DDB_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_GDA, 5, { 0, 0, 0, 0, 1 }, 0 },
542 { SC_OPCODE_DB, ENTRY(SC_OPCODE_DB_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_GDA2, 5, { 0, 0, 0, 0, 1 }, 0 },
543 { SC_OPCODE_VBD , ENTRY(SC_OPCODE_VBD_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_VDB, 7, { 0, 0, 0, 0, 0, 1, 1 }, 0 },
544 { SC_OPCODE_PDURATION, ENTRY(SC_OPCODE_PDURATION_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_LAUFZEIT, 3, { 0, 0, 0 }, 0 },
545 { SC_OPCODE_SLN, ENTRY(SC_OPCODE_SLN_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_LIA, 3, { 0, 0, 0 }, 0 },
546 { SC_OPCODE_PMT, ENTRY(SC_OPCODE_PMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_RMZ, 5, { 0, 0, 0, 1, 1 }, 0 },
547 { SC_OPCODE_COLUMNS, ENTRY(SC_OPCODE_COLUMNS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SPALTEN, 1, { 0 }, 0 },
548 { SC_OPCODE_ROWS, ENTRY(SC_OPCODE_ROWS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ZEILEN, 1, { 0 }, 0 },
549 { SC_OPCODE_COLUMN, ENTRY(SC_OPCODE_COLUMN_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SPALTE, 1, { 1 }, 0 },
550 { SC_OPCODE_ROW, ENTRY(SC_OPCODE_ROW_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ZEILE, 1, { 1 }, 0 },
551 { SC_OPCODE_RRI, ENTRY(SC_OPCODE_RRI_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZGZ, 3, { 0, 0, 0 }, 0 },
552 { SC_OPCODE_FV, ENTRY(SC_OPCODE_FV_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZW, 5, { 0, 0, 0, 1, 1 }, 0 },
553 { SC_OPCODE_NPER, ENTRY(SC_OPCODE_NPER_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZZR, 5, { 0, 0, 0, 1, 1 }, 0 },
554 { SC_OPCODE_RATE, ENTRY(SC_OPCODE_RATE_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZINS, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
555 { SC_OPCODE_IPMT, ENTRY(SC_OPCODE_IPMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZINSZ, 6, { 0, 0, 0, 0, 1, 1 }, 0 },
556 { SC_OPCODE_PPMT, ENTRY(SC_OPCODE_PPMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_KAPZ, 6, { 0, 0, 0, 0, 1, 1 }, 0 },
557 { SC_OPCODE_CUM_IPMT, ENTRY(SC_OPCODE_CUM_IPMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_KUMZINSZ, 6, { 0, 0, 0, 0, 0, 0 }, 0 },
558 { SC_OPCODE_CUM_PRINC, ENTRY(SC_OPCODE_CUM_PRINC_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_KUMKAPITAL, 6, { 0, 0, 0, 0, 0, 0 }, 0 },
559 { SC_OPCODE_EFFECT, ENTRY(SC_OPCODE_EFFECT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_EFFEKTIV, 2, { 0, 0 }, 0 },
560 { SC_OPCODE_NOMINAL, ENTRY(SC_OPCODE_NOMINAL_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_NOMINAL, 2, { 0, 0 }, 0 },
561 { SC_OPCODE_SUB_TOTAL, ENTRY(SC_OPCODE_SUB_TOTAL_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TEILERGEBNIS, 2, { 0, 0 }, 0 },
562 { SC_OPCODE_DB_SUM, ENTRY(SC_OPCODE_DB_SUM_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSUMME, 3, { 0, 0, 0 }, 0 },
563 { SC_OPCODE_DB_COUNT, ENTRY(SC_OPCODE_DB_COUNT_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBANZAHL, 3, { 0, 1, 0 }, 0 },
564 { SC_OPCODE_DB_COUNT_2, ENTRY(SC_OPCODE_DB_COUNT_2_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBANZAHL2, 3, { 0, 1, 0 }, 0 },
565 { SC_OPCODE_DB_AVERAGE, ENTRY(SC_OPCODE_DB_AVERAGE_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMITTELWERT, 3, { 0, 0, 0 }, 0 },
566 { SC_OPCODE_DB_GET, ENTRY(SC_OPCODE_DB_GET_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBAUSZUG, 3, { 0, 0, 0 }, 0 },
567 { SC_OPCODE_DB_MAX, ENTRY(SC_OPCODE_DB_MAX_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMAX, 3, { 0, 0, 0 }, 0 },
568 { SC_OPCODE_DB_MIN, ENTRY(SC_OPCODE_DB_MIN_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMIN, 3, { 0, 0, 0 }, 0 },
569 { SC_OPCODE_DB_PRODUCT, ENTRY(SC_OPCODE_DB_PRODUCT_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBPRODUKT, 3, { 0, 0, 0 }, 0 },
570 { SC_OPCODE_DB_STD_DEV, ENTRY(SC_OPCODE_DB_STD_DEV_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSTDABW, 3, { 0, 0, 0 }, 0 },
571 { SC_OPCODE_DB_STD_DEV_P, ENTRY(SC_OPCODE_DB_STD_DEV_P_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSTDABWN, 3, { 0, 0, 0 }, 0 },
572 { SC_OPCODE_DB_VAR, ENTRY(SC_OPCODE_DB_VAR_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBVARIANZ, 3, { 0, 0, 0 }, 0 },
573 { SC_OPCODE_DB_VAR_P, ENTRY(SC_OPCODE_DB_VAR_P_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBVARIANZEN, 3, { 0, 0, 0 }, 0 },
574 { SC_OPCODE_INDIRECT, ENTRY(SC_OPCODE_INDIRECT_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_INDIREKT, 2, { 0, 1 }, 0 },
575 { SC_OPCODE_ADDRESS, ENTRY(SC_OPCODE_ADDRESS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ADRESSE, 5, { 0, 0, 1, 1, 1 }, 0 },
576 { SC_OPCODE_MATCH, ENTRY(SC_OPCODE_MATCH_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERGLEICH, 3, { 0, 0, 1 }, 0 },
577 { SC_OPCODE_COUNT_EMPTY_CELLS, ENTRY(SC_OPCODE_COUNT_EMPTY_CELLS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHLLEEREZELLEN, 1, { 0 }, 0 },
578 { SC_OPCODE_COUNT_IF, ENTRY(SC_OPCODE_COUNT_IF_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ZAEHLENWENN, 2, { 0, 0 }, 0 },
579 { SC_OPCODE_SUM_IF, ENTRY(SC_OPCODE_SUM_IF_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMMEWENN, 3, { 0, 0, 1 }, 0 },
580 { SC_OPCODE_LOOKUP, ENTRY(SC_OPCODE_LOOKUP_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERWEIS, 3, { 0, 0, 1 }, 0 },
581 { SC_OPCODE_V_LOOKUP, ENTRY(SC_OPCODE_V_LOOKUP_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SVERWEIS, 4, { 0, 0, 0, 1 }, 0 },
582 { SC_OPCODE_H_LOOKUP, ENTRY(SC_OPCODE_H_LOOKUP_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_WVERWEIS, 4, { 0, 0, 0, 1 }, 0 },
583 { SC_OPCODE_OFFSET, ENTRY(SC_OPCODE_OFFSET_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERSCHIEBUNG, 5, { 0, 0, 0, 1, 1 }, 0 },
584 { SC_OPCODE_INDEX, ENTRY(SC_OPCODE_INDEX_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_INDEX, 4, { 0, 1, 1, 1 }, 0 },
585 { SC_OPCODE_AREAS, ENTRY(SC_OPCODE_AREAS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_BEREICHE, 1, { 0 }, 0 },
586 { SC_OPCODE_CURRENCY, ENTRY(SC_OPCODE_CURRENCY_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_DM, 2, { 0, 1 }, 0 },
587 { SC_OPCODE_REPLACE, ENTRY(SC_OPCODE_REPLACE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ERSETZEN, 4, { 0, 0, 0, 0 }, 0 },
588 { SC_OPCODE_FIXED, ENTRY(SC_OPCODE_FIXED_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FEST, 3, { 0, 1, 1 }, 0 },
589 { SC_OPCODE_FIND, ENTRY(SC_OPCODE_FIND_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FINDEN, 3, { 0, 0, 1 }, 0 },
590 { SC_OPCODE_EXACT, ENTRY(SC_OPCODE_EXACT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_IDENTISCH, 2, { 0, 0 }, 0 },
591 { SC_OPCODE_LEFT, ENTRY(SC_OPCODE_LEFT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LINKS, 2, { 0, 1 }, 0 },
592 { SC_OPCODE_RIGHT, ENTRY(SC_OPCODE_RIGHT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_RECHTS, 2, { 0, 1 }, 0 },
593 { SC_OPCODE_SEARCH, ENTRY(SC_OPCODE_SEARCH_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SUCHEN, 3, { 0, 0, 1 }, 0 },
594 { SC_OPCODE_MID, ENTRY(SC_OPCODE_MID_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEIL, 3, { 0, 0, 0 }, 0 },
595 { SC_OPCODE_TEXT, ENTRY(SC_OPCODE_TEXT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEXT, 2, { 0, 0 }, 0 },
596 { SC_OPCODE_SUBSTITUTE, ENTRY(SC_OPCODE_SUBSTITUTE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WECHSELN, 4, { 0, 0, 0, 1 }, 0 },
597 { SC_OPCODE_REPT, ENTRY(SC_OPCODE_REPT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WIEDERHOLEN, 2, { 0, 0 }, 0 },
598 { SC_OPCODE_CONCAT, ENTRY(SC_OPCODE_CONCAT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_VERKETTEN, VAR_ARGS, { 0 }, 0 },
599 { SC_OPCODE_MAT_DET, ENTRY(SC_OPCODE_MAT_DET_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MDET, 1, { 0 }, 0 },
600 { SC_OPCODE_MAT_INV, ENTRY(SC_OPCODE_MAT_INV_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MINV, 1, { 0 }, 0 },
601 { SC_OPCODE_MAT_MULT, ENTRY(SC_OPCODE_MAT_MULT_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MMULT, 2, { 0, 0 }, 0 },
602 { SC_OPCODE_MAT_TRANS, ENTRY(SC_OPCODE_MAT_TRANS_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MTRANS, 1, { 0 }, 0 },
603 { SC_OPCODE_MATRIX_UNIT, ENTRY(SC_OPCODE_MATRIX_UNIT_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_EINHEITSMATRIX, 1, { 0 }, 0 },
604 { SC_OPCODE_HYP_GEOM_DIST, ENTRY(SC_OPCODE_HYP_GEOM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HYPGEOMVERT, 5, { 0, 0, 0, 0, 1 }, 0 },
605 { SC_OPCODE_LOG_NORM_DIST, ENTRY(SC_OPCODE_LOG_NORM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGNORMVERT, 4, { 0, 1, 1, 1 }, 0 },
606 { SC_OPCODE_T_DIST, ENTRY(SC_OPCODE_T_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TVERT, 3, { 0, 0, 0 }, 0 },
607 { SC_OPCODE_F_DIST, ENTRY(SC_OPCODE_F_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FVERT, 3, { 0, 0, 0 }, 0 },
608 { SC_OPCODE_CHI_DIST, ENTRY(SC_OPCODE_CHI_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIVERT, 2, { 0, 0 }, 0 },
609 { SC_OPCODE_WEIBULL, ENTRY(SC_OPCODE_WEIBULL_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WEIBULL, 4, { 0, 0, 0, 0 }, 0 },
610 { SC_OPCODE_NEG_BINOM_VERT, ENTRY(SC_OPCODE_NEG_BINOM_VERT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NEGBINOMVERT, 3, { 0, 0, 0 }, 0 },
611 { SC_OPCODE_CRIT_BINOM, ENTRY(SC_OPCODE_CRIT_BINOM_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KRITBINOM, 3, { 0, 0, 0 }, 0 },
612 { SC_OPCODE_KURT, ENTRY(SC_OPCODE_KURT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KURT, VAR_ARGS, { 0 }, 0 },
613 { SC_OPCODE_HAR_MEAN, ENTRY(SC_OPCODE_HAR_MEAN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HARMITTEL, VAR_ARGS, { 0 }, 0 },
614 { SC_OPCODE_GEO_MEAN, ENTRY(SC_OPCODE_GEO_MEAN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GEOMITTEL, VAR_ARGS, { 0 }, 0 },
615 { SC_OPCODE_STANDARD, ENTRY(SC_OPCODE_STANDARD_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDARDISIERUNG, 3, { 0, 0, 0 }, 0 },
616 { SC_OPCODE_AVE_DEV, ENTRY(SC_OPCODE_AVE_DEV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELABW, VAR_ARGS, { 0 }, 0 },
617 { SC_OPCODE_SKEW, ENTRY(SC_OPCODE_SKEW_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SCHIEFE, VAR_ARGS, { 0 }, 0 },
618 { SC_OPCODE_DEV_SQ, ENTRY(SC_OPCODE_DEV_SQ_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SUMQUADABW, VAR_ARGS, { 0 }, 0 },
619 { SC_OPCODE_MEDIAN, ENTRY(SC_OPCODE_MEDIAN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MEDIAN, VAR_ARGS, { 0 }, 0 },
620 { SC_OPCODE_MODAL_VALUE, ENTRY(SC_OPCODE_MODAL_VALUE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODALWERT, VAR_ARGS, { 0 }, 0 },
621 { SC_OPCODE_Z_TEST, ENTRY(SC_OPCODE_Z_TEST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GTEST, 3, { 0, 0, 1 }, 0 },
622 { SC_OPCODE_T_TEST, ENTRY(SC_OPCODE_T_TEST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TTEST, 4, { 0, 0, 0, 0 }, 0 },
623 { SC_OPCODE_RANK, ENTRY(SC_OPCODE_RANK_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANG, 3, { 0, 0, 1 }, 0 },
624 { SC_OPCODE_PERCENTILE, ENTRY(SC_OPCODE_PERCENTILE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUANTIL, 2, { 0, 0 }, 0 },
625 { SC_OPCODE_PERCENT_RANK, ENTRY(SC_OPCODE_PERCENT_RANK_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUANTILSRANG, 3, { 0, 0, 1 }, 0 },
626 { SC_OPCODE_LARGE, ENTRY(SC_OPCODE_LARGE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KGROESSTE, 2, { 0, 0 }, 0 },
627 { SC_OPCODE_SMALL, ENTRY(SC_OPCODE_SMALL_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KKLEINSTE, 2, { 0, 0 }, 0 },
628 { SC_OPCODE_FREQUENCY, ENTRY(SC_OPCODE_FREQUENCY_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_HAEUFIGKEIT, 2, { 0, 0 }, 0 },
629 { SC_OPCODE_QUARTILE, ENTRY(SC_OPCODE_QUARTILE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE, 2, { 0, 0 }, 0 },
630 { SC_OPCODE_NORM_INV, ENTRY(SC_OPCODE_NORM_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMINV, 3, { 0, 0, 0 }, 0 },
631 { SC_OPCODE_CONFIDENCE, ENTRY(SC_OPCODE_CONFIDENCE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KONFIDENZ, 3, { 0, 0, 0 }, 0 },
632 { SC_OPCODE_F_TEST, ENTRY(SC_OPCODE_F_TEST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FTEST, 2, { 0, 0 }, 0 },
633 { SC_OPCODE_TRIM_MEAN, ENTRY(SC_OPCODE_TRIM_MEAN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GESTUTZTMITTEL, 2, { 0, 0 }, 0 },
634 { SC_OPCODE_PROB, ENTRY(SC_OPCODE_PROB_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WAHRSCHBEREICH, 4, { 0, 0, 0, 1 }, 0 },
635 { SC_OPCODE_CORREL, ENTRY(SC_OPCODE_CORREL_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KORREL, 2, { 0, 0 }, 0 },
636 { SC_OPCODE_COVAR, ENTRY(SC_OPCODE_COVAR_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KOVAR, 2, { 0, 0 }, 0 },
637 { SC_OPCODE_PEARSON, ENTRY(SC_OPCODE_PEARSON_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PEARSON, 2, { 0, 0 }, 0 },
638 { SC_OPCODE_RSQ, ENTRY(SC_OPCODE_RSQ_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BESTIMMTHEITSMASS, 2, { 0, 0 }, 0 },
639 { SC_OPCODE_STEYX, ENTRY(SC_OPCODE_STEYX_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STFEHLERYX, 2, { 0, 0 }, 0 },
640 { SC_OPCODE_SLOPE, ENTRY(SC_OPCODE_SLOPE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STEIGUNG, 2, { 0, 0 }, 0 },
641 { SC_OPCODE_INTERCEPT, ENTRY(SC_OPCODE_INTERCEPT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ACHSENABSCHNITT, 2, { 0, 0 }, 0 },
642 { SC_OPCODE_TREND, ENTRY(SC_OPCODE_TREND_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_TREND, 4, { 0, 1, 1, 1 }, 0 },
643 { SC_OPCODE_GROWTH, ENTRY(SC_OPCODE_GROWTH_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_VARIATION, 4, { 0, 1, 1, 1 }, 0 },
644 { SC_OPCODE_LINEST, ENTRY(SC_OPCODE_LINEST_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_RGP, 4, { 0, 1, 1, 1 }, 0 },
645 { SC_OPCODE_LOGEST, ENTRY(SC_OPCODE_LOGEST_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_RKP, 4, { 0, 1, 1, 1 }, 0 },
646 { SC_OPCODE_FORECAST, ENTRY(SC_OPCODE_FORECAST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SCHAETZER, 3, { 0, 0, 0 }, 0 },
647 { SC_OPCODE_CHI_INV, ENTRY(SC_OPCODE_CHI_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIINV, 2, { 0, 0 }, 0 },
648 { SC_OPCODE_GAMMA_DIST, ENTRY(SC_OPCODE_GAMMA_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAVERT, 4, { 0, 0, 0, 1 }, 0 },
649 { SC_OPCODE_GAMMA_INV, ENTRY(SC_OPCODE_GAMMA_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAINV, 3, { 0, 0, 0 }, 0 },
650 { SC_OPCODE_T_INV, ENTRY(SC_OPCODE_T_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV, 2, { 0, 0 }, 0 },
651 { SC_OPCODE_F_INV, ENTRY(SC_OPCODE_F_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FINV, 3, { 0, 0, 0 }, 0 },
652 { SC_OPCODE_CHI_TEST, ENTRY(SC_OPCODE_CHI_TEST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHITEST, 2, { 0, 0 }, 0 },
653 { SC_OPCODE_LOG_INV, ENTRY(SC_OPCODE_LOG_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGINV, 3, { 0, 1, 1 }, 0 },
654 { SC_OPCODE_BETA_DIST, ENTRY(SC_OPCODE_BETA_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAVERT, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
655 { SC_OPCODE_BETA_INV, ENTRY(SC_OPCODE_BETA_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAINV, 5, { 0, 0, 0, 1, 1 }, 0 },
656 { SC_OPCODE_WEEK, ENTRY(SC_OPCODE_WEEK_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_KALENDERWOCHE, 2, { 0, 1 }, 0 },
657 { SC_OPCODE_GET_DAY_OF_WEEK, ENTRY(SC_OPCODE_GET_DAY_OF_WEEK_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WOCHENTAG, 2, { 0, 1 }, 0 },
658 { SC_OPCODE_STYLE, ENTRY(SC_OPCODE_STYLE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VORLAGE, 3, { 0, 1, 1 }, 0 },
659 { SC_OPCODE_DDE, ENTRY(SC_OPCODE_DDE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_DDE, 4, { 0, 0, 0, 1 }, 0 },
660 { SC_OPCODE_BASE, ENTRY(SC_OPCODE_BASE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_BASIS, 3, { 0, 0, 1 }, 0 },
661 { SC_OPCODE_SHEET, ENTRY(SC_OPCODE_SHEET_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TABELLE, 1, { 1 }, 0 },
662 { SC_OPCODE_SHEETS, ENTRY(SC_OPCODE_SHEETS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TABELLEN, 1, { 1 }, 0 },
663 { SC_OPCODE_MIN_A, ENTRY(SC_OPCODE_MIN_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MINA, VAR_ARGS, { 0 }, 0 },
664 { SC_OPCODE_MAX_A, ENTRY(SC_OPCODE_MAX_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAXA, VAR_ARGS, { 0 }, 0 },
665 { SC_OPCODE_AVERAGE_A, ENTRY(SC_OPCODE_AVERAGE_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELWERTA, VAR_ARGS, { 0 }, 0 },
666 { SC_OPCODE_ST_DEV_A, ENTRY(SC_OPCODE_ST_DEV_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWA, VAR_ARGS, { 0 }, 0 },
667 { SC_OPCODE_ST_DEV_P_A, ENTRY(SC_OPCODE_ST_DEV_P_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWNA, VAR_ARGS, { 0 }, 0 },
668 { SC_OPCODE_VAR_A, ENTRY(SC_OPCODE_VAR_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZA, VAR_ARGS, { 0 }, 0 },
669 { SC_OPCODE_VAR_P_A, ENTRY(SC_OPCODE_VAR_P_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZENA, VAR_ARGS, { 0 }, 0 },
670 { SC_OPCODE_EASTERSUNDAY, ENTRY(SC_OPCODE_EASTERSUNDAY_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_OSTERSONNTAG, 1, { 0 }, 0 },
671 { SC_OPCODE_DECIMAL, ENTRY(SC_OPCODE_DECIMAL_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_DEZIMAL, 2, { 0, 0 }, 0 },
672 { SC_OPCODE_CONVERT_OOO, ENTRY(SC_OPCODE_CONVERT_OOO_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UMRECHNEN, 3, { 0, 0, 0 }, 0 },
673 { SC_OPCODE_ROMAN, ENTRY(SC_OPCODE_ROMAN_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ROEMISCH, 2, { 0, 1 }, 0 },
674 { SC_OPCODE_MIRR, ENTRY(SC_OPCODE_MIRR_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_QIKV, 3, { 0, 0, 0 }, 0 },
675 { SC_OPCODE_CELL, ENTRY(SC_OPCODE_CELL_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ZELLE, 2, { 0, 1 }, 0 },
676 { SC_OPCODE_ISPMT, ENTRY(SC_OPCODE_ISPMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ISPMT, 4, { 0, 0, 0, 0 }, 0 },
677 { SC_OPCODE_HYPERLINK, ENTRY(SC_OPCODE_HYPERLINK_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_HYPERLINK, 2, { 0, 1 }, 0 },
678 { SC_OPCODE_GET_PIVOT_DATA, ENTRY(SC_OPCODE_GET_PIVOT_DATA_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_GETPIVOTDATA, VAR_ARGS+2, { 0, 0, 1 }, 0 },
679 { SC_OPCODE_EUROCONVERT, ENTRY(SC_OPCODE_EUROCONVERT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_EUROCONVERT, 5, { 0, 0, 0, 1, 1 }, 0 },
680 { SC_OPCODE_NUMBERVALUE, ENTRY(SC_OPCODE_NUMBERVALUE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_NUMBERVALUE, 3, { 0, 1, 1 }, 0 },
681 { SC_OPCODE_CHISQ_DIST, ENTRY(SC_OPCODE_CHISQ_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQDIST, 3, { 0, 0, 1 }, 0 },
682 { SC_OPCODE_CHISQ_INV, ENTRY(SC_OPCODE_CHISQ_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQINV, 2, { 0, 0 }, 0 },
683 { SC_OPCODE_BITAND, ENTRY(SC_OPCODE_BITAND_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITAND, 2, { 0, 0 }, 0 },
684 { SC_OPCODE_BITOR, ENTRY(SC_OPCODE_BITOR_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITOR, 2, { 0, 0 }, 0 },
685 { SC_OPCODE_BITXOR, ENTRY(SC_OPCODE_BITXOR_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITXOR, 2, { 0, 0 }, 0 },
686 { SC_OPCODE_BITRSHIFT, ENTRY(SC_OPCODE_BITRSHIFT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITRSHIFT, 2, { 0, 0 }, 0 },
687 { SC_OPCODE_BITLSHIFT, ENTRY(SC_OPCODE_BITLSHIFT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITLSHIFT, 2, { 0, 0 }, 0 },
688 { SC_OPCODE_GET_DATEDIF, ENTRY(SC_OPCODE_GET_DATEDIF_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATEDIF, 3, { 0, 0, 0 }, 0 },
689 { SC_OPCODE_XOR, ENTRY(SC_OPCODE_XOR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_XOR, VAR_ARGS, { 0 }, 0 },
690 { SC_OPCODE_AVERAGE_IF, ENTRY(SC_OPCODE_AVERAGE_IF_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_AVERAGEIF, 3, { 0, 0, 1 }, 0 },
691 { SC_OPCODE_SUM_IFS, ENTRY(SC_OPCODE_SUM_IFS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMIFS, PAIRED_VAR_ARGS+1, { 0, 0, 0 }, 0 },
692 { SC_OPCODE_AVERAGE_IFS, ENTRY(SC_OPCODE_AVERAGE_IFS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_AVERAGEIFS, PAIRED_VAR_ARGS+1, { 0, 0, 0 }, 0 },
693 { SC_OPCODE_COUNT_IFS, ENTRY(SC_OPCODE_COUNT_IFS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COUNTIFS, PAIRED_VAR_ARGS, { 0, 0 }, 0 },
694 { SC_OPCODE_SKEWP, ENTRY(SC_OPCODE_SKEWP_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SKEWP, VAR_ARGS, { 0 }, 0 },
695 { SC_OPCODE_LENB, ENTRY(SC_OPCODE_LENB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LENB, 1, { 0 }, 0 },
696 { SC_OPCODE_RIGHTB, ENTRY(SC_OPCODE_RIGHTB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_RIGHTB, 2, { 0, 1 }, 0 },
697 { SC_OPCODE_LEFTB, ENTRY(SC_OPCODE_LEFTB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LEFTB, 2, { 0, 1 }, 0 },
698 { SC_OPCODE_MIDB, ENTRY(SC_OPCODE_MIDB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_MIDB, 3, { 0, 0, 0 }, 0 },
699 { SC_OPCODE_FILTERXML, ENTRY(SC_OPCODE_FILTERXML_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FILTERXML, 2, { 0, 0 }, 0 },
700 { SC_OPCODE_WEBSERVICE, ENTRY(SC_OPCODE_WEBSERVICE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WEBSERVICE, 1, { 0, 0 }, 0 },
701 { SC_OPCODE_COVARIANCE_S, ENTRY(SC_OPCODE_COVARIANCE_S_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COVARIANCE_S, 2, { 0, 0 }, 0 },
702 { SC_OPCODE_COVARIANCE_P, ENTRY(SC_OPCODE_COVARIANCE_P_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COVARIANCE_P, 2, { 0, 0 }, 0 },
703 { SC_OPCODE_ST_DEV_P_MS, ENTRY(SC_OPCODE_ST_DEV_P_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ST_DEV_P_MS, VAR_ARGS, { 0 }, 0 },
704 { SC_OPCODE_ST_DEV_S, ENTRY(SC_OPCODE_ST_DEV_S_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ST_DEV_S, VAR_ARGS, { 0 }, 0 },
705 { SC_OPCODE_VAR_P_MS, ENTRY(SC_OPCODE_VAR_P_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VAR_P_MS, VAR_ARGS, { 0 }, 0 },
706 { SC_OPCODE_VAR_S, ENTRY(SC_OPCODE_VAR_S_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VAR_S, VAR_ARGS, { 0 }, 0 },
707 { SC_OPCODE_BETA_DIST_MS, ENTRY(SC_OPCODE_BETA_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETADIST_MS, 6, { 0, 0, 0, 0, 1, 1 }, 0 },
708 { SC_OPCODE_BETA_INV_MS, ENTRY(SC_OPCODE_BETA_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAINV_MS, 5, { 0, 0, 0, 1, 1 }, 0 },
709 { SC_OPCODE_BINOM_DIST_MS, ENTRY(SC_OPCODE_BINOM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOM_DIST_MS, 4, { 0, 0, 0, 0 }, 0 },
710 { SC_OPCODE_BINOM_INV, ENTRY(SC_OPCODE_BINOM_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOM_INV_MS, 3, { 0, 0, 0 }, 0 },
711 { SC_OPCODE_CHI_DIST_MS, ENTRY(SC_OPCODE_CHI_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIVERT_MS, 2, { 0, 0 }, 0 },
712 { SC_OPCODE_CHI_INV_MS, ENTRY(SC_OPCODE_CHI_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIINV_MS, 2, { 0, 0 }, 0 },
713 { SC_OPCODE_CHI_TEST_MS, ENTRY(SC_OPCODE_CHI_TEST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHITEST_MS, 2, { 0, 0 }, 0 },
714 { SC_OPCODE_CHISQ_DIST_MS, ENTRY(SC_OPCODE_CHISQ_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQDIST_MS, 3, { 0, 0, 0 }, 0 },
715 { SC_OPCODE_CHISQ_INV_MS, ENTRY(SC_OPCODE_CHISQ_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQINV_MS, 2, { 0, 0 }, 0 },
716 { SC_OPCODE_CONFIDENCE_N, ENTRY(SC_OPCODE_CONFIDENCE_N_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CONFIDENCE_N, 3, { 0, 0, 0 }, 0 },
717 { SC_OPCODE_CONFIDENCE_T, ENTRY(SC_OPCODE_CONFIDENCE_T_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CONFIDENCE_T, 3, { 0, 0, 0 }, 0 },
718 { SC_OPCODE_F_DIST_LT, ENTRY(SC_OPCODE_F_DIST_LT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_DIST_LT, 4, { 0, 0, 0, 1 }, 0 },
719 { SC_OPCODE_F_DIST_RT, ENTRY(SC_OPCODE_F_DIST_RT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_DIST_RT, 3, { 0, 0, 0 }, 0 },
720 { SC_OPCODE_F_INV_LT, ENTRY(SC_OPCODE_F_INV_LT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_INV_LT, 3, { 0, 0, 0 }, 0 },
721 { SC_OPCODE_F_INV_RT, ENTRY(SC_OPCODE_F_INV_RT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_INV_RT, 3, { 0, 0, 0 }, 0 },
722 { SC_OPCODE_F_TEST_MS, ENTRY(SC_OPCODE_F_TEST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_TEST_MS, 2, { 0, 0 }, 0 },
723 { SC_OPCODE_EXP_DIST_MS, ENTRY(SC_OPCODE_EXP_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_EXP_DIST_MS, 3, { 0, 0, 0 }, 0 },
724 { SC_OPCODE_HYP_GEOM_DIST_MS, ENTRY(SC_OPCODE_HYP_GEOM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HYP_GEOM_DIST_MS, 5, { 0, 0, 0, 0, 0 }, 0 },
725 { SC_OPCODE_POISSON_DIST_MS, ENTRY(SC_OPCODE_POISSON_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_POISSON_DIST_MS, 3, { 0, 0, 0 }, 0 },
726 { SC_OPCODE_WEIBULL_MS, ENTRY(SC_OPCODE_WEIBULL_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WEIBULL_DIST_MS, 4, { 0, 0, 0, 0 }, 0 },
727 { SC_OPCODE_GAMMA_DIST_MS, ENTRY(SC_OPCODE_GAMMA_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMADIST_MS, 4, { 0, 0, 0, 0 }, 0 },
728 { SC_OPCODE_GAMMA_INV_MS, ENTRY(SC_OPCODE_GAMMA_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAINV_MS, 3, { 0, 0, 0 }, 0 },
729 { SC_OPCODE_LOG_NORM_DIST_MS, ENTRY(SC_OPCODE_LOG_NORM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGNORMDIST_MS, 4, { 0, 0, 0, 0 }, 0 },
730 { SC_OPCODE_LOG_INV_MS, ENTRY(SC_OPCODE_LOG_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGINV, 3, { 0, 0, 0 }, 0 },
731 { SC_OPCODE_NORM_DIST_MS, ENTRY(SC_OPCODE_NORM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMDIST_MS, 4, { 0, 0, 0, 0 }, 0 },
732 { SC_OPCODE_NORM_INV_MS, ENTRY(SC_OPCODE_NORM_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMINV_MS, 3, { 0, 0, 0 }, 0 },
733 { SC_OPCODE_STD_NORM_DIST_MS, ENTRY(SC_OPCODE_STD_NORM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STD_NORMDIST_MS, 2, { 0, 0 }, 0 },
734 { SC_OPCODE_S_NORM_INV_MS, ENTRY(SC_OPCODE_S_NORM_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STD_NORMINV_MS, 1, { 0 }, 0 },
735 { SC_OPCODE_T_DIST_MS, ENTRY(SC_OPCODE_T_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_MS, 3, { 0, 0, 0 }, 0 },
736 { SC_OPCODE_T_DIST_RT, ENTRY(SC_OPCODE_T_DIST_RT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_RT, 2, { 0, 0 }, 0 },
737 { SC_OPCODE_T_DIST_2T, ENTRY(SC_OPCODE_T_DIST_2T_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_2T, 2, { 0, 0 }, 0 },
738 { SC_OPCODE_T_INV_2T, ENTRY(SC_OPCODE_T_INV_2T_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV_2T, 2, { 0, 0 }, 0 },
739 { SC_OPCODE_T_INV_MS, ENTRY(SC_OPCODE_T_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV_MS, 2, { 0, 0 }, 0 },
740 { SC_OPCODE_T_TEST_MS, ENTRY(SC_OPCODE_T_TEST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TTEST_MS, 4, { 0, 0, 0, 0 }, 0 },
741 { SC_OPCODE_PERCENTILE_INC, ENTRY(SC_OPCODE_PERCENTILE_INC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTILE_INC, 2, { 0, 0 }, 0 },
742 { SC_OPCODE_PERCENT_RANK_INC, ENTRY(SC_OPCODE_PERCENT_RANK_INC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTRANK_INC, 3, { 0, 0, 1 }, 0 },
743 { SC_OPCODE_QUARTILE_INC, ENTRY(SC_OPCODE_QUARTILE_INC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE_INC, 2, { 0, 0 }, 0 },
744 { SC_OPCODE_RANK_EQ, ENTRY(SC_OPCODE_RANK_EQ_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANK_EQ, 3, { 0, 0, 1 }, 0 },
745 { SC_OPCODE_PERCENTILE_EXC, ENTRY(SC_OPCODE_PERCENTILE_EXC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTILE_EXC, 2, { 0, 0 }, 0 },
746 { SC_OPCODE_PERCENT_RANK_EXC, ENTRY(SC_OPCODE_PERCENT_RANK_EXC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTRANK_EXC, 3, { 0, 0, 1 }, 0 },
747 { SC_OPCODE_QUARTILE_EXC, ENTRY(SC_OPCODE_QUARTILE_EXC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE_EXC, 2, { 0, 0 }, 0 },
748 { SC_OPCODE_RANK_AVG, ENTRY(SC_OPCODE_RANK_AVG_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANK_AVG, 3, { 0, 0, 1 }, 0 },
749 { SC_OPCODE_MODAL_VALUE_MS, ENTRY(SC_OPCODE_MODAL_VALUE_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODAL_VALUE_MS, VAR_ARGS, { 0 }, 0 },
750 { SC_OPCODE_MODAL_VALUE_MULTI, ENTRY(SC_OPCODE_MODAL_VALUE_MULTI_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODAL_VALUE_MULTI, VAR_ARGS, { 0 }, 0 },
751 { SC_OPCODE_NEG_BINOM_DIST_MS, ENTRY(SC_OPCODE_NEG_BINOM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NEGBINOMDIST_MS, 4, { 0, 0, 0, 0 }, 0 },
752 { SC_OPCODE_Z_TEST_MS, ENTRY(SC_OPCODE_Z_TEST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_Z_TEST_MS, 3, { 0, 0, 1 }, 0 },
753 { SC_OPCODE_CEIL_MS, ENTRY(SC_OPCODE_CEIL_MS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_MS, 2, { 0, 0 }, 0 },
754 { SC_OPCODE_CEIL_ISO, ENTRY(SC_OPCODE_CEIL_ISO_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_ISO, 2, { 0, 1 }, 0 },
755 { SC_OPCODE_FLOOR_MS, ENTRY(SC_OPCODE_FLOOR_MS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_MS, 2, { 0, 0 }, 0 },
756 { SC_OPCODE_NETWORKDAYS_MS, ENTRY(SC_OPCODE_NETWORKDAYS_MS_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_NETWORKDAYS_MS, 4, { 0, 0, 1, 1 }, 0 },
757 { SC_OPCODE_WORKDAY_MS, ENTRY(SC_OPCODE_WORKDAY_MS_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WORKDAY_MS, 4, { 0, 0, 1, 1 }, 0 },
758 { SC_OPCODE_AGGREGATE, ENTRY(SC_OPCODE_AGGREGATE_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_AGGREGATE, VAR_ARGS+3, { 0, 0, 0, 1 }, 0 },
759 { SC_OPCODE_COLOR, ENTRY(SC_OPCODE_COLOR_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COLOR, 4, { 0, 0, 0, 1 }, 0 },
760 { SC_OPCODE_CEIL_MATH, ENTRY(SC_OPCODE_CEIL_MATH_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_MATH, 3, { 0, 1, 1 }, 0 },
761 { SC_OPCODE_CEIL_PRECISE, ENTRY(SC_OPCODE_CEIL_PRECISE_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_PRECISE, 2, { 0, 1 }, 0 },
762 { SC_OPCODE_NETWORKDAYS, ENTRY(SC_OPCODE_NETWORKDAYS_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_NETWORKDAYS, 4, { 0, 0, 1, 1 }, 0 },
763 { SC_OPCODE_FLOOR_MATH, ENTRY(SC_OPCODE_FLOOR_MATH_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_MATH, 3, { 0, 1, 1 }, 0 },
764 { SC_OPCODE_FLOOR_PRECISE, ENTRY(SC_OPCODE_FLOOR_PRECISE_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_PRECISE, 2, { 0, 1 }, 0 },
765 { SC_OPCODE_RAWSUBTRACT, ENTRY(SC_OPCODE_RAWSUBTRACT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RAWSUBTRACT, VAR_ARGS+2, { 0, 0, 1 }, 0 },
766 { SC_OPCODE_WEEKNUM_OOO, ENTRY(SC_OPCODE_WEEKNUM_OOO_ARY), 2, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WEEKNUM_OOO, 2, { 0, 0 }, 0 },
767 { SC_OPCODE_FORECAST_ETS_ADD, ENTRY(SC_OPCODE_FORECAST_ETS_ADD_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_ADD, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
768 { SC_OPCODE_FORECAST_ETS_SEA, ENTRY(SC_OPCODE_FORECAST_ETS_SEA_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_SEA, 4, { 0, 0, 1, 1 }, 0 },
769 { SC_OPCODE_FORECAST_ETS_MUL, ENTRY(SC_OPCODE_FORECAST_ETS_MUL_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_MUL, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
770 { SC_OPCODE_FORECAST_ETS_PIA, ENTRY(SC_OPCODE_FORECAST_ETS_PIA_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_PIA, 7, { 0, 0, 0, 1, 1, 1, 1 }, 0 },
771 { SC_OPCODE_FORECAST_ETS_PIM, ENTRY(SC_OPCODE_FORECAST_ETS_PIM_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_PIM, 7, { 0, 0, 0, 1, 1, 1, 1 }, 0 },
772 { SC_OPCODE_FORECAST_ETS_STA, ENTRY(SC_OPCODE_FORECAST_ETS_STA_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_STA, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
773 { SC_OPCODE_FORECAST_ETS_STM, ENTRY(SC_OPCODE_FORECAST_ETS_STM_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_STM, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
774 { SC_OPCODE_FORECAST_LIN, ENTRY(SC_OPCODE_FORECAST_LIN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_LIN, 3, { 0, 0, 0 }, 0 },
775 { SC_OPCODE_CONCAT_MS, ENTRY(SC_OPCODE_CONCAT_MS_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_CONCAT_MS, VAR_ARGS, { 0 }, 0 },
776 { SC_OPCODE_TEXTJOIN_MS, ENTRY(SC_OPCODE_TEXTJOIN_MS_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEXTJOIN_MS, VAR_ARGS + 2, { 0, 0, 0 }, 0 },
777 { SC_OPCODE_IFS_MS, ENTRY(SC_OPCODE_IFS_MS_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFS_MS, PAIRED_VAR_ARGS, { 0, 0 }, 0 },
778 { SC_OPCODE_SWITCH_MS, ENTRY(SC_OPCODE_SWITCH_MS_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_SWITCH_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 }, 0 },
779 { SC_OPCODE_MINIFS_MS, ENTRY(SC_OPCODE_MINIFS_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MINIFS_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 }, 0 },
780 { SC_OPCODE_MAXIFS_MS, ENTRY(SC_OPCODE_MAXIFS_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAXIFS_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 }, 0 },
781 { SC_OPCODE_ROUNDSIG, ENTRY(SC_OPCODE_ROUNDSIG_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ROUNDSIG, 2, { 0, 0 }, 0 },
782 { SC_OPCODE_REPLACEB, ENTRY(SC_OPCODE_REPLACEB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_REPLACEB, 4, { 0, 0, 0, 0 }, 0 },
783 { SC_OPCODE_FINDB, ENTRY(SC_OPCODE_FINDB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FINDB, 3, { 0, 0, 1 }, 0 },
784 { SC_OPCODE_SEARCHB, ENTRY(SC_OPCODE_SEARCHB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SEARCHB, 3, { 0, 0, 1 }, 0 },
785 { SC_OPCODE_REGEX, ENTRY(SC_OPCODE_REGEX_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_REGEX, 4, { 0, 0, 1, 1 }, 0 },
786 { SC_OPCODE_FOURIER, ENTRY(SC_OPCODE_FOURIER_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_FOURIER, 5, { 0, 0, 1, 1, 1 }, 0 },
787 { SC_OPCODE_RANDBETWEEN_NV, ENTRY(SC_OPCODE_RANDBETWEEN_NV_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RANDBETWEEN_NV, 2, { 0, 0 }, 0 }
788 };
789
790 ScFuncDesc* pDesc = nullptr;
791 sal_Int32 nStrLen = 0;
792 ::std::vector<const ScFuncDesc*> tmpFuncVector;
793
794 // Browse for all possible OpCodes. This is not the fastest method, but
795 // otherwise the sub resources within the resource blocks and the
796 // resource blocks themselves would had to be ordered according to
797 // OpCodes, which is utopian...
798 ScFuncDescCore const * pDescsEnd = aDescs + SAL_N_ELEMENTS(aDescs);
799 for (sal_uInt16 i = 0; i <= SC_OPCODE_LAST_OPCODE_ID; ++i)
800 {
801 const ScFuncDescCore *pEntry = std::lower_bound(aDescs, pDescsEnd, i,
802 [](const ScFuncDescCore &rItem, sal_uInt16 key)
803 {
804 return rItem.nOpCode < key;
805 }
806 );
807
808 // Opcode Resource available?
809 if (pEntry != pDescsEnd && pEntry->nOpCode == i && pEntry->pResource)
810 {
811 pDesc = new ScFuncDesc;
812 bool bSuppressed = false;
813
814 ScFuncRes(*pEntry, pDesc, bSuppressed);
815 // Instead of dealing with this exceptional case at 1001 places
816 // we simply don't add an entirely suppressed function to the
817 // list and delete it.
818 if (bSuppressed)
819 delete pDesc;
820 else
821 {
822 pDesc->nFIndex = i;
823 tmpFuncVector.push_back(pDesc);
824
825 nStrLen = pDesc->mxFuncName->getLength();
826 if (nStrLen > nMaxFuncNameLen)
827 nMaxFuncNameLen = nStrLen;
828 }
829 }
830 }
831
832 // legacy binary AddIn functions
833
834 sal_uInt16 nNextId = SC_OPCODE_LAST_OPCODE_ID + 1; // FuncID for AddIn functions
835
836 // Interpretation of AddIn list
837 OUString aDefArgNameValue = "value";
838 OUString aDefArgNameString = "string";
839 OUString aDefArgNameValues = "values";
840 OUString aDefArgNameStrings = "strings";
841 OUString aDefArgNameCells = "cells";
842 OUString aDefArgNameNone = "none";
843 OUString aDefArgDescValue = "a value";
844 OUString aDefArgDescString = "a string";
845 OUString aDefArgDescValues = "array of values";
846 OUString aDefArgDescStrings = "array of strings";
847 OUString aDefArgDescCells = "range of cells";
848 OUString aDefArgDescNone = "none";
849
850 OUString aArgName, aArgDesc;
852 for (auto const& legacyFunc : rLegacyFuncColl)
853 {
854 const LegacyFuncData *const pLegacyFuncData = legacyFunc.second.get();
855 pDesc = new ScFuncDesc;
856 sal_uInt16 nArgs = pLegacyFuncData->GetParamCount() - 1;
857 pLegacyFuncData->getParamDesc( aArgName, aArgDesc, 0 );
858 pDesc->nFIndex = nNextId++; // ??? OpCode vergeben
860 pDesc->mxFuncName = pLegacyFuncData->GetInternalName().toAsciiUpperCase();
861 pDesc->mxFuncDesc = aArgDesc + "\n"
862 "( AddIn: " + pLegacyFuncData->GetModuleName() + " )";
863 pDesc->nArgCount = nArgs;
864 if (nArgs)
865 {
866 pDesc->maDefArgNames.clear();
867 pDesc->maDefArgNames.resize(nArgs);
868 pDesc->maDefArgDescs.clear();
869 pDesc->maDefArgDescs.resize(nArgs);
870 pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs];
871 for (sal_uInt16 j = 0; j < nArgs; ++j)
872 {
873 pDesc->pDefArgFlags[j].bOptional = false;
874 pLegacyFuncData->getParamDesc( aArgName, aArgDesc, j+1 );
875 if ( !aArgName.isEmpty() )
876 pDesc->maDefArgNames[j] = aArgName;
877 else
878 {
879 switch (pLegacyFuncData->GetParamType(j+1))
880 {
882 pDesc->maDefArgNames[j] = aDefArgNameValue;
883 break;
885 pDesc->maDefArgNames[j] = aDefArgNameString;
886 break;
888 pDesc->maDefArgNames[j] = aDefArgNameValues;
889 break;
891 pDesc->maDefArgNames[j] = aDefArgNameStrings;
892 break;
894 pDesc->maDefArgNames[j] = aDefArgNameCells;
895 break;
896 default:
897 pDesc->maDefArgNames[j] = aDefArgNameNone;
898 break;
899 }
900 }
901 if ( !aArgDesc.isEmpty() )
902 pDesc->maDefArgDescs[j] = aArgDesc;
903 else
904 {
905 switch (pLegacyFuncData->GetParamType(j+1))
906 {
908 pDesc->maDefArgDescs[j] = aDefArgDescValue;
909 break;
911 pDesc->maDefArgDescs[j] = aDefArgDescString;
912 break;
914 pDesc->maDefArgDescs[j] = aDefArgDescValues;
915 break;
917 pDesc->maDefArgDescs[j] = aDefArgDescStrings;
918 break;
920 pDesc->maDefArgDescs[j] = aDefArgDescCells;
921 break;
922 default:
923 pDesc->maDefArgDescs[j] = aDefArgDescNone;
924 break;
925 }
926 }
927 }
928 }
929
930 tmpFuncVector.push_back(pDesc);
931 nStrLen = pDesc->mxFuncName->getLength();
932 if ( nStrLen > nMaxFuncNameLen)
933 nMaxFuncNameLen = nStrLen;
934 }
935
936 // StarOne AddIns
937
939 tools::Long nUnoCount = pUnoAddIns->GetFuncCount();
940 for (tools::Long nFunc=0; nFunc<nUnoCount; nFunc++)
941 {
942 pDesc = new ScFuncDesc;
943 pDesc->nFIndex = nNextId++;
944
945 if ( pUnoAddIns->FillFunctionDesc( nFunc, *pDesc, mbEnglishFunctionNames ) )
946 {
947 tmpFuncVector.push_back(pDesc);
948 nStrLen = pDesc->mxFuncName->getLength();
949 if (nStrLen > nMaxFuncNameLen)
950 nMaxFuncNameLen = nStrLen;
951 }
952 else
953 delete pDesc;
954 }
955
956 aFunctionList.swap(tmpFuncVector);
957
958 //Initialize iterator
960}
961
963{
964 const ScFuncDesc* pDesc = First();
965 while (pDesc)
966 {
967 delete pDesc;
968 pDesc = Next();
969 }
970}
971
973{
974 const ScFuncDesc* pDesc = nullptr;
977 pDesc = *aFunctionListIter;
978
979 return pDesc;
980}
981
983{
984 const ScFuncDesc* pDesc = nullptr;
986 {
987 if((++aFunctionListIter) != aFunctionList.end())
988 pDesc = *aFunctionListIter;
989 }
990 return pDesc;
991}
992
993const ScFuncDesc* ScFunctionList::GetFunction( sal_uInt32 nIndex ) const
994{
995 const ScFuncDesc* pDesc = nullptr;
996 if(nIndex < aFunctionList.size())
997 pDesc = aFunctionList.at(nIndex);
998
999 return pDesc;
1000}
1001
1002
1004{
1005 return m_rCategory.size();
1006}
1007
1009{
1010 if ( m_sName.isEmpty() )
1012 return m_sName;
1013}
1014
1016{
1017 const ScFuncDesc* pDesc = nullptr;
1018 if(_nPos < m_rCategory.size())
1019 pDesc = m_rCategory.at(_nPos);
1020 return pDesc;
1021}
1022
1024{
1025 return m_nCategory;
1026}
1027
1028
1030{
1031 ScFunctionList* pFuncList
1033
1034 OSL_ENSURE( pFuncList, "Functionlist not found." );
1035 sal_uInt32 catCount[MAX_FUNCCAT] = {0};
1036
1037 aCatLists[0].reserve(pFuncList->GetCount());
1038
1039 // Retrieve all functions, store in cumulative ("All") category, and count
1040 // number of functions in each category
1041 for(const ScFuncDesc* pDesc = pFuncList->First(); pDesc; pDesc = pFuncList->Next())
1042 {
1043 OSL_ENSURE((pDesc->nCategory) < MAX_FUNCCAT, "Unknown category");
1044 if ((pDesc->nCategory) < MAX_FUNCCAT)
1045 ++catCount[pDesc->nCategory];
1046 aCatLists[0].push_back(pDesc);
1047 }
1048
1049 // Sort functions in cumulative category by name
1050 ::std::sort(aCatLists[0].begin(), aCatLists[0].end(), ScFuncDesc::compareByName);
1051
1052 // Allocate correct amount of space for categories
1053 for (sal_uInt16 i = 1; i < MAX_FUNCCAT; ++i)
1054 {
1055 aCatLists[i].reserve(catCount[i]);
1056 }
1057
1058 // Fill categories with the corresponding functions (still sorted by name)
1059 for (auto const& elemList : aCatLists[0])
1060 {
1061 if ((elemList->nCategory) < MAX_FUNCCAT)
1062 aCatLists[elemList->nCategory].push_back(elemList);
1063 }
1064
1065 // Initialize iterators
1066 pCurCatListIter = aCatLists[0].end();
1067 pCurCatListEnd = aCatLists[0].end();
1068}
1069
1071{
1072}
1073
1074
1075const ScFuncDesc* ScFunctionMgr::Get( sal_uInt16 nFIndex ) const
1076{
1077 const ScFuncDesc* pDesc;
1078 for (pDesc = First(); pDesc; pDesc = Next())
1079 if (pDesc->nFIndex == nFIndex)
1080 break;
1081 return pDesc;
1082}
1083
1084const ScFuncDesc* ScFunctionMgr::First( sal_uInt16 nCategory ) const
1085{
1086 OSL_ENSURE( nCategory < MAX_FUNCCAT, "Unknown category" );
1087 const ScFuncDesc* pDesc = nullptr;
1088 if ( nCategory < MAX_FUNCCAT )
1089 {
1090 pCurCatListIter = aCatLists[nCategory].begin();
1091 pCurCatListEnd = aCatLists[nCategory].end();
1092 pDesc = *pCurCatListIter;
1093 }
1094 else
1095 {
1096 pCurCatListIter = aCatLists[0].end();
1097 pCurCatListEnd = aCatLists[0].end();
1098 }
1099 return pDesc;
1100}
1101
1103{
1104 const ScFuncDesc* pDesc = nullptr;
1106 {
1107 if ( (++pCurCatListIter) != pCurCatListEnd )
1108 {
1109 pDesc = *pCurCatListIter;
1110 }
1111 }
1112 return pDesc;
1113}
1114
1115sal_uInt32 ScFunctionMgr::getCount() const
1116{
1117 return MAX_FUNCCAT - 1;
1118}
1119
1121{
1122 if ( nCategory < (MAX_FUNCCAT-1) )
1123 {
1124 if (m_aCategories.find(nCategory) == m_aCategories.end())
1125 m_aCategories[nCategory] = std::make_shared<ScFunctionCategory>(aCatLists[nCategory+1],nCategory); // aCatLists[0] is "all"
1126 return m_aCategories[nCategory].get();
1127 }
1128 return nullptr;
1129}
1130
1131void ScFunctionMgr::fillLastRecentlyUsedFunctions(::std::vector< const formula::IFunctionDescription*>& _rLastRUFunctions) const
1132{
1133 const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
1134 sal_uInt16 nLRUFuncCount = std::min( rAppOpt.GetLRUFuncListCount(), sal_uInt16(LRU_MAX) );
1135 sal_uInt16* pLRUListIds = rAppOpt.GetLRUFuncList();
1136 _rLastRUFunctions.clear();
1137
1138 if ( pLRUListIds )
1139 {
1140 for (sal_uInt16 i = 0; i < nLRUFuncCount; ++i)
1141 {
1142 _rLastRUFunctions.push_back( Get( pLRUListIds[i] ) );
1143 }
1144 }
1145}
1146
1147OUString ScFunctionMgr::GetCategoryName(sal_uInt32 _nCategoryNumber )
1148{
1149 if (_nCategoryNumber >= SC_FUNCGROUP_COUNT)
1150 {
1151 OSL_FAIL("Invalid category number!");
1152 return OUString();
1153 }
1154
1155 return ScResId(RID_FUNCTION_CATEGORIES[_nCategoryNumber]);
1156}
1157
1159{
1160 switch(_eToken)
1161 {
1162 case eOk:
1164 case eClose:
1166 case eSep:
1168 case eArrayOpen:
1170 case eArrayClose:
1172 }
1173 return 0;
1174}
1175
1176static void ScFuncRes(const ScFuncDescCore &rEntry, ScFuncDesc* pDesc, bool& rbSuppressed)
1177{
1178 const sal_uInt16 nOpCode = rEntry.nOpCode;
1179 sal_uInt16 nFunctionFlags = rEntry.nFunctionFlags;
1180 // Bit 1: entirely suppressed
1181 // Bit 2: hidden unless used
1182 rbSuppressed = ((nFunctionFlags & 1) != 0);
1183 pDesc->mbHidden = ((nFunctionFlags & 2) != 0);
1184 pDesc->nCategory = rEntry.nCategory;
1185 pDesc->sHelpId = rEntry.pHelpId;
1186 pDesc->nArgCount = rEntry.nArgs;
1187 sal_uInt16 nArgs = pDesc->nArgCount;
1188 sal_uInt16 nVarArgsSet = 0;
1189 if (nArgs >= PAIRED_VAR_ARGS)
1190 {
1191 nVarArgsSet = 2;
1192 nArgs -= PAIRED_VAR_ARGS - nVarArgsSet;
1193 }
1194 else if (nArgs >= VAR_ARGS)
1195 {
1196 nVarArgsSet = 1;
1197 nArgs -= VAR_ARGS - nVarArgsSet;
1198 }
1199 assert(nArgs <= SAL_N_ELEMENTS(rEntry.aOptionalArgs));
1200 if (nArgs)
1201 {
1202 pDesc->nVarArgsStart = nArgs - nVarArgsSet;
1203 pDesc->nVarArgsLimit = rEntry.nVarArgsLimit;
1204 pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs];
1205 for (sal_uInt16 i = 0; i < nArgs; ++i)
1206 {
1207 pDesc->pDefArgFlags[i].bOptional = static_cast<bool>(rEntry.aOptionalArgs[i]);
1208 }
1209 }
1210
1211 pDesc->mxFuncName = ScCompiler::GetNativeSymbol(static_cast<OpCode>(nOpCode));
1212 pDesc->mxFuncDesc = ScResId(rEntry.pResource[0]);
1213
1214 if (!nArgs)
1215 return;
1216
1217 pDesc->maDefArgNames.clear();
1218 pDesc->maDefArgNames.resize(nArgs);
1219 pDesc->maDefArgDescs.clear();
1220 pDesc->maDefArgDescs.resize(nArgs);
1221 for (sal_uInt16 i = 0; i < nArgs; ++i)
1222 {
1223 size_t nIndex = (i * 2) + 1;
1224 if (nIndex < rEntry.nResourceLen)
1225 pDesc->maDefArgNames[i] = ScResId(rEntry.pResource[nIndex]);
1226 if (nIndex + 1 < rEntry.nResourceLen)
1227 pDesc->maDefArgDescs[i] = ScResId(rEntry.pResource[nIndex + 1]);
1228 // If empty and variable number of arguments and last parameter and
1229 // parameter is optional and the previous is not optional, repeat
1230 // previous parameter name and description.
1231 if ((pDesc->maDefArgNames[i].isEmpty() || pDesc->maDefArgDescs[i].isEmpty()) &&
1232 nVarArgsSet > 0 && i > nVarArgsSet && (i == nArgs-1 || i == nArgs-2) &&
1233 pDesc->pDefArgFlags[i].bOptional)
1234 {
1235 sal_uInt16 nPrev = i - nVarArgsSet;
1236 if (!pDesc->pDefArgFlags[nPrev].bOptional)
1237 {
1238 if (pDesc->maDefArgNames[i].isEmpty())
1239 pDesc->maDefArgNames[i] = pDesc->maDefArgNames[nPrev];
1240 if (pDesc->maDefArgDescs[i].isEmpty())
1241 pDesc->maDefArgDescs[i] = pDesc->maDefArgDescs[nPrev];
1242 // This also means that variable arguments start one
1243 // parameter set earlier.
1244 pDesc->nVarArgsStart -= nVarArgsSet;
1245 }
1246 }
1247 }
1248}
1249
1250/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
::boost::spirit::classic::rule< ScannerT > argument
void getParamDesc(OUString &aName, OUString &aDesc, sal_uInt16 nParam) const
name and description of parameter nParam.
Definition: callform.cxx:343
ParamType GetParamType(sal_uInt16 nIndex) const
Definition: callform.hxx:76
sal_uInt16 GetParamCount() const
Definition: callform.hxx:75
const OUString & GetInternalName() const
Definition: callform.hxx:74
const OUString & GetModuleName() const
Definition: callform.cxx:338
sal_uInt16 GetLRUFuncListCount() const
Definition: appoptio.hxx:47
sal_uInt16 * GetLRUFuncList() const
Definition: appoptio.hxx:48
Stores and generates human readable descriptions for spreadsheet-functions, e.g. functions used in fo...
Definition: funcdesc.hxx:41
std::vector< OUString > maDefArgDescs
Description(s) of parameter(s)
Definition: funcdesc.hxx:219
sal_uInt16 nArgCount
All parameter count, suppressed and unsuppressed.
Definition: funcdesc.hxx:223
virtual sal_uInt32 getParameterCount() const override
Returns number of arguments.
Definition: funcdesc.cxx:346
virtual void initArgumentInfo() const override
Requests function data from AddInCollection.
Definition: funcdesc.cxx:310
bool mbHidden
Whether function is hidden.
Definition: funcdesc.hxx:228
virtual void fillVisibleArgumentMapping(::std::vector< sal_uInt16 > &_rArguments) const override
Fills a mapping with indexes for non-suppressed arguments.
Definition: funcdesc.cxx:292
std::vector< OUString > maDefArgNames
Parameter name(s)
Definition: funcdesc.hxx:218
virtual OUString getParameterDescription(sal_uInt32 _nPos) const override
Returns description of parameter at given position.
Definition: funcdesc.cxx:366
OUString sHelpId
HelpId of function.
Definition: funcdesc.hxx:226
virtual OUString getFunctionName() const override
Returns the name of the function.
Definition: funcdesc.cxx:266
virtual OUString getDescription() const override
Returns the description of the function.
Definition: funcdesc.cxx:279
virtual OUString getHelpId() const override
Returns the help id of the function.
Definition: funcdesc.cxx:336
void Clear()
Clears the object.
Definition: funcdesc.cxx:118
sal_uInt16 nCategory
Function category.
Definition: funcdesc.hxx:222
virtual bool isParameterOptional(sal_uInt32 _nPos) const override
Returns true if parameter at given position is optional.
Definition: funcdesc.cxx:371
static bool compareByName(const ScFuncDesc *a, const ScFuncDesc *b)
Compares functions by name, respecting special characters.
Definition: funcdesc.cxx:376
sal_uInt16 GetSuppressedArgCount() const
Returns the number of non-suppressed arguments.
Definition: funcdesc.cxx:261
std::optional< OUString > mxFuncDesc
Description of function.
Definition: funcdesc.hxx:217
ParameterFlags * pDefArgFlags
Flags for each parameter.
Definition: funcdesc.hxx:220
virtual sal_Int32 getSuppressedArgumentCount() const override
Definition: funcdesc.cxx:287
virtual ~ScFuncDesc()
Definition: funcdesc.cxx:113
virtual sal_uInt32 getVarArgsLimit() const override
Returns maximum number of (variable) arguments.
Definition: funcdesc.cxx:356
sal_uInt16 nFIndex
Unique function index.
Definition: funcdesc.hxx:221
virtual OUString getFormula(const ::std::vector< OUString > &_aArguments) const override
Returns the function signature with parameters from the passed string array.
Definition: funcdesc.cxx:233
virtual bool isHidden() const override
Returns whether function is hidden and not offered in the Function Wizard unless used in an expressio...
Definition: funcdesc.cxx:341
std::optional< OUString > mxFuncName
Function name.
Definition: funcdesc.hxx:216
virtual sal_uInt32 getVarArgsStart() const override
Returns start of variable arguments.
Definition: funcdesc.cxx:351
sal_uInt16 nVarArgsStart
Start of variable arguments, for numbering.
Definition: funcdesc.hxx:224
OUString GetParamList() const
Returns list of all parameter names.
Definition: funcdesc.cxx:146
virtual OUString getSignature() const override
Returns the full function signature.
Definition: funcdesc.cxx:212
virtual const formula::IFunctionCategory * getCategory() const override
Returns the category of the function.
Definition: funcdesc.cxx:274
bool bIncomplete
Incomplete argument info (set for add-in info from configuration)
Definition: funcdesc.hxx:227
sal_uInt16 nVarArgsLimit
Limit maximum of (variable) arguments, for numbering.
Definition: funcdesc.hxx:225
virtual OUString getParameterName(sal_uInt32 _nPos) const override
Returns name of parameter at given position.
Definition: funcdesc.cxx:361
virtual sal_uInt32 getCount() const override
Definition: funcdesc.cxx:1003
virtual const formula::IFunctionDescription * getFunction(sal_uInt32 _nPos) const override
Gives the _nPos'th function in this category.
Definition: funcdesc.cxx:1015
OUString m_sName
name of this category
Definition: funcdesc.hxx:300
const ::std::vector< const ScFuncDesc * > & m_rCategory
list of functions in this category
Definition: funcdesc.hxx:299
virtual sal_uInt32 getNumber() const override
Definition: funcdesc.cxx:1023
virtual OUString getName() const override
Definition: funcdesc.cxx:1008
sal_uInt32 m_nCategory
index number of this category
Definition: funcdesc.hxx:301
List of spreadsheet functions.
Definition: funcdesc.hxx:242
const ScFuncDesc * GetFunction(sal_uInt32 nIndex) const
Definition: funcdesc.cxx:993
const ScFuncDesc * First()
Definition: funcdesc.cxx:972
ScFunctionList(bool bEnglishFunctionNames)
Definition: funcdesc.cxx:383
sal_uInt32 GetCount() const
Definition: funcdesc.hxx:247
::std::vector< constScFuncDesc * >::iterator aFunctionListIter
position in function list
Definition: funcdesc.hxx:260
const ScFuncDesc * Next()
Definition: funcdesc.cxx:982
::std::vector< const ScFuncDesc * > aFunctionList
List of functions.
Definition: funcdesc.hxx:259
bool mbEnglishFunctionNames
Definition: funcdesc.hxx:261
std::vector< constScFuncDesc * >::const_iterator pCurCatListIter
position in current category
Definition: funcdesc.hxx:402
ScFunctionMgr()
Retrieves all calc functions, generates cumulative ('All') category, and the categories.
Definition: funcdesc.cxx:1029
std::vector< const ScFuncDesc * > aCatLists[MAX_FUNCCAT]
array of all categories, 0 is the cumulative ('All') category
Definition: funcdesc.hxx:400
const ScFuncDesc * Next() const
Returns the next function of the current category.
Definition: funcdesc.cxx:1102
virtual sal_uInt32 getCount() const override
Definition: funcdesc.cxx:1115
virtual sal_Unicode getSingleToken(const formula::IFunctionManager::EToken _eToken) const override
Maps Etoken to character.
Definition: funcdesc.cxx:1158
std::map< sal_uInt32, std::shared_ptr< ScFunctionCategory > > m_aCategories
map of category pos to IFunctionCategory
Definition: funcdesc.hxx:401
static OUString GetCategoryName(sal_uInt32 _nCategoryNumber)
Returns name of category.
Definition: funcdesc.cxx:1147
std::vector< constScFuncDesc * >::const_iterator pCurCatListEnd
end of current category
Definition: funcdesc.hxx:403
const ScFuncDesc * Get(sal_uInt16 nFIndex) const
Returns function by index.
Definition: funcdesc.cxx:1075
virtual const formula::IFunctionCategory * getCategory(sal_uInt32 nPos) const override
Returns a category.
Definition: funcdesc.cxx:1120
const ScFuncDesc * First(sal_uInt16 nCategory=0) const
Returns the first function in category nCategory.
Definition: funcdesc.cxx:1084
virtual void fillLastRecentlyUsedFunctions(::std::vector< const formula::IFunctionDescription * > &_rLastRUFunctions) const override
Appends the last recently used functions.
Definition: funcdesc.cxx:1131
virtual ~ScFunctionMgr()
Definition: funcdesc.cxx:1070
static LegacyFuncCollection * GetLegacyFuncCollection()
Definition: global.cxx:278
static SC_DLLPUBLIC ScUnoAddInCollection * GetAddInCollection()
Definition: global.cxx:283
static ScFunctionList * GetStarCalcFunctionList()
Definition: global.cxx:626
static CollatorWrapper & GetCaseCollator()
case-sensitive collator
Definition: global.cxx:1106
static ScFunctionMgr * GetStarCalcFunctionMgr()
Definition: global.cxx:635
bool FillFunctionDesc(tools::Long nFunc, ScFuncDesc &rDesc, bool bEnglishFunctionNames)
Definition: addincol.cxx:1275
const ScUnoAddInFuncData * GetFuncData(const OUString &rName, bool bComplete=false)
Only if bComplete is set, the function reference and argument types are initialized (component may ha...
Definition: addincol.cxx:1224
tools::Long GetFuncCount()
Definition: addincol.cxx:1267
OUString FindFunction(const OUString &rUpperName, bool bLocalFirst)
User entered name. rUpperName MUST already be upper case!
Definition: addincol.cxx:1181
static const OUString & GetNativeSymbol(OpCode eOp)
static sal_Unicode GetNativeSymbolChar(OpCode eOp)
#define SC_OPCODE_SLN
#define SC_OPCODE_T_TEST
#define SC_OPCODE_GAUSS
#define SC_OPCODE_NPER
#define SC_OPCODE_PERMUT
#define SC_OPCODE_NO_VALUE
#define SC_OPCODE_REPLACE
#define SC_OPCODE_CONFIDENCE_N
#define SC_OPCODE_RANK_EQ
#define SC_OPCODE_ST_DEV_P_MS
#define SC_OPCODE_CURRENT
#define SC_OPCODE_NOMINAL
#define SC_OPCODE_INT
#define SC_OPCODE_BAHTTEXT
#define SC_OPCODE_ST_DEV_S
#define SC_OPCODE_SUM_PRODUCT
#define SC_OPCODE_LOWER
#define SC_OPCODE_EXP_DIST_MS
#define SC_OPCODE_NOT
#define SC_OPCODE_INDEX
#define SC_OPCODE_DEG
#define SC_OPCODE_ROUND
#define SC_OPCODE_GET_TIME_VALUE
#define SC_OPCODE_PERCENTILE_INC
#define SC_OPCODE_F_DIST_LT
#define SC_OPCODE_WEEK
#define SC_OPCODE_BITXOR
#define SC_OPCODE_IF
#define SC_OPCODE_FILTERXML
#define SC_OPCODE_STEYX
#define SC_OPCODE_PROPER
#define SC_OPCODE_RANDOM
#define SC_OPCODE_NEG_BINOM_VERT
#define SC_OPCODE_CHI_TEST_MS
#define SC_OPCODE_IS_EVEN
#define SC_OPCODE_B
#define SC_OPCODE_GET_DATE
#define SC_OPCODE_RANDOM_NV
#define SC_OPCODE_QUARTILE_EXC
#define SC_OPCODE_ADDRESS
#define SC_OPCODE_RANK_AVG
#define SC_OPCODE_DB_STD_DEV_P
#define SC_OPCODE_FORECAST_ETS_PIA
#define SC_OPCODE_FOURIER
#define SC_OPCODE_QUARTILE
#define SC_OPCODE_CHOOSE
#define SC_OPCODE_GAMMA
#define SC_OPCODE_SUM_XMY2
#define SC_OPCODE_LOG_INV
#define SC_OPCODE_LOG_NORM_DIST
#define SC_OPCODE_PI
#define SC_OPCODE_FACT
#define SC_OPCODE_AGGREGATE
#define SC_OPCODE_DB_VAR
#define SC_OPCODE_RIGHT
#define SC_OPCODE_PRODUCT
#define SC_OPCODE_TAN_HYP
#define SC_OPCODE_MID
#define SC_OPCODE_LOG_NORM_DIST_MS
#define SC_OPCODE_GET_YEAR
#define SC_OPCODE_LOG
#define SC_OPCODE_ARC_COT_HYP
#define SC_OPCODE_PEARSON
#define SC_OPCODE_CHAR
#define SC_OPCODE_EXACT
#define SC_OPCODE_DB_MIN
#define SC_OPCODE_SHEETS
#define SC_OPCODE_T_DIST_MS
#define SC_OPCODE_MAT_TRANS
#define SC_OPCODE_GAMMA_INV_MS
#define SC_OPCODE_REPLACEB
#define SC_OPCODE_MOD
#define SC_OPCODE_MODAL_VALUE_MS
#define SC_OPCODE_STANDARD
#define SC_OPCODE_VBD
#define SC_OPCODE_FIND
#define SC_OPCODE_CLEAN
#define SC_OPCODE_SEARCHB
#define SC_OPCODE_MAT_INV
#define SC_OPCODE_T_TEST_MS
#define SC_OPCODE_GET_DIFF_DATE
#define SC_OPCODE_TEXT
#define SC_OPCODE_COUNT_IFS
#define SC_OPCODE_FISHER_INV
#define SC_OPCODE_VALUE
#define SC_OPCODE_SMALL
#define SC_OPCODE_DB_COUNT
#define SC_OPCODE_ST_DEV_A
#define SC_OPCODE_ERFC_MS
#define SC_OPCODE_POISSON_DIST
#define SC_OPCODE_NEG_BINOM_DIST_MS
#define SC_OPCODE_COVARIANCE_P
#define SC_OPCODE_VAR_S
#define SC_OPCODE_PMT
#define SC_OPCODE_TRUNC
#define SC_OPCODE_MATCH
#define SC_OPCODE_GEO_MEAN
#define SC_OPCODE_SHEET
#define SC_OPCODE_CORREL
#define SC_OPCODE_PERCENTILE_EXC
#define SC_OPCODE_MAT_DET
#define SC_OPCODE_HYPERLINK
#define SC_OPCODE_LARGE
#define SC_OPCODE_IS_ERROR
#define SC_OPCODE_IF_NA
#define SC_OPCODE_CEIL
#define SC_OPCODE_COSECANT_HYP
#define SC_OPCODE_QUARTILE_INC
#define SC_OPCODE_PERCENT_RANK_INC
#define SC_OPCODE_AREAS
#define SC_OPCODE_BINOM_DIST
#define SC_OPCODE_CURRENCY
#define SC_OPCODE_LOOKUP
#define SC_OPCODE_GET_HOUR
#define SC_OPCODE_ROUND_DOWN
#define SC_OPCODE_ARABIC
#define SC_OPCODE_N
#define SC_OPCODE_CEIL_PRECISE
#define SC_OPCODE_LINEST
#define SC_OPCODE_MIRR
#define SC_OPCODE_GET_MONTH
#define SC_OPCODE_SUM_X2MY2
#define SC_OPCODE_GET_TIME
#define SC_OPCODE_COLUMNS
#define SC_OPCODE_T
#define SC_OPCODE_SECANT
#define SC_OPCODE_MINIFS_MS
#define SC_OPCODE_AVERAGE_IFS
#define SC_OPCODE_MIN_A
#define SC_OPCODE_COLUMN
#define SC_OPCODE_NORM_DIST_MS
#define SC_OPCODE_S_NORM_INV_MS
#define SC_OPCODE_HAR_MEAN
#define SC_OPCODE_PERMUTATION_A
#define SC_OPCODE_ARC_COT
#define SC_OPCODE_COT_HYP
#define SC_OPCODE_TRIM_MEAN
#define SC_OPCODE_DB_SUM
#define SC_OPCODE_IS_VALUE
#define SC_OPCODE_IS_NON_STRING
#define SC_OPCODE_IS_REF
#define SC_OPCODE_PHI
#define SC_OPCODE_COUNT_2
#define SC_OPCODE_OFFSET
#define SC_OPCODE_LENB
#define SC_OPCODE_FV
#define SC_OPCODE_CEIL_MS
#define SC_OPCODE_STD_NORM_DIST_MS
#define SC_OPCODE_SQRT
#define SC_OPCODE_PERCENTILE
#define SC_OPCODE_MEDIAN
#define SC_OPCODE_RIGHTB
#define SC_OPCODE_F_TEST_MS
#define SC_OPCODE_ISOWEEKNUM
#define SC_OPCODE_STD_NORM_DIST
#define SC_OPCODE_FALSE
#define SC_OPCODE_FREQUENCY
#define SC_OPCODE_ARC_TAN
#define SC_OPCODE_S_NORM_INV
#define SC_OPCODE_IS_LOGICAL
#define SC_OPCODE_ARC_COS_HYP
#define SC_OPCODE_FISHER
#define SC_OPCODE_T_DIST_2T
#define SC_OPCODE_F_INV_LT
#define SC_OPCODE_BETA_DIST_MS
#define SC_OPCODE_F_DIST_RT
#define SC_OPCODE_XOR
#define SC_OPCODE_STYLE
#define SC_OPCODE_Z_TEST_MS
#define SC_OPCODE_BITAND
#define SC_OPCODE_MODAL_VALUE_MULTI
#define SC_OPCODE_JIS
#define SC_OPCODE_GCD
#define SC_OPCODE_COMBIN
#define SC_OPCODE_DB
#define SC_OPCODE_COVAR
#define SC_OPCODE_WEEKNUM_OOO
#define SC_OPCODE_GROWTH
#define SC_OPCODE_SUBSTITUTE
#define SC_OPCODE_FORECAST_ETS_STM
#define SC_OPCODE_BASE
#define SC_OPCODE_IPMT
#define SC_OPCODE_CUM_PRINC
#define SC_OPCODE_LOGEST
#define SC_OPCODE_IS_ODD
#define SC_OPCODE_IS_FORMULA
#define SC_OPCODE_SUM
#define SC_OPCODE_MAX
#define SC_OPCODE_BITRSHIFT
#define SC_OPCODE_ISPMT
#define SC_OPCODE_CODE
#define SC_OPCODE_SEARCH
#define SC_OPCODE_AVERAGE
#define SC_OPCODE_T_INV
#define SC_OPCODE_ARC_SIN_HYP
#define SC_OPCODE_UNICHAR
#define SC_OPCODE_GAMMA_DIST_MS
#define SC_OPCODE_CUM_IPMT
#define SC_OPCODE_CHISQ_DIST_MS
#define SC_OPCODE_ENCODEURL
#define SC_OPCODE_SUB_TOTAL
#define SC_OPCODE_LOG_INV_MS
#define SC_OPCODE_WEBSERVICE
#define SC_OPCODE_COMBIN_A
#define SC_OPCODE_GET_DIFF_DATE_360
#define SC_OPCODE_BETA_DIST
#define SC_OPCODE_GAMMA_LN_MS
#define SC_OPCODE_GET_MIN
#define SC_OPCODE_GAMMA_LN
#define SC_OPCODE_GET_DAY_OF_WEEK
#define SC_OPCODE_PROB
#define SC_OPCODE_NORM_DIST
#define SC_OPCODE_FORECAST_ETS_STA
#define SC_OPCODE_T_DIST_RT
#define SC_OPCODE_PDURATION
#define SC_OPCODE_WEIBULL
#define SC_OPCODE_DDE
#define SC_OPCODE_COLOR
#define SC_OPCODE_PV
#define SC_OPCODE_UNICODE
#define SC_OPCODE_CHI_INV_MS
#define SC_OPCODE_FORECAST_ETS_ADD
#define SC_OPCODE_ARC_COS
#define SC_OPCODE_HYP_GEOM_DIST
#define SC_OPCODE_DB_GET
#define SC_OPCODE_FLOOR_MS
#define SC_OPCODE_MAXIFS_MS
#define SC_OPCODE_ROUND_UP
#define SC_OPCODE_ERF_MS
#define SC_OPCODE_CHI_DIST_MS
#define SC_OPCODE_VAR_P_MS
#define SC_OPCODE_SECANT_HYP
#define SC_OPCODE_BINOM_DIST_MS
#define SC_OPCODE_BETA_INV
#define SC_OPCODE_TEXTJOIN_MS
#define SC_OPCODE_EUROCONVERT
#define SC_OPCODE_COSECANT
#define SC_OPCODE_F_INV
#define SC_OPCODE_VAR
#define SC_OPCODE_PLUS_MINUS
#define SC_OPCODE_NETWORKDAYS
#define SC_OPCODE_GAMMA_INV
#define SC_OPCODE_BETA_INV_MS
#define SC_OPCODE_SLOPE
#define SC_OPCODE_SUM_X2DY2
#define SC_OPCODE_REPT
#define SC_OPCODE_UPPER
#define SC_OPCODE_F_DIST
#define SC_OPCODE_VAR_A
#define SC_OPCODE_ST_DEV_P
#define SC_OPCODE_BINOM_INV
#define SC_OPCODE_CONVERT_OOO
#define SC_OPCODE_AVERAGE_IF
#define SC_OPCODE_RRI
#define SC_OPCODE_FLOOR
#define SC_OPCODE_IFS_MS
#define SC_OPCODE_PERCENT_RANK_EXC
#define SC_OPCODE_RANDBETWEEN_NV
#define SC_OPCODE_MAX_A
#define SC_OPCODE_ARC_TAN_2
#define SC_OPCODE_ST_DEV_P_A
#define SC_OPCODE_COT
#define SC_OPCODE_T_INV_2T
#define SC_OPCODE_IS_STRING
#define SC_OPCODE_COUNT
#define SC_OPCODE_OR
#define SC_OPCODE_CHI_TEST
#define SC_OPCODE_INFO
#define SC_OPCODE_WEIBULL_MS
#define SC_OPCODE_CHI_DIST
#define SC_OPCODE_NETWORKDAYS_MS
#define SC_OPCODE_MODAL_VALUE
#define SC_OPCODE_DDB
#define SC_OPCODE_Z_TEST
#define SC_OPCODE_SKEWP
#define SC_OPCODE_MIN
#define SC_OPCODE_GET_ACT_DATE
#define SC_OPCODE_CONFIDENCE_T
#define SC_OPCODE_CRIT_BINOM
#define SC_OPCODE_GAMMA_DIST
#define SC_OPCODE_WORKDAY_MS
#define SC_OPCODE_GET_PIVOT_DATA
#define SC_OPCODE_LN
#define SC_OPCODE_FIXED
#define SC_OPCODE_SIN_HYP
#define SC_OPCODE_ARC_SIN
#define SC_OPCODE_EASTERSUNDAY
#define SC_OPCODE_ST_DEV
#define SC_OPCODE_GET_ACT_TIME
#define SC_OPCODE_ERROR_TYPE
#define SC_OPCODE_COS
#define SC_OPCODE_BITLSHIFT
#define SC_OPCODE_LEFT
#define SC_OPCODE_ROMAN
#define SC_OPCODE_FORECAST_LIN
#define SC_OPCODE_PPMT
#define SC_OPCODE_CONCAT_MS
#define SC_OPCODE_NORM_INV
#define SC_OPCODE_DB_COUNT_2
#define SC_OPCODE_TRIM
#define SC_OPCODE_LOG10
#define SC_OPCODE_AVERAGE_A
#define SC_OPCODE_EXP
#define SC_OPCODE_POISSON_DIST_MS
#define SC_OPCODE_RANK
#define SC_OPCODE_LCM
#define SC_OPCODE_TRUE
#define SC_OPCODE_COS_HYP
#define SC_OPCODE_DECIMAL
#define SC_OPCODE_FORMULA
#define SC_OPCODE_DB_AVERAGE
#define SC_OPCODE_IS_ERR
#define SC_OPCODE_SWITCH_MS
#define SC_OPCODE_RATE
#define SC_OPCODE_SIN
#define SC_OPCODE_VAR_P_A
#define SC_OPCODE_NPV
#define SC_OPCODE_LEFTB
#define SC_OPCODE_GET_DATEDIF
#define SC_OPCODE_TAN
#define SC_OPCODE_DB_VAR_P
#define SC_OPCODE_CHISQ_INV_MS
#define SC_OPCODE_REGEX
#define SC_OPCODE_MATRIX_UNIT
#define SC_OPCODE_ROW
#define SC_OPCODE_ROWS
#define SC_OPCODE_FORECAST_ETS_SEA
#define SC_OPCODE_FLOOR_PRECISE
#define SC_OPCODE_SUM_SQ
#define SC_OPCODE_GET_DATE_VALUE
#define SC_OPCODE_AND
#define SC_OPCODE_T_INV_MS
#define SC_OPCODE_ODD
#define SC_OPCODE_CEIL_MATH
#define SC_OPCODE_CHI_INV
#define SC_OPCODE_COVARIANCE_S
#define SC_OPCODE_EXP_DIST
#define SC_OPCODE_AVE_DEV
#define SC_OPCODE_POWER
#define SC_OPCODE_RAWSUBTRACT
#define SC_OPCODE_SKEW
#define SC_OPCODE_EFFECT
#define SC_OPCODE_CELL
#define SC_OPCODE_ROUNDSIG
#define SC_OPCODE_VAR_P
#define SC_OPCODE_LEN
#define SC_OPCODE_NUMBERVALUE
#define SC_OPCODE_FORECAST_ETS_MUL
#define SC_OPCODE_NORM_INV_MS
#define SC_OPCODE_CEIL_ISO
#define SC_OPCODE_DB_MAX
#define SC_OPCODE_COUNT_IF
#define SC_OPCODE_H_LOOKUP
#define SC_OPCODE_FORECAST_ETS_PIM
#define SC_OPCODE_IS_NV
#define SC_OPCODE_ASC
#define SC_OPCODE_KURT
#define SC_OPCODE_ERROR_TYPE_ODF
#define SC_OPCODE_RAD
#define SC_OPCODE_DEV_SQ
#define SC_OPCODE_CHISQ_DIST
#define SC_OPCODE_EVEN
#define SC_OPCODE_COUNT_EMPTY_CELLS
#define SC_OPCODE_SUM_IF
#define SC_OPCODE_GET_SEC
#define SC_OPCODE_HYP_GEOM_DIST_MS
#define SC_OPCODE_RSQ
#define SC_OPCODE_GET_DAY
#define SC_OPCODE_MAT_MULT
#define SC_OPCODE_LAST_OPCODE_ID
#define SC_OPCODE_ABS
#define SC_OPCODE_CONCAT
#define SC_OPCODE_SYD
#define SC_OPCODE_TREND
#define SC_OPCODE_TYPE
#define SC_OPCODE_ARC_TAN_HYP
#define SC_OPCODE_DB_STD_DEV
#define SC_OPCODE_INTERCEPT
#define SC_OPCODE_T_DIST
#define SC_OPCODE_FORECAST
#define SC_OPCODE_F_INV_RT
#define SC_OPCODE_V_LOOKUP
#define SC_OPCODE_IS_EMPTY
#define SC_OPCODE_PERCENT_RANK
#define SC_OPCODE_BITOR
#define SC_OPCODE_IRR
#define SC_OPCODE_F_TEST
#define SC_OPCODE_CONFIDENCE
#define SC_OPCODE_FLOOR_MATH
#define SC_OPCODE_SUM_IFS
#define SC_OPCODE_MIDB
#define SC_OPCODE_CHISQ_INV
#define SC_OPCODE_DB_PRODUCT
#define SC_OPCODE_FINDB
#define SC_OPCODE_INDIRECT
#define SC_OPCODE_IF_ERROR
float u
static void ScFuncRes(const ScFuncDescCore &rEntry, ScFuncDesc *, bool &rbSuppressed)
Definition: funcdesc.cxx:1176
#define ENTRY(CODE)
Definition: funcdesc.cxx:381
#define MAX_FUNCCAT
Definition: funcdesc.hxx:33
#define SC_FUNCGROUP_COUNT
Definition: funcdesc.hxx:304
#define LRU_MAX
Definition: funcdesc.hxx:34
#define VAR_ARGS
#define PAIRED_VAR_ARGS
constexpr OUStringLiteral HID_FUNC_NEGBINOMDIST_MS
Definition: helpids.h:556
constexpr OUStringLiteral HID_FUNC_VARIANZA
Definition: helpids.h:432
constexpr OUStringLiteral HID_FUNC_KOMBINATIONEN
Definition: helpids.h:294
constexpr OUStringLiteral HID_FUNC_NORMVERT
Definition: helpids.h:391
constexpr OUStringLiteral HID_FUNC_LOGINV
Definition: helpids.h:396
constexpr OUStringLiteral HID_FUNC_F_DIST_LT
Definition: helpids.h:523
constexpr OUStringLiteral HID_FUNC_F_INV_LT
Definition: helpids.h:525
constexpr OUStringLiteral HID_FUNC_TTEST
Definition: helpids.h:418
constexpr OUStringLiteral HID_FUNC_ANZAHL
Definition: helpids.h:356
constexpr OUStringLiteral HID_FUNC_DEG
Definition: helpids.h:317
constexpr OUStringLiteral HID_FUNC_FALSCH
Definition: helpids.h:267
constexpr OUStringLiteral HID_FUNC_ISTLOG
Definition: helpids.h:253
constexpr OUStringLiteral HID_FUNC_KOMBINATIONEN2
Definition: helpids.h:295
constexpr OUStringLiteral HID_FUNC_FLOOR_MATH
Definition: helpids.h:570
constexpr OUStringLiteral HID_FUNC_SUMME
Definition: helpids.h:281
constexpr OUStringLiteral HID_FUNC_SUMMEXMY2
Definition: helpids.h:349
constexpr OUStringLiteral HID_FUNC_LOG
Definition: helpids.h:320
constexpr OUStringLiteral HID_FUNC_ZEIT
Definition: helpids.h:215
constexpr OUStringLiteral HID_FUNC_FLOOR_MS
Definition: helpids.h:561
constexpr OUStringLiteral HID_FUNC_XOR
Definition: helpids.h:275
constexpr OUStringLiteral HID_FUNC_NORMINV
Definition: helpids.h:392
constexpr OUStringLiteral HID_FUNC_ST_DEV_S
Definition: helpids.h:509
constexpr OUStringLiteral HID_FUNC_ERF_MS
Definition: helpids.h:565
constexpr OUStringLiteral HID_FUNC_TYP
Definition: helpids.h:261
constexpr OUStringLiteral HID_FUNC_ERSETZEN
Definition: helpids.h:475
constexpr OUStringLiteral HID_FUNC_RANG
Definition: helpids.h:379
constexpr OUStringLiteral HID_FUNC_CHIVERT_MS
Definition: helpids.h:517
constexpr OUStringLiteral HID_FUNC_INDIREKT
Definition: helpids.h:448
constexpr OUStringLiteral HID_FUNC_RANDBETWEEN_NV
Definition: helpids.h:595
constexpr OUStringLiteral HID_FUNC_LINKS
Definition: helpids.h:478
constexpr OUStringLiteral HID_FUNC_QIKV
Definition: helpids.h:246
constexpr OUStringLiteral HID_FUNC_ARABISCH
Definition: helpids.h:490
constexpr OUStringLiteral HID_FUNC_WAHRSCHBEREICH
Definition: helpids.h:381
constexpr OUStringLiteral HID_FUNC_NETWORKDAYS_MS
Definition: helpids.h:563
constexpr OUStringLiteral HID_FUNC_GANZZAHL
Definition: helpids.h:327
constexpr OUStringLiteral HID_FUNC_ISPMT
Definition: helpids.h:247
constexpr OUStringLiteral HID_FUNC_F_TEST_MS
Definition: helpids.h:527
constexpr OUStringLiteral HID_FUNC_VARIANZEN
Definition: helpids.h:361
constexpr OUStringLiteral HID_FUNC_CHIINV
Definition: helpids.h:410
constexpr OUStringLiteral HID_FUNC_TAGE
Definition: helpids.h:220
constexpr OUStringLiteral HID_FUNC_SUMMEX2PY2
Definition: helpids.h:348
constexpr OUStringLiteral HID_FUNC_PEARSON
Definition: helpids.h:423
constexpr OUStringLiteral HID_FUNC_BINOM_DIST_MS
Definition: helpids.h:514
constexpr OUStringLiteral HID_FUNC_ANZAHLLEEREZELLEN
Definition: helpids.h:279
constexpr OUStringLiteral HID_FUNC_KLEIN
Definition: helpids.h:471
constexpr OUStringLiteral HID_FUNC_RUNDEN
Definition: helpids.h:329
constexpr OUStringLiteral HID_FUNC_BINOM_INV_MS
Definition: helpids.h:515
constexpr OUStringLiteral HID_FUNC_SUMQUADABW
Definition: helpids.h:365
constexpr OUStringLiteral HID_FUNC_VARIATION
Definition: helpids.h:354
constexpr OUStringLiteral HID_FUNC_DDE
Definition: helpids.h:454
constexpr OUStringLiteral HID_FUNC_HAEUFIGKEIT
Definition: helpids.h:350
constexpr OUStringLiteral HID_FUNC_STABWN
Definition: helpids.h:363
constexpr OUStringLiteral HID_FUNC_TREND
Definition: helpids.h:353
constexpr OUStringLiteral HID_FUNC_ASC
Definition: helpids.h:493
constexpr OUStringLiteral HID_FUNC_VARIANZ
Definition: helpids.h:360
constexpr OUStringLiteral HID_FUNC_JETZT
Definition: helpids.h:213
constexpr OUStringLiteral HID_FUNC_ZELLE
Definition: helpids.h:264
constexpr OUStringLiteral HID_FUNC_PI
Definition: helpids.h:280
constexpr OUStringLiteral HID_FUNC_BITLSHIFT
Definition: helpids.h:500
constexpr OUStringLiteral HID_FUNC_CHIINV_MS
Definition: helpids.h:516
constexpr OUStringLiteral HID_FUNC_TABELLEN
Definition: helpids.h:456
constexpr OUStringLiteral HID_FUNC_SKEWP
Definition: helpids.h:368
constexpr OUStringLiteral HID_FUNC_NBW
Definition: helpids.h:242
constexpr OUStringLiteral HID_FUNC_MONAT
Definition: helpids.h:212
constexpr OUStringLiteral HID_FUNC_FISHERINV
Definition: helpids.h:386
constexpr OUStringLiteral HID_FUNC_GAMMAINV_MS
Definition: helpids.h:533
constexpr OUStringLiteral HID_FUNC_WVERWEIS
Definition: helpids.h:445
constexpr OUStringLiteral HID_FUNC_MODAL_VALUE_MULTI
Definition: helpids.h:555
constexpr OUStringLiteral HID_FUNC_ZINS
Definition: helpids.h:230
constexpr OUStringLiteral HID_FUNC_KUERZEN
Definition: helpids.h:328
constexpr OUStringLiteral HID_FUNC_VAR_S
Definition: helpids.h:511
constexpr OUStringLiteral HID_FUNC_VERSCHIEBUNG
Definition: helpids.h:451
constexpr OUStringLiteral HID_FUNC_BITOR
Definition: helpids.h:498
constexpr OUStringLiteral HID_FUNC_ARSINHYP
Definition: helpids.h:299
constexpr OUStringLiteral HID_FUNC_AUFRUNDEN
Definition: helpids.h:330
constexpr OUStringLiteral HID_FUNC_WOCHENTAG
Definition: helpids.h:218
constexpr OUStringLiteral HID_FUNC_RANK_EQ
Definition: helpids.h:552
constexpr OUStringLiteral HID_FUNC_WERT
Definition: helpids.h:472
constexpr OUStringLiteral HID_FUNC_DATUM
Definition: helpids.h:206
constexpr OUStringLiteral HID_FUNC_GAMMADIST_MS
Definition: helpids.h:532
constexpr OUStringLiteral HID_FUNC_POISSON_DIST_MS
Definition: helpids.h:530
constexpr OUStringLiteral HID_FUNC_SPALTEN
Definition: helpids.h:443
constexpr OUStringLiteral HID_FUNC_QUADRATESUMME
Definition: helpids.h:282
constexpr OUStringLiteral HID_FUNC_TINV
Definition: helpids.h:406
constexpr OUStringLiteral HID_FUNC_STANDNORMINV
Definition: helpids.h:394
constexpr OUStringLiteral HID_FUNC_PHI
Definition: helpids.h:383
constexpr OUStringLiteral HID_FUNC_GETPIVOTDATA
Definition: helpids.h:458
constexpr OUStringLiteral HID_FUNC_CODE
Definition: helpids.h:460
constexpr OUStringLiteral HID_FUNC_QUANTIL
Definition: helpids.h:374
constexpr OUStringLiteral HID_FUNC_VERWEIS
Definition: helpids.h:449
constexpr OUStringLiteral HID_FUNC_FORECAST_ETS_STM
Definition: helpids.h:580
constexpr OUStringLiteral HID_FUNC_UNICHAR
Definition: helpids.h:495
constexpr OUStringLiteral HID_FUNC_BEREICHE
Definition: helpids.h:439
constexpr OUStringLiteral HID_FUNC_TAGE360
Definition: helpids.h:209
constexpr OUStringLiteral HID_FUNC_MINA
Definition: helpids.h:427
constexpr OUStringLiteral HID_FUNC_FVERT
Definition: helpids.h:407
constexpr OUStringLiteral HID_FUNC_SUMIFS
Definition: helpids.h:286
constexpr OUStringLiteral HID_FUNC_COT
Definition: helpids.h:306
constexpr OUStringLiteral HID_FUNC_ST_DEV_P_MS
Definition: helpids.h:508
constexpr OUStringLiteral HID_FUNC_B
Definition: helpids.h:382
constexpr OUStringLiteral HID_FUNC_ARCTAN
Definition: helpids.h:301
constexpr OUStringLiteral HID_FUNC_REPLACEB
Definition: helpids.h:589
constexpr OUStringLiteral HID_FUNC_DBPRODUKT
Definition: helpids.h:199
constexpr OUStringLiteral HID_FUNC_SPALTE
Definition: helpids.h:441
constexpr OUStringLiteral HID_FUNC_LOGNORMVERT
Definition: helpids.h:395
constexpr OUStringLiteral HID_FUNC_UMRECHNEN
Definition: helpids.h:338
constexpr OUStringLiteral HID_FUNC_VORLAGE
Definition: helpids.h:453
constexpr OUStringLiteral HID_FUNC_ZEICHEN
Definition: helpids.h:462
constexpr OUStringLiteral HID_FUNC_TEXT
Definition: helpids.h:473
constexpr OUStringLiteral HID_FUNC_CHISQDIST
Definition: helpids.h:434
constexpr OUStringLiteral HID_FUNC_ZUFALLSZAHL
Definition: helpids.h:291
constexpr OUStringLiteral HID_FUNC_CEIL_PRECISE
Definition: helpids.h:559
constexpr OUStringLiteral HID_FUNC_COUNTIFS
Definition: helpids.h:288
constexpr OUStringLiteral HID_FUNC_HYP_GEOM_DIST_MS
Definition: helpids.h:529
constexpr OUStringLiteral HID_FUNC_EINHEITSMATRIX
Definition: helpids.h:345
constexpr OUStringLiteral HID_FUNC_GAMMA
Definition: helpids.h:436
constexpr OUStringLiteral HID_FUNC_TDIST_RT
Definition: helpids.h:542
constexpr OUStringLiteral HID_FUNC_JAHR
Definition: helpids.h:219
constexpr OUStringLiteral HID_FUNC_ISTNV
Definition: helpids.h:254
constexpr OUStringLiteral HID_FUNC_NORMINV_MS
Definition: helpids.h:537
constexpr OUStringLiteral HID_FUNC_TABELLE
Definition: helpids.h:455
constexpr OUStringLiteral HID_FUNC_GAMMAINV
Definition: helpids.h:399
constexpr OUStringLiteral HID_FUNC_PERCENTILE_EXC
Definition: helpids.h:546
constexpr OUStringLiteral HID_FUNC_BAHTTEXT
Definition: helpids.h:491
constexpr OUStringLiteral HID_FUNC_DIA
Definition: helpids.h:235
constexpr OUStringLiteral HID_FUNC_INDEX
Definition: helpids.h:447
constexpr OUStringLiteral HID_FUNC_FISHER
Definition: helpids.h:385
constexpr OUStringLiteral HID_FUNC_FORECAST_ETS_PIM
Definition: helpids.h:577
constexpr OUStringLiteral HID_FUNC_LOG10
Definition: helpids.h:322
constexpr OUStringLiteral HID_FUNC_STD_NORMINV_MS
Definition: helpids.h:539
constexpr OUStringLiteral HID_FUNC_MAX
Definition: helpids.h:358
constexpr OUStringLiteral HID_FUNC_WIEDERHOLEN
Definition: helpids.h:485
constexpr OUStringLiteral HID_FUNC_RAND_NV
Definition: helpids.h:594
constexpr OUStringLiteral HID_FUNC_RGP
Definition: helpids.h:351
constexpr OUStringLiteral HID_FUNC_LEFTB
Definition: helpids.h:483
constexpr OUStringLiteral HID_FUNC_IDENTISCH
Definition: helpids.h:465
constexpr OUStringLiteral HID_FUNC_TEIL
Definition: helpids.h:480
constexpr OUStringLiteral HID_FUNC_LN
Definition: helpids.h:321
constexpr OUStringLiteral HID_FUNC_MIDB
Definition: helpids.h:484
constexpr OUStringLiteral HID_FUNC_FORECAST_ETS_PIA
Definition: helpids.h:576
constexpr OUStringLiteral HID_FUNC_ANZAHL2
Definition: helpids.h:357
constexpr OUStringLiteral HID_FUNC_ACHSENABSCHNITT
Definition: helpids.h:420
constexpr OUStringLiteral HID_FUNC_CONFIDENCE_N
Definition: helpids.h:521
constexpr OUStringLiteral HID_FUNC_TEXTJOIN_MS
Definition: helpids.h:583
constexpr OUStringLiteral HID_FUNC_STABWNA
Definition: helpids.h:431
constexpr OUStringLiteral HID_FUNC_IFERROR
Definition: helpids.h:271
constexpr OUStringLiteral HID_FUNC_SWITCH_MS
Definition: helpids.h:585
constexpr OUStringLiteral HID_FUNC_WEIBULL_DIST_MS
Definition: helpids.h:531
constexpr OUStringLiteral HID_FUNC_ARCTAN2
Definition: helpids.h:312
constexpr OUStringLiteral HID_FUNC_VARIATIONEN
Definition: helpids.h:412
constexpr OUStringLiteral HID_FUNC_NOMINAL
Definition: helpids.h:241
constexpr OUStringLiteral HID_FUNC_AGGREGATE
Definition: helpids.h:567
constexpr OUStringLiteral HID_FUNC_NV
Definition: helpids.h:260
constexpr OUStringLiteral HID_FUNC_MAXA
Definition: helpids.h:428
constexpr OUStringLiteral HID_FUNC_ISTFORMEL
Definition: helpids.h:258
constexpr OUStringLiteral HID_FUNC_RMZ
Definition: helpids.h:229
constexpr OUStringLiteral HID_FUNC_MIN
Definition: helpids.h:359
constexpr OUStringLiteral HID_FUNC_ENCODEURL
Definition: helpids.h:504
constexpr OUStringLiteral HID_FUNC_COVARIANCE_S
Definition: helpids.h:507
constexpr OUStringLiteral HID_FUNC_GAMMALN_MS
Definition: helpids.h:534
constexpr OUStringLiteral HID_FUNC_ISTKTEXT
Definition: helpids.h:255
constexpr OUStringLiteral HID_FUNC_WEIBULL
Definition: helpids.h:403
constexpr OUStringLiteral HID_FUNC_WENN
Definition: helpids.h:270
constexpr OUStringLiteral HID_FUNC_SUCHEN
Definition: helpids.h:467
constexpr OUStringLiteral HID_FUNC_GLAETTEN
Definition: helpids.h:468
constexpr OUStringLiteral HID_FUNC_FLOOR_PRECISE
Definition: helpids.h:571
constexpr OUStringLiteral HID_FUNC_WEBSERVICE
Definition: helpids.h:503
constexpr OUStringLiteral HID_FUNC_NUMBERVALUE
Definition: helpids.h:496
constexpr OUStringLiteral HID_FUNC_BASIS
Definition: helpids.h:487
constexpr OUStringLiteral HID_FUNC_GTEST
Definition: helpids.h:415
constexpr OUStringLiteral HID_FUNC_BETAINV
Definition: helpids.h:402
constexpr OUStringLiteral HID_FUNC_IFNA
Definition: helpids.h:272
constexpr OUStringLiteral HID_FUNC_ZEILE
Definition: helpids.h:442
constexpr OUStringLiteral HID_FUNC_CEIL_MS
Definition: helpids.h:558
constexpr OUStringLiteral HID_FUNC_RANK_AVG
Definition: helpids.h:553
constexpr OUStringLiteral HID_FUNC_FTEST
Definition: helpids.h:417
constexpr OUStringLiteral HID_FUNC_WEEKNUM_OOO
Definition: helpids.h:573
constexpr OUStringLiteral HID_FUNC_TDIST_2T
Definition: helpids.h:540
constexpr OUStringLiteral HID_FUNC_ARCCOS
Definition: helpids.h:296
constexpr OUStringLiteral HID_FUNC_ARCOSHYP
Definition: helpids.h:298
constexpr OUStringLiteral HID_FUNC_ISOWEEKNUM
Definition: helpids.h:224
constexpr OUStringLiteral HID_FUNC_DBVARIANZ
Definition: helpids.h:203
constexpr OUStringLiteral HID_FUNC_SIN
Definition: helpids.h:305
constexpr OUStringLiteral HID_FUNC_STANDNORMVERT
Definition: helpids.h:393
constexpr OUStringLiteral HID_FUNC_IKV
Definition: helpids.h:243
constexpr OUStringLiteral HID_FUNC_RIGHTB
Definition: helpids.h:482
constexpr OUStringLiteral HID_FUNC_LAENGE
Definition: helpids.h:477
constexpr OUStringLiteral HID_FUNC_QUARTILE
Definition: helpids.h:375
constexpr OUStringLiteral HID_FUNC_FORECAST_ETS_MUL
Definition: helpids.h:575
constexpr OUStringLiteral HID_FUNC_DM
Definition: helpids.h:461
constexpr OUStringLiteral HID_FUNC_FINDEN
Definition: helpids.h:466
constexpr OUStringLiteral HID_FUNC_ISTBEZUG
Definition: helpids.h:249
constexpr OUStringLiteral HID_FUNC_DBSUMME
Definition: helpids.h:202
constexpr OUStringLiteral HID_FUNC_ISTLEER
Definition: helpids.h:252
constexpr OUStringLiteral HID_FUNC_UNICODE
Definition: helpids.h:494
constexpr OUStringLiteral HID_FUNC_AVERAGEIF
Definition: helpids.h:285
constexpr OUStringLiteral HID_FUNC_GAMMALN
Definition: helpids.h:400
constexpr OUStringLiteral HID_FUNC_SUMMEWENN
Definition: helpids.h:284
constexpr OUStringLiteral HID_FUNC_DBSTDABW
Definition: helpids.h:200
constexpr OUStringLiteral HID_FUNC_TINV_2T
Definition: helpids.h:543
constexpr OUStringLiteral HID_FUNC_VERKETTEN
Definition: helpids.h:464
constexpr OUStringLiteral HID_FUNC_TANHYP
Definition: helpids.h:311
constexpr OUStringLiteral HID_FUNC_EUROCONVERT
Definition: helpids.h:339
constexpr OUStringLiteral HID_FUNC_GEOMITTEL
Definition: helpids.h:370
constexpr OUStringLiteral HID_FUNC_MDET
Definition: helpids.h:343
constexpr OUStringLiteral HID_FUNC_DEZIMAL
Definition: helpids.h:488
constexpr OUStringLiteral HID_FUNC_AKTUELL
Definition: helpids.h:262
constexpr OUStringLiteral HID_FUNC_PERCENTRANK_INC
Definition: helpids.h:549
constexpr OUStringLiteral HID_FUNC_CHISQINV_MS
Definition: helpids.h:520
constexpr OUStringLiteral HID_FUNC_SCHIEFE
Definition: helpids.h:367
constexpr OUStringLiteral HID_FUNC_HEUTE
Definition: helpids.h:217
constexpr OUStringLiteral HID_FUNC_ROEMISCH
Definition: helpids.h:489
constexpr OUStringLiteral HID_FUNC_PERCENTILE_INC
Definition: helpids.h:547
constexpr OUStringLiteral HID_FUNC_COLOR
Definition: helpids.h:505
constexpr OUStringLiteral HID_FUNC_ZAEHLENWENN
Definition: helpids.h:289
constexpr OUStringLiteral HID_FUNC_AVERAGEIFS
Definition: helpids.h:287
constexpr OUStringLiteral HID_FUNC_POISSON
Definition: helpids.h:390
constexpr OUStringLiteral HID_FUNC_MINV
Definition: helpids.h:344
constexpr OUStringLiteral HID_FUNC_GAMMAVERT
Definition: helpids.h:398
constexpr OUStringLiteral HID_FUNC_HYPGEOMVERT
Definition: helpids.h:404
constexpr OUStringLiteral HID_FUNC_DATWERT
Definition: helpids.h:207
constexpr OUStringLiteral HID_FUNC_UNGERADE
Definition: helpids.h:333
constexpr OUStringLiteral HID_FUNC_GGT
Definition: helpids.h:336
constexpr OUStringLiteral HID_FUNC_BITRSHIFT
Definition: helpids.h:501
constexpr OUStringLiteral HID_FUNC_SVERWEIS
Definition: helpids.h:446
constexpr OUStringLiteral HID_FUNC_FORECAST_ETS_SEA
Definition: helpids.h:578
constexpr OUStringLiteral HID_FUNC_BITXOR
Definition: helpids.h:499
constexpr OUStringLiteral HID_FUNC_VDB
Definition: helpids.h:239
constexpr OUStringLiteral HID_FUNC_STEIGUNG
Definition: helpids.h:421
constexpr OUStringLiteral HID_FUNC_CHISQDIST_MS
Definition: helpids.h:519
constexpr OUStringLiteral HID_FUNC_COSHYP
Definition: helpids.h:308
constexpr OUStringLiteral HID_FUNC_ISTTEXT
Definition: helpids.h:256
constexpr OUStringLiteral HID_FUNC_ZGZ
Definition: helpids.h:245
constexpr OUStringLiteral HID_FUNC_INFO
Definition: helpids.h:265
constexpr OUStringLiteral HID_FUNC_POTENZ
Definition: helpids.h:278
constexpr OUStringLiteral HID_FUNC_STUNDE
Definition: helpids.h:210
constexpr OUStringLiteral HID_FUNC_STD_NORMDIST_MS
Definition: helpids.h:538
constexpr OUStringLiteral HID_FUNC_ABRUNDEN
Definition: helpids.h:331
constexpr OUStringLiteral HID_FUNC_BETAVERT
Definition: helpids.h:401
constexpr OUStringLiteral HID_FUNC_QUARTILE_EXC
Definition: helpids.h:551
constexpr OUStringLiteral HID_FUNC_UNTERGRENZE
Definition: helpids.h:335
constexpr OUStringLiteral HID_FUNC_UND
Definition: helpids.h:274
constexpr OUStringLiteral HID_FUNC_ISTGERADE
Definition: helpids.h:292
constexpr OUStringLiteral HID_FUNC_KKLEINSTE
Definition: helpids.h:377
constexpr OUStringLiteral HID_FUNC_BETADIST_MS
Definition: helpids.h:512
constexpr OUStringLiteral HID_FUNC_ISTFEHL
Definition: helpids.h:250
constexpr OUStringLiteral HID_FUNC_ARTANHYP
Definition: helpids.h:303
constexpr OUStringLiteral HID_FUNC_VARIANZENA
Definition: helpids.h:433
constexpr OUStringLiteral HID_FUNC_ZW
Definition: helpids.h:227
constexpr OUStringLiteral HID_FUNC_CEIL_ISO
Definition: helpids.h:560
constexpr OUStringLiteral HID_FUNC_DBMIN
Definition: helpids.h:198
constexpr OUStringLiteral HID_FUNC_KUMKAPITAL
Definition: helpids.h:233
constexpr OUStringLiteral HID_FUNC_QUANTILSRANG
Definition: helpids.h:378
constexpr OUStringLiteral HID_FUNC_NORMDIST_MS
Definition: helpids.h:536
constexpr OUStringLiteral HID_FUNC_PRODUKT
Definition: helpids.h:283
constexpr OUStringLiteral HID_FUNC_GDA
Definition: helpids.h:237
constexpr OUStringLiteral HID_FUNC_QUARTILE_INC
Definition: helpids.h:550
constexpr OUStringLiteral HID_FUNC_ZINSZ
Definition: helpids.h:231
constexpr OUStringLiteral HID_FUNC_KGROESSTE
Definition: helpids.h:376
constexpr OUStringLiteral HID_FUNC_SECANTHYP
Definition: helpids.h:315
constexpr OUStringLiteral HID_FUNC_KURT
Definition: helpids.h:369
constexpr OUStringLiteral HID_FUNC_FINV
Definition: helpids.h:408
constexpr OUStringLiteral HID_FUNC_VAR_P_MS
Definition: helpids.h:510
constexpr OUStringLiteral HID_FUNC_PERCENTRANK_EXC
Definition: helpids.h:548
constexpr OUStringLiteral HID_FUNC_GDA2
Definition: helpids.h:238
constexpr OUStringLiteral HID_FUNC_JIS
Definition: helpids.h:492
constexpr OUStringLiteral HID_FUNC_STFEHLERYX
Definition: helpids.h:422
constexpr OUStringLiteral HID_FUNC_HYPERLINK
Definition: helpids.h:457
constexpr OUStringLiteral HID_FUNC_FORECAST_ETS_ADD
Definition: helpids.h:574
constexpr OUStringLiteral HID_FUNC_MINUTE
Definition: helpids.h:211
constexpr OUStringLiteral HID_FUNC_FEST
Definition: helpids.h:476
constexpr OUStringLiteral HID_FUNC_VERGLEICH
Definition: helpids.h:450
constexpr OUStringLiteral HID_FUNC_NETWORKDAYS
Definition: helpids.h:562
constexpr OUStringLiteral HID_FUNC_ABS
Definition: helpids.h:277
constexpr OUStringLiteral HID_FUNC_DBANZAHL
Definition: helpids.h:193
constexpr OUStringLiteral HID_FUNC_CEIL_MATH
Definition: helpids.h:569
constexpr OUStringLiteral HID_FUNC_WECHSELN
Definition: helpids.h:486
constexpr OUStringLiteral HID_FUNC_TINV_MS
Definition: helpids.h:544
constexpr OUStringLiteral HID_FUNC_RECHTS
Definition: helpids.h:479
constexpr OUStringLiteral HID_FUNC_MITTELWERTA
Definition: helpids.h:429
constexpr OUStringLiteral HID_FUNC_ZEITWERT
Definition: helpids.h:216
constexpr OUStringLiteral HID_FUNC_ARCOTHYP
Definition: helpids.h:302
constexpr OUStringLiteral HID_FUNC_DATEDIF
Definition: helpids.h:221
constexpr OUStringLiteral HID_FUNC_STABWA
Definition: helpids.h:430
constexpr OUStringLiteral HID_FUNC_WORKDAY_MS
Definition: helpids.h:564
constexpr OUStringLiteral HID_FUNC_ERROR_TYPE_ODF
Definition: helpids.h:568
constexpr OUStringLiteral HID_FUNC_BITAND
Definition: helpids.h:497
constexpr OUStringLiteral HID_FUNC_TAN
Definition: helpids.h:307
constexpr OUStringLiteral HID_FUNC_GERADE
Definition: helpids.h:332
constexpr OUStringLiteral HID_FUNC_ARCSIN
Definition: helpids.h:297
constexpr OUStringLiteral HID_FUNC_VORZEICHEN
Definition: helpids.h:325
constexpr OUStringLiteral HID_FUNC_ODER
Definition: helpids.h:273
constexpr OUStringLiteral HID_FUNC_EXPONVERT
Definition: helpids.h:397
constexpr OUStringLiteral HID_FUNC_FORMEL
Definition: helpids.h:263
constexpr OUStringLiteral HID_FUNC_LIA
Definition: helpids.h:236
constexpr OUStringLiteral HID_FUNC_WAHR
Definition: helpids.h:269
constexpr OUStringLiteral HID_FUNC_EFFEKTIV
Definition: helpids.h:240
constexpr OUStringLiteral HID_FUNC_SEKUNDE
Definition: helpids.h:214
constexpr OUStringLiteral HID_FUNC_RKP
Definition: helpids.h:352
constexpr OUStringLiteral HID_FUNC_STABW
Definition: helpids.h:362
constexpr OUStringLiteral HID_FUNC_MTRANS
Definition: helpids.h:341
constexpr OUStringLiteral HID_FUNC_CHITEST_MS
Definition: helpids.h:518
constexpr OUStringLiteral HID_FUNC_DBMAX
Definition: helpids.h:197
constexpr OUStringLiteral HID_FUNC_WAHL
Definition: helpids.h:440
constexpr OUStringLiteral HID_FUNC_FAKULTAET
Definition: helpids.h:323
constexpr OUStringLiteral HID_FUNC_MITTELABW
Definition: helpids.h:366
constexpr OUStringLiteral HID_FUNC_MMULT
Definition: helpids.h:342
constexpr OUStringLiteral HID_FUNC_TDIST_MS
Definition: helpids.h:541
constexpr OUStringLiteral HID_FUNC_N
Definition: helpids.h:259
constexpr OUStringLiteral HID_FUNC_KONFIDENZ
Definition: helpids.h:414
constexpr OUStringLiteral HID_FUNC_STANDARDISIERUNG
Definition: helpids.h:411
constexpr OUStringLiteral HID_FUNC_Z_TEST_MS
Definition: helpids.h:557
constexpr OUStringLiteral HID_FUNC_COSECANTHYP
Definition: helpids.h:316
constexpr OUStringLiteral HID_FUNC_COTHYP
Definition: helpids.h:310
constexpr OUStringLiteral HID_FUNC_SEARCHB
Definition: helpids.h:591
constexpr OUStringLiteral HID_FUNC_DBVARIANZEN
Definition: helpids.h:204
constexpr OUStringLiteral HID_FUNC_SAEUBERN
Definition: helpids.h:463
constexpr OUStringLiteral HID_FUNC_SINHYP
Definition: helpids.h:309
constexpr OUStringLiteral HID_FUNC_KRITBINOM
Definition: helpids.h:389
constexpr OUStringLiteral HID_FUNC_CHITEST
Definition: helpids.h:416
constexpr OUStringLiteral HID_FUNC_NEGBINOMVERT
Definition: helpids.h:388
constexpr OUStringLiteral HID_FUNC_SUMMEX2MY2
Definition: helpids.h:347
constexpr OUStringLiteral HID_FUNC_FORECAST_LIN
Definition: helpids.h:581
constexpr OUStringLiteral HID_FUNC_BW
Definition: helpids.h:226
constexpr OUStringLiteral HID_FUNC_BETAINV_MS
Definition: helpids.h:513
constexpr OUStringLiteral HID_FUNC_ERFC_MS
Definition: helpids.h:566
constexpr OUStringLiteral HID_FUNC_ISTFEHLER
Definition: helpids.h:251
constexpr OUStringLiteral HID_FUNC_FILTERXML
Definition: helpids.h:502
constexpr OUStringLiteral HID_FUNC_TTEST_MS
Definition: helpids.h:545
constexpr OUStringLiteral HID_FUNC_ZZR
Definition: helpids.h:228
constexpr OUStringLiteral HID_FUNC_RAD
Definition: helpids.h:318
constexpr OUStringLiteral HID_FUNC_SCHAETZER
Definition: helpids.h:426
constexpr OUStringLiteral HID_FUNC_F_INV_RT
Definition: helpids.h:526
constexpr OUStringLiteral HID_FUNC_GAUSS
Definition: helpids.h:384
constexpr OUStringLiteral HID_FUNC_SECANT
Definition: helpids.h:314
constexpr OUStringLiteral HID_FUNC_GROSS
Definition: helpids.h:470
constexpr OUStringLiteral HID_FUNC_TVERT
Definition: helpids.h:405
constexpr OUStringLiteral HID_FUNC_DBSTDABWN
Definition: helpids.h:201
constexpr OUStringLiteral HID_FUNC_CONFIDENCE_T
Definition: helpids.h:522
constexpr OUStringLiteral HID_FUNC_REST
Definition: helpids.h:324
constexpr OUStringLiteral HID_FUNC_ARCCOT
Definition: helpids.h:300
constexpr OUStringLiteral HID_FUNC_COVARIANCE_P
Definition: helpids.h:506
constexpr OUStringLiteral HID_FUNC_GROSS2
Definition: helpids.h:469
constexpr OUStringLiteral HID_FUNC_DBAUSZUG
Definition: helpids.h:196
constexpr OUStringLiteral HID_FUNC_EXP
Definition: helpids.h:319
constexpr OUStringLiteral HID_FUNC_RAWSUBTRACT
Definition: helpids.h:572
constexpr OUStringLiteral HID_FUNC_TEILERGEBNIS
Definition: helpids.h:326
constexpr OUStringLiteral HID_FUNC_KALENDERWOCHE
Definition: helpids.h:222
constexpr OUStringLiteral HID_FUNC_ISTUNGERADE
Definition: helpids.h:293
constexpr OUStringLiteral HID_FUNC_WURZEL
Definition: helpids.h:290
constexpr OUStringLiteral HID_FUNC_KGV
Definition: helpids.h:337
constexpr OUStringLiteral HID_FUNC_MODAL_VALUE_MS
Definition: helpids.h:554
constexpr OUStringLiteral HID_FUNC_MITTELWERT
Definition: helpids.h:364
constexpr OUStringLiteral HID_FUNC_KORREL
Definition: helpids.h:424
constexpr OUStringLiteral HID_FUNC_VARIATIONEN2
Definition: helpids.h:413
constexpr OUStringLiteral HID_FUNC_MODALWERT
Definition: helpids.h:372
constexpr OUStringLiteral HID_FUNC_DBMITTELWERT
Definition: helpids.h:195
constexpr OUStringLiteral HID_FUNC_SUMMENPRODUKT
Definition: helpids.h:346
constexpr OUStringLiteral HID_FUNC_FINDB
Definition: helpids.h:590
constexpr OUStringLiteral HID_FUNC_KUMZINSZ
Definition: helpids.h:234
constexpr OUStringLiteral HID_FUNC_COS
Definition: helpids.h:304
constexpr OUStringLiteral HID_FUNC_LAUFZEIT
Definition: helpids.h:244
constexpr OUStringLiteral HID_FUNC_OBERGRENZE
Definition: helpids.h:334
constexpr OUStringLiteral HID_FUNC_CHISQINV
Definition: helpids.h:435
constexpr OUStringLiteral HID_FUNC_FEHLERTYP
Definition: helpids.h:452
constexpr OUStringLiteral HID_FUNC_MEDIAN
Definition: helpids.h:373
constexpr OUStringLiteral HID_FUNC_T
Definition: helpids.h:474
constexpr OUStringLiteral HID_FUNC_CHIVERT
Definition: helpids.h:409
constexpr OUStringLiteral HID_FUNC_DBANZAHL2
Definition: helpids.h:194
constexpr OUStringLiteral HID_FUNC_ADRESSE
Definition: helpids.h:438
constexpr OUStringLiteral HID_FUNC_IFS_MS
Definition: helpids.h:584
constexpr OUStringLiteral HID_FUNC_FOURIER
Definition: helpids.h:593
constexpr OUStringLiteral HID_FUNC_MINIFS_MS
Definition: helpids.h:586
constexpr OUStringLiteral HID_FUNC_REGEX
Definition: helpids.h:592
constexpr OUStringLiteral HID_FUNC_LOGNORMDIST_MS
Definition: helpids.h:535
constexpr OUStringLiteral HID_FUNC_LENB
Definition: helpids.h:481
constexpr OUStringLiteral HID_FUNC_GESTUTZTMITTEL
Definition: helpids.h:380
constexpr OUStringLiteral HID_FUNC_FORECAST_ETS_STA
Definition: helpids.h:579
constexpr OUStringLiteral HID_FUNC_CONCAT_MS
Definition: helpids.h:582
constexpr OUStringLiteral HID_FUNC_COSECANT
Definition: helpids.h:313
constexpr OUStringLiteral HID_FUNC_EXP_DIST_MS
Definition: helpids.h:528
constexpr OUStringLiteral HID_FUNC_ISTZAHL
Definition: helpids.h:257
constexpr OUStringLiteral HID_FUNC_HARMITTEL
Definition: helpids.h:371
constexpr OUStringLiteral HID_FUNC_ROUNDSIG
Definition: helpids.h:588
constexpr OUStringLiteral HID_FUNC_ZEILEN
Definition: helpids.h:444
constexpr OUStringLiteral HID_FUNC_KOVAR
Definition: helpids.h:425
constexpr OUStringLiteral HID_FUNC_TAG
Definition: helpids.h:208
constexpr OUStringLiteral HID_FUNC_NICHT
Definition: helpids.h:268
constexpr OUStringLiteral HID_FUNC_MAXIFS_MS
Definition: helpids.h:587
constexpr OUStringLiteral HID_FUNC_BESTIMMTHEITSMASS
Definition: helpids.h:419
constexpr OUStringLiteral HID_FUNC_F_DIST_RT
Definition: helpids.h:524
constexpr OUStringLiteral HID_FUNC_OSTERSONNTAG
Definition: helpids.h:223
constexpr OUStringLiteral HID_FUNC_KAPZ
Definition: helpids.h:232
constexpr OUStringLiteral HID_FUNC_BINOMVERT
Definition: helpids.h:387
sal_Int32 nIndex
uno_Any a
#define SAL_N_ELEMENTS(arr)
int i
enumrange< T >::Iterator begin(enumrange< T >)
end
long Long
OpCode
ocArrayOpen
ocClose
ocOpen
ocSep
ocArrayClose
OUString ScResId(TranslateId aId)
Definition: scdll.cxx:90
#define ID_FUNCTION_GRP_ADDINS
Definition: scfuncs.hxx:31
#define ID_FUNCTION_GRP_STATISTIC
Definition: scfuncs.hxx:28
#define ID_FUNCTION_GRP_INFO
Definition: scfuncs.hxx:24
#define ID_FUNCTION_GRP_DATABASE
Definition: scfuncs.hxx:21
#define ID_FUNCTION_GRP_MATH
Definition: scfuncs.hxx:26
#define ID_FUNCTION_GRP_LOGIC
Definition: scfuncs.hxx:25
#define ID_FUNCTION_GRP_DATETIME
Definition: scfuncs.hxx:22
#define ID_FUNCTION_GRP_FINANCIAL
Definition: scfuncs.hxx:23
#define ID_FUNCTION_GRP_TEXT
Definition: scfuncs.hxx:30
#define ID_FUNCTION_GRP_TABLE
Definition: scfuncs.hxx:29
#define ID_FUNCTION_GRP_MATRIX
Definition: scfuncs.hxx:27
#define SC_MOD()
Definition: scmod.hxx:247
Stores whether a parameter is optional or suppressed.
Definition: funcdesc.hxx:210
bool bOptional
Parameter is optional.
Definition: funcdesc.hxx:211
unsigned char sal_uInt8
sal_uInt16 sal_Unicode
sal_Int32 _nPos