xref: /aoo4110/main/formula/inc/formula/compiler.hrc (revision b1cdbd2c)
1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24#ifndef FORMULA_COMPILER_HRC
25#define FORMULA_COMPILER_HRC
26
27/* Central definition of OpCodes for spreadsheet functions */
28
29/*** Special commands ***/
30#define SC_OPCODE_PUSH                0     /* internal commands */
31#define SC_OPCODE_CALL                1
32#define SC_OPCODE_STOP                2
33#define SC_OPCODE_EXTERNAL            3
34#define SC_OPCODE_NAME                4
35#define SC_OPCODE_EXTERNAL_REF        5
36#define SC_OPCODE_IF                  6     /* jump commands */
37#define SC_OPCODE_CHOSE               7
38#define SC_OPCODE_OPEN                8     /* parentheses and separators */
39#define SC_OPCODE_CLOSE               9
40#define SC_OPCODE_SEP                10
41#define SC_OPCODE_MISSING            11     /* special OpCodes */
42#define SC_OPCODE_BAD                12
43#define SC_OPCODE_SPACES             13
44#define SC_OPCODE_MAT_REF            14
45#define SC_OPCODE_DB_AREA            15     /* additional access operators */
46#define SC_OPCODE_MACRO              16
47#define SC_OPCODE_COL_ROW_NAME       17
48#define SC_OPCODE_COL_ROW_NAME_AUTO  18
49#define SC_OPCODE_PERCENT_SIGN       19     /* operator _follows_ value */
50#define SC_OPCODE_ARRAY_OPEN         20
51#define SC_OPCODE_ARRAY_CLOSE        21
52#define SC_OPCODE_ARRAY_ROW_SEP      22
53#define SC_OPCODE_ARRAY_COL_SEP      23     /* some convs use sep != col_sep */
54#define SC_OPCODE_STOP_DIV           24
55
56/*** error constants #... ***/
57#define SC_OPCODE_START_ERRORS       30
58#define SC_OPCODE_ERROR_NULL         30
59#define SC_OPCODE_ERROR_DIVZERO      31
60#define SC_OPCODE_ERROR_VALUE        32
61#define SC_OPCODE_ERROR_REF          33
62#define SC_OPCODE_ERROR_NAME         34
63#define SC_OPCODE_ERROR_NUM          35
64#define SC_OPCODE_ERROR_NA           36
65#define SC_OPCODE_STOP_ERRORS        37
66
67/*** Binary operators ***/
68#define SC_OPCODE_START_BIN_OP       40
69#define SC_OPCODE_ADD                40
70#define SC_OPCODE_SUB                41
71#define SC_OPCODE_MUL                42
72#define SC_OPCODE_DIV                43
73#define SC_OPCODE_AMPERSAND          44
74#define SC_OPCODE_POW                45
75#define SC_OPCODE_EQUAL              46
76#define SC_OPCODE_NOT_EQUAL          47
77#define SC_OPCODE_LESS               48
78#define SC_OPCODE_GREATER            49
79#define SC_OPCODE_LESS_EQUAL         50
80#define SC_OPCODE_GREATER_EQUAL      51
81#define SC_OPCODE_AND                52
82#define SC_OPCODE_OR                 53
83#define SC_OPCODE_INTERSECT          54
84#define SC_OPCODE_UNION              55
85#define SC_OPCODE_RANGE              56
86#define SC_OPCODE_STOP_BIN_OP        57
87
88/* NOTE: binary and unary operators must be in sequence for compiler! */
89
90/*** Unary operators ***/
91#define SC_OPCODE_START_UN_OP        60
92#define SC_OPCODE_NOT                60
93#define SC_OPCODE_NEG                61
94#define SC_OPCODE_NEG_SUB            62
95#define SC_OPCODE_STOP_UN_OP         63
96
97/*** Functions without parameters ***/
98#define SC_OPCODE_START_NO_PAR       65
99#define SC_OPCODE_PI                 65
100#define SC_OPCODE_RANDOM             66
101#define SC_OPCODE_TRUE               67
102#define SC_OPCODE_FALSE              68
103#define SC_OPCODE_GET_ACT_DATE       69
104#define SC_OPCODE_GET_ACT_TIME       70
105#define SC_OPCODE_NO_VALUE           71
106#define SC_OPCODE_CURRENT            72
107#define SC_OPCODE_STOP_NO_PAR        73
108
109/*** Functions with one parameter ***/
110#define SC_OPCODE_START_1_PAR        80
111#define SC_OPCODE_DEG                80     /* trigonometric */
112#define SC_OPCODE_RAD                81
113#define SC_OPCODE_SIN                82
114#define SC_OPCODE_COS                83
115#define SC_OPCODE_TAN                84
116#define SC_OPCODE_COT                85
117#define SC_OPCODE_ARC_SIN            86
118#define SC_OPCODE_ARC_COS            87
119#define SC_OPCODE_ARC_TAN            88
120#define SC_OPCODE_ARC_COT            89
121#define SC_OPCODE_SIN_HYP            90
122#define SC_OPCODE_COS_HYP            91
123#define SC_OPCODE_TAN_HYP            92
124#define SC_OPCODE_COT_HYP            93
125#define SC_OPCODE_ARC_SIN_HYP        94     /* transcendent */
126#define SC_OPCODE_ARC_COS_HYP        95
127#define SC_OPCODE_ARC_TAN_HYP        96
128#define SC_OPCODE_ARC_COT_HYP        97
129#define SC_OPCODE_COSECANT           98
130#define SC_OPCODE_SECANT             99
131#define SC_OPCODE_COSECANT_HYP      100
132#define SC_OPCODE_SECANT_HYP        101
133#define SC_OPCODE_EXP               102
134#define SC_OPCODE_LN                103
135#define SC_OPCODE_SQRT              104
136#define SC_OPCODE_FACT              105
137#define SC_OPCODE_GET_YEAR          106     /* date and time */
138#define SC_OPCODE_GET_MONTH         107
139#define SC_OPCODE_GET_DAY           108
140#define SC_OPCODE_GET_HOUR          109
141#define SC_OPCODE_GET_MIN           110
142#define SC_OPCODE_GET_SEC           111
143#define SC_OPCODE_PLUS_MINUS        112     /* miscellaneous */
144#define SC_OPCODE_ABS               113
145#define SC_OPCODE_INT               114
146#define SC_OPCODE_PHI               115
147#define SC_OPCODE_GAUSS             116
148#define SC_OPCODE_IS_EMPTY          117     /* obtain type */
149#define SC_OPCODE_IS_STRING         118
150#define SC_OPCODE_IS_NON_STRING     119
151#define SC_OPCODE_IS_LOGICAL        120
152#define SC_OPCODE_TYPE              121
153#define SC_OPCODE_IS_REF            122
154#define SC_OPCODE_IS_VALUE          123
155#define SC_OPCODE_IS_FORMULA        124
156#define SC_OPCODE_IS_NV             125
157#define SC_OPCODE_IS_ERR            126
158#define SC_OPCODE_IS_ERROR          127
159#define SC_OPCODE_IS_EVEN           128
160#define SC_OPCODE_IS_ODD            129
161#define SC_OPCODE_N                 130
162#define SC_OPCODE_GET_DATE_VALUE    131     /* string functions */
163#define SC_OPCODE_GET_TIME_VALUE    132
164#define SC_OPCODE_CODE              133
165#define SC_OPCODE_TRIM              134
166#define SC_OPCODE_UPPER             135
167#define SC_OPCODE_PROPPER           136
168#define SC_OPCODE_LOWER             137
169#define SC_OPCODE_LEN               138
170#define SC_OPCODE_T                 139     /* miscellaneous, part 21 */
171#define SC_OPCODE_VALUE             140
172#define SC_OPCODE_CLEAN             141
173#define SC_OPCODE_CHAR              142
174#define SC_OPCODE_LOG10             143
175#define SC_OPCODE_EVEN              144
176#define SC_OPCODE_ODD               145
177#define SC_OPCODE_STD_NORM_DIST     146
178#define SC_OPCODE_FISHER            147
179#define SC_OPCODE_FISHER_INV        148
180#define SC_OPCODE_S_NORM_INV        149
181#define SC_OPCODE_GAMMA_LN          150
182#define SC_OPCODE_ERROR_TYPE        151
183#define SC_OPCODE_ERR_CELL          152
184#define SC_OPCODE_FORMULA           153
185#define SC_OPCODE_ARABIC            154
186#define SC_OPCODE_INFO              155
187#define SC_OPCODE_BAHTTEXT          156
188#define SC_OPCODE_JIS               157
189#define SC_OPCODE_ASC               158
190#define SC_OPCODE_UNICODE           159
191#define SC_OPCODE_UNICHAR           160
192#define SC_OPCODE_GAMMA             161
193#define SC_OPCODE_STOP_1_PAR        162
194
195/*** Functions with more than one parameters ***/
196#define SC_OPCODE_START_2_PAR       201
197#define SC_OPCODE_ARC_TAN_2         201
198#define SC_OPCODE_CEIL              202
199#define SC_OPCODE_FLOOR             203
200#define SC_OPCODE_ROUND             204
201#define SC_OPCODE_ROUND_UP          205
202#define SC_OPCODE_ROUND_DOWN        206
203#define SC_OPCODE_TRUNC             207
204#define SC_OPCODE_LOG               208
205#define SC_OPCODE_POWER             209
206#define SC_OPCODE_GGT               210
207#define SC_OPCODE_KGV               211
208#define SC_OPCODE_MOD               212
209#define SC_OPCODE_SUM_PRODUCT       213
210#define SC_OPCODE_SUM_SQ            214
211#define SC_OPCODE_SUM_X2MY2         215
212#define SC_OPCODE_SUM_X2DY2         216
213#define SC_OPCODE_SUM_XMY2          217
214#define SC_OPCODE_GET_DATE          218
215#define SC_OPCODE_GET_TIME          219
216#define SC_OPCODE_GET_DIFF_DATE     220
217#define SC_OPCODE_GET_DIFF_DATE_360 221
218#define SC_OPCODE_MIN               222
219#define SC_OPCODE_MAX               223
220#define SC_OPCODE_SUM               224
221#define SC_OPCODE_PRODUCT           225
222#define SC_OPCODE_AVERAGE           226
223#define SC_OPCODE_COUNT             227
224#define SC_OPCODE_COUNT_2           228
225#define SC_OPCODE_NBW               229
226#define SC_OPCODE_IKV               230
227#define SC_OPCODE_VAR               231
228#define SC_OPCODE_VAR_P             232
229#define SC_OPCODE_ST_DEV            233
230#define SC_OPCODE_ST_DEV_P          234
231#define SC_OPCODE_B                 235
232#define SC_OPCODE_NORM_DIST         236
233#define SC_OPCODE_EXP_DIST          237
234#define SC_OPCODE_BINOM_DIST        238
235#define SC_OPCODE_POISSON_DIST      239
236#define SC_OPCODE_KOMBIN            240
237#define SC_OPCODE_KOMBIN_2          241
238#define SC_OPCODE_VARIATIONEN       242
239#define SC_OPCODE_VARIATIONEN_2     243
240#define SC_OPCODE_BW                244
241#define SC_OPCODE_DIA               245
242#define SC_OPCODE_GDA               246
243#define SC_OPCODE_GDA_2             247
244#define SC_OPCODE_VBD               248
245#define SC_OPCODE_LAUFZ             249
246#define SC_OPCODE_LIA               250
247#define SC_OPCODE_RMZ               251
248#define SC_OPCODE_COLUMNS           252
249#define SC_OPCODE_ROWS              253
250#define SC_OPCODE_COLUMN            254
251#define SC_OPCODE_ROW               255
252#define SC_OPCODE_ZGZ               256
253#define SC_OPCODE_ZW                257
254#define SC_OPCODE_ZZR               258
255#define SC_OPCODE_ZINS              259
256#define SC_OPCODE_ZINS_Z            260
257#define SC_OPCODE_KAPZ              261
258#define SC_OPCODE_KUM_ZINS_Z        262
259#define SC_OPCODE_KUM_KAP_Z         263
260#define SC_OPCODE_EFFEKTIV          264
261#define SC_OPCODE_NOMINAL           265
262#define SC_OPCODE_SUB_TOTAL         266
263#define SC_OPCODE_DB_SUM            267     /* database functions */
264#define SC_OPCODE_DB_COUNT          268
265#define SC_OPCODE_DB_COUNT_2        269
266#define SC_OPCODE_DB_AVERAGE        270
267#define SC_OPCODE_DB_GET            271
268#define SC_OPCODE_DB_MAX            272
269#define SC_OPCODE_DB_MIN            273
270#define SC_OPCODE_DB_PRODUCT        274
271#define SC_OPCODE_DB_STD_DEV        275
272#define SC_OPCODE_DB_STD_DEV_P      276
273#define SC_OPCODE_DB_VAR            277
274#define SC_OPCODE_DB_VAR_P          278
275#define SC_OPCODE_INDIRECT          279     /* management functions */
276#define SC_OPCODE_ADDRESS           280
277#define SC_OPCODE_MATCH             281
278#define SC_OPCODE_COUNT_EMPTY_CELLS 282
279#define SC_OPCODE_COUNT_IF          283
280#define SC_OPCODE_SUM_IF            284
281#define SC_OPCODE_LOOKUP            285
282#define SC_OPCODE_V_LOOKUP          286
283#define SC_OPCODE_H_LOOKUP          287
284#define SC_OPCODE_MULTI_AREA        288
285#define SC_OPCODE_OFFSET            289
286#define SC_OPCODE_INDEX             290
287#define SC_OPCODE_AREAS             291
288#define SC_OPCODE_CURRENCY          292     /* string functions */
289#define SC_OPCODE_REPLACE           293
290#define SC_OPCODE_FIXED             294
291#define SC_OPCODE_FIND              295
292#define SC_OPCODE_EXACT             296
293#define SC_OPCODE_LEFT              297
294#define SC_OPCODE_RIGHT             298
295#define SC_OPCODE_SEARCH            299
296#define SC_OPCODE_MID               300
297#define SC_OPCODE_TEXT              301
298#define SC_OPCODE_SUBSTITUTE        302
299#define SC_OPCODE_REPT              303
300#define SC_OPCODE_CONCAT            304
301#define SC_OPCODE_MAT_VALUE         305     /* matrix functions */
302#define SC_OPCODE_MAT_DET           306
303#define SC_OPCODE_MAT_INV           307
304#define SC_OPCODE_MAT_MULT          308
305#define SC_OPCODE_MAT_TRANS         309
306#define SC_OPCODE_MATRIX_UNIT       310
307#define SC_OPCODE_BACK_SOLVER       311     /* BackSolver */
308#define SC_OPCODE_HYP_GEOM_DIST     312     /* statistical functions */
309#define SC_OPCODE_LOG_NORM_DIST     313
310#define SC_OPCODE_T_DIST            314
311#define SC_OPCODE_F_DIST            315
312#define SC_OPCODE_CHI_DIST          316
313#define SC_OPCODE_WEIBULL           317
314#define SC_OPCODE_NEG_BINOM_VERT    318
315#define SC_OPCODE_KRIT_BINOM        319
316#define SC_OPCODE_KURT              320
317#define SC_OPCODE_HAR_MEAN          321
318#define SC_OPCODE_GEO_MEAN          322
319#define SC_OPCODE_STANDARD          323
320#define SC_OPCODE_AVE_DEV           324
321#define SC_OPCODE_SCHIEFE           325
322#define SC_OPCODE_DEV_SQ            326
323#define SC_OPCODE_MEDIAN            327
324#define SC_OPCODE_MODAL_VALUE       328
325#define SC_OPCODE_Z_TEST            329
326#define SC_OPCODE_T_TEST            330
327#define SC_OPCODE_RANK              331
328#define SC_OPCODE_PERCENTILE        332
329#define SC_OPCODE_PERCENT_RANK      333
330#define SC_OPCODE_LARGE             334
331#define SC_OPCODE_SMALL             335
332#define SC_OPCODE_FREQUENCY         336
333#define SC_OPCODE_QUARTILE          337
334#define SC_OPCODE_NORM_INV          338
335#define SC_OPCODE_CONFIDENCE        339
336#define SC_OPCODE_F_TEST            340
337#define SC_OPCODE_TRIM_MEAN         341
338#define SC_OPCODE_PROB              342
339#define SC_OPCODE_CORREL            343
340#define SC_OPCODE_COVAR             344
341#define SC_OPCODE_PEARSON           345
342#define SC_OPCODE_RSQ               346
343#define SC_OPCODE_STEYX             347
344#define SC_OPCODE_SLOPE             348
345#define SC_OPCODE_INTERCEPT         349
346#define SC_OPCODE_TREND             350
347#define SC_OPCODE_GROWTH            351
348#define SC_OPCODE_RGP               352
349#define SC_OPCODE_RKP               353
350#define SC_OPCODE_FORECAST          354
351#define SC_OPCODE_CHI_INV           355
352#define SC_OPCODE_GAMMA_DIST        356
353#define SC_OPCODE_GAMMA_INV         357
354#define SC_OPCODE_T_INV             358
355#define SC_OPCODE_F_INV             359
356#define SC_OPCODE_CHI_TEST          360
357#define SC_OPCODE_LOG_INV           361
358#define SC_OPCODE_TABLE_OP          362
359#define SC_OPCODE_BETA_DIST         363
360#define SC_OPCODE_BETA_INV          364
361#define SC_OPCODE_WEEK              365     /* miscellaneous */
362#define SC_OPCODE_GET_DAY_OF_WEEK   366
363#define SC_OPCODE_NO_NAME           367
364#define SC_OPCODE_STYLE             368
365#define SC_OPCODE_DDE               369
366#define SC_OPCODE_BASE              370
367#define SC_OPCODE_TABLE             371
368#define SC_OPCODE_TABLES            372
369#define SC_OPCODE_MIN_A             373
370#define SC_OPCODE_MAX_A             374
371#define SC_OPCODE_AVERAGE_A         375
372#define SC_OPCODE_ST_DEV_A          376
373#define SC_OPCODE_ST_DEV_P_A        377
374#define SC_OPCODE_VAR_A             378
375#define SC_OPCODE_VAR_P_A           379
376#define SC_OPCODE_EASTERSUNDAY      380
377#define SC_OPCODE_DECIMAL           381
378#define SC_OPCODE_CONVERT           382
379#define SC_OPCODE_ROMAN             383
380#define SC_OPCODE_MIRR              384
381#define SC_OPCODE_CELL              385
382#define SC_OPCODE_ISPMT             386
383#define SC_OPCODE_HYPERLINK         387
384#define SC_OPCODE_INDIRECT_XL       388     /* See also INDIRECT for OOO variant */
385#define SC_OPCODE_ADDRESS_XL        389     /* See also ADRESS for OOO variant */
386#define SC_OPCODE_GET_PIVOT_DATA    390
387#define SC_OPCODE_EUROCONVERT       391
388#define SC_OPCODE_NUMBERVALUE       392
389#define SC_OPCODE_CHISQ_DIST        393
390#define SC_OPCODE_CHISQ_INV         394
391#define SC_OPCODE_AVERAGE_IF        395
392#define SC_OPCODE_XOR               396
393#define SC_OPCODE_SUM_IFS           397
394#define SC_OPCODE_AVERAGE_IFS       398
395#define SC_OPCODE_COUNT_IFS         399
396#define SC_OPCODE_LENB              400
397#define SC_OPCODE_RIGHTB            401
398#define SC_OPCODE_LEFTB             402
399#define SC_OPCODE_MIDB              403
400#define SC_OPCODE_STOP_2_PAR        404
401
402#define SC_OPCODE_LAST_OPCODE_ID    403      /* last OpCode */
403
404/*** Interna ***/
405#define SC_OPCODE_INTERNAL_BEGIN   9999
406#define SC_OPCODE_TTT              9999
407#define SC_OPCODE_INTERNAL_END     9999
408
409/*** from here on ExtraData contained ***/
410#define SC_OPCODE_DATA_TOKEN_1    10000
411
412#define SC_OPCODE_NONE           0xFFFF
413
414
415#endif /* FORMULA_COMPILER_HRC */
416