


      SSSSNNNNOOOO((((1111))))                      ((((bbbbssssdddd 5555....2222))))                      SSSSNNNNOOOO((((1111))))



      NNNNAAAAMMMMEEEE
           sno - SNOBOL interpreter

      SSSSYYYYNNNNTTTTAAAAXXXX
           ssssnnnnoooo [ files ]

      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
           _S_n_o is a SNOBOL3 compiler and interpreter (with slight
           differences).  _S_n_o obtains input from the concatenation of
           the named _f_i_l_es and the standard input.  All input through a
           statement containing the label eeeennnndddd is considered program and
           is compiled.  The rest is available to ssssyyyyssssppppiiiitttt.

           _S_n_o differs from SNOBOL 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 aaaabbbbcccc.

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

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

                All labels except ddddeeeeffffiiiinnnneeee (even eeeennnndddd) must have a non-
                empty statement.

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

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

                There are no built-in functions.

                Parentheses for arithmetic are not needed.  Normal



      Page 1                                                   (9010-E)






      SSSSNNNNOOOO((((1111))))                      ((((bbbbssssdddd 5555....2222))))                      SSSSNNNNOOOO((((1111))))



                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 ssssyyyysssspppppppptttt is not available.

      SSSSEEEEEEEE AAAALLLLSSSSOOOO
           awk(1).












































      Page 2                                                   (9010-E)



