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