SNO(1)                                                     SNO(1)

     NAME
          sno - Snobol language interpreter

     SYNOPSIS
          sno [ files ]

     DESCRIPTION
          Sno is a SNOBOL3 (with slight differences) compiler and
          interpreter.  Sno obtains input from the concatenation of
          the named files and the standard input.  All input through a
          statement containing the label end is considered program and
          is compiled.  The rest is available to syspit.

          Sno differs from SNOBOL3 in the following ways:

               There are no unanchored searches.  To get the same
               effect:

                    a ** b      unanchored search for b.
                    a *x* b = x cunanchored assignment

               There is no back referencing.

                    x = "abc"
                    a *x* x     is an unanchored search for abc.

               Function declaration is done at compile time by the use
               of the (non-unique) label define.  Execution of a func-
               tion call begins at the statement following the define.
               Functions cannot be defined at run time, and the use of
               the name define is preempted.  There is no provision
               for automatic variables other than parameters.  Exam-
               ples:

                    define f( )
                    define f(a, b, c)

               All labels except define (even end) must have a non-
               empty statement.

               Labels, functions and variables must all have distinct
               names.  In particular, the non-empty statement on end
               cannot merely name a label.

               If start is a label in the program, program execution
               will start there.  If not, execution begins with the
               first executable statement; define is not an executable
               statement.

               There are no builtin functions.

     SNO(1)                                                     SNO(1)

               Parentheses for arithmetic are not needed.  Normal
               precedence applies.  Because of this, the arithmetic
               operators / and * must be set off by spaces.

               The right side of assignments must be non-empty.

               Either ' or " may be used for literal quotes.

               The pseudo-variable sysppt is not available.

     SEE ALSO
          spitbol(1), snocone(1), awk(1)
          ``SNOBOL, a String Manipulation Language,'' by D. J. Farber,
          R. E. Griswold, and I. P. Polonsky, JACM 11 (1964), pp. 21-
          30.