Some of the earlier UNIX systems from AT&T came with an old text processing/string manipulation/pattern matching language called Snobol. Here is the Wikipedia entry on Snobol.

I dimly remember a version of Snobol on a system I had, most likely System V Release 2 running on PC/AT class hardware. I never really knew anything about Snobol in those days, and there was no documentation other than an extremely terse manual page. Of course there was no Internet to find more information.

Here is the original System III manual page:

SNO(1)                                                     SNO(1)


NAME
       sno - SNOBOL interpreter

SYNOPSIS
       sno [ files ]

DESCRIPTION
       Sno is a SNOBOL compiler and interpreter (with slight dif-
       ferences).  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 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 abc.

              Function declaration is done at compile time by the
              use of the (non-unique) label define.  Execution of
              a  function  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.  Examples:

                     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  dis-
              tinct  names.   In particular, the non-empty state-
              ment on end cannot merely name a label.

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

              There are no builtin functions.

              Parentheses  for arithmetic are not needed.  Normal
              precedence applies.  Because of  this,  the  arith-
              metic  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
       awk(1).
       ``SNOBOL, a String Manipulation Language,'' by D. J.  Far-
       ber,  R. E.  Griswold, and I. P. Polonsky, JACM 11 (1964),
       pp. 21-30.

I recently found the source code to the entire AT&T UNIX System III operating system, and there were the sources for Snobol. I transferred them into my V7 system running on an Interdata 7/32 under Simh, and they compiled without error! So now I have the sources, the original man page, and a working binary. Next I will try to get it working on my SVR4 machine, but this one uses ANSI C and the API has likely changed a very good deal, so it may be harder to get going.

Also, my understanding is that the UNIX version of Snobol is very non-standard, and there are a lot of differences. Not sure what this means about someone's ability to actually use this dialect, and I haven't even tried a "Hello World" program yet.

Snobol was used for many years in academia and in industry, but its popularity waned with the rise of more sophisticated text processing languages, such as awk and perl, running on more powerful hardware. There are, however, die-hard devotees - see the Snobol4 site.

** NOTE **

After some slight poking around, I got sno running on my SRV4 system, but unfortunately, the man page is so disfunctional that I can't figure out how to run even the simplest program.

sno is very old - a snobol 3 interpreter - and there is literally no documentation on it on the net that I can find. The source code has exactly 3 lines of comment at the top of the first source file:

/*

 * Snobol III

 */

Not a singe additional comment in the rest of the code. Not very helpful. It is interesting to note that the entire source for snobol 3 is all of 1689 lines of C code!

But I did find a Snobol 3 Primer book for sale used on the net for $5. I'm such a nerd, I bought it :)

More when it arrives.

-Tom