Line data Source code
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 "decl.h"
21 : #include "lotform.hxx"
22 : #include "compiler.hxx"
23 : #include "lotrange.hxx"
24 : #include "namebuff.hxx"
25 : #include "root.hxx"
26 : #include "ftools.hxx"
27 : #include "tool.h"
28 :
29 : #include <math.h>
30 : #include <comphelper/string.hxx>
31 :
32 : extern WKTYP eTyp;
33 :
34 : static const sal_Char* GetAddInName( const sal_uInt8 nIndex );
35 :
36 : static DefTokenId lcl_KnownAddIn(const rtl::OString& rTest);
37 :
38 : //extern double decipher_Number123( sal_uInt32 nValue );
39 :
40 :
41 0 : void LotusToSc::DoFunc( DefTokenId eOc, sal_uInt8 nAnz, const sal_Char* pExtString )
42 : {
43 0 : TokenId eParam[ 256 ];
44 : sal_Int32 nLauf;
45 0 : TokenId nMerk0, nMerk1;
46 :
47 0 : sal_Bool bAddIn = false;
48 0 : sal_Bool bNeg = false;
49 :
50 : OSL_ENSURE( nAnz < 128, "-LotusToSc::DoFunc(): Neee! -so viel kann ich nicht!" );
51 :
52 0 : if( eOc == ocNoName )
53 : {
54 0 : rtl::OString t;
55 0 : if( pExtString )
56 : {
57 0 : const rtl::OString s(RTL_CONSTASCII_STRINGPARAM("@<<@123>>"));
58 :
59 0 : t = pExtString;
60 :
61 0 : sal_Int32 n = t.indexOf(s);
62 0 : if( n != -1 )
63 0 : t = t.copy(n + s.getLength());
64 :
65 0 : t = comphelper::string::stripEnd(t, '(');
66 :
67 0 : eOc = lcl_KnownAddIn( t );
68 :
69 0 : if( eOc == ocNoName )
70 0 : t = rtl::OString(RTL_CONSTASCII_STRINGPARAM("L123_")) + t;
71 : }
72 : else
73 0 : t = "#UNKNOWN FUNC NAME#";
74 :
75 0 : if( eOc == ocNoName )
76 : {
77 0 : bAddIn = sal_True;
78 0 : nMerk0 = aPool.Store(eOc, rtl::OStringToOUString(t, eSrcChar));
79 :
80 0 : aPool << nMerk0;
81 0 : }
82 : }
83 :
84 0 : for( nLauf = 0 ; nLauf < nAnz ; nLauf++ )
85 0 : aStack >> eParam[ nLauf ];
86 :
87 : // Spezialfaelle...
88 0 : switch( eOc )
89 : {
90 : case ocIndex:
91 : OSL_ENSURE( nAnz > 2, "+LotusToSc::DoFunc(): ocIndex braucht mind. 2 Parameter!" );
92 0 : nMerk0 = eParam[ 0 ];
93 0 : eParam[ 0 ] = eParam[ 1 ];
94 0 : eParam[ 1 ] = nMerk0;
95 0 : IncToken( eParam[ 0 ] );
96 0 : IncToken( eParam[ 1 ] );
97 0 : break;
98 : case ocIRR:
99 : {
100 : OSL_ENSURE( nAnz == 2, "+LotusToSc::DoFunc(): ocIRR hat nur 2 Parameter!" );
101 0 : nMerk0 = eParam[ 0 ];
102 0 : eParam[ 0 ] = eParam[ 1 ];
103 0 : eParam[ 1 ] = nMerk0;
104 : }
105 0 : break;
106 : case ocGetYear:
107 : {
108 0 : nMerk0 = aPool.Store( 1900.0 );
109 0 : aPool << ocOpen;
110 : }
111 0 : break;
112 : case ocChose:
113 : {// 1. Parameter ++
114 0 : if (nAnz >= 1)
115 0 : IncToken( eParam[ nAnz - 1 ] );
116 : }
117 0 : break;
118 : case ocFind:
119 : case ocHLookup:
120 : case ocVLookup:
121 : {// letzten Parameter ++
122 0 : IncToken( eParam[ 0 ] );
123 : }
124 0 : break;
125 : case ocMid:
126 : case ocReplace:
127 : {// 2. Parameter ++
128 0 : if (nAnz >= 2)
129 0 : IncToken( eParam[ nAnz - 2 ] );
130 : }
131 0 : break;
132 : case ocZins:
133 : {
134 : // neue Anzahl = 4!
135 : OSL_ENSURE( nAnz == 3,
136 : "*LotusToSc::DoFunc(): ZINS() hat 3 Parameter!" );
137 0 : nAnz = 4;
138 0 : eParam[ 3 ] = eParam[ 0 ]; // 3. -> 1.
139 0 : eParam[ 0 ] = eParam[ 2 ]; // 1. -> 4.
140 0 : NegToken( eParam[ 1 ] ); // 2. -> -2. (+ 2. -> 3.)
141 0 : eParam[ 2 ] = n0Token; // -> 2. als Default
142 : }
143 0 : break;
144 : default:;
145 : }
146 : // ................
147 :
148 :
149 0 : if( !bAddIn )
150 0 : aPool << eOc;
151 :
152 0 : aPool << ocOpen;
153 :
154 0 : if( nAnz > 0 )
155 : {
156 : // ACHTUNG: 0 ist der letzte Parameter, nAnz-1 der erste
157 :
158 0 : sal_Int16 nLast = nAnz - 1;
159 :
160 0 : if( eOc == ocRMZ )
161 : { // Extrawurst ocRMZ letzter Parameter negiert!
162 : // zusaetzlich: 1. -> 3., 3. -> 2., 2. -> 1.
163 : OSL_ENSURE( nAnz == 3,
164 : "+LotusToSc::DoFunc(): ocRMZ hat genau 3 Parameter!" );
165 0 : aPool << eParam[ 1 ] << ocSep << eParam[ 0 ] << ocSep
166 0 : << ocNegSub << eParam[ 2 ];
167 : }
168 : else
169 : { // Normalfall
170 : // [Parameter{;Parameter}]
171 0 : aPool << eParam[ nLast ];
172 :
173 0 : sal_Int16 nNull = -1; // gibt einen auszulassenden Parameter an
174 0 : for( nLauf = nLast - 1 ; nLauf >= 0 ; nLauf-- )
175 : {
176 0 : if( nLauf != nNull )
177 0 : aPool << ocSep << eParam[ nLauf ];
178 : }
179 : }
180 : }
181 :
182 :
183 : // Spezialfaelle...
184 0 : if( eOc == ocGetYear )
185 : {
186 0 : aPool << ocClose << ocSub << nMerk0;
187 : }
188 0 : else if( eOc == ocFixed )
189 : {
190 0 : aPool << ocSep << ocTrue << ocOpen << ocClose;
191 : }
192 0 : else if( eOc == ocFind )
193 : {
194 0 : nMerk1 = aPool.Store();
195 0 : DecToken( nMerk1 );
196 0 : aPool << nMerk1;
197 : }
198 :
199 0 : aPool << ocClose;
200 :
201 : // ................
202 :
203 0 : aPool >> aStack;
204 :
205 0 : if( bNeg )
206 : {
207 0 : aPool << ocOpen << ocSub << aStack << ocClose;
208 0 : aPool >> aStack;
209 : }
210 0 : }
211 :
212 :
213 0 : void LotusToSc::LotusRelToScRel( sal_uInt16 nCol, sal_uInt16 nRow, ScSingleRefData& rSRD )
214 : {
215 : // Col-Bemachung
216 0 : if( nCol & 0x8000 )
217 : {
218 0 : rSRD.SetColRel( sal_True );
219 0 : if( nCol & 0x0080 )
220 0 : nCol |= 0xFF00;
221 : else
222 0 : nCol &= 0x00FF;
223 : // #i36252# first cast unsigned 16-bit to signed 16-bit, and then to SCsCOL
224 0 : rSRD.nRelCol = static_cast< SCsCOL >( static_cast< sal_Int16 >( nCol ) );
225 : }
226 : else
227 : {
228 0 : rSRD.SetColRel( false );
229 0 : rSRD.nCol = static_cast< SCsCOL >( nCol & 0x00FF );
230 : }
231 :
232 : // Row-Bemachung
233 0 : if( nRow & 0x8000 )
234 : {
235 0 : rSRD.SetRowRel( sal_True );
236 : // vorzeichenrichtige Erweiterung
237 0 : switch( eTyp )
238 : {
239 : // 5432 1098 7654 3210
240 : // 8421 8421 8421 8421
241 : // xxx xxxx xxxx
242 : case eWK_1:
243 0 : if( nRow & 0x0400 )
244 0 : nRow |= 0xF800;
245 : else
246 0 : nRow &= 0x07FF;
247 0 : break;
248 : // 8421 8421 8421 8421
249 : // x xxxx xxxx xxxx
250 : case eWK_2:
251 0 : if( nRow & 0x1000 )
252 0 : nRow |= 0xE000;
253 : else
254 0 : nRow &= 0x1FFF;
255 0 : break;
256 : default:
257 : OSL_FAIL( "*LotusToSc::LotusRelToScRel(): etwas vergessen...?" );
258 : }
259 : }
260 : else
261 : {
262 0 : rSRD.SetRowRel( false );
263 0 : switch( eTyp )
264 : {
265 : // 5432 1098 7654 3210
266 : // 8421 8421 8421 8421
267 : // xxx xxxx xxxx
268 : case eWK_1:
269 0 : nRow &= 0x07FF;
270 0 : break;
271 : // 8421 8421 8421 8421
272 : // xx xxxx xxxx xxxx
273 : case eWK_2:
274 0 : nRow &= 0x3FFF;
275 0 : break;
276 : default:
277 : OSL_FAIL( "*LotusToSc::LotusRelToScRel(): etwas vergessen...?" );
278 : }
279 : }
280 :
281 0 : if( rSRD.IsRowRel() )
282 : // #i36252# first cast unsigned 16-bit to signed 16-bit, and then to SCsROW
283 0 : rSRD.nRelRow = static_cast< SCsROW >( static_cast< sal_Int16 >( nRow ) );
284 : else
285 0 : rSRD.nRow = static_cast< SCsROW >( nRow );
286 :
287 0 : if( rSRD.IsRowRel() || rSRD.IsColRel() )
288 0 : rSRD.CalcAbsIfRel( aEingPos );
289 0 : }
290 :
291 :
292 2 : void LotusToSc::ReadSRD( ScSingleRefData& rSRD, sal_uInt8 nRelBit )
293 : {
294 : sal_uInt8 nTab, nCol;
295 : sal_uInt16 nRow;
296 :
297 2 : Read( nRow );
298 2 : Read( nTab );
299 2 : Read( nCol );
300 :
301 2 : sal_Bool b3D = ( static_cast< SCTAB >( nTab ) != aEingPos.Tab() );
302 :
303 2 : rSRD.SetColRel( ( nRelBit & 0x01 ) != 0 );
304 2 : rSRD.nCol = static_cast< SCsCOL >( nCol );
305 :
306 2 : rSRD.SetRowRel( ( nRelBit & 0x02 ) != 0 );
307 2 : rSRD.nRow = static_cast< SCsROW >( nRow );
308 :
309 2 : rSRD.SetTabRel( ( ( nRelBit & 0x04) != 0 ) || !b3D );
310 2 : rSRD.nTab = static_cast< SCsTAB >( nTab );
311 :
312 2 : rSRD.SetFlag3D( b3D );
313 :
314 2 : rSRD.CalcRelFromAbs( aEingPos );
315 2 : }
316 :
317 :
318 0 : void LotusToSc::IncToken( TokenId &rParam )
319 : {
320 0 : aPool << ocOpen << rParam << nAddToken;
321 0 : rParam = aPool.Store();
322 0 : }
323 :
324 :
325 0 : void LotusToSc::DecToken( TokenId &rParam )
326 : {
327 0 : aPool << ocOpen << rParam << nSubToken;
328 0 : rParam = aPool.Store();
329 0 : }
330 :
331 :
332 0 : void LotusToSc::NegToken( TokenId &rParam )
333 : {
334 0 : aPool << ocNegSub << ocOpen << rParam << ocClose;
335 0 : rParam = aPool.Store();
336 0 : }
337 :
338 :
339 4 : void LotusToSc::Reset( const ScAddress& rEingPos )
340 : {
341 4 : LotusConverterBase::Reset( rEingPos );
342 :
343 4 : TokenId nEins = aPool.Store( 1.0 );
344 :
345 4 : aPool << ocClose << ocAdd << nEins;
346 4 : nAddToken = aPool.Store();
347 :
348 4 : aPool << ocClose << ocSub << nEins;
349 4 : nSubToken = aPool.Store();
350 :
351 4 : n0Token = aPool.Store( 0.0 );
352 4 : }
353 :
354 :
355 5 : LotusToSc::LotusToSc( SvStream &rStream, CharSet e, sal_Bool b ) :
356 5 : LotusConverterBase( rStream, 128 )
357 : {
358 5 : eSrcChar = e;
359 5 : bWK3 = false;
360 5 : bWK123 = b;
361 5 : }
362 :
363 :
364 : typedef FUNC_TYPE ( FuncType1 ) ( sal_uInt8 );
365 : typedef DefTokenId ( FuncType2 ) ( sal_uInt8 );
366 :
367 :
368 4 : ConvErr LotusToSc::Convert( const ScTokenArray*& rpErg, sal_Int32& rRest,
369 : const FORMULA_TYPE /*eFT*/ )
370 : {
371 : sal_uInt8 nOc;
372 : sal_uInt8 nAnz;
373 : sal_uInt8 nRelBits;
374 : sal_uInt16 nStrLen;
375 : sal_uInt16 nRngIndex;
376 4 : FUNC_TYPE eType = FT_NOP;
377 4 : TokenId nMerk0;
378 : DefTokenId eOc;
379 4 : const sal_Char* pExtName = 0;
380 4 : RangeNameBufferWK3& rRangeNameBufferWK3 = *pLotusRoot->pRngNmBffWK3;
381 :
382 : ScComplexRefData aCRD;
383 4 : aCRD.InitFlags();
384 4 : ScSingleRefData& rR = aCRD.Ref1;
385 :
386 : LR_ID nId;
387 4 : TokenId nNewId;
388 :
389 4 : LotusRangeList& rRangeList = *pLotusRoot->pRangeNames;
390 :
391 : FuncType1* pIndexToType;
392 : FuncType2* pIndexToToken;
393 :
394 4 : if( bWK3 )
395 : { // for > WK3
396 0 : pIndexToType = IndexToTypeWK123;
397 0 : pIndexToToken = IndexToTokenWK123;
398 : }
399 4 : else if( bWK123 )
400 : {
401 4 : pIndexToType = IndexToTypeWK123;
402 4 : pIndexToToken = IndexToTokenWK123;
403 : }
404 : else
405 : {
406 0 : pIndexToType = IndexToType;
407 0 : pIndexToToken = IndexToToken;
408 :
409 0 : rR.SetTabRel( sal_True );
410 0 : rR.nTab = aEingPos.Tab();
411 0 : rR.nRelTab = 0;
412 0 : rR.SetFlag3D( false );
413 : }
414 :
415 4 : aCRD.Ref2 = rR;
416 :
417 4 : nBytesLeft = rRest;
418 :
419 24 : while( eType ) // != FT_Return (==0)
420 : {
421 16 : Read( nOc );
422 :
423 16 : if( nBytesLeft < 0 )
424 : {
425 0 : rpErg = aPool[ aStack.Get() ];
426 0 : return ConvErrCount;
427 : }
428 :
429 16 : eType = ( pIndexToType )( nOc );
430 16 : eOc = ( pIndexToToken)( nOc );
431 16 : if( eOc == ocNoName )
432 0 : pExtName = GetAddInName( nOc );
433 :
434 16 : switch( eType )
435 : {
436 : case FT_Return:
437 4 : if( bWK3 || bWK123 )
438 4 : nBytesLeft = 0; // wird ab WK3 nicht benutzt
439 :
440 4 : rRest = nBytesLeft;
441 4 : break;
442 : case FT_NotImpl:
443 0 : case FT_FuncFix0: DoFunc( eOc, 0, pExtName ); break;
444 0 : case FT_FuncFix1: DoFunc( eOc, 1, pExtName ); break;
445 0 : case FT_FuncFix2: DoFunc( eOc, 2, pExtName ); break;
446 0 : case FT_FuncFix3: DoFunc( eOc, 3, pExtName ); break;
447 0 : case FT_FuncFix4: DoFunc( eOc, 4, pExtName ); break;
448 : case FT_FuncVar:
449 0 : Read( nAnz );
450 0 : DoFunc( eOc, nAnz, pExtName );
451 0 : break;
452 : case FT_Neg:
453 0 : aPool << ocOpen << ocNegSub << aStack << ocClose;
454 0 : aPool >> aStack;
455 0 : break;
456 : case FT_Op:
457 4 : aStack >> nMerk0;
458 4 : aPool << aStack << eOc << nMerk0;
459 4 : aPool >> aStack;
460 4 : break;
461 : case FT_ConstFloat:
462 : {
463 : double fDouble;
464 0 : Read( fDouble );
465 0 : aStack << aPool.Store( fDouble );
466 : }
467 0 : break;
468 : case FT_Variable:
469 : {
470 : sal_uInt16 nCol, nRow;
471 0 : Read( nCol );
472 0 : Read( nRow );
473 :
474 0 : LotusRelToScRel( nCol, nRow, rR );
475 :
476 0 : if( bWK3 )
477 0 : nNewId = aPool.Store( rR );
478 : else
479 : {
480 0 : nId = rRangeList.GetIndex( rR.nCol, rR.nRow );
481 :
482 0 : if( nId == ID_FAIL )
483 : // kein Range dazu
484 0 : nNewId = aPool.Store( rR );
485 : else
486 0 : nNewId = aPool.Store( ( sal_uInt16 ) nId );
487 : }
488 :
489 0 : aStack << nNewId;
490 : }
491 0 : break;
492 : case FT_Range:
493 : {
494 : sal_uInt16 nColS, nRowS, nColE, nRowE;
495 0 : Read( nColS );
496 0 : Read( nRowS );
497 0 : Read( nColE );
498 0 : Read( nRowE );
499 :
500 0 : LotusRelToScRel( nColS, nRowS, rR );
501 0 : LotusRelToScRel( nColE, nRowE, aCRD.Ref2 );
502 :
503 0 : if( bWK3 )
504 0 : nNewId = aPool.Store( aCRD );
505 : else
506 : {
507 : nId = rRangeList.GetIndex(
508 0 : rR.nCol, rR.nRow, aCRD.Ref2.nCol, aCRD.Ref2.nRow );
509 :
510 0 : if( nId == ID_FAIL )
511 : // kein Range dazu
512 0 : nNewId = aPool.Store( aCRD );
513 : else
514 0 : nNewId = aPool.Store( ( sal_uInt16 ) nId );
515 : }
516 :
517 0 : aStack << nNewId;
518 : }
519 0 : break;
520 : case FT_Braces:
521 0 : aPool << ocOpen << aStack << ocClose;
522 0 : aPool >> aStack;
523 0 : break;
524 : case FT_ConstInt:
525 : {
526 : sal_Int16 nVal;
527 0 : Read( nVal );
528 0 : aStack << aPool.Store( ( double ) nVal );
529 : }
530 0 : break;
531 : case FT_ConstString:
532 : {
533 0 : String aTmp(ScfTools::read_zeroTerminated_uInt8s_ToOUString(aIn, nBytesLeft, eSrcChar));
534 0 : aStack << aPool.Store( aTmp );
535 : }
536 0 : break;
537 : case FT_NOP:
538 0 : break;
539 : // ------------------------------------------ fuer > WK3 -
540 : case FT_Cref:
541 2 : Read( nRelBits );
542 2 : ReadSRD( rR, nRelBits );
543 2 : aStack << aPool.Store( rR );
544 2 : break;
545 : case FT_Rref:
546 0 : Read( nRelBits );
547 0 : ReadCRD( aCRD, nRelBits );
548 0 : aStack << aPool.Store( aCRD );
549 0 : break;
550 : case FT_Nrref:
551 : {
552 0 : String aTmp(ScfTools::read_zeroTerminated_uInt8s_ToOUString(aIn, nBytesLeft, eSrcChar));
553 0 : if( rRangeNameBufferWK3.FindRel( aTmp, nRngIndex ) )
554 0 : aStack << aPool.Store( nRngIndex );
555 : else
556 : {
557 0 : String aText( RTL_CONSTASCII_USTRINGPARAM( "NRREF " ) );
558 0 : aText += aTmp;
559 0 : aStack << aPool.Store( aText );
560 0 : }
561 : }
562 0 : break;
563 : case FT_Absnref:
564 : {
565 0 : String aTmp(ScfTools::read_zeroTerminated_uInt8s_ToOUString(aIn, nBytesLeft, eSrcChar));
566 0 : if( rRangeNameBufferWK3.FindAbs( aTmp, nRngIndex ) )
567 0 : aStack << aPool.Store( nRngIndex );
568 : else
569 : {
570 0 : String aText( RTL_CONSTASCII_USTRINGPARAM( "ABSNREF " ) );
571 0 : aText += aTmp;
572 0 : aStack << aPool.Store( aText );
573 0 : }
574 : }
575 0 : break;
576 : case FT_Erref:
577 0 : Ignore( 4 );
578 0 : aPool << ocBad;
579 0 : aPool >> aStack;
580 0 : break;
581 : case FT_Ecref:
582 0 : Ignore( 5 );
583 0 : aPool << ocBad;
584 0 : aPool >> aStack;
585 0 : break;
586 : case FT_Econstant:
587 0 : Ignore( 10 );
588 0 : aPool << ocBad;
589 0 : aPool >> aStack;
590 0 : break;
591 : case FT_Splfunc:
592 : {
593 0 : Read( nAnz );
594 0 : Read( nStrLen );
595 :
596 0 : if( nStrLen )
597 : {
598 0 : sal_Char* p = new (::std::nothrow) sal_Char[ nStrLen + 1 ];
599 0 : if (p)
600 : {
601 0 : aIn.Read( p, nStrLen );
602 0 : p[ nStrLen ] = 0x00;
603 :
604 0 : DoFunc( ocNoName, nAnz, p );
605 :
606 0 : delete[] p;
607 : }
608 : else
609 0 : DoFunc( ocNoName, nAnz, NULL );
610 : }
611 : else
612 0 : DoFunc( ocNoName, nAnz, NULL );
613 : }
614 0 : break;
615 : case FT_Const10Float:
616 0 : if ( bWK123 )
617 : {
618 : double fValue;
619 0 : Read( fValue );
620 0 : aStack << aPool.Store( fValue );
621 : }
622 0 : else aStack << aPool.Store( ScfTools::ReadLongDouble( aIn ) );
623 0 : break;
624 : case FT_Snum:
625 6 : if ( bWK123 )
626 : {
627 : sal_uInt32 nValue;
628 :
629 6 : Read( nValue );
630 6 : double fValue = Snum32ToDouble( nValue );
631 6 : aStack << aPool.Store( fValue );
632 : }
633 : else
634 : {
635 : sal_Int16 nVal;
636 0 : Read( nVal );
637 0 : aStack << aPool.Store( SnumToDouble( nVal ) );
638 : }
639 6 : break;
640 : default:
641 : OSL_FAIL( "*LotusToSc::Convert(): unbekannter enum!" );
642 : }
643 : }
644 :
645 4 : rpErg = aPool[ aStack.Get() ];
646 :
647 : OSL_ENSURE( nBytesLeft >= 0, "*LotusToSc::Convert(): zuviel verarbeitet!");
648 : OSL_ENSURE( nBytesLeft <= 0, "*LotusToSc::Convert(): wat is mit'm Rest?" );
649 :
650 4 : if( rRest )
651 0 : aIn.SeekRel( nBytesLeft ); // eventuellen Rest/Ueberlauf korrigieren
652 :
653 4 : rRest = 0;
654 :
655 4 : return ConvOK;
656 : }
657 :
658 :
659 0 : FUNC_TYPE LotusToSc::IndexToType( sal_uInt8 nIndex )
660 : {
661 : static const FUNC_TYPE pType[ 256 ] =
662 : { // Code Bezeichnung
663 : FT_ConstFloat, // 0 8-Byte-IEEE-Float
664 : FT_Variable, // 1 Variable
665 : FT_Range, // 2 Bereich
666 : FT_Return, // 3 return
667 : FT_Braces, // 4 Klammer
668 : FT_ConstInt, // 5 2-Byte-Integer
669 : FT_ConstString, // 6 ASCII-String
670 : FT_NOP, // 7 NOP
671 : FT_Neg, // 8 Negation
672 : FT_Op, // 9 Addition
673 : FT_Op, // 10 Subtraktion
674 : FT_Op, // 11 Multiplikation
675 : FT_Op, // 12 Division
676 : FT_Op, // 13 Potenzierung
677 : FT_Op, // 14 Gleichheit
678 : FT_Op, // 15 Ungleich
679 : FT_Op, // 16 Kleiner-gleich
680 : FT_Op, // 17 Groesser-gleich
681 : FT_Op, // 18 Kleiner
682 : FT_Op, // 19 Groesser
683 : FT_Op, // 20 And (logisch)
684 : FT_Op, // 21 Or (logisch)
685 : FT_FuncFix1, // 22 Not (logisch)
686 : FT_NOP, // 23 unaeres Plus
687 : FT_NotImpl, // 24
688 : FT_NotImpl, // 25
689 : FT_NotImpl, // 26
690 : FT_NotImpl, // 27
691 : FT_NotImpl, // 28
692 : FT_NotImpl, // 29
693 : FT_NotImpl, // 30
694 : FT_FuncFix0, // 31 Not applicable
695 : FT_FuncFix0, // 32 Error
696 : FT_FuncFix1, // 33 Betrag ABS()
697 : FT_FuncFix1, // 34 Ganzzahl INT()
698 : FT_FuncFix1, // 35 Quadratwurzel
699 : FT_FuncFix1, // 36 Zehnerlogarithmus
700 : FT_FuncFix1, // 37 Natuerlicher Logarithmus
701 : FT_FuncFix0, // 38 PI
702 : FT_FuncFix1, // 39 Sinus
703 : FT_FuncFix1, // 40 Cosinus
704 : FT_FuncFix1, // 41 Tangens
705 : FT_FuncFix2, // 42 Arcus-Tangens 2 (4.Quadrant) <----- richtig? -
706 : FT_FuncFix1, // 43 Arcus-Tangens (2.Quadrant)
707 : FT_FuncFix1, // 44 Arcus-Sinus
708 : FT_FuncFix1, // 45 Arcus-Cosinus
709 : FT_FuncFix1, // 46 Exponentialfunktion
710 : FT_FuncFix2, // 47 Modulo
711 : FT_FuncVar, // 48 Auswahl
712 : FT_FuncFix1, // 49 Is not applicable?
713 : FT_FuncFix1, // 50 Is Error?
714 : FT_FuncFix0, // 51 FALSE
715 : FT_FuncFix0, // 52 TRUE
716 : FT_FuncFix0, // 53 Zufallszahl
717 : FT_FuncFix3, // 54 Datum
718 : FT_FuncFix0, // 55 Heute
719 : FT_FuncFix3, // 56 Payment
720 : FT_FuncFix3, // 57 Present Value
721 : FT_FuncFix3, // 58 Future Value
722 : FT_FuncFix3, // 59 If ... then ... else ...
723 : FT_FuncFix1, // 60 Tag des Monats
724 : FT_FuncFix1, // 61 Monat
725 : FT_FuncFix1, // 62 Jahr
726 : FT_FuncFix2, // 63 Runden
727 : FT_FuncFix3, // 64 Zeit
728 : FT_FuncFix1, // 65 Stunde
729 : FT_FuncFix1, // 66 Minute
730 : FT_FuncFix1, // 67 Sekunde
731 : FT_FuncFix1, // 68 Ist Zahl?
732 : FT_FuncFix1, // 69 Ist Text?
733 : FT_FuncFix1, // 70 Len()
734 : FT_FuncFix1, // 71 Val()
735 : FT_FuncFix2, // 72 String()
736 : FT_FuncFix3, // 73 Mid()
737 : FT_FuncFix1, // 74 Char()
738 : FT_FuncFix1, // 75 Ascii()
739 : FT_FuncFix3, // 76 Find()
740 : FT_FuncFix1, // 77 Datevalue
741 : FT_FuncFix1, // 78 Timevalue
742 : FT_FuncFix1, // 79 Cellpointer
743 : FT_FuncVar, // 80 Sum()
744 : FT_FuncVar, // 81 Avg()
745 : FT_FuncVar, // 82 Cnt()
746 : FT_FuncVar, // 83 Min()
747 : FT_FuncVar, // 84 Max()
748 : FT_FuncFix3, // 85 Vlookup()
749 : FT_FuncFix2, // 86 Npv()
750 : FT_FuncVar, // 87 Var()
751 : FT_FuncVar, // 88 Std()
752 : FT_FuncFix2, // 89 Irr()
753 : FT_FuncFix3, // 90 Hlookup()
754 : FT_FuncFix3, // 91 ?
755 : FT_FuncFix3, // 92 ?
756 : FT_FuncFix3, // 93 ?
757 : FT_FuncFix3, // 94 ?
758 : FT_FuncFix3, // 95 ?
759 : FT_FuncFix3, // 96 ?
760 : FT_FuncFix3, // 97 ?
761 : FT_FuncFix3, // 98 Index() <- richtig? -
762 : FT_FuncFix1, // 99 Cols()
763 : FT_FuncFix1, // 100 Rows()
764 : FT_FuncFix2, // 101 Repeat()
765 : FT_FuncFix1, // 102 Upper()
766 : FT_FuncFix1, // 103 Lower()
767 : FT_FuncFix2, // 104 Left()
768 : FT_FuncFix2, // 105 Right()
769 : FT_FuncFix4, // 106 Replace()
770 : FT_FuncFix1, // 107 Proper()
771 : FT_FuncFix2, // 108 Cell()
772 : FT_FuncFix1, // 109 Trim()
773 : FT_FuncFix1, // 110 Clean()
774 : FT_FuncFix1, // 111 F()
775 : FT_FuncFix1, // 112 Wert() (oder W()?)
776 : FT_FuncFix2, // 113 Exact()
777 : FT_NotImpl, // 114 Call()
778 : FT_FuncFix1, // 115 @@()
779 : FT_FuncFix3, // 116 Rate()
780 : FT_FuncFix1, // 117 Term()
781 : FT_FuncFix1, // 118 Cterm()
782 : FT_FuncFix3, // 119 Sln()
783 : FT_FuncFix4, // 120 Syd(), Soy()
784 : FT_FuncFix4, // 121 Ddb()
785 : FT_NotImpl, // 122
786 : FT_NotImpl, // 123
787 : FT_NotImpl, // 124
788 : FT_NotImpl, // 125
789 : FT_NotImpl, // 126
790 : FT_NotImpl, // 127
791 : FT_NotImpl, // 128
792 : FT_NotImpl, // 129
793 : FT_NotImpl, // 130
794 : FT_NotImpl, // 131
795 : FT_NotImpl, // 132
796 : FT_NotImpl, // 133
797 : FT_NotImpl, // 134
798 : FT_NotImpl, // 135
799 : FT_NotImpl, // 136
800 : FT_NotImpl, // 137
801 : FT_NotImpl, // 138
802 : FT_NotImpl, // 139
803 : FT_NotImpl, // 140
804 : FT_NotImpl, // 141
805 : FT_NotImpl, // 142
806 : FT_NotImpl, // 143
807 : FT_NotImpl, // 144
808 : FT_NotImpl, // 145
809 : FT_NotImpl, // 146
810 : FT_NotImpl, // 147
811 : FT_NotImpl, // 148
812 : FT_NotImpl, // 149
813 : FT_NotImpl, // 150
814 : FT_NotImpl, // 151
815 : FT_NotImpl, // 152
816 : FT_NotImpl, // 153
817 : FT_NotImpl, // 154
818 : FT_NotImpl, // 155
819 : FT_FuncVar, // 156 ?
820 : FT_NotImpl, // 157
821 : FT_NotImpl, // 158
822 : FT_NotImpl, // 159
823 : FT_NotImpl, // 160
824 : FT_NotImpl, // 161
825 : FT_NotImpl, // 162
826 : FT_NotImpl, // 163
827 : FT_NotImpl, // 164
828 : FT_NotImpl, // 165
829 : FT_NotImpl, // 166
830 : FT_NotImpl, // 167
831 : FT_NotImpl, // 168
832 : FT_NotImpl, // 169
833 : FT_NotImpl, // 170
834 : FT_NotImpl, // 171
835 : FT_NotImpl, // 172
836 : FT_NotImpl, // 173
837 : FT_NotImpl, // 174
838 : FT_NotImpl, // 175
839 : FT_NotImpl, // 176
840 : FT_NotImpl, // 177
841 : FT_NotImpl, // 178
842 : FT_NotImpl, // 179
843 : FT_NotImpl, // 180
844 : FT_NotImpl, // 181
845 : FT_NotImpl, // 182
846 : FT_NotImpl, // 183
847 : FT_NotImpl, // 184
848 : FT_NotImpl, // 185
849 : FT_NotImpl, // 186
850 : FT_NotImpl, // 187
851 : FT_NotImpl, // 188
852 : FT_NotImpl, // 189
853 : FT_NotImpl, // 190
854 : FT_NotImpl, // 191
855 : FT_NotImpl, // 192
856 : FT_NotImpl, // 193
857 : FT_NotImpl, // 194
858 : FT_NotImpl, // 195
859 : FT_NotImpl, // 196
860 : FT_NotImpl, // 197
861 : FT_NotImpl, // 198
862 : FT_NotImpl, // 199
863 : FT_NotImpl, // 200
864 : FT_NotImpl, // 201
865 : FT_NotImpl, // 202
866 : FT_NotImpl, // 203
867 : FT_NotImpl, // 204
868 : FT_NotImpl, // 205
869 : FT_FuncVar, // 206 ?
870 : FT_NotImpl, // 207
871 : FT_NotImpl, // 208
872 : FT_NotImpl, // 209
873 : FT_NotImpl, // 210
874 : FT_NotImpl, // 211
875 : FT_NotImpl, // 212
876 : FT_NotImpl, // 213
877 : FT_NotImpl, // 214
878 : FT_NotImpl, // 215
879 : FT_NotImpl, // 216
880 : FT_NotImpl, // 217
881 : FT_NotImpl, // 218
882 : FT_NotImpl, // 219
883 : FT_NotImpl, // 220
884 : FT_NotImpl, // 221
885 : FT_NotImpl, // 222
886 : FT_NotImpl, // 223
887 : FT_NotImpl, // 224
888 : FT_NotImpl, // 225
889 : FT_NotImpl, // 226
890 : FT_NotImpl, // 227
891 : FT_NotImpl, // 228
892 : FT_NotImpl, // 229
893 : FT_NotImpl, // 230
894 : FT_NotImpl, // 231
895 : FT_NotImpl, // 232
896 : FT_NotImpl, // 233
897 : FT_NotImpl, // 234
898 : FT_NotImpl, // 235
899 : FT_NotImpl, // 236
900 : FT_NotImpl, // 237
901 : FT_NotImpl, // 238
902 : FT_NotImpl, // 239
903 : FT_NotImpl, // 240
904 : FT_NotImpl, // 241
905 : FT_NotImpl, // 242
906 : FT_NotImpl, // 243
907 : FT_NotImpl, // 244
908 : FT_NotImpl, // 245
909 : FT_NotImpl, // 246
910 : FT_NotImpl, // 247
911 : FT_NotImpl, // 248
912 : FT_NotImpl, // 249
913 : FT_NotImpl, // 250
914 : FT_NotImpl, // 251
915 : FT_NotImpl, // 252
916 : FT_NotImpl, // 253
917 : FT_NotImpl, // 254
918 : FT_FuncVar, // 255 ?
919 : };
920 0 : return pType[ nIndex ];
921 : }
922 :
923 :
924 0 : DefTokenId LotusToSc::IndexToToken( sal_uInt8 nIndex )
925 : {
926 : static const DefTokenId pToken[ 256 ] =
927 : { // Code Bezeichnung
928 : ocPush, // 0 8-Byte-IEEE-Float
929 : ocPush, // 1 Variable
930 : ocPush, // 2 Bereich
931 : ocPush, // 3 return
932 : ocPush, // 4 Klammer
933 : ocPush, // 5 2-Byte-Integer
934 : ocPush, // 6 ASCII-String
935 : ocPush, // 7 NOP
936 : ocNegSub, // 8 Negation
937 : ocAdd, // 9 Addition
938 : ocSub, // 10 Subtraktion
939 : ocMul, // 11 Multiplikation
940 : ocDiv, // 12 Division
941 : ocPow, // 13 Potenzierung
942 : ocEqual, // 14 Gleichheit
943 : ocNotEqual, // 15 Ungleich
944 : ocLessEqual, // 16 Kleiner-gleich
945 : ocGreaterEqual, // 17 Groesser-gleich
946 : ocLess, // 18 Kleiner
947 : ocGreater, // 19 Groesser
948 : ocAnd, // 20 And (logisch)
949 : ocOr, // 21 Or (logisch)
950 : ocNot, // 22 Not (logisch)
951 : ocPush, // 23 unaeres Plus
952 : ocNoName, // 24
953 : ocNoName, // 25
954 : ocNoName, // 26
955 : ocNoName, // 27
956 : ocNoName, // 28
957 : ocNoName, // 29
958 : ocNoName, // 30
959 : ocNotAvail, // 31 Not available
960 : ocNoName, // 32 Error
961 : ocAbs, // 33 Betrag ABS()
962 : ocInt, // 34 Ganzzahl INT()
963 : ocSqrt, // 35 Quadratwurzel
964 : ocLog10, // 36 Zehnerlogarithmus
965 : ocLn, // 37 Natuerlicher Logarithmus
966 : ocPi, // 38 PI
967 : ocSin, // 39 Sinus
968 : ocCos, // 40 Cosinus
969 : ocTan, // 41 Tangens
970 : ocArcTan2, // 42 Arcus-Tangens 2 (4.Quadrant)
971 : ocArcTan, // 43 Arcus-Tangens (2.Quadrant)
972 : ocArcSin, // 44 Arcus-Sinus
973 : ocArcCos, // 45 Arcus-Cosinus
974 : ocExp, // 46 Exponentialfunktion
975 : ocMod, // 47 Modulo
976 : ocChose, // 48 Auswahl
977 : ocIsNA, // 49 Is not available?
978 : ocIsError, // 50 Is Error?
979 : ocFalse, // 51 FALSE
980 : ocTrue, // 52 TRUE
981 : ocRandom, // 53 Zufallszahl
982 : ocGetDate, // 54 Datum
983 : ocGetActDate, // 55 Heute
984 : ocRMZ, // 56 Payment
985 : ocBW, // 57 Present Value
986 : ocZW, // 58 Future Value
987 : ocIf, // 59 If ... then ... else ...
988 : ocGetDay, // 60 Tag des Monats
989 : ocGetMonth, // 61 Monat
990 : ocGetYear, // 62 Jahr
991 : ocRound, // 63 Runden
992 : ocGetTime, // 64 Zeit
993 : ocGetHour, // 65 Stunde
994 : ocGetMin, // 66 Minute
995 : ocGetSec, // 67 Sekunde
996 : ocIsValue, // 68 Ist Zahl?
997 : ocIsString, // 69 Ist Text?
998 : ocLen, // 70 Len()
999 : ocValue, // 71 Val()
1000 : ocFixed, // 72 String() ocFixed ersatzweise + Spezialfall
1001 : ocMid, // 73 Mid()
1002 : ocChar, // 74 Char()
1003 : ocCode, // 75 Ascii()
1004 : ocFind, // 76 Find()
1005 : ocGetDateValue, // 77 Datevalue
1006 : ocGetTimeValue, // 78 Timevalue
1007 : ocNoName, // 79 Cellpointer
1008 : ocSum, // 80 Sum()
1009 : ocAverage, // 81 Avg()
1010 : ocCount, // 82 Cnt()
1011 : ocMin, // 83 Min()
1012 : ocMax, // 84 Max()
1013 : ocVLookup, // 85 Vlookup()
1014 : ocNPV, // 86 Npv()
1015 : ocVar, // 87 Var()
1016 : ocNormDist, // 88 Std()
1017 : ocIRR, // 89 Irr()
1018 : ocHLookup, // 90 Hlookup()
1019 : ocDBSum, // 91 XlfDsum
1020 : ocDBAverage, // 92 XlfDaverage
1021 : ocDBCount, // 93 XlfDcount
1022 : ocDBMin, // 94 XlfDmin
1023 : ocDBMax, // 95 XlfDmax
1024 : ocDBVar, // 96 XlfDvar
1025 : ocDBStdDev, // 97 XlfDstdev
1026 : ocIndex, // 98 Index()
1027 : ocColumns, // 99 Cols()
1028 : ocRows, // 100 Rows()
1029 : ocRept, // 101 Repeat()
1030 : ocUpper, // 102 Upper()
1031 : ocLower, // 103 Lower()
1032 : ocLeft, // 104 Left()
1033 : ocRight, // 105 Right()
1034 : ocReplace, // 106 Replace()
1035 : ocPropper, // 107 Proper()
1036 : ocNoName, // 108 Cell()
1037 : ocTrim, // 109 Trim()
1038 : ocClean, // 110 Clean()
1039 : ocFalse, // 111 F()
1040 : ocTrue, // 112 W()
1041 : ocExact, // 113 Exact()
1042 : ocNoName, // 114 Call()
1043 : ocIndirect, // 115 @@()
1044 : ocZins, // 116 Rate()
1045 : ocNoName, // 117 Term()
1046 : ocNoName, // 118 Cterm()
1047 : ocLIA, // 119 Sln()
1048 : ocDIA, // 120 Syd(), Soy()
1049 : ocGDA, // 121 Ddb()
1050 : ocNoName, // 122
1051 : ocNoName, // 123
1052 : ocNoName, // 124
1053 : ocNoName, // 125
1054 : ocNoName, // 126
1055 : ocNoName, // 127
1056 : ocNoName, // 128
1057 : ocNoName, // 129
1058 : ocNoName, // 130
1059 : ocNoName, // 131
1060 : ocNoName, // 132
1061 : ocNoName, // 133
1062 : ocNoName, // 134
1063 : ocNoName, // 135
1064 : ocNoName, // 136
1065 : ocNoName, // 137
1066 : ocNoName, // 138
1067 : ocNoName, // 139
1068 : ocNoName, // 140
1069 : ocNoName, // 141
1070 : ocNoName, // 142
1071 : ocNoName, // 143
1072 : ocNoName, // 144
1073 : ocNoName, // 145
1074 : ocNoName, // 146
1075 : ocNoName, // 147
1076 : ocNoName, // 148
1077 : ocNoName, // 149
1078 : ocNoName, // 150
1079 : ocNoName, // 151
1080 : ocNoName, // 152
1081 : ocNoName, // 153
1082 : ocNoName, // 154
1083 : ocNoName, // 155
1084 : ocNoName, // 156 ?
1085 : ocNoName, // 157
1086 : ocNoName, // 158
1087 : ocNoName, // 159
1088 : ocNoName, // 160
1089 : ocNoName, // 161
1090 : ocNoName, // 162
1091 : ocNoName, // 163
1092 : ocNoName, // 164
1093 : ocNoName, // 165
1094 : ocNoName, // 166
1095 : ocNoName, // 167
1096 : ocNoName, // 168
1097 : ocNoName, // 169
1098 : ocNoName, // 170
1099 : ocNoName, // 171
1100 : ocNoName, // 172
1101 : ocNoName, // 173
1102 : ocNoName, // 174
1103 : ocNoName, // 175
1104 : ocNoName, // 176
1105 : ocNoName, // 177
1106 : ocNoName, // 178
1107 : ocNoName, // 179
1108 : ocNoName, // 180
1109 : ocNoName, // 181
1110 : ocNoName, // 182
1111 : ocNoName, // 183
1112 : ocNoName, // 184
1113 : ocNoName, // 185
1114 : ocNoName, // 186
1115 : ocNoName, // 187
1116 : ocNoName, // 188
1117 : ocNoName, // 189
1118 : ocNoName, // 190
1119 : ocNoName, // 191
1120 : ocNoName, // 192
1121 : ocNoName, // 193
1122 : ocNoName, // 194
1123 : ocNoName, // 195
1124 : ocNoName, // 196
1125 : ocNoName, // 197
1126 : ocNoName, // 198
1127 : ocNoName, // 199
1128 : ocNoName, // 200
1129 : ocNoName, // 201
1130 : ocNoName, // 202
1131 : ocNoName, // 203
1132 : ocNoName, // 204
1133 : ocNoName, // 205
1134 : ocNoName, // 206 ?
1135 : ocNoName, // 207
1136 : ocNoName, // 208
1137 : ocNoName, // 209
1138 : ocNoName, // 210
1139 : ocNoName, // 211
1140 : ocNoName, // 212
1141 : ocNoName, // 213
1142 : ocNoName, // 214
1143 : ocNoName, // 215
1144 : ocNoName, // 216
1145 : ocNoName, // 217
1146 : ocNoName, // 218
1147 : ocNoName, // 219
1148 : ocNoName, // 220
1149 : ocNoName, // 221
1150 : ocNoName, // 222
1151 : ocNoName, // 223
1152 : ocNoName, // 224
1153 : ocNoName, // 225
1154 : ocNoName, // 226
1155 : ocNoName, // 227
1156 : ocNoName, // 228
1157 : ocNoName, // 229
1158 : ocNoName, // 230
1159 : ocNoName, // 231
1160 : ocNoName, // 232
1161 : ocNoName, // 233
1162 : ocNoName, // 234
1163 : ocNoName, // 235
1164 : ocNoName, // 236
1165 : ocNoName, // 237
1166 : ocNoName, // 238
1167 : ocNoName, // 239
1168 : ocNoName, // 240
1169 : ocNoName, // 241
1170 : ocNoName, // 242
1171 : ocNoName, // 243
1172 : ocNoName, // 244
1173 : ocNoName, // 245
1174 : ocNoName, // 246
1175 : ocNoName, // 247
1176 : ocNoName, // 248
1177 : ocNoName, // 249
1178 : ocNoName, // 250
1179 : ocNoName, // 251
1180 : ocNoName, // 252
1181 : ocNoName, // 253
1182 : ocNoName, // 254
1183 : ocNoName // 255 ?
1184 : };
1185 :
1186 0 : return pToken[ nIndex ];
1187 : }
1188 :
1189 :
1190 16 : FUNC_TYPE LotusToSc::IndexToTypeWK123( sal_uInt8 nIndex )
1191 : {
1192 : static const FUNC_TYPE pType[ 256 ] =
1193 : { // Code Bezeichnung
1194 : FT_Const10Float, // 0 8-Byte-IEEE-Long-Number
1195 : FT_Cref, // 1 Cell Reference
1196 : FT_Rref, // 2 Area Reference
1197 : FT_Return, // 3 return
1198 : FT_Braces, // 4 Klammer
1199 : FT_Snum, // 5 Short-Number
1200 : FT_ConstString, // 6 ASCII-String
1201 : FT_Nrref, // 7 Named range reference
1202 : FT_Absnref, // 8 Absolut named range
1203 : FT_Erref, // 9 Err range reference
1204 : FT_Ecref, // 10 Err cell reference
1205 : FT_Econstant, // 11 Err constant
1206 : FT_NotImpl, // 12
1207 : FT_NotImpl, // 13
1208 : FT_Neg, // 14 Negation
1209 : FT_Op, // 15 Addition
1210 : FT_Op, // 16 Subtraktion
1211 : FT_Op, // 17 Multiplikation
1212 : FT_Op, // 18 Division
1213 : FT_Op, // 19 Potenzierung
1214 : FT_Op, // 20 Gleichheit
1215 : FT_Op, // 21 Ungleich
1216 : FT_Op, // 22 Kleiner-gleich
1217 : FT_Op, // 23 Groesser-gleich
1218 : FT_Op, // 24 Kleiner
1219 : FT_Op, // 25 Groesser
1220 : FT_Op, // 26 And (logisch)
1221 : FT_Op, // 27 Or (logisch)
1222 : FT_FuncFix1, // 28 Not (logisch)
1223 : FT_NOP, // 29 unaeres Plus
1224 : FT_Op, // 30 Concatenation
1225 : FT_FuncFix0, // 31 Not applicable
1226 : FT_FuncFix0, // 32 Error
1227 : FT_FuncFix1, // 33 Betrag ABS()
1228 : FT_FuncFix1, // 34 Ganzzahl INT()
1229 : FT_FuncFix1, // 35 Quadratwurzel
1230 : FT_FuncFix1, // 36 Zehnerlogarithmus
1231 : FT_FuncFix1, // 37 Natuerlicher Logarithmus
1232 : FT_FuncFix0, // 38 PI
1233 : FT_FuncFix1, // 39 Sinus
1234 : FT_FuncFix1, // 40 Cosinus
1235 : FT_FuncFix1, // 41 Tangens
1236 : FT_FuncFix2, // 42 Arcus-Tangens 2 (4.Quadrant)
1237 : FT_FuncFix1, // 43 Arcus-Tangens (2.Quadrant)
1238 : FT_FuncFix1, // 44 Arcus-Sinus
1239 : FT_FuncFix1, // 45 Arcus-Cosinus
1240 : FT_FuncFix1, // 46 Exponentialfunktion
1241 : FT_FuncFix2, // 47 Modulo
1242 : FT_FuncVar, // 48 Auswahl
1243 : FT_FuncFix1, // 49 Is not applicable?
1244 : FT_FuncFix1, // 50 Is Error?
1245 : FT_FuncFix0, // 51 FALSE
1246 : FT_FuncFix0, // 52 TRUE
1247 : FT_FuncFix0, // 53 Zufallszahl
1248 : FT_FuncFix3, // 54 Datum
1249 : FT_FuncFix0, // 55 Heute
1250 : FT_FuncFix3, // 56 Payment
1251 : FT_FuncFix3, // 57 Present Value
1252 : FT_FuncFix3, // 58 Future Value
1253 : FT_FuncFix3, // 59 If ... then ... else ...
1254 : FT_FuncFix1, // 60 Tag des Monats
1255 : FT_FuncFix1, // 61 Monat
1256 : FT_FuncFix1, // 62 Jahr
1257 : FT_FuncFix2, // 63 Runden
1258 : FT_FuncFix3, // 64 Zeit
1259 : FT_FuncFix1, // 65 Stunde
1260 : FT_FuncFix1, // 66 Minute
1261 : FT_FuncFix1, // 67 Sekunde
1262 : FT_FuncFix1, // 68 Ist Zahl?
1263 : FT_FuncFix1, // 69 Ist Text?
1264 : FT_FuncFix1, // 70 Len()
1265 : FT_FuncFix1, // 71 Val()
1266 : FT_FuncFix2, // 72 String()
1267 : FT_FuncFix3, // 73 Mid()
1268 : FT_FuncFix1, // 74 Char()
1269 : FT_FuncFix1, // 75 Ascii()
1270 : FT_FuncFix3, // 76 Find()
1271 : FT_FuncFix1, // 77 Datevalue
1272 : FT_FuncFix1, // 78 Timevalue
1273 : FT_FuncFix1, // 79 Cellpointer
1274 : FT_FuncVar, // 80 Sum()
1275 : FT_FuncVar, // 81 Avg()
1276 : FT_FuncVar, // 82 Cnt()
1277 : FT_FuncVar, // 83 Min()
1278 : FT_FuncVar, // 84 Max()
1279 : FT_FuncFix3, // 85 Vlookup()
1280 : FT_FuncFix2, // 86 Npv()
1281 : FT_FuncVar, // 87 Var()
1282 : FT_FuncVar, // 88 Std()
1283 : FT_FuncFix2, // 89 Irr()
1284 : FT_FuncFix3, // 90 Hlookup()
1285 : FT_FuncVar, // 91 Dsum <-------- neu! -
1286 : FT_FuncVar, // 92 Davg <-------- neu! -
1287 : FT_FuncVar, // 93 Dcnt <-------- neu! -
1288 : FT_FuncVar, // 94 Dmin <-------- neu! -
1289 : FT_FuncVar, // 95 Dmax <-------- neu! -
1290 : FT_FuncVar, // 96 Dvar <-------- neu! -
1291 : FT_FuncVar, // 97 Dstd <-------- neu! -
1292 : FT_FuncVar, // 98 Index() <-------- change! -
1293 : FT_FuncFix1, // 99 Cols() <-------- neu! -
1294 : FT_FuncFix1, // 100 Rows() <-------- neu! -
1295 : FT_FuncFix2, // 101 Repeat() <-------- neu! -
1296 : FT_FuncFix1, // 102 Upper() <-------- neu! -
1297 : FT_FuncFix1, // 103 Lower() <-------- neu! -
1298 : FT_FuncFix2, // 104 Left() <-------- neu! -
1299 : FT_FuncFix2, // 105 Right() <-------- neu! -
1300 : FT_FuncFix4, // 106 Replace() <-------- neu! -
1301 : FT_FuncFix1, // 107 Proper() <-------- neu! -
1302 : FT_FuncFix2, // 108 Cell() <-------- neu! -
1303 : FT_FuncFix1, // 109 Trim() <-------- neu! -
1304 : FT_FuncFix1, // 110 Clean() <-------- neu! -
1305 : FT_FuncFix1, // 111 S() <--------- change in Bez. -
1306 : FT_FuncFix1, // 112 N() <--------- change in Bez. -
1307 : FT_FuncFix2, // 113 Exact() <-------- neu! -
1308 : FT_NotImpl, // 114 App <--------- change in Bez. -
1309 : FT_FuncFix1, // 115 @@() <-------- neu! -
1310 : FT_FuncFix3, // 116 Rate() <-------- neu! -
1311 : FT_FuncFix3, // 117 Term() <--------- change in Anz.
1312 : FT_FuncFix3, // 118 Cterm() <--------- change in Anz.
1313 : FT_FuncFix3, // 119 Sln() <-------- neu! -
1314 : FT_FuncFix4, // 120 Syd() <-------- neu! -
1315 : FT_FuncFix4, // 121 Ddb() <-------- neu! -
1316 : FT_Splfunc, // 122 Splfunc <-------- neu! -
1317 : FT_FuncFix1, // 123 Sheets <-------- neu! -
1318 : FT_FuncFix1, // 124 Info <-------- neu! -
1319 : FT_FuncVar, // 125 Sumproduct <-------- neu! -
1320 : FT_FuncFix1, // 126 Isrange <-------- neu! -
1321 : FT_FuncVar, // 127 Dget <-------- neu! -
1322 : FT_FuncVar, // 128 Dquery <-------- neu! -
1323 : FT_FuncFix4, // 129 Coord <-------- neu! -
1324 : FT_NOP, // 130 Reserved (internal) <-------- neu! -
1325 : FT_FuncFix0, // 131 Today <-------- neu! -
1326 : FT_FuncVar, // 132 Vdb <-------- neu! -
1327 : FT_FuncVar, // 133 Dvars <-------- neu! -
1328 : FT_FuncVar, // 134 Dstds <-------- neu! -
1329 : FT_FuncVar, // 135 Vars <-------- neu! -
1330 : FT_FuncVar, // 136 Stds <-------- neu! -
1331 : FT_FuncFix2, // 137 D360 <-------- neu! -
1332 : FT_NOP, // 138 Reserved (internal) <-------- neu! -
1333 : FT_FuncFix0, // 139 Isapp <-------- neu! - Anzahl ? -
1334 : FT_FuncVar, // 140 Isaaf <-------- neu! - Anzahl ? -
1335 : FT_FuncFix1, // 141 Weekday <-------- neu! -
1336 : FT_FuncFix3, // 142 Datedif <-------- neu! -
1337 : FT_FuncVar, // 143 Rank <-------- neu! -
1338 : FT_FuncFix2, // 144 Numberstring <-------- neu! -
1339 : FT_FuncFix1, // 145 Datestring <-------- neu! -
1340 : FT_FuncFix1, // 146 Decimal <-------- neu! -
1341 : FT_FuncFix1, // 147 Hex <-------- neu! -
1342 : FT_FuncFix4, // 148 Db <-------- neu! -
1343 : FT_FuncFix4, // 149 Pmti <-------- neu! -
1344 : FT_FuncFix4, // 150 Spi <-------- neu! -
1345 : FT_FuncFix1, // 151 Fullp <-------- neu! -
1346 : FT_FuncFix1, // 152 Halfp <-------- neu! -
1347 : FT_FuncVar, // 153 Pureavg <-------- neu! -
1348 : FT_FuncVar, // 154 Purecount <-------- neu! -
1349 : FT_FuncVar, // 155 Puremax <-------- neu! -
1350 : FT_FuncVar, // 156 Puremin <-------- neu! -
1351 : FT_FuncVar, // 157 Purestd <-------- neu! -
1352 : FT_FuncVar, // 158 Purevar <-------- neu! -
1353 : FT_FuncVar, // 159 Purestds <-------- neu! -
1354 : FT_FuncVar, // 160 Purevars <-------- neu! -
1355 : FT_FuncFix3, // 161 Pmt2 <-------- neu! -
1356 : FT_FuncFix3, // 162 Pv2 <-------- neu! -
1357 : FT_FuncFix3, // 163 Fv2 <-------- neu! -
1358 : FT_FuncFix3, // 164 Term2 <-------- neu! -
1359 : FT_NotImpl, // 165 --- <-------- neu! - Anzahl ? -
1360 : FT_FuncFix2, // 166 D360 (US-Version)
1361 : FT_NotImpl, // 167
1362 : FT_NotImpl, // 168
1363 : FT_NotImpl, // 169
1364 : FT_NotImpl, // 170
1365 : FT_NotImpl, // 171
1366 : FT_NotImpl, // 172
1367 : FT_NotImpl, // 173
1368 : FT_NotImpl, // 174
1369 : FT_NotImpl, // 175
1370 : FT_NotImpl, // 176
1371 : FT_NotImpl, // 177
1372 : FT_NotImpl, // 178
1373 : FT_NotImpl, // 179
1374 : FT_NotImpl, // 180
1375 : FT_NotImpl, // 181
1376 : FT_NotImpl, // 182
1377 : FT_NotImpl, // 183
1378 : FT_NotImpl, // 184
1379 : FT_NotImpl, // 185
1380 : FT_FuncVar, // 186 Solver <-------- neu! -
1381 : FT_NotImpl, // 187
1382 : FT_NotImpl, // 188
1383 : FT_NotImpl, // 189
1384 : FT_NotImpl, // 190
1385 : FT_NotImpl, // 191
1386 : FT_NotImpl, // 192
1387 : FT_NotImpl, // 193
1388 : FT_NotImpl, // 194
1389 : FT_NotImpl, // 195
1390 : FT_NotImpl, // 196
1391 : FT_NotImpl, // 197
1392 : FT_NotImpl, // 198
1393 : FT_NotImpl, // 199
1394 : FT_NotImpl, // 200
1395 : FT_NotImpl, // 201
1396 : FT_NotImpl, // 202
1397 : FT_NotImpl, // 203
1398 : FT_NotImpl, // 204
1399 : FT_NotImpl, // 205
1400 : FT_NotImpl, // 206
1401 : FT_NotImpl, // 207
1402 : FT_NotImpl, // 208
1403 : FT_NotImpl, // 209
1404 : FT_NotImpl, // 210
1405 : FT_NotImpl, // 211
1406 : FT_NotImpl, // 212
1407 : FT_NotImpl, // 213
1408 : FT_NotImpl, // 214
1409 : FT_NotImpl, // 215
1410 : FT_NotImpl, // 216
1411 : FT_NotImpl, // 217
1412 : FT_NotImpl, // 218
1413 : FT_NotImpl, // 219
1414 : FT_NotImpl, // 220
1415 : FT_NotImpl, // 221
1416 : FT_NotImpl, // 222
1417 : FT_NotImpl, // 223
1418 : FT_NotImpl, // 224
1419 : FT_NotImpl, // 225
1420 : FT_NotImpl, // 226
1421 : FT_NotImpl, // 227
1422 : FT_NotImpl, // 228
1423 : FT_NotImpl, // 229
1424 : FT_NotImpl, // 230
1425 : FT_NotImpl, // 231
1426 : FT_NotImpl, // 232
1427 : FT_NotImpl, // 233
1428 : FT_NotImpl, // 234
1429 : FT_NotImpl, // 235
1430 : FT_NotImpl, // 236
1431 : FT_NotImpl, // 237
1432 : FT_NotImpl, // 238
1433 : FT_NotImpl, // 239
1434 : FT_NotImpl, // 240
1435 : FT_NotImpl, // 241
1436 : FT_NotImpl, // 242
1437 : FT_NotImpl, // 243
1438 : FT_NotImpl, // 244
1439 : FT_NotImpl, // 245
1440 : FT_NotImpl, // 246
1441 : FT_NotImpl, // 247
1442 : FT_NotImpl, // 248
1443 : FT_NotImpl, // 249
1444 : FT_NotImpl, // 250
1445 : FT_NotImpl, // 251
1446 : FT_NotImpl, // 252
1447 : FT_NotImpl, // 253
1448 : FT_NotImpl, // 254
1449 : FT_NotImpl, // 255
1450 : };
1451 16 : return pType[ nIndex ];
1452 : }
1453 :
1454 :
1455 16 : DefTokenId LotusToSc::IndexToTokenWK123( sal_uInt8 nIndex )
1456 : {
1457 : static const DefTokenId pToken[ 256 ] =
1458 : { // Code Bezeichnung
1459 : ocPush, // 0 8-Byte-IEEE-Long-Numbers
1460 : ocPush, // 1 Variable
1461 : ocPush, // 2 Bereich
1462 : ocPush, // 3 return
1463 : ocPush, // 4 Klammer
1464 : ocPush, // 5 Numbers
1465 : ocPush, // 6 ASCII-String
1466 : ocPush, // 7 Named range reference
1467 : ocPush, // 8 Absolut named range
1468 : ocPush, // 9 Err range reference
1469 : ocPush, // 10 Err cell reference
1470 : ocPush, // 11 Err constant
1471 : ocPush, // 12
1472 : ocPush, // 13
1473 : ocNegSub, // 14 Negation
1474 : ocAdd, // 15 Addition
1475 : ocSub, // 16 Subtraktion
1476 : ocMul, // 17 Multiplikation
1477 : ocDiv, // 18 Division
1478 : ocPow, // 19 Potenzierung
1479 : ocEqual, // 20 Gleichheit
1480 : ocNotEqual, // 21 Ungleich
1481 : ocLessEqual, // 22 Kleiner-gleich
1482 : ocGreaterEqual, // 23 Groesser-gleich
1483 : ocLess, // 24 Kleiner
1484 : ocGreater, // 25 Groesser
1485 : ocAnd, // 26 And (logisch)
1486 : ocOr, // 27 Or (logisch)
1487 : ocNot, // 28 Not (logisch)
1488 : ocPush, // 29 unaeres Plus
1489 : ocAmpersand, // 30 Concatenation
1490 : ocNotAvail, // 31 Not available
1491 : ocNoName, // 32 Error
1492 : ocAbs, // 33 Betrag ABS()
1493 : ocInt, // 34 Ganzzahl INT()
1494 : ocSqrt, // 35 Quadratwurzel
1495 : ocLog10, // 36 Zehnerlogarithmus
1496 : ocLn, // 37 Natuerlicher Logarithmus
1497 : ocPi, // 38 PI
1498 : ocSin, // 39 Sinus
1499 : ocCos, // 40 Cosinus
1500 : ocTan, // 41 Tangens
1501 : ocArcTan2, // 42 Arcus-Tangens 2 (4.Quadrant)
1502 : ocArcTan, // 43 Arcus-Tangens (2.Quadrant)
1503 : ocArcSin, // 44 Arcus-Sinus
1504 : ocArcCos, // 45 Arcus-Cosinus
1505 : ocExp, // 46 Exponentialfunktion
1506 : ocMod, // 47 Modulo
1507 : ocChose, // 48 Auswahl
1508 : ocIsNA, // 49 Is not available?
1509 : ocIsError, // 50 Is Error?
1510 : ocFalse, // 51 FALSE
1511 : ocTrue, // 52 TRUE
1512 : ocRandom, // 53 Zufallszahl
1513 : ocGetDate, // 54 Datum
1514 : ocGetActDate, // 55 Heute
1515 : ocRMZ, // 56 Payment
1516 : ocBW, // 57 Present Value
1517 : ocZW, // 58 Future Value
1518 : ocIf, // 59 If ... then ... else ...
1519 : ocGetDay, // 60 Tag des Monats
1520 : ocGetMonth, // 61 Monat
1521 : ocGetYear, // 62 Jahr
1522 : ocRound, // 63 Runden
1523 : ocGetTime, // 64 Zeit
1524 : ocGetHour, // 65 Stunde
1525 : ocGetMin, // 66 Minute
1526 : ocGetSec, // 67 Sekunde
1527 : ocIsValue, // 68 Ist Zahl?
1528 : ocIsString, // 69 Ist Text?
1529 : ocLen, // 70 Len()
1530 : ocValue, // 71 Val()
1531 : ocFixed, // 72 String() ocFixed ersatzweise + Spezialfall
1532 : ocMid, // 73 Mid()
1533 : ocChar, // 74 Char()
1534 : ocCode, // 75 Ascii()
1535 : ocFind, // 76 Find()
1536 : ocGetDateValue, // 77 Datevalue
1537 : ocGetTimeValue, // 78 Timevalue
1538 : ocNoName, // 79 Cellpointer
1539 : ocSum, // 80 Sum()
1540 : ocAverage, // 81 Avg()
1541 : ocCount, // 82 Cnt()
1542 : ocMin, // 83 Min()
1543 : ocMax, // 84 Max()
1544 : ocVLookup, // 85 Vlookup()
1545 : ocNPV, // 86 Npv()
1546 : ocVar, // 87 Var()
1547 : ocStDev, // 88 Std()
1548 : ocIRR, // 89 Irr()
1549 : ocHLookup, // 90 Hlookup()
1550 : ocDBSum, // 91 XlfDsum
1551 : ocDBAverage, // 92 XlfDaverage
1552 : ocDBCount, // 93 XlfDcount
1553 : ocDBMin, // 94 XlfDmin
1554 : ocDBMax, // 95 XlfDmax
1555 : ocDBVar, // 96 XlfDvar
1556 : ocDBStdDev, // 97 XlfDstdev
1557 : ocIndex, // 98 Index()
1558 : ocColumns, // 99 Cols()
1559 : ocRows, // 100 Rows()
1560 : ocRept, // 101 Repeat()
1561 : ocUpper, // 102 Upper()
1562 : ocLower, // 103 Lower()
1563 : ocLeft, // 104 Left()
1564 : ocRight, // 105 Right()
1565 : ocReplace, // 106 Replace()
1566 : ocPropper, // 107 Proper()
1567 : ocNoName, // 108 Cell()
1568 : ocTrim, // 109 Trim()
1569 : ocClean, // 110 Clean()
1570 : ocNoName, // 111 F() (Excel: T()?)
1571 : ocNoName, // 112 W()
1572 : ocExact, // 113 Exact()
1573 : ocNoName, // 114 Call()
1574 : ocIndirect, // 115 @@()
1575 : ocZins, // 116 Rate()
1576 : ocNoName, // 117 Term()
1577 : ocNoName, // 118 Cterm()
1578 : ocLIA, // 119 Sln()
1579 : ocDIA, // 120 Syd(), Soy()
1580 : ocGDA, // 121 Ddb()
1581 : ocNoName, // 122 Splfunc
1582 : ocNoName, // 123 Sheets
1583 : ocNoName, // 124 Info
1584 : ocSumProduct, // 125 Sumproduct
1585 : ocNoName, // 126 Isrange
1586 : ocDBGet, // 127 Dget
1587 : ocNoName, // 128 Dquery
1588 : ocNoName, // 129 Coord
1589 : ocNoName, // 130 Reserved (internal)
1590 : ocGetActDate, // 131 Today
1591 : ocNoName, // 132 Vdb
1592 : ocDBVarP, // 133 Dvars
1593 : ocDBStdDevP, // 134 Dstds
1594 : ocVarP, // 135 Vars
1595 : ocStDevP, // 136 Stds
1596 : ocGetDiffDate360, // 137 D360
1597 : ocNoName, // 138 Reserved (internal)
1598 : ocNoName, // 139 Isapp
1599 : ocNoName, // 140 Isaaf
1600 : ocGetDayOfWeek, // 141 Weekday
1601 : ocGetDiffDate, // 142 Datedif
1602 : ocRank, // 143 Rank
1603 : ocNoName, // 144 Numberstring
1604 : ocNoName, // 145 Datestring
1605 : ocNoName, // 146 Decimal
1606 : ocNoName, // 147 Hex
1607 : ocNoName, // 148 Db
1608 : ocNoName, // 149 Pmti
1609 : ocNoName, // 150 Spi
1610 : ocNoName, // 151 Fullp
1611 : ocNoName, // 152 Halfp
1612 : ocNoName, // 153 Pureavg
1613 : ocCount2, // 154 Purecount
1614 : ocNoName, // 155 Puremax
1615 : ocNoName, // 156 Puremin
1616 : ocNoName, // 157 Purestd
1617 : ocNoName, // 158 Purevar
1618 : ocNoName, // 159 Purestds
1619 : ocNoName, // 160 Purevars
1620 : ocNoName, // 161 Pmt2
1621 : ocNoName, // 162 Pv2
1622 : ocNoName, // 163 Fv2
1623 : ocNoName, // 164 Term2
1624 : ocNoName, // 165 --- <-------- neu! - Anzahl ? -
1625 : ocGetDiffDate360, // 166 D360 (US-Version, ersatzweise wie ander D360-Funktion)
1626 : ocNoName, // 167
1627 : ocNoName, // 168
1628 : ocNoName, // 169
1629 : ocNoName, // 170
1630 : ocNoName, // 171
1631 : ocNoName, // 172
1632 : ocNoName, // 173
1633 : ocNoName, // 174
1634 : ocNoName, // 175
1635 : ocNoName, // 176
1636 : ocNoName, // 177
1637 : ocNoName, // 178
1638 : ocNoName, // 179
1639 : ocNoName, // 180
1640 : ocNoName, // 181
1641 : ocNoName, // 182
1642 : ocNoName, // 183
1643 : ocNoName, // 184
1644 : ocNoName, // 185
1645 : ocNoName, // 186
1646 : ocNoName, // 187
1647 : ocNoName, // 188
1648 : ocNoName, // 189
1649 : ocNoName, // 190
1650 : ocNoName, // 191
1651 : ocNoName, // 192
1652 : ocNoName, // 193
1653 : ocNoName, // 194
1654 : ocNoName, // 195
1655 : ocNoName, // 196
1656 : ocNoName, // 197
1657 : ocNoName, // 198
1658 : ocNoName, // 199
1659 : ocNoName, // 200
1660 : ocNoName, // 201
1661 : ocNoName, // 202
1662 : ocNoName, // 203
1663 : ocNoName, // 204
1664 : ocNoName, // 205
1665 : ocNoName, // 206 ?
1666 : ocNoName, // 207
1667 : ocNoName, // 208
1668 : ocNoName, // 209
1669 : ocNoName, // 210
1670 : ocNoName, // 211
1671 : ocNoName, // 212
1672 : ocNoName, // 213
1673 : ocNoName, // 214
1674 : ocNoName, // 215
1675 : ocNoName, // 216
1676 : ocNoName, // 217
1677 : ocNoName, // 218
1678 : ocNoName, // 219
1679 : ocNoName, // 220
1680 : ocNoName, // 221
1681 : ocNoName, // 222
1682 : ocNoName, // 223
1683 : ocNoName, // 224
1684 : ocNoName, // 225
1685 : ocNoName, // 226
1686 : ocNoName, // 227
1687 : ocNoName, // 228
1688 : ocNoName, // 229
1689 : ocNoName, // 230
1690 : ocNoName, // 231
1691 : ocNoName, // 232
1692 : ocNoName, // 233
1693 : ocNoName, // 234
1694 : ocNoName, // 235
1695 : ocNoName, // 236
1696 : ocNoName, // 237
1697 : ocNoName, // 238
1698 : ocNoName, // 239
1699 : ocNoName, // 240
1700 : ocNoName, // 241
1701 : ocNoName, // 242
1702 : ocNoName, // 243
1703 : ocNoName, // 244
1704 : ocNoName, // 245
1705 : ocNoName, // 246
1706 : ocNoName, // 247
1707 : ocNoName, // 248
1708 : ocNoName, // 249
1709 : ocNoName, // 250
1710 : ocNoName, // 251
1711 : ocNoName, // 252
1712 : ocNoName, // 253
1713 : ocNoName, // 254
1714 : ocNoName // 255 ?
1715 : };
1716 :
1717 16 : return pToken[ nIndex ];
1718 : }
1719 :
1720 :
1721 :
1722 :
1723 0 : const sal_Char* GetAddInName( const sal_uInt8 n )
1724 : {
1725 : static const sal_Char* pNames[ 256 ] =
1726 : {
1727 : NULL, // 0 8-Byte-IEEE-Float
1728 : NULL, // 1 Variable
1729 : NULL, // 2 Bereich
1730 : NULL, // 3 return
1731 : NULL, // 4 Klammer
1732 : NULL, // 5 2-Byte-Integer
1733 : NULL, // 6 ASCII-String
1734 : NULL, // 7 Named range reference
1735 : NULL, // 8 Absolut named range
1736 : NULL, // 9 Err range reference
1737 : NULL, // 10 Err cell reference
1738 : NULL, // 11 Err constant
1739 : NULL, // 12
1740 : NULL, // 13
1741 : NULL, // 14 Negation
1742 : NULL, // 15 Addition
1743 : NULL, // 16 Subtraktion
1744 : NULL, // 17 Multiplikation
1745 : NULL, // 18 Division
1746 : NULL, // 19 Potenzierung
1747 : NULL, // 20 Gleichheit
1748 : NULL, // 21 Ungleich
1749 : NULL, // 22 Kleiner-gleich
1750 : NULL, // 23 Groesser-gleich
1751 : NULL, // 24 Kleiner
1752 : NULL, // 25 Groesser
1753 : NULL, // 26 And (logisch)
1754 : NULL, // 27 Or (logisch)
1755 : NULL, // 28 Not (logisch)
1756 : NULL, // 29 unaeres Plus
1757 : NULL, // 30 Concatenation
1758 : NULL, // 31 Not applicable
1759 : NULL, // 32 Error
1760 : NULL, // 33 Betrag ABS()
1761 : NULL, // 34 Ganzzahl INT()
1762 : NULL, // 35 Quadratwurzel
1763 : NULL, // 36 Zehnerlogarithmus
1764 : NULL, // 37 Natuerlicher Logarithmus
1765 : NULL, // 38 PI
1766 : NULL, // 39 Sinus
1767 : NULL, // 40 Cosinus
1768 : NULL, // 41 Tangens
1769 : NULL, // 42 Arcus-Tangens 2 (4.Quadrant)
1770 : NULL, // 43 Arcus-Tangens (2.Quadrant)
1771 : NULL, // 44 Arcus-Sinus
1772 : NULL, // 45 Arcus-Cosinus
1773 : NULL, // 46 Exponentialfunktion
1774 : NULL, // 47 Modulo
1775 : NULL, // 48 Auswahl
1776 : NULL, // 49 Is not applicable?
1777 : NULL, // 50 Is Error?
1778 : NULL, // 51 FALSE
1779 : NULL, // 52 TRUE
1780 : NULL, // 53 Zufallszahl
1781 : NULL, // 54 Datum
1782 : NULL, // 55 Heute
1783 : NULL, // 56 Payment
1784 : NULL, // 57 Present Value
1785 : NULL, // 58 Future Value
1786 : NULL, // 59 If ... then ... else ...
1787 : NULL, // 60 Tag des Monats
1788 : NULL, // 61 Monat
1789 : NULL, // 62 Jahr
1790 : NULL, // 63 Runden
1791 : NULL, // 64 Zeit
1792 : NULL, // 65 Stunde
1793 : NULL, // 66 Minute
1794 : NULL, // 67 Sekunde
1795 : NULL, // 68 Ist Zahl?
1796 : NULL, // 69 Ist Text?
1797 : NULL, // 70 Len()
1798 : NULL, // 71 Val()
1799 : NULL, // 72 String() ocFixed ersatzweise + Spezialfall
1800 : NULL, // 73 Mid()
1801 : NULL, // 74 Char()
1802 : NULL, // 75 Ascii()
1803 : NULL, // 76 Find()
1804 : NULL, // 77 Datevalue
1805 : NULL, // 78 Timevalue
1806 : "ZELLZEIGER", // 79 Cellpointer
1807 : NULL, // 80 Sum()
1808 : NULL, // 81 Avg()
1809 : NULL, // 82 Cnt()
1810 : NULL, // 83 Min()
1811 : NULL, // 84 Max()
1812 : NULL, // 85 Vlookup()
1813 : NULL, // 86 Npv()
1814 : NULL, // 87 Var()
1815 : NULL, // 88 Std()
1816 : NULL, // 89 Irr()
1817 : NULL, // 90 Hlookup()
1818 : NULL, // 91 XlfDsum
1819 : NULL, // 92 XlfDaverage
1820 : NULL, // 93 XlfDcount
1821 : NULL, // 94 XlfDmin
1822 : NULL, // 95 XlfDmax
1823 : NULL, // 96 XlfDvar
1824 : NULL, // 97 XlfDstdev
1825 : NULL, // 98 Index()
1826 : NULL, // 99 Cols()
1827 : NULL, // 100 Rows()
1828 : NULL, // 101 Repeat()
1829 : NULL, // 102 Upper()
1830 : NULL, // 103 Lower()
1831 : NULL, // 104 Left()
1832 : NULL, // 105 Right()
1833 : NULL, // 106 Replace()
1834 : NULL, // 107 Proper()
1835 : "ZELLE", // 108 Cell()
1836 : NULL, // 109 Trim()
1837 : NULL, // 110 Clean()
1838 : "F", // 111 F() (Excel: T()?)
1839 : "W", // 112 W()
1840 : NULL, // 113 Exact()
1841 : NULL, // 114 Call()
1842 : NULL, // 115 @@()
1843 : NULL, // 116 Rate()
1844 : "ANN", // 117 Term()
1845 : NULL, // 118 Cterm()
1846 : NULL, // 119 Sln()
1847 : NULL, // 120 Syd(), Soy()
1848 : NULL, // 121 Ddb()
1849 : "SplFunc", // 122 Splfunc
1850 : "BLAETTER", // 123 Sheets
1851 : "INFO", // 124 Info
1852 : NULL, // 125 Sumproduct
1853 : "ISTBEREICH", // 126 Isrange
1854 : NULL, // 127 Dget
1855 : "DABFRAGE", // 128 Dquery
1856 : "KOORD", // 129 Coord
1857 : NULL, // 130 Reserved (internal)
1858 : NULL, // 131 Today
1859 : NULL, // 132 Vdb
1860 : NULL, // 133 Dvars
1861 : NULL, // 134 Dstds
1862 : NULL, // 135 Vars
1863 : NULL, // 136 Stds
1864 : NULL, // 137 D360
1865 : NULL, // 138 Reserved (internal)
1866 : NULL, // 139 Isapp
1867 : "ISTDEFZUS", // 140 Isaaf
1868 : NULL, // 141 Weekday
1869 : NULL, // 142 Datedif
1870 : NULL, // 143 Rank
1871 : NULL, // 144 Numberstring
1872 : "DATUMFOLGE", // 145 Datestring
1873 : "DEZIMAL", // 146 Decimal
1874 : "HEX", // 147 Hex
1875 : NULL, // 148 Db
1876 : NULL, // 149 Pmti
1877 : NULL, // 150 Spi
1878 : NULL, // 151 Fullp
1879 : NULL, // 152 Halfp
1880 : "PURMITTELWERT", // 153 Pureavg
1881 : "PURANZAHL", // 154 Purecount
1882 : "PURMAX", // 155 Puremax
1883 : "PURMIN", // 156 Puremin
1884 : "PURSTDABW", // 157 Purestd
1885 : "PURVAR", // 158 Purevar
1886 : "PURSTDABWP", // 159 Purestds
1887 : "PURVARP", // 160 Purevars
1888 : NULL, // 161 Pmt2
1889 : NULL, // 162 Pv2
1890 : NULL, // 163 Fv2
1891 : NULL, // 164 Term2
1892 : NULL, // 165 --- <-------- neu! - Anzahl ? -
1893 : NULL, // 166 D360 (US-Version, ersatzweise wie ander D360-Funktion)
1894 : NULL, // 167
1895 : NULL, // 168
1896 : NULL, // 169
1897 : NULL, // 170
1898 : NULL, // 171
1899 : NULL, // 172
1900 : NULL, // 173
1901 : NULL, // 174
1902 : NULL, // 175
1903 : NULL, // 176
1904 : NULL, // 177
1905 : NULL, // 178
1906 : NULL, // 179
1907 : NULL, // 180
1908 : NULL, // 181
1909 : NULL, // 182
1910 : NULL, // 183
1911 : NULL, // 184
1912 : NULL, // 185
1913 : NULL, // 186
1914 : NULL, // 187
1915 : NULL, // 188
1916 : NULL, // 189
1917 : NULL, // 190
1918 : NULL, // 191
1919 : NULL, // 192
1920 : NULL, // 193
1921 : NULL, // 194
1922 : NULL, // 195
1923 : NULL, // 196
1924 : NULL, // 197
1925 : NULL, // 198
1926 : NULL, // 199
1927 : NULL, // 200
1928 : NULL, // 201
1929 : NULL, // 202
1930 : NULL, // 203
1931 : NULL, // 204
1932 : NULL, // 205
1933 : NULL, // 206 ?
1934 : NULL, // 207
1935 : NULL, // 208
1936 : NULL, // 209
1937 : NULL, // 210
1938 : NULL, // 211
1939 : NULL, // 212
1940 : NULL, // 213
1941 : NULL, // 214
1942 : NULL, // 215
1943 : NULL, // 216
1944 : NULL, // 217
1945 : NULL, // 218
1946 : NULL, // 219
1947 : NULL, // 220
1948 : NULL, // 221
1949 : NULL, // 222
1950 : NULL, // 223
1951 : NULL, // 224
1952 : NULL, // 225
1953 : NULL, // 226
1954 : NULL, // 227
1955 : NULL, // 228
1956 : NULL, // 229
1957 : NULL, // 230
1958 : NULL, // 231
1959 : NULL, // 232
1960 : NULL, // 233
1961 : NULL, // 234
1962 : NULL, // 235
1963 : NULL, // 236
1964 : NULL, // 237
1965 : NULL, // 238
1966 : NULL, // 239
1967 : NULL, // 240
1968 : NULL, // 241
1969 : NULL, // 242
1970 : NULL, // 243
1971 : NULL, // 244
1972 : NULL, // 245
1973 : NULL, // 246
1974 : NULL, // 247
1975 : NULL, // 248
1976 : NULL, // 249
1977 : NULL, // 250
1978 : NULL, // 251
1979 : NULL, // 252
1980 : NULL, // 253
1981 : NULL, // 254
1982 : NULL // 255 ?
1983 : };
1984 :
1985 0 : return pNames[ n ];
1986 : }
1987 :
1988 :
1989 0 : static DefTokenId lcl_KnownAddIn( const rtl::OString& rTest )
1990 : {
1991 0 : DefTokenId eId = ocNoName;
1992 :
1993 0 : if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("FACT")))
1994 0 : eId = ocFact;
1995 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ISEMPTY")))
1996 0 : eId=ocIsEmpty;
1997 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("DEGTORAD")))
1998 0 : eId=ocRad;
1999 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("RADTODEG")))
2000 0 : eId=ocDeg;
2001 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("SIGN")))
2002 0 : eId=ocPlusMinus;
2003 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ACOSH")))
2004 0 : eId=ocArcCosHyp;
2005 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ACOTH")))
2006 0 : eId=ocArcCotHyp;
2007 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ASINH")))
2008 0 : eId=ocArcSinHyp;
2009 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ATANH")))
2010 0 : eId=ocArcTanHyp;
2011 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("COSH")))
2012 0 : eId=ocCosHyp;
2013 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("COTH")))
2014 0 : eId=ocCotHyp;
2015 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("SINH")))
2016 0 : eId=ocSinHyp;
2017 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("TANH")))
2018 0 : eId=ocTanHyp;
2019 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("EVEN")))
2020 0 : eId=ocIsEven;
2021 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ODD")))
2022 0 : eId=ocIsOdd;
2023 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ACOT")))
2024 0 : eId=ocArcCot;
2025 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("COT")))
2026 0 : eId=ocCot;
2027 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("TRUNC")))
2028 0 : eId=ocTrunc;
2029 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("GEOMEAN")))
2030 0 : eId=ocGeoMean;
2031 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("HARMEAN")))
2032 0 : eId=ocHarMean;
2033 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("CORREL")))
2034 0 : eId=ocCorrel;
2035 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("MEDIAN")))
2036 0 : eId=ocMedian;
2037 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("COV")))
2038 0 : eId=ocCovar;
2039 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("SKEWNESS")))
2040 0 : eId=ocSchiefe;
2041 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("CHITEST")))
2042 0 : eId=ocChiTest;
2043 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("FTEST")))
2044 0 : eId=ocFTest;
2045 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("AVEDEV")))
2046 0 : eId=ocAveDev;
2047 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("PRODUCT")))
2048 0 : eId=ocProduct;
2049 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("PERMUT")))
2050 0 : eId=ocVariationen;
2051 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("GAMMALN")))
2052 0 : eId=ocGammaLn;
2053 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("POISSON")))
2054 0 : eId=ocPoissonDist;
2055 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("NORMAL")))
2056 0 : eId=ocNormDist;
2057 0 : else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("CRITBINOMIAL")))
2058 0 : eId=ocKritBinom;
2059 0 : return eId;
2060 : }
2061 :
2062 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|