HOC(1)                                                     HOC(1)

     NAME
          hoc - interactive floating point language

     SYNOPSIS
          hoc [ file ... ]

     DESCRIPTION
          Hoc interprets a simple language for floating point arith-
          metic, at about the level of BASIC, with C-like syntax and
          functions.

          The named files are read and interpreted in order.  If no
          file is given or if file is `-' hoc interprets the standard
          input.

          Hoc input consists of expressions and statements. Expres-
          sions are evaluated and their results printed.  Statements,
          typically assignments and function or procedure definitions,
          produce no output unless they explicitly call print.

          Variable names have the usual syntax, including `_'; the
          name `_' by itself contains the value of the last expression
          evaluated.  The variables E, PI, PHI, GAMMA and DEG are pre-
          defined; the last is 59.25..., degrees per radian.

          Expressions are formed with these C-like operators, listed
          by decreasing precedence.

          ^    exponentiation

          ! - ++ --

          * / %

          + -

          > >= < <= == !=

          &&

          ||

          = += -= *= /= %=

          Built in functions are abs, acos, asin, atan (one argument),
          cos, cosh, erf, erfc, exp, gamma, int, log, log10, sin,
          sinh, sqrt, tan, and tanh.  The function read(x) reads a
          value into the variable x and returns 0 at EOF; the state-
          ment print prints a list of expressions that may include
          string constants such as "hello\n".

     Page 1                       Plan 9            (printed 12/22/24)

     HOC(1)                                                     HOC(1)

          Control flow statements are if-else, while, and for, with
          braces for grouping.  Newline ends a statement.  Backslash-
          newline is equivalent to a space.

          Functions and procedures are introduced by the words func
          and proc; return is used to return with a value from a func-
          tion.  Within a function or procedure, arguments are
          referred to as $1, $2, etc.; all other variables are global.

     EXAMPLES
          func gcd() {
               temp = abs($1) % abs($2)
               if(temp == 0) return abs($2)
               return gcd($2, temp)
          }
          for(i=1; i<12; i++) print gcd(i,12)

     SEE ALSO
          bc(1), dc(1)
          B. W. Kernighan and R. Pike, The Unix Programming Environ-
          ment, Prentice-Hall, 1984

     BUGS
          Error recovery is imperfect within function and procedure
          definitions.

     Page 2                       Plan 9            (printed 12/22/24)