SNOBOL4 (CSNOBOL4 0.99.4) for OpenVMS VAX 7.3 -- examples and tests, 12-OCT-2026
================================================================================

Douglas P. Fields, Jr. (symbolics@lisp.engineer)

Twelve test cases from ten programs (a Brainf*** interpreter with two
programs, an address book run twice) with a DCL test. The same files are
installed with the kit in SYS$COMMON:[SYSLIB.SNOBOL.EXAMPLES]; this archive
is for reading them without installing.

Send every file as TEXT (FTP "ascii"). Put them all in one directory on the
VAX (a flat directory: the test procedure finds the programs and the
expected output beside itself), then, as an ordinary user:

  $ @SYS$COMMON:[SYSLIB.SNOBOL]SNOBOL4_SETUP
  $ @RUN_TESTS

RUN_TESTS runs each program in a scratch directory ([.SNOBOLTEST] under your
login directory, or the directory you name as its first parameter) and
compares the output with the expected file. It ends "PASS 12 of 12". The
expected files were made by an independent Python implementation of each
program's specification (examples/make_expected.py), not by running the VAX
programs. VMSLIB_DEMO needs the installed kit: it -INCLUDEs VMSLIB.SNO from
the library directory SNOLIB:, which SNOBOL4_SETUP defines. VMSLIB.SNO
itself is in the installed [.SNOLIB] and in build/ of the source kit; it is
not in this archive, so that the test really uses the library.

examples/
  WORDFREQ.SNO   Word counts: tables, sorting, BREAK and SPAN.
  CALC.SNO       A recursive descent calculator over patterns.
  QUEENS.SNO     N queens, N = 4 to 8: recursion and backtracking.
  KWIC.SNO       Keyword in context: @ cursor assignment, SORT.
  BF.SNO, HELLO.BF, REVERSE.BF
                 A Brainf*** interpreter (a TABLE as the tape, a computed
                 goto), and two programs for it.
  SYSINFO.SNO    GETJPI, GETSYI, GETDVI, TRNLNM, checked against DCL's own
                 lexical functions.
  RMSBOOK.SNO    An address book in an RMS indexed file; the second run
                 finds the first run's entries.
  FILES.SNO      FINDFIRST and FINDNEXT, then each file read with ordinary
                 SNOBOL4 input; FILES_DATA_1..3.TXT are its data.
  VMSLIB_DEMO.SNO
                 A demo of the library of VMS helper procedures (VMSLIB.SNO,
                 in the kit's SNOLIB directory).
  PIPES.SNO      DCL subprocess output through INPUT.
  *_IN*.TXT, *_EXP.TXT
                 Inputs and expected output.
  RUN_TESTS.COM  The test procedure.
  make_expected.py
                 Host-side Python 3 that computes the expected files.
