summaryrefslogtreecommitdiff
path: root/static/v10/man1/spitbol.1
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 21:07:28 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 21:07:28 -0400
commit711594636704defae873be1a355a292505585afd (patch)
tree59ee13f863830d8beba6cfd02bbe813dd486c26f /static/v10/man1/spitbol.1
parent3258a063c1f189d7b019e40e525b46bef9b9a7b1 (diff)
docs: Added UNIX V10 Manuals
Diffstat (limited to 'static/v10/man1/spitbol.1')
-rw-r--r--static/v10/man1/spitbol.1404
1 files changed, 404 insertions, 0 deletions
diff --git a/static/v10/man1/spitbol.1 b/static/v10/man1/spitbol.1
new file mode 100644
index 00000000..143fe102
--- /dev/null
+++ b/static/v10/man1/spitbol.1
@@ -0,0 +1,404 @@
+.TH SPITBOL 1
+.SH NAME
+spitbol \- SPITBOL Compiler
+.SH SYNOPSIS
+.B spitbol
+[ options ]
+.I "ifile ..."
+.SH DESCRIPTION
+.I Spitbol
+is an implementation of Macro SPITBOL, which is an upward compatible
+version of the SNOBOL4 programming language.
+(Version 3 of SNOBOL4 is the reference version for comparison.)
+Most SNOBOL4 programs
+which operate correctly using SNOBOL4 should operate correctly
+when compiled and executed using
+.I spitbol.
+.P
+All names used in a program are normally mapped to UPPER CASE during
+compilation and execution.
+For strict compatibility with SNOBOL4, use the \-f
+option or \-CASE control statement.
+.P
+All
+.IR ifile s
+are read in order before the standard input.
+Standard output comes only from assignments to OUTPUT and from
+error messages.
+Program listings and statistics are generated
+only when requested by options.
+.P
+Compiler Options:
+.P
+.TP
+.B \-f
+don't fold lower case names to UPPER CASE
+.TP
+.B \-e
+don't send error messages to the terminal
+.TP
+.B \-l
+generate source listing
+.TP
+.B \-c
+generate compilation statistics
+.TP
+.B \-x
+generate execution statistics
+.TP
+.B \-a
+like
+.B "\-lcx"
+.TP
+.B \-p
+long listing format; generates form feeds
+.TP
+.B \-z
+use standard listing format
+.TP
+.B \-h
+write
+.I spitbol
+header to standard output
+.TP
+.B \-n
+suppress execution (like \-NOEXEC control card)
+.TP
+.BI \-m dd
+max size (words) of created object
+[default
+.BI \-m 8192
+]
+.TP
+.BI \-s dd
+maximum size (words) of stack space
+[default
+.BI \-s 2048
+]
+.TP
+.BI \-i dd
+size (words) of increment by which dynamic area is increased
+[default
+.BI \-i 4096
+]
+.TP
+.BI \-d dd
+size (words) of maximum allocated dynamic area
+[default
+.BI \-d 256K
+]
+.TP
+.BI \-u " string"
+executing program may retrieve string with HOST(0)
+.TP
+.BI \-o " ofile"
+write listing, statistics and dump to
+.I ofile
+and OUTPUT to standard output
+.P
+Note:
+.I dd
+can be followed by a
+.B k
+to indicate units of 1024.
+.P
+.B "Input/Output"
+.P
+.IR Spitbol 's
+interface to the UNIX system handles two modes of i/o transfers:
+.P
+.RS 5
+.I "line mode"
+where records are delimited by new-line characters.
+The interface strips them on input and
+appends them on output.
+.P
+.I "raw mode"
+where a predetermined number of bytes
+are transferred.
+.P
+.RE
+The particular mode to be used is specified by the programmer
+in the INPUT or OUTPUT function call and is processed by the
+interface.
+The maximum length of an input record is set by the
+.B \-l
+or
+.B \-r
+argument.
+The size of an output record is the length of the string written,
+plus one for a new line character if in line mode.
+.P
+The form of the INPUT/OUTPUT function call is
+.P
+.RS 10
+INPUT/OUTPUT(.name,channel,file_name args)
+.RE
+.P
+.I name
+is the variable name to be input/output associated.
+.P
+.I "channel"
+is an integer or string that identifies the i/o association.
+The channel id can be used in subsequent calls to EJECT, ENDFILE,
+INPUT, OUTPUT, REWIND, and SET.
+If the
+.I channel
+is omitted or the null string, the association is deemed
+to be made to the system's standard input or output stream.
+.P
+.I "file_name args"
+specifies the source/destination of the
+input/output and any i/o processing arguments. The
+.I file_name
+can be either a path name to a file or a
+command string. Command strings are distinguished from
+file names by a leading "!". The character following the
+"!" is the delimiter used to separate the command string
+from any i/o processing arguments. The ending delimiter
+may be omitted if there are no i/o processing arguments.
+There must always be at least one space between the
+.I file_name
+and
+.I args,
+even if the
+.I file_name
+is null.
+.P
+In the following examples the string used in the INPUT/OUTPUT
+call is on the left side of the equal sign and the command
+string executed on the right side.
+.P
+"!*who" = who "!*who* \-c" = who "!$ls \-l$ \-c" = ls \-l
+.P
+input/output arguments:
+.TP
+.B \-a
+Append output to existing file. If file doesn't exist
+then it is created.
+If
+.B \-a
+is not specified then file
+is created.
+.TP
+.BI \-b dd
+Set internal buffer size to
+.I dd
+characters. This value
+is the byte count used on all input/output transfers
+except for the last write to an output file. [default
+.BI \-b 1024
+]
+.TP
+.B \-c
+Like
+.BI \-r 1
+.TP
+.BI \-f dd
+Use
+.I dd
+as file desciptor for i/o.
+.I spitbol
+assumes that
+.I dd
+has been opened by the shell. File names and
+.BI \-f dd
+arguments are mutually exclusive.
+File descriptors
+0, 1, and 2
+may
+be accessed in this manner.
+.TP
+.BI \-l dd
+Line mode: maximum input record length is
+.I dd
+characters;
+output record length is length of string
+plus one (for new line). [default
+.BI \-l 1024
+]
+.TP
+.BI \-r dd
+Raw mode: input record length is
+.I dd
+characters; output
+record length is length of string assigned to name.
+.TP
+.B \-w
+On output, each record is directly written to the
+file without any intermediate buffering.
+The interface automatically sets this option
+for terminal output.
+Any buffer length specifications are ignored.
+On input, each request results in the interface issuing
+a single
+.IR read (2)
+system call.
+The result is exactly the data returned by
+.IR read ,
+except that if
+.IR read
+returns 0, the input request fails.
+The maximum length requested can be set by the
+.B \-r
+option;
+.B \-l
+is incompatible with
+.B \-w
+on input.
+.P
+More than one type of transfer may be associated with a channel.
+This is accomplished by calling INPUT/OUTPUT after the initial
+call with the name, channel, and file arguments. The
+file name or
+.B \-f
+argument must not be specified on calls subsequent
+to the first!
+.P
+A new standard function, SET, is available and allows executing programs to
+set the file pointer for input and output files. SET used in conjunction
+with assignments to output associated variables will correctly overwrite
+parts of files.
+SET is called with three arguments as follows
+.P
+.RS 10
+SET(channel,integer,integer)
+.RE
+.P
+The arguments are the same as those to the
+.IR lseek (2)
+system call, except that
+the first argument identifies a spitbol channel instead of
+a file descriptor.
+.P
+.B "EXIT support"
+.P
+The EXIT function terminates execution with certain side effects:
+.P
+.TP 10
+EXIT(\fIcommand-string\fP)
+causes the value of
+.I command-string
+to be handed to the Shell to be executed after
+.I spitbol
+terminates.
+.TP 10
+EXIT(\fIn\fP)
+If
+.I n
+is greater than 0, a load module will be written in
+.I a.out
+before termination.
+Executing this load module will restore the state of the
+.I spitbol
+system to what it was when EXIT was called, except that
+any files other than the standard input, output, and error
+will have been closed.
+To the SNOBOL4 program, it will appear as if
+EXIT had returned a null string.
+If
+.I n
+is exactly 1,
+the generated load module will identify
+the version of
+.I spitbol
+that created it in a message when it
+begins execution.
+If
+.I n
+is greater than 1,
+it will resume quietly.
+See the reference manual for further details.
+.P
+.B "The HOST function"
+.TP
+HOST()
+returns the host string read from /usr/lib/spithost.
+.P
+.TP
+HOST(0)
+returns the string specified with the
+.B \-u
+option
+on the command line.
+If
+.B \-u
+was not specified the
+null string is returned.
+.TP
+HOST(1,"command string")
+executes the command string
+and continues.
+.TP
+HOST(2,\fIn\fP)
+returns argument number
+.I n
+from the command line.
+It fails if
+.I n
+is out of range or not an integer.
+This is useful for writing
+.I spitbol
+programs that behave like system commands.
+.TP
+HOST(3)
+returns the index of the first command line argument
+that was not examined by
+.IR spitbol .
+This allows the user program to interpret additional
+command line arguments.
+.TP
+HOST(4,"var")
+returns the value of the environment variable
+.IR var .
+If the value is too long for an internal buffer
+(presently 512 bytes) it is quietly truncated.
+.SH "MISCELLANY"
+.P
+A file is not actually opened until the first attempt
+to read or write it.
+Thus if a variable is associated to an output file,
+and no value is ever assigned to that variable, the file
+will not be created, and, if it already existed, its old
+contents will remain unchanged.
+If you want an output file to be created even though it
+might be empty, REWIND it immediately after forming the
+output association.
+.P
+Folding of names to UPPER CASE can be controlled during compilation
+by the \-CASE control statement and during execution by the &CASE keyword.
+A value of 0 prevents folding to UPPER CASE and a value of 1
+forces folding to UPPER CASE.
+.P
+Integers are represented by 32-bit quantities and thus restricted in range
+from \-2147483648 to 2147483647.
+Real numbers are implemented in single precision.
+.P
+Setting &STLIMIT = \-1 inhibits statement limit checking and provides
+a way to execute arbitrarily many statements.
+.P
+The name TERMINAL is available with default associations for input and
+output to the terminal.
+.P
+If the first line of the first input file begins with
+.B #!
+then that line is ignored.
+This meshes well with the way that
+.IR exec (2)
+treats files beginning with
+.BR #! .
+.P
+Setting &PROFILE = 1 causes
+.I spitbol
+to accumulate profile information during program execution
+and print this information after the program terminates.
+.SH "FILES"
+/usr/lib/vaxspitv35.err \- Error text.
+.br
+/usr/lib/spithost \- Host computer and operating system identifier.
+.SH "SEE ALSO"
+.I "Macro SPITBOL Program Reference Manual"
+by R. B. K. Dewar, A. P. McCann, R. E. Goldberg, and Steven G. Duff
+.P
+.I "The SNOBOL4 Programming Language, Second Edition"
+by R. E. Griswold, J. F. Poage and I. P. Polonsky