Previous: uttems Up: ../plot79_u.html Next: uttepp
SUBROUTINE UTTEOP (ERRCDE,STACK,TYPE,TOP,CINDEX,CHEKCT) C$ (Expression Evaluate - Internal - Operator) C$ Evaluate a function or operator with arguments on the top C$ of a reverse Polish stack, replacing them with the function C$ result and data type. This routine is a service routine C$ for UTTEXP, the general expression evaluator. The C$ arguments are: C$ C$ ERRCDE.........Error code returned, one of ERRNON, ERROPR, C$ ERRWNA, or ERRUDF. C$ STACK(*).......Argument stack, with the topmost value being C$ the last argument. C$ TYPE(*)........Argument type flags, one of TYPNIL, TYPBOO, C$ TYPINT, or TYPFLT. TYPNIL flags an C$ undefined value and will raise an error C$ condition. C$ TOP............Index of top of stack. It is updated on C$ return to the new top containing the result, C$ unless an error occurred, in which case it C$ is unchanged. C$ CINDEX.........CASE statement index in range 0 .. 79 C$ selecting operator or function. It must C$ match the operator and function keyword C$ order in UTTEXP. C$ CHEKCT......... .TRUE. - check argument count; TOP must C$ match the required number of C$ arguments, or if a variable number C$ is permitted, must not be less C$ than the minimum number of C$ arguments. C$ .FALSE. - check that minimum number of C$ required arguments are present, C$ but ignore extra arguments. C$ C$ The type precedence ordering is TYPBOO < TYPINT < TYPFLT < C$ TYPNIL. If operand types differ, the one of lower C$ precedence is promoted to that of the other. For .AND., C$ .OR., .NOT., and .XOR., and TYPBOO or TYPFLT operands, the C$ result has type TYPBOO. For TYPINT operands, the bit C$ primitives are used to compute the corresponding fullword C$ operation, and the result has TYPINT. For the divide C$ operation, operands of TYPBOO and TYPINT are divided with a C$ truncating integer divide; otherwise a floating-point C$ divide is performed. C$ C$ For MAX and MIN, the type of the result is that of the C$ operand of highest type giving the function result, so that C$ MAX(1,1.0) would have type TYPFLT. C$ C$ For CASE, IF, and SELECT, the type of the result is that of C$ the selected value. C$ C$ Functions DACOSH, DASINH, DATANH, DBINOM, DERF, DERFC, C$ DGAMMA, and DLNGAM are not part of the 1977 or 1966 FORTRAN C$ Standards. They are available, however, in Wayne C$ Fullerton's Portable Special Function Library, FNLIB, C$ included in <PLOT79>. C$ C$ For CASE, IF, and SWITCH, TYPE(TOP+1) on return contains C$ the argument number selected for the function result. C$ (24-AUG-83)