SNOBOL4FUNC(1) | CSNOBOL4B 2.3.2 | Janurary 1, 2024
NAME
snobol4func – SNOBOL4 summary of built-in functions
DESCRIPTION
-
ANY(charset)
-
Pattern: returns a pattern that matches one character in the STRING
charset.
Standard.
-
APPLY(func,arg1,...)
-
Function: calls function func with the supplied arguments.
Standard.
-
ARBNO(pattern)
-
Pattern: returns a pattern that matches zero or more repeats of pattern.
Standard.
-
ARG(func,n)
-
Function: returns the name of the nth argument to function func.
Standard.
-
ARRAY(proto,value)
-
Data: Creates an ARRAY object.
Standard.
-
ATAN(arg)
-
Math: Returns the principal value of the arc tangent of its argument.
Catspaw Macro SPITBOL extension, added in CSNOBOL4 1.4.
-
BACKSPACE(unit)
-
I/O: Not implemented!! See SET() and SSET().
Standard.
-
BREAK(charset)
-
Pattern: Returns a pattern that matches successively longer runs
(zero or more) characters NOT in string charset.
Standard.
-
BREAKX(charset)
-
Pattern: A pattern function used for fast
scanning. BREAKX(str) is equivalent to
BREAK(str) ARBNO(LEN(1) BREAK(str)).
-
-
In other words BREAKX matches a sequence of ever larger strings
terminated by a break set. BREAKX can be used as a faster matching
replacement for ARB: BREAKX('S') 'STRING' always runs faster
than ARB 'STRING' since it only attempts matching 'STRING' at
locations where an 'S' has been detected.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.
-
CHAR(n)
-
String: takes an integer from 0 to 255 and returns the
nth character in &ALPHABET.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.
SNOBOL4+ has a CHR() function.
-
CHOP(real)
-
Math: truncates the fractional part of its argument
(rounding towards zero), and returns a REAL value.
Catspaw SNOBOL4+ extension(?), added in CSNOBOL4 version 0.98.4.
-
CLEAR()
-
Interpreter: Clears ALL natural variable values (including predefined pattern
variables ABORT, ARB, BAL, FENCE, REM, and SUCCEED).
Standard.
-
CODE(str)
-
Interpreter: Compiles the argument as source code and returns a CODE
value, suitable for use with :<code>. If execution falls
off the end of the code, the program will exit.
Standard.
-
COLLECT(n)
-
Interpreter: Triggers garbage collection. Returns failure if less than
n bytes are available after collection.
Standard.
-
CONVERT(value,type)
-
Data: Convert value to data type type. Can convert TABLE to ARRAY
for iteration over members.
Standard.
Supports conversion to NUMERIC,
SPITBOL 360 extension, added in CSNOBOL4 version 0.99.4.
-
COPY(value)
-
Data: returns a copy of the supplied value. Must be an
ARRAY or a DATA object. Copy is `shallow”: the returned
object will point to the same objects as the source container.
Standard.
-
COS(argument)
-
Math: Return cosine of argument in radians.
Catspaw Macro SPITBOL extension, added in CSNOBOL4 version 0.98.4.
-
DATA(prototype)
-
Data: Declares a DATA struct type. prototype is of the form
name(field,...). name is declared as a “constructor”
function, and each field is declared as an “accessor” function
for the type. Any number of types can use the same field names
(regardless of position).
Standard.
-
DATATYPE(value)
-
Data: Returns a string with the data type of value, one of:
ARRAY, BLOCK, CODE, EXPRESSION, EXTERNAL, INTEGER,
NAME, PATTERN, REAL, STRING, TABLE, or a DATA() type name.
Standard.
-
DATE()
-
String: returns MM/DD/YYYY HH:MM:SS.
Standard.
For compatibility with Catspaw Macro SPITBOL,
since CSNOBOL4 version 0.99.4
DATE(0) returns strings of the form MM/DD/YY HH:MM:SS, and
DATE(2) returns strings of the form YYYY-MM-YY HH:MM:SS.
-
DEFINE(prototype[,label])
-
Functions: declares a function using prototype of the form
“name([argname,...])[localname,...]”.
Optional label supplies the function entry point.
Standard.
-
DELETE(filename)
-
I/O: A predicate which tries to remove the
named file, and fails if it cannot.
SITBOL extension: added in CSNOBOL4 version 0.98.5.
-
DETACH(name)
-
I/O: Detach any I/O associations for named variable.
Standard.
-
DIFFER(val1,val2)
-
Predicate: Succeeds if the supplied values refer to different objects,
strings, or numeric values.
Standard.
-
DUMP(n)
-
Data: dumps natural variable values to stdout if argument n is non-zero.
Standard.
-
DUPL(string,n)
-
String: Returns a string with n copies of argument string.
Standard.
-
ENDFILE(unit)
-
I/O: Closes the file attached to I/O unit unit.
Standard.
-
EQ(i1,i2)
-
Predicate: Succeeds if i1 is arithmetically equal to i2.
Standard.
-
EVAL(v)
-
Interpreter: Evaluates v (an unevaluated expression,
INTEGER, REAL, or STRING), and returns the result;
returns failure on syntax error or the expression fails.
Standard.
-
EXIT(arg)
-
System: Passes process control to a shell to execute arg as a command.
Returns failure if arg is not a STRING.
Macro SPITBOL extension(?), added in CSNOBOL.
Does NOT implement “save file” feature of SPITBOL.
-
EXP(x)
-
Math: Returns the value e ** x.
Catspaw SNOBOL4+ extension, added in CSNOBOL4 version 0.98.4.
-
EXTERNAL_DATATYPE(x)
-
Functions: Returns a string for the datatype name for an EXTERNAL
type returned by an external function created by LOAD(). Inspired
by the DATACODE() function in Fred Weigel's SNOBOL4X extensions.
CSNOBOL4 extension, added in CSNOBOL4 version 2.2.
-
EXTERNAL_MODULE_NAME(x)
-
Functions: Returns a string for (internal) module name for an
EXTERNAL type returned by an external function created by LOAD().
CSNOBOL4 extension, added in CSNOBOL4 version 2.2.
-
EXTERNAL_MODULE_PATH(x)
-
Functions: returns a string for the path to an object file for the
module for an EXTERNAL type returned by an external function
created by LOAD().
CSNOBOL4 extension, added in CSNOBOL4 version 2.2.
-
FIELD(name,n)
-
Data: Returns a string with the name of the nth member of
DATA() type name.
Standard.
-
FILE(string)
-
I/O: A predicate which tests if a file exists, and fails if it does not.
SITBOL extension, added in CSNOBOL4 version 0.98.5.
-
FILE_ABSPATH(string)
-
I/O: A predicate which returns null if its argument is an absolute file path,
and failure if the path is relative.
CSNOBOL4 extension, added in CSNOBOL4 version 1.5.
-
FILE_ISDIR(string)
-
I/O: A predicate which returns the null string if its argument is the
pathname of a directory, and returns failure if not.
CSNOBOL4 extension, added in CSNOBOL4 version 1.5.
-
FREEZE(table)
-
Data: prohibits creation of new entries in the referenced table. This
is useful once a table has been initialized to avoid creating empty
entries on lookups that fail. This can greatly improve program speed,
since frozen tables will not become clogged with empty entries.
Lookups for uninitialized entries will return the null string.
Attempts to assign to a non-existent entry will cause a “Variable not
present where required” error.
Catspaw SNOBOL4+ extension, added in CSNOBOL4 version 0.98.2.
-
FUNCTION(name)
-
Function: A predicate which evaluates its argument as a string
(with case folding), and returns the null string if a function with that
name exists and fails if it does not.
SITBOL extension, added in CSNOBOL4 version 0.99.44.
-
GE(i1,i2)
-
Predicate: Succeeds if i1 is arithmetically equal than or equal to i2.
Standard.
-
GT(i1,i2)
-
Predicate: Succeeds if i1 is arithmetically equal than i2.
Standard.
-
HOST(i,...)
-
Host O/S functions. See snobol4host(3).
Macro SPITBOL extension, added in CSNOBOL4 version 0.98.4.
-
IDENT(v1,v2)
-
Predicate: Succeeds if the supplied values refer to the same object,
string, or numeric value.
Standard.
-
INPUT(variable,unit,opt,name)
-
I/O: Associate variable for input, see snobol4io(1).
Standard.*
-
INTEGER(value)
-
Predicate: Succeed if value is an INTEGER.
Standard.
-
IO_FINDUNIT()
-
I/O: Returns an unused I/O unit number for
use with the INPUT() or OUTPUT() functions. IO_FINDUNIT() is
meant for use in subroutines which can be reused. IO_FINDUNIT()
will never return a unit number below 20.
CSNOBOL4 extension, added in version 0.99.4.
-
ITEM(a,i1,...)
-
Data: Reference an element of an ARRAY or TABLE which is the result
of an expression (ie; $variable).
Standard.
-
LABEL(name)
-
Predicate: Evaluates argument as a name (with case folding), and returns the
null string if a label with that name has been defined, and fails if
it does not.
Steve Duff's Macro SPITBOL extension, added in CSNOBOL4 version 1.5
(Added in CSNOBOL4 version 0.99.44, but unreliable until version 1.5).
-
LABELCODE(name)
-
Interpreter: Evaluates argument as a name (with case folding), and
returns the CODE (if any) associated with the label of that name,
or fails.
SITBOL extension, added in CSNOBOL4 2.1.
-
LE(i1,i2)
-
Predicate: tests if first argument is arithmetically less than or
equal to second argument.
Standard.
-
LEN(n)
-
Pattern: Returns a PATTERN which matches exactly n characters.
Standard.
-
LEQ(s1,s2)
-
Predicate: tests if first argument is lexically equal to second argument.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.
-
LGE(S1,S2)
-
Predicate: tests if first argument is lexically greater than or equal to second
argument.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.
-
LGT(s1,s2)
-
Predicate: tests if first argument is lexically greater than second argument.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.
-
LLE(s1,s2)
-
Predicate: tests if first argument is lexically less than or equal to second
argument.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.
-
LLT(s1,s2)
-
Predicate: tests if first argument is lexically less than second argument.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.
-
LNE(s1,s2)
-
Predicate: tests if first argument is lexically different from second argument.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.
-
LN(value)
-
Math: an alias for LOG(),
Catspaw SNOBOL4+ extension, added in CSNOBOL4 version 1.4.
-
LOAD(prototype,file)
-
Function: Load an external function from dynamically loaded library file.
Standard.
-
LOCAL(name,n)
-
Interpreter: Returns a STRING with the nth argument to function named
name.
Standard.
-
LOG(value)
-
Math: returns the natural logarithm of its argument.
Catspaw SNOBOL4+ extension, added in CSNOBOL4 version 0.98.4.
-
LPAD(str,n,char)
-
String: Takes the first argument (subject) string, and left pads it
out to the length specified in the second argument, using the first
character of the optional third argument. If the third argument is
missing, or is the null string, spaces will be used for padding. The
subject will be returned unmodified if already long enough.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.
-
LT(i1,i2)
-
Predicate: Succeeds if i1 is arithmetically less than i2.
Standard.
-
NE(i1,i2)
-
Predicate: Succeeds if i1 is arithmetically not equal to i2.
Standard.
-
NOTANY(charset)
-
Pattern: Returns a pattern which matches on character NOT present in
STRING charset.
Standard.
-
OPSYN(new,old,n)
-
Interpreter: If n omitted (or zero), new and old are treated
as function names, and new becomes a synonym for old: A call to a
synonym MUST have the correct number of arguments; trailing arguments
can NOT be omitted. If n is 1, new and old are treated as unary
operators, or function names. If n is 2, new and old are treated
as binary operators, or function names.
Standard.
-
ORD(string)
-
String: returns the INTEGER ordinal value (zero to 255) of the
first character in its string argument (the inverse of CHAR()).
CSNOBOL4 extension, added in version 0.99.44.
SNOBOL4+ has an ASC() function.
-
OUTPUT(variable,unit,options,name)
-
I/O: Associate variable for output, see snobol4io(1).
Standard*.
-
POS(n)
-
Pattern: Returns a pattern which succeeds if the pattern matching
cursor is at (non-negative INTEGER) position n, or fails.
Standard.
-
PROTOTYPE(a)
-
Data: Returns the prototype of ARRAY a.
Standard.
-
REMDR(n,m)
-
Math: Returns the remainder from dividing INTEGER n with INTEGER m.
Standard.
-
RENAME(new,old)
-
I/O: A predicate which attempts
to rename the file named by old to the name new.
SITBOL extension: added in CSNOBOL4 version 0.98.5.
Unlike the SITBOL version, if the target file exists, it will be removed.
-
REPLACE(str,charset1,charset2)
-
String: Returns a string with each character str that appears in
charset1 replaced by the corresponding character in .
Standard.
-
REVERSE(str)
-
String: returns its subject string in reverse order.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.
-
REWIND(unit)
-
I/O: Reset input pointer of file associated with unit to start of file.
Standard.
-
RPAD(str,n,char)
-
String: Takes the first argument (subject) string, and right pads it
out to the length specified in the second argument, using the first
character of the optional third argument. If the third argument is
missing, or is the null string, spaces will be used for padding. The
subject will be returned unmodified if already long enough.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.
-
RPOS(n)
-
Pattern: Returns a pattern which succeeds if the pattern
matching cursor is at (non-negative INTEGER) position n, counting
from the end of the subject string, or fails.
Standard.
-
RSORT(ta,c)
-
Data: see SORT().
Macro SPITBOL extension(?), added in CSNOBOL4 version 0.98.
-
RTAB(n)
-
Pattern: Returns a PATTERN which matches all characters
up to (non-negative INTEGER) position n, counting from the end of
the subject string; matching fails if cursor is past position n.
REM is a synonym for RTAB(0).
Standard.
-
SERV_LISTEN(family,type,service)
-
I/O: takes three STRING arguments and makes snobol4(1) into a
network server process. family must be either "inet" for an Internet
Protocol v4 socket, "inet6" for an Internet Protocol v6 socket, or
"unix" for a local (“unix domain”) socket. The second argument, TYPE
must be "stream", and the third argument, service must be a port
number or service name (for an internet socket), or a pathname (for a
"unix" socket). SERV_LISTEN() listens for incoming requests, accepts
them, then “forks” a child process and returns an integer file
descriptor which can be opened for bidirectional I/O using a
"/dev/fd/n" magic pathname. The original (“parent”) process never
returns from the SERV_LISTEN() call. This function is only available
on systems with the “fork” system call, which makes a child process
which is an identical copy of the parent process.
CSNOBOL4 extension, added in version 0.99.44
-
SET(unit,offset,whence)
-
I/O: Seeks the file pointer of an open file. The
first argument is an I/O unit number, the second is an integer offset.
The third argument, an integer determines from “whence” the file
pointer will be adjusted. If whence is zero the starting point is the
beginning of the file, if whence is one, the starting point is the
current file pointer, and if whence is two, the starting point is the
end of the file. SET() returns the new file pointer value. On
systems with 64-bit file pointers and 32-bit integers the values
will be truncated to 32 bits, and only the first and last 4 gigabytes
of a file can be accessed directly: see SSET().
Catspaw Macro SPITBOL extension, added in CSNOBOL4 version 0.99.1.
-
SETEXIT(label)
-
Interpreter: The argument to SETEXIT() is the name of a label to
pass control to if a subsequent error occurs, when the keyword
&ERRLIMIT is non-zero. The value of &ERRLIMIT is positive, it is
decremented when the error trap occurs. A SETEXIT() call with a
null argument causes cancellation of the intercept. Subsequent
errors will terminate execution as usual with an error message. The
result returned by SETEXIT() is the previous intercept setting
(i.e., a label name or null if no intercept is set). This can be used
to save and restore the SETEXIT() conditions in a recursive
environment, or chain handlers.
-
-
The error intercept routine may inspect &ERRTYPE,
&ERRTEXT, &LASTNO, &LASTFILE, &LASTLINE,
and take one of the following actions:
-
-
1. Branching to the special label ABORT causes error processing to
resume as though no error intercept had been set.
-
-
2. Branching to the special label CONTINUE causes program execution to
resume by taking the failure exit of the statement in error.
-
-
3. Branching to the special label SCONTINUE causes execution to
resume at the point of interruption.
-
-
4. If the error occurred inside a function (&FNCLEVEL is
non-zero), branch to labels RETURN, FRETURN, or NRETURN
to return from the function.
-
-
The error intercept routine must reissue the SETEXIT() in order to
catch further errors. Handlers cannot be nested: only one copy of the
saved execution state is kept.
-
-
SPITBOL 360 extension, added in CSNOBOL4 version 1.4.
-
SIN(argument)
-
Math: Return sine of argument in radians.
Catspaw Macro SPITBOL extension, added in CSNOBOL4 version 0.98.4.
-
SIZE(string)
-
String: returns the length of the STRING argument.
Standard.
-
SORT(ta,c)
-
Data: takes two arguments. The first can be either an array or a table.
If the first argument is an array,
it may be singly-dimensioned in which case the second argument, if
non-null should indicate the name of a field of a programmer defined
data type to use to access the sort key. Otherwise the first argument
should be a table or a doubly-dimensioned array, in which case the
second argument may an integer indicating the array column on which to
sort. If the second argument is null, it is taken to be 1. The array
(or table) is not modified; a new array is allocated and returned.
SORT() sorts elements in ascending order, while RSORT() sorts in
descending order.
-
-
Example: for a table TAB of integers, indexed by strings being used
to tabulate word counts FREQ = RSORT(TAB,2) returns an array such
that FREQ<1,1> contains the most frequent word while
FREQ<1,2> contains the number of occurrences of that word.
While WORDS = SORT(TAB,1) returns an array with the rows by the
lexicographical ordering of the words; WORDS<1,1> contains
the lexicographically first word and WORDS<1,2> contains the
number of occurrences of that word.
Macro SPITBOL extension(?), added in CSNOBOL4 version 0.98.
-
SPAN(charset)
-
Pattern: Returns a pattern that matches the longest run of one or more
characters in string charset.
Standard.
-
SQRT(argument)
-
Math: Return the square root. Fails if the argument is negative.
Catspaw Macro SPITBOL extension, added in CSNOBOL4 version 0.90.
-
SSET(unit,offset,whence,scale)
-
I/O: “scaled set” function, to handle files larger than 4GB
on systems with 32-bit INTEGER variables.
The first three arguments analogous to the same arguments for the
SET() function. The last parameter is used as a multiplicative
scaling factor on the offset parameter, and as a divisor on the
return value. When used in combination with relative SET() calls
(whence of one), any file offset can be achieved, even when system
file offsets are larger than can be represented in a SNOBOL4
INTEGER. Support for “Large Files” is enabled when available,
but not all file systems support large files.
CSNOBOL4 extension, added in version 0.99.44.
-
STOPTR(name,type)
-
Interpreter: Disable type tracing for name.
Standard.
SPITBOL 360 extension of first letter of trace type accepted since CSNOBOL4 2.0.
-
SUBSTR(subject,pos,len)
-
String: Takes a subject string as its first argument, and returns
the substring starting at the position specified by the second
argument (one-based) with a length specified by the third argument.
If the third argument is missing or zero, the remainder of the string
is returned.
SPITBOL 360 extension, added in CSNOBOL4 version 0.98.2.
-
TAB(n)
-
Pattern: Returns a PATTERN which matches all characters up
to (non-negative INTEGER) position n; matching fails if cursor is past
position n.
Standard.
-
TABLE(n,m)
-
Data: Return a TABLE object, with (optional) initial size n
and additional extent size m.
Standard.
-
TAN(argument)
-
Math: Return tangent of argument in radians.
Catspaw SNOBOL4+ extension?, added in CSNOBOL4 version 0.98.4.
-
THAW(table)
-
Data: restores normal entry creation behavior after FREEZE().
Catspaw SNOBOL4+ extension, added in CSNOBOL4 version 0.98.2.
-
TIME()
-
Interpreter: Returns program execution time in milliseconds.
Standard (returning INTEGER).
Returns REAL since CSNOBOL4 0.99.44.
-
TRACE(name[,type[,tag[,func]]])
-
Intrepreter: Associates name for type
('VALUE' (default), 'CALL', 'RETURN',
'FUNCTION', 'LABEL', 'KEYWORD') tracing.
tag is included in trace output if name is not a natural variable;
func is optional name of function to call with name and tag arguments.
See snobol4key(1) &TRACE (must be non-zero to enable TRACE.
Standard.
SPITBOL 360 extension of first letter of trace type accepted since CSNOBOL4 2.0.
-
TRIM(str)
-
String: Returns str with trailing blanks and tabs removed.
Standard.
-
UNLOAD(name)
-
Function: Removes the function definition for function name.
Standard.
-
VALUE(name)
-
Interpreter: An “accessor” function, defined for STRING and NAME,
so that user data types can declare a VALUE field, and allow uniform
treatment of variables and user types.
Standard.
-
VDIFFER(v1,v2)
-
Misc: If the two arguments, DIFFER(), the first argument's value is
returned. This is intended to be used in contexts where DIFFER(X) X
would otherwise have been used.
Extension from Steve Duff's Macro SPITBOL, added in CSNOBOL4 version 0.99.44.
NOTES
A “predicate” is a function that either returns the null string or failure.
An “accessor” is a function which returns it's value by NAME
(and can be used on the right hand side of an assignment).
BUGS
Descriptions are too brief!!
See
http://www.regressive.org/snobol4/docs/books.html#green
for Standard function definitions.
Need to research origins of Macro SPITBOL extensions.
SEE ALSO
snobol4(1),
snobol4blocks(1).