|
|
1.1 root 1: .TH SPITBOL 1
2: .SH NAME
3: spitbol \- Snobol language compiler
4: .SH SYNOPSIS
5: .B spitbol
6: [
7: .I options
8: ]
9: .I ifile ...
10: .SH DESCRIPTION
11: .I Spitbol
12: is an upward compatible
13: dialect of SNOBOL4.
14: .PP
15: All names used in a program are normally mapped to UPPER CASE during
16: compilation and execution.
17: For strict compatibility with SNOBOL4, use the \-f
18: option or \-CASE control statement.
19: .PP
20: Each
21: .IR ifile
22: is read in order before the standard input.
23: Standard output comes only from assignments to OUTPUT and from
24: error messages.
25: .PP
26: Compiler options:
27: .TP "\w'-u string 'u"
28: .B \-f
29: don't fold lower case names to UPPER CASE
30: .TP
31: .B \-e
32: don't send error messages to the terminal
33: .TP
34: .B \-l
35: generate source listing
36: .TP
37: .B \-c
38: generate compilation statistics
39: .TP
40: .B \-x
41: generate execution statistics
42: .TP
43: .B \-a
44: like
45: .B "\-lcx"
46: .TP
47: .B \-p
48: long listing format; generates form feeds
49: .TP
50: .B \-z
51: use standard listing format
52: .TP
53: .B \-h
54: write
55: .I spitbol
56: header to standard output
57: .TP
58: .B \-n
59: suppress execution
60: .TP
61: .BI \-m dd
62: max size (words) of created object
63: (default 8192)
64: .TP
65: .BI \-s dd
66: maximum size (words) of stack space
67: (default 2048)
68: .TP
69: .BI \-i dd
70: size (words) of increment by which dynamic area is increased
71: (default 4096)
72: .TP
73: .BI \-d dd
74: size (words) of maximum allocated dynamic area
75: (default 256K)
76: .TP
77: .BI \-u " string"
78: executing program may retrieve string with HOST(0)
79: .TP
80: .BI \-o " ofile"
81: write listing, statistics and dump to
82: .I ofile
83: and OUTPUT to standard output
84: .PP
85: Note:
86: .I dd
87: can be followed by a
88: .B k
89: to indicate units of 1024.
90: .PP
91: .PP
92: .I Spitbol
93: has two input-output modes,
94: .I line mode,
95: where records are delimited by new-line characters, and
96: .I "raw mode"
97: where a predetermined number of bytes
98: is transferred.
99: Modes are specified in INPUT or OUTPUT function calls.
100: The maximum length of an input record is set by the
101: .B \-l
102: or
103: .B \-r
104: argument.
105: The form of the INPUT/OUTPUT function call is
106: .IP
107: INPUT/OUTPUT(.name,channel,file_name args)
108: .PP
109: where
110: .I name
111: is the variable name to be input/output associated and
112: .I "channel"
113: is an integer or string that identifies the association
114: to be used in subsequent calls for EJECT, ENDFILE,
115: INPUT, OUTPUT, REWIND, and SET.
116: If the
117: .I channel
118: is omitted or the null string, the association is
119: made to the system's standard input or output stream.
120: .I "file_name args"
121: specifies the source/destination of the
122: input/output and any IO processing arguments. The
123: .I file_name
124: can be either a path name to a file or a
125: command string. Command strings are distinguished from
126: file names by a leading "!". The character following the
127: "!" is the delimiter used to separate the command string
128: from any IO processing arguments. The ending delimiter
129: may be omitted if there are no IO processing arguments.
130: There must always be at least one space between the
131: .I file_name
132: and
133: .I args,
134: even if the
135: .I file_name
136: is null.
137: .PP
138: .PP
139: Input/output arguments are:
140: .TP
141: .B \-a
142: Append output to existing file. If file doesn't exist
143: then it is created.
144: If
145: .B \-a
146: is not specified then file
147: is created.
148: .TP
149: .BI \-b dd
150: Set internal buffer size to
151: .I dd
152: characters. This value
153: is the byte count used on all input/output transfers
154: except for the last write to an output file
155: (default 4096).
156: .TP
157: .B \-c
158: Like
159: .BI \-r 1
160: .TP
161: .BI \-f dd
162: Use
163: .I dd
164: as file desciptor for IO.
165: .I spitbol
166: assumes that
167: .I dd
168: has been opened by the shell. File names and
169: .BI \-f dd
170: arguments are mutually exclusive.
171: File descriptors
172: 0, 1, and 2
173: may
174: be accessed in this manner.
175: .TP
176: .BI \-l dd
177: Line mode: maximum input record length is
178: .I dd
179: characters (default 4096).
180: .TP
181: .BI \-r dd
182: Raw mode: input record length is
183: .I dd
184: characters.
185: .TP
186: .B \-w
187: On output, each record is directly written to the
188: file without any intermediate buffering (default for terminals).
189: On input, each input operation uses exactly one
190: .IR read (2),
191: and fails if
192: .I read
193: returns 0.
194: .PP
195: More than one type of transfer may be associated with a channel.
196: This is accomplished by calling INPUT/OUTPUT after the initial
197: call with the name, channel, and file arguments. The
198: file name or
199: .B \-f
200: argument must not be specified on calls subsequent
201: to the first.
202: .PP
203: Standard functions:
204: .RI SET( channel,integer,integer )
205: The arguments are same as those to the
206: .IR lseek (2),
207: escept that
208: the first argument identifies a spitbol channel instead of
209: a file descriptor.
210: .TP
211: EXIT(\fIcommand-string\fP)
212: causes the value of
213: .I command-string
214: to be handed to the Shell to be executed after
215: .I spitbol
216: terminates.
217: .TP
218: EXIT(\fIn\fP)
219: If
220: .I n
221: is greater than 0, a load module will be written in
222: .I a.out
223: before termination.
224: Executing this load module will restore the state of the
225: .I spitbol
226: system to what it was when EXIT was called, except that
227: any files other than the standard input, output, and error
228: will have been closed.
229: To the SNOBOL4 program, it will appear as if
230: EXIT had returned a null string.
231: If
232: .I n
233: is exactly 1,
234: the generated load module will identify
235: the version of
236: .I spitbol
237: that created it in a message when it
238: begins execution.
239: If
240: .I n
241: is greater than 1,
242: it will resume quietly.
243: .TP
244: HOST()
245: returns the host string read from /usr/lib/spithost.
246: .TP
247: HOST(0)
248: returns the string specified with the
249: .B \-u
250: option
251: on the command line.
252: If
253: .B \-u
254: was not specified the
255: null string is returned.
256: .TP
257: HOST(1,"command string")
258: executes the command string
259: and continues.
260: .TP
261: HOST(2,\fIn\fP)
262: returns argument number
263: .I n
264: from the command line.
265: It fails if
266: .I n
267: is out of range or not an integer.
268: .TP
269: HOST(3)
270: returns the index of the first command line argument
271: that was not examined by
272: .IR spitbol .
273: .TP
274: HOST(4,"var")
275: returns the value of the environment variable
276: .IR var .
277: If the value is too long for an internal buffer
278: (presently 512 bytes) it is quietly truncated.
279: .TP
280: HOST(5,n)
281: sets (if n > 0) or resets (if n < 0) a trap for
282: signal number \|n\|
283: (see
284: .IR signal (2)).
285: It returns 0 if no trap was previously set for that signal,
286: 1 if a trap has been previously set but the signal has not occurred since
287: the last call, or 2 if the signal has occurred.
288: .SH "MISCELLANY"
289: A file is not actually opened until the first attempt
290: to read, write, SET, or REWIND it.
291: .PP
292: Folding of names to UPPER CASE can be controlled during compilation
293: by the \-CASE control statement and during execution by the &CASE keyword.
294: A value of 0 prevents folding to UPPER CASE and a value of 1
295: forces folding to UPPER CASE.
296: .PP
297: Integers are represented by 32-bit quantities.
298: Real numbers are implemented in single precision.
299: .PP
300: Setting &STLIMIT = \-1 inhibits statement limit checking and provides
301: a way to execute arbitrarily many statements.
302: .PP
303: The name TERMINAL is available with default associations for input and
304: output to the terminal.
305: .PP
306: If the first line of the first input file begins with
307: .B #!
308: then that line is ignored.
309: This meshes with the way that
310: .IR exec (2)
311: treats files beginning with
312: .BR #! .
313: .PP
314: Setting &PROFILE = 1 causes
315: .I spitbol
316: to accumulate profile information during program execution
317: and print this information after the program terminates.
318: .SH "FILES"
319: /usr/lib/vaxspitv35.err \- Error text.
320: .br
321: /usr/lib/spithost \- Host computer and operating system identifier.
322: .SH "SEE ALSO"
323: .I "Macro SPITBOL Program Reference Manual"
324: by R. B. K. Dewar, A. P. McCann, R. E. Goldberg, and Steven G. Duff
325: .br
326: .I "The SNOBOL4 Programming Language, Second Edition"
327: by R. E. Griswold, J. F. Poage and I. P. Polonsky
328: .br
329: .IR sno (1),
330: .IR snocone (1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.