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