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